PandaRoot
PndTrkCluster.h
Go to the documentation of this file.
1 
6 #ifndef PNDTRKCLUSTER_H
7 #define PNDTRKCLUSTER_H 1
8 
9 #include "TVector3.h"
10 #include "PndTrkHit.h"
11 #include "PndTrkHitList.h"
12 #include "FairHit.h"
13 
14 // #include "TObjArray.h"
15 #include "TClonesArray.h"
16 
17 #define MAXNOFHITSINCLUSTER 1000 // CHECK consistency
18 
19 // class TObjArray;
20 class PndTrkCluster : public TObject {
21 
22  public:
23  PndTrkCluster();
24  // copy ctor
25  PndTrkCluster(const PndTrkCluster &cluster);
27  PndTrkCluster &operator=(const PndTrkCluster &cluster);
28 
29  Bool_t operator==(const PndTrkCluster cluster) const; // CHECK this needs to be changed
30  // PndTrkCluster(const PndTrkCluster& cluster);
31 
32  void AddHit(PndTrkHit *hit);
33  void AddHit(PndTrkHit hit);
34 
35  void DeleteHit(PndTrkHit *hit);
37  void DeleteHit(Int_t index);
38  void DeleteHitAndCompress(Int_t index);
39  void DeleteHits(std::vector<int> todelete);
40 
41  void DeleteAllHits();
42 
43  void SetIRegion(int iregion) { fIRegion = iregion; }
44 
45  PndTrkHit *GetHit(int index);
46  PndTrkHit *GetPreviousHit(int index);
47  PndTrkHit *GetNextHit(int index);
48 
49  inline Int_t GetNofHits() { return fHitList.GetEntriesFast(); }
50  inline Int_t GetIRegion() { return fIRegion; }
51 
53 
55 
56  void Print();
57  void PrintList();
58  void Draw(Color_t color = kBlack);
59  void LightUp();
60 
61  Bool_t DoesContain(PndTrkHit *hit);
62  Bool_t IsSimilarTo(PndTrkCluster *cluster2);
63 
64  Int_t NofSharedHits(PndTrkCluster *cluster2);
65  Bool_t SharedAt(PndTrkCluster *cluster2, double limit);
66 
67  int MergeTo(PndTrkCluster *cluster2);
71 
75 
76  Bool_t FindExtremitiesFrom(TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity);
77  Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity);
78 
79  Bool_t ComputeCircle(TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R);
80  PndTrkHit *GetPocaTo(TVector3 frompoint);
81  Bool_t SplitAtHit(PndTrkHit *athit, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
82  Bool_t SplitV(PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit *secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
83 
84  void SortFromHit(PndTrkHit *firstextremity, TString criterion);
85  friend Bool_t SorterFunction(PndTrkHit *hit1, PndTrkHit *hit2);
86  void Sort();
87  void ReverseSort();
88 
89  Bool_t IsSorted() { return fHitList.IsSorted(); }
90 
91  void AddCluster(PndTrkCluster *cluster);
92  void AddClusterAndSortFrom(PndTrkCluster *cluster, TVector3 frompoint, TString criterion);
93  void Replace(PndTrkHit *hit);
94  void Clear(Option_t * = "");
95 
96  protected:
97  TVector3 fFromPoint;
98  Int_t fIRegion;
99  // std::vector< PndTrkHit * > hitlist;
100  // TObjArray hitlist;
101  TClonesArray fHitList;
103 };
104 
105 #endif
friend Bool_t SorterFunction(PndTrkHit *hit1, PndTrkHit *hit2)
Bool_t SharedAt(PndTrkCluster *cluster2, double limit)
PndTrkCluster GetMvdHitList()
void Replace(PndTrkHit *hit)
PndTrkCluster GetSttHitList()
Bool_t SplitAtHit(PndTrkHit *athit, PndTrkCluster &cluster1, PndTrkCluster &cluster2)
Bool_t ComputeCircle(TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R)
void AddClusterAndSortFrom(PndTrkCluster *cluster, TVector3 frompoint, TString criterion)
PndTrkHit * GetHit(int index)
void Draw(Color_t color=kBlack)
int MergeTo(PndTrkCluster *cluster2)
void DeleteHitAndCompress(PndTrkHit *hit)
Double_t GetMinimumXYDistanceFromHit(PndTrkHit *hit)
PndTrkHit * SearchHit(PndTrkHit *hit)
PndTrkHit * GetPocaTo(TVector3 frompoint)
void ReverseSort()
PndTrkCluster GetSttSkewHitList()
PndTrkHit * GetPreviousHit(int index)
void AddHit(PndTrkHit *hit)
Bool_t IsSorted()
Definition: PndTrkCluster.h:89
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:43
void DeleteHit(PndTrkHit *hit)
void SortFromHit(PndTrkHit *firstextremity, TString criterion)
Int_t NofSharedHits(PndTrkCluster *cluster2)
PndTrkCluster & operator=(const PndTrkCluster &cluster)
ClassDef(PndTrkCluster, 1)
PndTrkCluster GetSttParallelHitList()
void DeleteHits(std::vector< int > todelete)
void Clear(Option_t *="")
void DeleteAllHits()
Bool_t IsSimilarTo(PndTrkCluster *cluster2)
Bool_t operator==(const PndTrkCluster cluster) const
void AddCluster(PndTrkCluster *cluster)
Int_t GetIRegion()
Definition: PndTrkCluster.h:50
void PrintList()
PndTrkCluster GetMvdPixelHitList()
Bool_t FindExtremitiesFrom(TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity)
TVector3 fFromPoint
Definition: PndTrkCluster.h:97
Bool_t DoesContain(PndTrkHit *hit)
Bool_t SplitV(PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit *secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2)
PndTrkHit * GetNextHit(int index)
TClonesArray fHitList
Int_t GetNofHits()
Definition: PndTrkCluster.h:49
PndTrkCluster GetMvdStripHitList()
Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity)