FairRoot/PandaRoot
PndBarrelTrackFinder.h
Go to the documentation of this file.
1 //* $Id: */
2 
3 // -------------------------------------------------------------------------
4 // ----- PndBarrelTrackFinder header file -----
5 // ----- Created 05/12/2010 by R. Karabowicz -----
6 // -------------------------------------------------------------------------
7 
8 
20 #ifndef PNDBARRELTRACKFINDER_H
21 #define PNDBARRELTRACKFINDER_H 1
22 
23 #include "PndPersistencyTask.h"
24 #include "FairHit.h"
25 
26 #include "TStopwatch.h"
27 #include "PndGeoSttPar.h"
28 
29 #include <list>
30 #include <map>
31 #include <vector>
32 
33 class TEllipse;
34 class TCanvas;
35 class TClonesArray;
36 class TLatex;
37 class PndGemDigiPar;
38 class TH1F;
39 
45  Int_t n;
46  // x,y,r parameters of the circle,
47  // // p=atan(x/y),
48  // z_p - z increase divided by phi angle increase,
49  // // p_1=atan(x_1/y_1) of the first hit,
50  // n='goodness' of parameter
51 };
52 
53 struct TrackBasis{
54  std::vector<TrackParameter> trackPars;
55  std::vector<FairHit*> trackHits;
56  std::vector<Int_t> trackHitD;
57  std::vector<Int_t> trackHitN;
62 };
63 
64 
66 {
67 
68  public:
69 
72 
73 
76 
77 
79  PndBarrelTrackFinder(const char* name, Int_t iVerbose);
80 
81 
83  virtual ~PndBarrelTrackFinder();
84 
85 
87  virtual void Exec(Option_t* opt);
88 
89  void UseMvdSttGem (const Bool_t useMvd, const Bool_t useStt, const Bool_t useGem);
90 
91  void DrawDetails(Bool_t tb=kTRUE) {fDrawDetails=tb;}
92  void DrawHistos (Bool_t tb=kTRUE) {fDrawHistos =tb;}
93 
94  private:
95 
98  TEllipse* fEllipse[1000];
99  TCanvas* fCanvas;
100  TLatex* fStageDesc;
109 
110  std::vector<TrackBasis> fTracksVector;
111 
112  std::vector<Int_t> fHitDetId;
113  std::vector<Int_t> fHitDetNo;
114  // previous hits
115  std::vector<FairHit*> fHitVector;
116  std::vector<Int_t> fHitVectDI;
117  std::vector<Int_t> fHitVectHN;
118 
120  TClonesArray* fHitArray [4];
122  Int_t fDetType [4];
124 
126  TClonesArray* fBarrelTrackArray;
127  TClonesArray* fBarrelTrackCandArray;
128 
130  Int_t fTNofEvents;
131  Int_t fTNofTracks;
132 
139 
140  Bool_t MatchHitToTrack (FairHit* thisHit, Int_t detId, Int_t hitNo, Int_t trackNo);
141  Bool_t MatchSkewedSttHitTT (FairHit* thisHit, Int_t detId, Int_t hitNo, Int_t trackNo);
142  Bool_t MatchParallelSttHitTT (FairHit* thisHit, Int_t detId, Int_t hitNo, Int_t trackNo);
143  Bool_t MatchHitWithZInfoTT (FairHit* thisHit, Int_t detId, Int_t hitNo, Int_t trackNo);
144 
145  Bool_t ExtractMeanRPhiFromTrack (Int_t trackNo);
146  Bool_t ExtractMeanZ_PFromTrack (Int_t trackNo);
147 
148  Bool_t MatchHitToHit (FairHit* thisHit, Int_t detId, Int_t hitNo, Int_t prevHNo);
149  void RemoveHitFromPreviousHits(Int_t hitNo);
150 
151  Bool_t HitBelongsToTrack(Int_t detId, Int_t hitNo, Int_t trackNo);
152 
153  void AddHitToPreviousHits (FairHit* thisHit, Int_t detId, Int_t hitNo);
154 
155  void DrawTracks();
156  void PrintTracks();
157  Int_t CleanTracks();
158  Int_t WriteTracks();
159 
160  void RemoveShortTracks();
161  void RemoveCloneTracks();
162 
163  Bool_t FindCircPar(Double_t* c1, Double_t* c2, Double_t* c3, Int_t cno, Double_t* cl);
165  Int_t FindInterestingRegions(Double_t* circ, Double_t* tube, Double_t* reg);
166 
168  Double_t CalcZ_P(Double_t* circ, Double_t hx, Double_t hy, Double_t hz);
169 
171  virtual void SetParContainers();
172  // CHECK added
174  TClonesArray* fTubeArray;
175  PndGeoSttPar *fSttParameters; // CHECK added
176  Int_t fGeoType;
177 
179  virtual InitStatus Init();
180 
181 
183  virtual InitStatus ReInit();
184 
185 
187  void Reset();
188 
189 
191  virtual void Finish();
192 
193 
195 
196 };
197 
198 #endif
199 
200 
Int_t FindInterestingRegions(Double_t *circ, Double_t *tube, Double_t *reg)
Bool_t HitBelongsToTrack(Int_t detId, Int_t hitNo, Int_t trackNo)
std::vector< Int_t > fHitVectHN
void DrawHistos(Bool_t tb=kTRUE)
void RemoveHitFromPreviousHits(Int_t hitNo)
std::vector< FairHit * > trackHits
Int_t fTNofEvents
event counter
Bool_t ExtractMeanRPhiFromTrack(Int_t trackNo)
c2
Definition: plot_dirc.C:39
TClonesArray * fBarrelTrackCandArray
TClonesArray * fHitArray[4]
std::vector< Int_t > fHitVectDI
Digitization Parameter Class for GEM part.
Definition: PndGemDigiPar.h:31
Double_t CalcZ_P(Double_t *circ, Double_t hx, Double_t hy, Double_t hz)
std::vector< Int_t > trackHitD
std::vector< Int_t > fHitDetNo
std::vector< Int_t > trackHitN
Double_t
void DrawDetails(Bool_t tb=kTRUE)
TEllipse * fEllipse[1000]
std::vector< Int_t > fHitDetId
Bool_t MatchHitWithZInfoTT(FairHit *thisHit, Int_t detId, Int_t hitNo, Int_t trackNo)
c1
Definition: plot_dirc.C:35
Bool_t MatchSkewedSttHitTT(FairHit *thisHit, Int_t detId, Int_t hitNo, Int_t trackNo)
TString name
c3
Definition: plot_dirc.C:50
std::vector< FairHit * > fHitVector
ClassDef(PndBarrelTrackFinder, 1)
Double_t x
void UseMvdSttGem(const Bool_t useMvd, const Bool_t useStt, const Bool_t useGem)
Double_t FindCircDist(Double_t *c1, Double_t *c2)
Bool_t MatchHitToTrack(FairHit *thisHit, Int_t detId, Int_t hitNo, Int_t trackNo)
virtual void Exec(Option_t *opt)
std::vector< TrackBasis > fTracksVector
Int_t iVerbose
Bool_t MatchHitToHit(FairHit *thisHit, Int_t detId, Int_t hitNo, Int_t prevHNo)
Double_t y
TClonesArray * fBarrelTrackArray
Output array of PndTrackCands.
void AddHitToPreviousHits(FairHit *thisHit, Int_t detId, Int_t hitNo)
std::vector< TrackParameter > trackPars
Double_t CalcPhi(Double_t x, Double_t y)
Bool_t FindCircPar(Double_t *c1, Double_t *c2, Double_t *c3, Int_t cno, Double_t *cl)
Bool_t MatchParallelSttHitTT(FairHit *thisHit, Int_t detId, Int_t hitNo, Int_t trackNo)
Bool_t ExtractMeanZ_PFromTrack(Int_t trackNo)
virtual InitStatus ReInit()
virtual InitStatus Init()