CbmRoot
CbmL1SttTrackFinder.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- CbmL1SttTrackFinder source file -----
3 // ----- Created 8/03/08 by A. Zinchenko -----
4 // -------------------------------------------------------------------------
5 
6 #include "CbmL1SttTrackFinder.h"
7 
8 #include "CbmL1SttHit.h"
9 #include "CbmL1SttTrack.h"
10 
11 #include "CbmKF.h"
12 #include "CbmKFHit.h"
13 #include "CbmKFMaterial.h"
14 #include "CbmKFMath.h"
15 #include "CbmKFPixelMeasurement.h"
16 #include "CbmKFTrackInterface.h"
17 #include "CbmMCTrack.h"
18 #include "CbmMuchHit.h"
19 #include "CbmMuchPoint.h"
20 #include "CbmMuchTrack.h"
21 #include "CbmStsKFTrackFitter.h"
22 #include "CbmStsTrack.h"
23 #include "CbmStsTrackMatch.h"
24 #include "CbmSttHit.h"
25 #include "CbmSttPoint.h"
26 #include "CbmSttTrack.h"
27 #include "CbmVertex.h"
28 #include "FairRootManager.h"
29 
30 #include "TClonesArray.h"
31 #include "TFile.h"
32 #include "TLorentzVector.h"
33 #include "TVector3.h"
34 
35 #include <cmath>
36 #include <iostream>
37 #include <vector>
38 
39 using std::cout;
40 using std::endl;
41 using std::fabs;
42 using std::vector;
43 
45 
46 CbmL1SttTrackFinder::CbmL1SttTrackFinder(const char* name, Int_t iVerbose)
47  : FairTask(name, iVerbose) {
48  fTrackCollection = new TClonesArray("CbmSttTrack", 100);
49  histodir = 0;
50 }
51 
52 
54 
55 InitStatus CbmL1SttTrackFinder::Init() { return ReInit(); }
56 
58  fSttPoints =
59  (TClonesArray*) FairRootManager::Instance()->GetObject("SttPoint");
60  fSttHits = (TClonesArray*) FairRootManager::Instance()->GetObject("SttHit");
61  fMuchTracks =
62  (TClonesArray*) FairRootManager::Instance()->GetObject("MuchTrack");
63  fStsTracks =
64  (TClonesArray*) FairRootManager::Instance()->GetObject("StsTrack");
65  fMCTracks = (TClonesArray*) FairRootManager::Instance()->GetObject("MCTrack");
67  (TClonesArray*) FairRootManager::Instance()->GetObject("StsTrackMatch");
68  // fPrimVtx = (CbmVertex *) FairRootManager::Instance() ->GetObject("PrimaryVertex");
69  // Get pointer to PrimaryVertex object from IOManager if it exists
70  // The old name for the object is "PrimaryVertex" the new one
71  // "PrimaryVertex." Check first for the new name
72  fPrimVtx = dynamic_cast<CbmVertex*>(
73  FairRootManager::Instance()->GetObject("PrimaryVertex."));
74  if (nullptr == fPrimVtx) {
75  fPrimVtx = dynamic_cast<CbmVertex*>(
76  FairRootManager::Instance()->GetObject("PrimaryVertex"));
77  }
78  if (nullptr == fPrimVtx) {
79  Error("CbmL1SttTrackFinder::ReInit", "vertex not found!");
80  return kERROR;
81  }
82  fStsFitter.Init();
83 
84  FairRootManager::Instance()->Register(
85  "SttTrack", "Stt", fTrackCollection, IsOutputBranchPersistent("SttTrack"));
86 
87  cout << " **************************************************" << endl;
88  if (fMuchTracks)
89  cout << " *** Using Much tracks for Stt tracking *** " << endl;
90  else
91  cout << " *** Using Sts tracks for Stt tracking *** " << endl;
92  cout << " **************************************************" << endl;
93 
94  return kSUCCESS;
95 }
96 
98 
100 
101 void CbmL1SttTrackFinder::Exec(Option_t* /*option*/) {
102  const int MaxBranches = 50;
103 
104  static bool first = 1;
105  fTrackCollection->Clear();
106  static int EventCounter = 0;
107  EventCounter++;
108  cout << " SttRec event " << EventCounter << endl;
109 
110  //int MuNStations = CbmKF::Instance()->MuchStation2MCIDMap.size();
111  static const Int_t nStations = CbmKF::Instance()->SttStationIDMap.size();
112  //const int nStations = 18; // to be taken elsewhere !!!
113 
114  if (first) {
115  first = 0;
116  TDirectory* curdir = gDirectory;
117  histodir = gDirectory->mkdir("SttRec");
118  histodir->cd();
119  fhNBranches =
120  new TH1F("NBranches", "N Branches", MaxBranches, 0, MaxBranches);
121  curdir->cd();
122  }
123 
124  int NHits = fSttHits->GetEntriesFast();
125  vector<CbmL1SttHit> vSttHits;
126 
127  for (int ih = 0; ih < NHits; ++ih) {
128  CbmSttHit* h = (CbmSttHit*) fSttHits->UncheckedAt(ih);
129  CbmL1SttHit m(h, ih);
130  vSttHits.push_back(m);
131  }
132 
133  vector<CbmL1SttTrack> vTracks;
134 
135  Int_t nStsTracks;
136  TClonesArray* seedTracks;
137  if (fMuchTracks)
138  seedTracks = fMuchTracks;
139  else
140  seedTracks = fStsTracks;
141  nStsTracks = seedTracks->GetEntriesFast();
142  cout << " Seed tracks: " << nStsTracks << endl;
143 
144  CbmL1SttTrack Branches[MaxBranches];
145  Double_t scatAng[MaxBranches] = {0.};
146 
147  for (int itr = 0; itr < nStsTracks; ++itr) {
148 
149  Int_t nOK = 0;
150  TObject* sts = seedTracks->UncheckedAt(itr);
151  if (!fMuchTracks) {
152  if (((CbmStsTrack*) sts)->GetNStsHits()
153  + ((CbmStsTrack*) sts)->GetNMvdHits()
154  < 4)
155  continue;
156  }
157 
158  // MC
159  /*
160  if( 0&&fSTSTrackMatch && fMCTracks ){
161  CbmStsTrackMatch *m = (CbmStsTrackMatch*) fSTSTrackMatch->At(itr);
162  if( !m ) continue;
163  Int_t mcTrackID = m->GetMCTrackId();
164  if (mcTrackID<0) continue;
165  CbmMCTrack* mcTrack= (CbmMCTrack*) fMCTracks->At(mcTrackID);
166  if( !mcTrack ) continue;
167  if( abs(mcTrack->GetPdgCode())!=13 ) continue;
168  }
169  */
170  // Check if track passes all the planes
171  if (1 && fSTSTrackMatch && fMCTracks) {
172  Int_t itr1 = itr;
173  if (fMuchTracks) itr1 = ((CbmMuchTrack*) sts)->GetStsTrackID();
174  CbmStsTrackMatch* m = (CbmStsTrackMatch*) fSTSTrackMatch->At(itr1);
175  if (!m) continue;
176  Int_t mcTrackID = m->GetMCTrackId();
177  //if (mcTrackID<0) continue;
178  //CbmMCTrack* mcTrack= (CbmMCTrack*) fMCTracks->At(mcTrackID);
179  //if( !mcTrack ) continue;
180  //if( abs(mcTrack->GetPdgCode())!=13 ) continue;
181  Int_t hitPlanes[20];
182  TVector3 mom0(-1e+7), mom1;
183  for (Int_t i = 0; i < nStations; ++i)
184  hitPlanes[i] = -1;
185  for (int ih = 0; ih < NHits; ++ih) {
186  CbmL1SttHit& h = vSttHits[ih];
187  CbmSttHit* hit = (CbmSttHit*) fSttHits->UncheckedAt(h.index);
188  CbmSttPoint* p =
189  (CbmSttPoint*) fSttPoints->UncheckedAt(hit->GetRefIndex());
190  if (p->GetTrackID() != mcTrackID) continue;
191  if (p->GetStationNo() == 1
192  && TMath::Sqrt(p->GetX() * p->GetX() + p->GetY() * p->GetY()) > 220)
193  continue;
194  if (hitPlanes[h.iStation] < 0) {
195  hitPlanes[h.iStation] = 1;
196  ++nOK;
197  }
198  if (mom0[0] < -1e+5)
199  p->Momentum(mom0);
200  else
201  p->Momentum(mom1);
202  if (itr < MaxBranches)
203  scatAng[itr] =
204  TMath::Max(scatAng[itr], mom1.Angle(mom0) * TMath::RadToDeg());
205  }
206  if (nOK < nStations) {
207  //cout << " Track " << mcTrackID << " has " << nOK << " points " << endl;
208  //continue;
209  }
210  }
211 
212  if (!fMuchTracks)
213  fStsFitter.DoFit((CbmStsTrack*) sts, 13); // refit with muon mass
214 
215  int NBranches = 1;
216 
217  fMuchTracks == 0x0 ? Branches[0].SetStsTrack((CbmStsTrack*) sts)
218  : Branches[0].SetMuchTrack((CbmMuchTrack*) sts);
219  Branches[0].StsID = itr;
220  Branches[0].NHits = 0;
221  Branches[0].NMissed = 0;
222  Branches[0].NMissedStations = 0;
223  Branches[0].ok = 1;
224  Branches[0].stopped = 0;
225  Branches[0].vHits.clear();
226  //cout<<"Sts track N "<<itr<<" with initial mom="<<1./Branches[0].T[4]<<endl;
227  for (Int_t ist = 0; ist < nStations; ++ist) {
228 
229  int NBranchesOld = NBranches;
230 
231  for (Int_t ibr = 0; ibr < NBranchesOld; ++ibr) {
232  CbmL1SttTrack& tr = Branches[ibr];
233  if (tr.stopped) continue;
234  //if( ist%3 ==0 ) cout<<" | ";
235  //double Zdet = CbmKF::Instance()->vMuchDetectors[ist].ZReference;
236  double Zdet = CbmKF::Instance()->vSttMaterial[ist].ZReference;
237  //cout << Zdet << endl;
238  //double Zdet = zPlanes[ist];
239  tr.Extrapolate(Zdet);
240  if (fabs(tr.T[4]) > 100.) tr.stopped = 1;
241  if (1. < 0.5 * fabs(tr.T[4]))
242  tr.stopped = 1; // 0.5 GeV, stop transport
243  //if( tr.stopped ) cout<<"Sts track N "<<itr<<" stopped at Mu station "<<ist
244  //<<" with mom="<<1./tr.T[4]<<endl;
245  if (tr.stopped) continue;
246  /*
247  if( CbmKF::Instance()->vMuchDetectors[ist].IsOutside( tr.T[0], tr.T[1] ) ){
248  //cout<<" out ";
249  tr.NMissedStations++;
250  continue;
251  }
252  */
253 
254  vector<int> NewHits;
255  Int_t firstHit = -1;
256  Double_t uTr = 0.;
257  for (int ih = 0; ih < NHits; ++ih) {
258  CbmL1SttHit& h = vSttHits[ih];
259  if (h.iStation != ist) continue;
260 
261  if (firstHit < 0) {
262  // Track coordinate transformation
263  uTr = tr.T[0] * h.FitPoint.phi_c + tr.T[1] * h.FitPoint.phi_s;
264  //uTr = tr.T[0] * h.FitPoint.phi_c - tr.T[1] * h.FitPoint.phi_s;
265  firstHit = 1;
266  }
267  CbmSttHit* hit = (CbmSttHit*) fSttHits->UncheckedAt(h.index);
268  //cout << tr.T[0] << " " << tr.T[1] << " " << hit->GetX() << " " << hit->GetY() << " " << uTr << " " << h.FitPoint.u << " " << h.FitPoint.phi_c << " " << h.FitPoint.phi_s << endl;
269 
270  /*
271  if(0){ // !!! Cut for the time of flight (ns)
272  double hl = sqrt(h.FitPoint.x*h.FitPoint.x+h.FitPoint.y*h.FitPoint.y+h.FitPoint.z*h.FitPoint.z);
273  double hp = 1./fabs(tr.T[4]);
274  double texp = hl*sqrt(1. - 0.1057*0.1057/(hp*hp))/29.9792458; //ns
275  if( h.time - texp > 1.0 ) continue;
276  }
277  */
278  /*
279  double dx = tr.T[0] - h.FitPoint.x;
280  double dy = tr.T[1] - h.FitPoint.y;
281  double c0 = tr.C[0] + h.FitPoint.V[0];
282  double c1 = tr.C[1] + h.FitPoint.V[1];
283  double c2 = tr.C[2] + h.FitPoint.V[2];
284  double chi2 = 0.5*(dx*dx*c0-2*dx*dy*c1+dy*dy*c2)/(c0*c2-c1*c1);
285  */
286  Double_t du = uTr - h.FitPoint.u;
287  //Double_t c0 = tr.C[0] + h.FitPoint.sigma2;
288  //Double_t chi2 = du * du / c0; // w/out correlations at the moment !!!
289  Double_t w = h.FitPoint.sigma2 + h.FitPoint.phi_cc * tr.C[0]
290  + h.FitPoint.phi_2sc * tr.C[1]
291  + h.FitPoint.phi_ss * tr.C[2];
292  Double_t chi21 = du * du / w;
293  //cout << " chi2 " << ist << " " << du << " " << chi21 << " " << chi21 << endl;
294  if (chi21 <= 20.) NewHits.push_back(ih);
295  //if ( chi21 <= 100. ) NewHits.push_back( ih );
296  }
297  int nnew = NewHits.size();
298  for (int ih = 1; ih < nnew; ++ih) {
299  if (NBranches >= MaxBranches) break;
300  CbmL1SttTrack& t = Branches[NBranches++];
301  t = tr;
302  CbmL1SttHit& h = vSttHits[NewHits[ih]];
303  t.vHits.push_back(&h);
304  t.NHits++;
305  double qp0 = t.T[4];
306  h.Filter(t, 1, qp0);
307  }
308  if (nnew > 0) {
309  CbmL1SttHit& h = vSttHits[NewHits[0]];
310  tr.vHits.push_back(&h);
311  tr.NHits++;
312  double qp0 = tr.T[4];
313  h.Filter(tr, 1, qp0);
314  } else
315  tr.NMissed++;
316  } // for( int ibr=0; ibr<NBranchesOld;
317  } // for( int ist=0; ist<nStations;
318  int bestbr = 0;
319  for (int ibr = 1; ibr < NBranches; ++ibr) {
320  if ((Branches[ibr].NHits > Branches[bestbr].NHits)
321  || (Branches[ibr].NHits == Branches[bestbr].NHits)
322  && (Branches[ibr].chi2 < Branches[bestbr].chi2))
323  bestbr = ibr;
324  }
325  vTracks.push_back(Branches[bestbr]);
326  // MC
327  /*
328  if( fSTSTrackMatch && fMCTracks ){
329  CbmStsTrackMatch *m = (CbmStsTrackMatch*) fSTSTrackMatch->At(itr);
330  if( !m ) continue;
331  Int_t mcTrackID = m->GetMCTrackId();
332  if (mcTrackID<0) continue;
333  CbmMCTrack* mcTrack= (CbmMCTrack*) fMCTracks->At(mcTrackID);
334  if( !mcTrack ) continue;
335  if( abs(mcTrack->GetPdgCode())==13 ) fhNBranches->Fill(NBranches);
336  }
337  */
338  if (nOK == nStations)
339  fhNBranches->Fill(NBranches);
340  else
341  (vTracks.back()).ok = kFALSE;
342  //cout << itr << " " << nOK << " " << (vTracks.back()).ok << endl;
343  } // for( int itr=0; itr<nStsTracks;
344 
345  int NTracks = vTracks.size();
346  cout << "NTracks=" << NTracks << endl;
347  //sort tracks and check for common muon hits
348 
349  vector<CbmL1SttTrack*> vpTracks;
350  for (int i = 0; i < NTracks; ++i)
351  vpTracks.push_back(&(vTracks[i]));
352  sort(vpTracks.begin(), vpTracks.end(), CbmL1SttTrack::Compare);
353 
354  int NOutTracks = fTrackCollection->GetEntries();
355 
356  for (int it = 0; it < NTracks; ++it) {
357  CbmL1SttTrack& tr = *vpTracks[it];
358  if (tr.NDF <= 0 || tr.chi2 > 10. * tr.NDF) {
359  //tr.ok = 0;
360  //continue;
361  }
362  int nbusy = 0;
363  for (int ih = 0; ih < tr.NHits; ++ih)
364  if (tr.vHits[ih]->busy) nbusy++;
365  if (0 && nbusy > 2) {
366  tr.ok = 0;
367  continue;
368  }
369  // Check if track contains hit from all doublets in all stations
370  Int_t nDoubl[20] = {0};
371  for (Int_t ih = 0; ih < tr.NHits; ++ih) {
372  Int_t i2 = tr.vHits[ih]->iStation / 2;
373  if (nDoubl[i2] == 0) nDoubl[i2]++;
374  }
375  Int_t nHit = 0;
376  for (Int_t i = 0; i < nStations / 2; ++i)
377  nHit += nDoubl[i];
378  if (nHit < nStations / 2) continue;
379  if (!(tr.ok)) continue;
380 
381  {
382  new ((*fTrackCollection)[NOutTracks]) CbmSttTrack();
383  CbmSttTrack* track = (CbmSttTrack*) fTrackCollection->At(NOutTracks++);
384  track->SetChi2(tr.GetRefChi2());
385  track->SetNDF(tr.GetRefNDF());
386  FairTrackParam tp;
387  CbmKFMath::CopyTC2TrackParam(&tp, tr.T, tr.C);
388  track->SetSttTrack(&tp);
389  track->SetStsTrackID(tr.StsID);
390  int nh = 0;
391  for (vector<CbmL1SttHit*>::iterator i = tr.vHits.begin();
392  i != tr.vHits.end();
393  i++) {
394  if (++nh > 30) break;
395  track->AddHitIndex((*i)->index);
396  }
397  track->SetNMissedHits(tr.NMissed);
398  track->SetNMissedStations(tr.NMissedStations);
399  if (tr.StsID < MaxBranches) track->SetScatAng(scatAng[tr.StsID]);
400  }
401  for (int ih = 0; ih < tr.NHits; ++ih)
402  tr.vHits[ih]->busy = 1;
403  }
404 
405  if (EventCounter < 100 && EventCounter % 10 == 0
406  || EventCounter >= 100 && EventCounter % 100 == 0)
407  Write();
408  cout << "end of SttRec " << fTrackCollection->GetEntriesFast() << endl;
409 }
410 
411 
413  TFile HistoFile("SttRec.root", "RECREATE");
415  HistoFile.Close();
416 }
417 
419  if (!obj->IsFolder())
420  obj->Write();
421  else {
422  TDirectory* cur = gDirectory;
423  TDirectory* sub = cur->mkdir(obj->GetName());
424  sub->cd();
425  TList* listSub = ((TDirectory*) obj)->GetList();
426  TIter it(listSub);
427  while (TObject* obj1 = it())
428  writedir2current(obj1);
429  cur->cd();
430  }
431 }
CbmL1SttTrack::NMissedStations
int NMissedStations
Definition: CbmL1SttTrack.h:33
CbmVertex.h
CbmL1SttTrack::NMissed
int NMissed
Definition: CbmL1SttTrack.h:33
CbmKF.h
CbmL1SttTrack::NHits
int NHits
Definition: CbmL1SttTrack.h:33
CbmL1SttTrackFinder::fMuchTracks
TClonesArray * fMuchTracks
STT Hits.
Definition: CbmL1SttTrackFinder.h:46
CbmL1SttTrackFinder::writedir2current
void writedir2current(TObject *obj)
Definition: CbmL1SttTrackFinder.cxx:418
CbmL1SttTrack::SetStsTrack
void SetStsTrack(CbmStsTrack *track)
Definition: CbmL1SttTrack.cxx:9
CbmL1SttTrackFinder::histodir
TDirectory * histodir
Definition: CbmL1SttTrackFinder.h:55
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmL1SttTrack::C
double C[15]
Definition: CbmL1SttTrack.h:30
CbmL1SttTrack::ok
bool ok
Definition: CbmL1SttTrack.h:34
CbmL1SttTrackFinder::fStsTracks
TClonesArray * fStsTracks
Definition: CbmL1SttTrackFinder.h:47
CbmL1SttTrackFinder
Definition: CbmL1SttTrackFinder.h:13
CbmL1SttTrack::stopped
bool stopped
Definition: CbmL1SttTrack.h:35
ClassImp
ClassImp(CbmL1SttTrackFinder)
CbmL1SttTrackFinder::~CbmL1SttTrackFinder
~CbmL1SttTrackFinder()
Definition: CbmL1SttTrackFinder.cxx:53
CbmStsKFTrackFitter::DoFit
Int_t DoFit(CbmStsTrack *track, Int_t pidHypo=211)
Definition: CbmStsKFTrackFitter.cxx:79
CbmL1SttTrackFinder::fMCTracks
TClonesArray * fMCTracks
Definition: CbmL1SttTrackFinder.h:48
CbmL1SttTrack::GetRefNDF
int & GetRefNDF()
Chi^2 after fit.
Definition: CbmL1SttTrack.h:21
CbmMuchTrack
Definition: CbmMuchTrack.h:16
CbmKFTrackInterface.h
CbmL1SttTrack::T
double T[6]
Definition: CbmL1SttTrack.h:30
CbmKFMath.h
CbmL1SttHit
Definition: CbmL1SttHit.h:11
CbmL1SttTrackFinder::fhNBranches
TH1F * fhNBranches
Definition: CbmL1SttTrackFinder.h:60
CbmL1SttTrack::NDF
int NDF
Definition: CbmL1SttTrack.h:31
CbmKF::Instance
static CbmKF * Instance()
Definition: CbmKF.h:39
CbmStsTrack.h
Data class for STS tracks.
CbmL1SttTrackFinder::ReInit
InitStatus ReInit()
Definition: CbmL1SttTrackFinder.cxx:57
CbmMuchPoint.h
h
Data class with information on a STS local track.
CbmL1SttTrack.h
CbmMuchTrack.h
CbmL1SttTrack::chi2
double chi2
Definition: CbmL1SttTrack.h:30
CbmL1SttTrackFinder::Finish
void Finish()
Definition: CbmL1SttTrackFinder.cxx:99
CbmVertex
Definition: CbmVertex.h:26
CbmL1SttTrackFinder::SetParContainers
void SetParContainers()
Definition: CbmL1SttTrackFinder.cxx:97
CbmKFPixelMeasurement.h
CbmL1SttTrack::StsID
int StsID
Definition: CbmL1SttTrack.h:36
first
bool first
Definition: LKFMinuit.cxx:143
CbmL1SttTrack
Definition: CbmL1SttTrack.h:13
CbmL1SttTrackFinder::CbmL1SttTrackFinder
CbmL1SttTrackFinder(const char *name="CbmL1SttTrackFinder", Int_t iVerbose=1)
Definition: CbmL1SttTrackFinder.cxx:46
CbmL1SttTrackFinder.h
CbmStsKFTrackFitter::Init
void Init()
Definition: CbmStsKFTrackFitter.cxx:29
CbmL1SttTrackFinder::fSttHits
TClonesArray * fSttHits
STT MC points.
Definition: CbmL1SttTrackFinder.h:45
CbmL1SttTrackFinder::fSTSTrackMatch
TClonesArray * fSTSTrackMatch
Definition: CbmL1SttTrackFinder.h:49
CbmL1SttTrackFinder::fSttPoints
TClonesArray * fSttPoints
Definition: CbmL1SttTrackFinder.h:44
CbmMCTrack.h
CbmKFMaterial.h
fabs
friend F32vec4 fabs(const F32vec4 &a)
Definition: L1/vectors/P4_F32vec4.h:60
CbmKFMath::CopyTC2TrackParam
static void CopyTC2TrackParam(FairTrackParam *par, Double_t T[], Double_t C[])
Definition: CbmKFMath.cxx:809
m
__m128 m
Definition: L1/vectors/P4_F32vec4.h:26
CbmL1SttTrackFinder::Write
void Write()
Definition: CbmL1SttTrackFinder.cxx:412
CbmKFHit.h
CbmL1SttTrack::GetRefChi2
double & GetRefChi2()
array[15] of covariance matrix
Definition: CbmL1SttTrack.h:20
CbmL1SttTrackFinder::fStsFitter
CbmStsKFTrackFitter fStsFitter
Definition: CbmL1SttTrackFinder.h:53
CbmL1SttTrack::Compare
static bool Compare(const CbmL1SttTrack *p1, const CbmL1SttTrack *p2)
Definition: CbmL1SttTrack.h:38
CbmL1SttTrackFinder::fTrackCollection
TClonesArray * fTrackCollection
Definition: CbmL1SttTrackFinder.h:50
CbmL1SttTrackFinder::fPrimVtx
CbmVertex * fPrimVtx
STT tracks.
Definition: CbmL1SttTrackFinder.h:52
CbmStsTrack
Definition: CbmStsTrack.h:37
CbmL1SttTrack::SetMuchTrack
void SetMuchTrack(CbmMuchTrack *track)
Definition: CbmL1SttTrack.cxx:15
CbmL1SttHit.h
CbmStsKFTrackFitter.h
CbmL1SttTrackFinder::Init
InitStatus Init()
Definition: CbmL1SttTrackFinder.cxx:55
CbmL1SttTrackFinder::Exec
void Exec(Option_t *option)
Definition: CbmL1SttTrackFinder.cxx:101
CbmKFTrackInterface::Extrapolate
Int_t Extrapolate(Double_t z, Double_t *QP0=0)
Access to i-th hit.
Definition: CbmKFTrackInterface.cxx:39
CbmL1SttTrack::vHits
std::vector< CbmL1SttHit * > vHits
Definition: CbmL1SttTrack.h:32