FairRoot/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 
23  public:
24 
25  PndTrkCluster();
26  // copy ctor
27  PndTrkCluster(const PndTrkCluster& cluster);
28  ~PndTrkCluster();
29  PndTrkCluster& operator=(const PndTrkCluster& cluster);
30 
31 
32  Bool_t operator==(const PndTrkCluster cluster) const; // CHECK this needs to be changed
33  // PndTrkCluster(const PndTrkCluster& cluster);
34 
35  void AddHit(PndTrkHit *hit);
36  void AddHit(PndTrkHit hit);
37 
38  void DeleteHit(PndTrkHit *hit);
40  void DeleteHit(Int_t index);
41  void DeleteHitAndCompress(Int_t index);
42  void DeleteHits(std::vector< int > todelete);
43 
44  void DeleteAllHits();
45 
46  void SetIRegion(int iregion) { fIRegion = iregion; }
47 
48  PndTrkHit *GetHit(int index);
49  PndTrkHit *GetPreviousHit(int index);
50  PndTrkHit *GetNextHit(int index);
51 
52  inline Int_t GetNofHits() { return fHitList.GetEntriesFast(); }
53  inline Int_t GetIRegion() { return fIRegion; }
54 
56 
58 
59  void Print();
60  void PrintList();
61  void Draw(Color_t color = kBlack);
62  void LightUp();
63 
65  Bool_t IsSimilarTo(PndTrkCluster *cluster2);
66 
67  Int_t NofSharedHits(PndTrkCluster *cluster2);
68  Bool_t SharedAt(PndTrkCluster *cluster2, double limit);
69 
70  int MergeTo(PndTrkCluster *cluster2);
74 
78 
79  Bool_t FindExtremitiesFrom(TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity);
80  Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity);
81 
82  Bool_t ComputeCircle(TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R);
83  PndTrkHit * GetPocaTo(TVector3 frompoint);
84  Bool_t SplitAtHit(PndTrkHit *athit, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
85  Bool_t SplitV(PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit* secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
86 
87 
88  void SortFromHit(PndTrkHit *firstextremity, TString criterion);
89  friend Bool_t SorterFunction(PndTrkHit *hit1, PndTrkHit *hit2);
90  void Sort();
91  void ReverseSort();
92 
93  Bool_t IsSorted() { return fHitList.IsSorted(); }
94 
95  void AddCluster(PndTrkCluster *cluster);
96  void AddClusterAndSortFrom(PndTrkCluster *cluster, TVector3 frompoint, TString criterion);
97  void Replace(PndTrkHit *hit);
98  void Clear(Option_t* = "");
99 
100  protected:
101  TVector3 fFromPoint;
102  Int_t fIRegion;
103  // std::vector< PndTrkHit * > hitlist;
104  // TObjArray hitlist;
105  TClonesArray fHitList;
107 };
108 
109 
110 #endif
Double_t x0
Definition: checkhelixhit.C:70
friend Bool_t SorterFunction(PndTrkHit *hit1, PndTrkHit *hit2)
Bool_t SharedAt(PndTrkCluster *cluster2, double limit)
PndTrkCluster GetMvdHitList()
void Replace(PndTrkHit *hit)
PndTrkCluster GetSttHitList()
PndTrkHit * SearchHit(PndTrkHit *hit)
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)
void Draw(Color_t color=kBlack)
Bool_t operator==(const PndTrkCluster cluster) const
int MergeTo(PndTrkCluster *cluster2)
void DeleteHitAndCompress(PndTrkHit *hit)
Double_t GetMinimumXYDistanceFromHit(PndTrkHit *hit)
PndTrkCluster GetSttSkewHitList()
void AddHit(PndTrkHit *hit)
Bool_t IsSorted()
Definition: PndTrkCluster.h:93
PndTrkHit * GetNextHit(int index)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
PndTrkHit * GetHit(int index)
void DeleteHit(PndTrkHit *hit)
void SortFromHit(PndTrkHit *firstextremity, TString criterion)
Int_t NofSharedHits(PndTrkCluster *cluster2)
ClassDef(PndTrkCluster, 1)
PndTrkCluster GetSttParallelHitList()
void DeleteHits(std::vector< int > todelete)
void Clear(Option_t *="")
Double_t
Bool_t IsSimilarTo(PndTrkCluster *cluster2)
Double_t y0
Definition: checkhelixhit.C:71
PndTrkHit * GetPreviousHit(int index)
void AddCluster(PndTrkCluster *cluster)
Int_t GetIRegion()
Definition: PndTrkCluster.h:53
PndTrkCluster GetMvdPixelHitList()
PndTrkHit * GetPocaTo(TVector3 frompoint)
Bool_t FindExtremitiesFrom(TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity)
TVector3 fFromPoint
Bool_t DoesContain(PndTrkHit *hit)
Bool_t SplitV(PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit *secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2)
TVector3 v1
Definition: bump_analys.C:40
PndTrkCluster & operator=(const PndTrkCluster &cluster)
TVector3 v2
Definition: bump_analys.C:40
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
double limit
Definition: dedx_bands.C:18
Double_t R
Definition: checkhelixhit.C:61
PndTrkCluster GetMvdStripHitList()
Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity)