FairRoot/PandaRoot
PndSttCellTrackFinder.h
Go to the documentation of this file.
1 /*
2  * PndSttCellTrackFinder.h
3  *
4  * Created on: May 20, 2014
5  * Author: schumann
6  */
7 
8 #ifndef PndSttCellTrackFinder_H_
9 #define PndSttCellTrackFinder_H_
10 
11 #include "PndTrackCand.h"
12 #include "PndRiemannTrack.h"
13 #include "PndTrack.h"
14 #include "FairLink.h"
17 #include "PndSttHitCorrector.h"
18 #include "PndSttSkewedHit.h"
19 
20 #include <vector>
21 
22 class TClonesArray;
23 
25 public:
26  PndSttCellTrackFinder(TClonesArray *tubeArray) :
28 
29  //Generate TrackFinderData-Object
31 
32  };
33 
35  delete fTrackFinderData;
36  delete fHitCorrector;
37  delete fTrackletGenerator;
38 
39  for (size_t i = 0; i < fHits.size(); ++i) {
40  delete fHits.at(i);
41  }
42  for (std::multimap<int, PndSttSkewedHit*>::iterator it =
43  fCombinedSkewedHits.begin(); it != fCombinedSkewedHits.end();
44  ++it) {
45  delete (*it).second;
46  }
47  }
48 
49  void FindTracks();
50  // so far only supports STTHits type of data. Uses the name of the Branch to distinguish between normal and Skewed.
51  void AddHits(TClonesArray* hits, TString branchName);
52 
54  fUseGPU = val;
55  }
58  }
59  void SetClusterTime(double val){
60  fClusterTime = val;
61  }; // J.R. 20/04-2018
62  void SetDevTubeNeighboringsPointer(int* dev_pointer) {
63  fDev_tubeNeighborings = dev_pointer;
64  }
65 
68  }
69 
71  return fTrackFinderData;
72  }
73 
74  std::map<Int_t, FairHit*> GetCorrectedIsochrones() {
76  }
77 
80  }
81 
82  // Get TrackCands of start-tracklets before combination
84  return fFirstTrackCand[i];
85  }
86  ;
87 
88  // Get RiemannTracks before combination of tracklets
90  return fFirstRiemannTrack[i];
91  }
92  ;
93 
94  // Get TrackCands of combinated tracklets
96  return fCombiTrackCand[i];
97  }
98  ;
99 
100  // Get PndTrack of combinated tracklets
102  return fCombiTrack[i];
103  }
104  ;
105 
107  return fCombiRiemannTrack[i];
108  }
109  ;
110 
111  std::vector<std::vector<Double_t> > GetTimeStampsTrackletGen() {
112  return fTimeStampsTrackletGen;
113  }
114  ;
115 
116  std::vector<std::vector<Double_t> > GetTimeStampsGenerateNeighborhoodData() {
118  }
119  ;
120 
122  return fFirstTrackCand.size();
123  }
124  ;
125 
127  return fFirstRiemannTrack.size();
128  }
129  ;
130 
132  return fCombiTrackCand.size();
133  }
134  ;
135 
137  return fCombiRiemannTrack.size();
138  }
139  ;
140 
141  int NumHits() {
142  return fTrackFinderData->GetNumHits();
143  }
144 
146 
148  }
149 
151  return fTrackFinderData->GetSeparations()[1].size()
152  + fTrackFinderData->GetSeparations()[2].size();
153  }
154 
157  }
158  ;
159 
160  void SetVerbose(Int_t val) {
161  fVerbose = val;
162  }
163  ;
164 
166  fBz = val;
167  }
168  ;
169 
170  void StoreTrackData() {
172 
175 
179 
180  }
181  ;
182 
183  void Reset() {
184  fHits.clear();
186 
187  fFirstTrackCand.clear();
188  fFirstRiemannTrack.clear();
189 
190  fCombiTrackCand.clear();
191  fCombiTrack.clear();
192  fCombiRiemannTrack.clear();
193 
194  delete fHitCorrector;
195  delete fTrackletGenerator;
196 
197  }
198 
199 private:
200 
201  std::vector<std::vector<Double_t> > fTimeStampsTrackletGen;
202  std::vector<std::vector<Double_t> > fTimeStampsGenerateNeighborhoodData;
203 
204  Int_t fVerbose;
206 
207  double fClusterTime;
208 
212 
214 
215  Bool_t fCalcFirstTrackletInf; // if true, calculate riemannTracks for start-tracklets
216  std::vector<FairHit*> fHits; // vector with all hits of the current event
217  std::multimap<int, PndSttSkewedHit*> fCombinedSkewedHits; //<(inner) Tube-ID of combined stt hits of skewed layers, corresponding hit>
218 
219  std::map<int, FairLink> fMapHitToFairLink; // map< index of hit in fHit, FairLink of SttHit>
220 
224 
225  // for first step of trackfinding
226  std::vector<PndTrackCand> fFirstTrackCand; // for saving trackCands after the use of cellular automaton
227  std::vector<PndRiemannTrack> fFirstRiemannTrack; // for saving + plotting the riemann-tracks after the first step
228 
229  std::vector<PndTrackCand> fCombiTrackCand; // resulting tracks of combined tracklets
230  std::vector<PndTrack> fCombiTrack; // resulting PndTrack
231  std::vector<PndRiemannTrack> fCombiRiemannTrack;
232 
233 ClassDef(PndSttCellTrackFinder,1)
234  ;
235 
236 };
237 
238 #endif /* PndSttCellTrackFinder_H_ */
PndSttCellTrackFinder(TClonesArray *tubeArray)
std::map< int, FairHit * > GetCorrectedHits()
Int_t i
Definition: run_full.C:25
std::vector< PndTrackCand > GetFirstTrackCands()
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
std::vector< PndTrackCand > fFirstTrackCand
void SetClusterTime(double val)
std::vector< PndRiemannTrack > GetCombiRiemannTracks()
void SetDevTubeNeighboringsPointer(int *dev_pointer)
void SetRunTimeBased(Bool_t val)
PndRiemannTrack GetCombiRiemannTrack(int i)
void SetCalcFirstTrackletInf(Bool_t val)
std::vector< FairHit * > fHits
std::map< int, FairLink > fMapHitToFairLink
std::vector< std::vector< Double_t > > GetTimeStampsTrackletGen()
PndRiemannTrack GetFirstRiemannTrack(int i)
std::vector< PndTrackCand > fCombiTrackCand
Double_t
PndSttCellTrackFinderData * GetTrackFinderDataObject()
PndSttCellTrackletGenerator * fTrackletGenerator
std::vector< PndTrackCand > GetCombiTrackCands()
std::vector< std::vector< Double_t > > fTimeStampsTrackletGen
std::vector< PndRiemannTrack > fCombiRiemannTrack
std::map< int, std::vector< int > > GetSeparations() const
std::vector< std::vector< Double_t > > fTimeStampsGenerateNeighborhoodData
std::multimap< int, PndSttSkewedHit * > fCombinedSkewedHits
PndSttHitCorrector * fHitCorrector
void AddHits(TClonesArray *hits, TString branchName)
PndTrackCand GetFirstTrackCand(int i)
CbmHit * hits[nHits]
Definition: RiemannTest.C:19
PndSttCellTrackFinderData * fTrackFinderData
std::vector< PndRiemannTrack > fFirstRiemannTrack
void SetCalcWithCorrectedIsochrones(Bool_t val)
std::vector< PndTrack > fCombiTrack
std::vector< std::vector< Double_t > > GetTimeStampsGenerateNeighborhoodData()
std::vector< PndRiemannTrack > GetFirstRiemannTracks()
PndTrackCand GetCombiTrackCand(int i)
std::vector< PndTrack > GetCombiTracks()
std::map< Int_t, FairHit * > GetCorrectedIsochrones()