PandaRoot
PndTrkCluster.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
18 #ifndef PNDTRKCLUSTER_H
19 #define PNDTRKCLUSTER_H 1
20 
21 #include "TVector3.h"
22 #include "PndTrkHit.h"
23 #include "PndTrkHitList.h"
24 #include "FairHit.h"
25 
26 // #include "TObjArray.h"
27 #include "TClonesArray.h"
28 
29 #define MAXNOFHITSINCLUSTER 1000 // CHECK consistency
30 
31 // class TObjArray;
32 class PndTrkCluster : public TObject {
33 
34  public:
35  PndTrkCluster();
36  // copy ctor
37  PndTrkCluster(const PndTrkCluster &cluster);
39  PndTrkCluster &operator=(const PndTrkCluster &cluster);
40 
41  Bool_t operator==(const PndTrkCluster cluster) const; // CHECK this needs to be changed
42  // PndTrkCluster(const PndTrkCluster& cluster);
43 
44  void AddHit(PndTrkHit *hit);
45  void AddHit(PndTrkHit hit);
46 
47  void DeleteHit(PndTrkHit *hit);
49  void DeleteHit(Int_t index);
50  void DeleteHitAndCompress(Int_t index);
51  void DeleteHits(std::vector<int> todelete);
52 
53  void DeleteAllHits();
54 
55  void SetIRegion(int iregion) { fIRegion = iregion; }
56 
57  PndTrkHit *GetHit(int index);
58  PndTrkHit *GetPreviousHit(int index);
59  PndTrkHit *GetNextHit(int index);
60 
61  inline Int_t GetNofHits() { return fHitList.GetEntriesFast(); }
62  inline Int_t GetIRegion() { return fIRegion; }
63 
65 
67 
68  void Print();
69  void PrintList();
70  void Draw(Color_t color = kBlack);
71  void LightUp();
72 
73  Bool_t DoesContain(PndTrkHit *hit);
74  Bool_t IsSimilarTo(PndTrkCluster *cluster2);
75 
76  Int_t NofSharedHits(PndTrkCluster *cluster2);
77  Bool_t SharedAt(PndTrkCluster *cluster2, double limit);
78 
79  int MergeTo(PndTrkCluster *cluster2);
83 
87 
88  Bool_t FindExtremitiesFrom(TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity);
89  Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity);
90 
91  Bool_t ComputeCircle(TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R);
92  PndTrkHit *GetPocaTo(TVector3 frompoint);
93  Bool_t SplitAtHit(PndTrkHit *athit, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
94  Bool_t SplitV(PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit *secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2);
95 
96  void SortFromHit(PndTrkHit *firstextremity, TString criterion);
97  friend Bool_t SorterFunction(PndTrkHit *hit1, PndTrkHit *hit2);
98  void Sort();
99  void ReverseSort();
100 
101  Bool_t IsSorted() { return fHitList.IsSorted(); }
102 
103  void AddCluster(PndTrkCluster *cluster);
104  void AddClusterAndSortFrom(PndTrkCluster *cluster, TVector3 frompoint, TString criterion);
105  void Replace(PndTrkHit *hit);
106  void Clear(Option_t * = "");
107 
108  protected:
109  TVector3 fFromPoint;
110  Int_t fIRegion;
111  // std::vector< PndTrkHit * > hitlist;
112  // TObjArray hitlist;
113  TClonesArray fHitList;
115 };
116 
117 #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()
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:55
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:62
void PrintList()
PndTrkCluster GetMvdPixelHitList()
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)
PndTrkHit * GetNextHit(int index)
TClonesArray fHitList
Int_t GetNofHits()
Definition: PndTrkCluster.h:61
PndTrkCluster GetMvdStripHitList()
Bool_t CheckClusterAgainsV(TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity)