CbmRoot
CbmL1MuchFinderQa.cxx
Go to the documentation of this file.
1 #include "CbmL1MuchFinderQa.h"
2 
3 #include "CbmL1MuchHit.h"
4 #include "CbmL1MuchTrack.h"
5 
6 #include "CbmKF.h"
7 #include "CbmKFHit.h"
8 #include "CbmKFMaterial.h"
9 #include "CbmKFMath.h"
10 #include "CbmKFPixelMeasurement.h"
11 #include "CbmKFTrackInterface.h"
12 #include "CbmMCTrack.h"
13 #include "CbmMuchHit.h"
14 #include "CbmMuchPoint.h"
15 #include "CbmMuchTrack.h"
16 #include "CbmStsKFTrackFitter.h"
17 #include "CbmStsTrack.h"
18 #include "CbmStsTrackMatch.h"
19 #include "CbmVertex.h"
20 #include "FairRootManager.h"
21 
22 #include "TClonesArray.h"
23 #include "TFile.h"
24 #include "TLorentzVector.h"
25 #include "TProfile.h"
26 #include "TVector3.h"
27 
28 #include <cmath>
29 #include <iostream>
30 #include <vector>
31 
32 using std::cout;
33 using std::endl;
34 using std::fabs;
35 using std::vector;
36 
38 
39 CbmL1MuchFinderQa::CbmL1MuchFinderQa(const char* name, Int_t iVerbose)
40  : FairTask(name, iVerbose) {
41  histodir = 0;
42  fhPerfAll = 0;
43  fhPerfSignal = 0;
44 }
45 
46 
48 
49 InitStatus CbmL1MuchFinderQa::Init() { return ReInit(); }
50 
52  fMuchPoints =
53  (TClonesArray*) FairRootManager::Instance()->GetObject("MuchPoint");
54  fMuchHits = (TClonesArray*) FairRootManager::Instance()->GetObject("MuchHit");
55  fStsTracks =
56  (TClonesArray*) FairRootManager::Instance()->GetObject("StsTrack");
57  fMuchTracks =
58  (TClonesArray*) FairRootManager::Instance()->GetObject("MuchTrack");
59  fMCTracks = (TClonesArray*) FairRootManager::Instance()->GetObject("MCTrack");
60  //fPrimVtx = (CbmVertex *) FairRootManager::Instance() ->GetObject("PrimaryVertex");
61  // Get pointer to PrimaryVertex object from IOManager if it exists
62  // The old name for the object is "PrimaryVertex" the new one
63  // "PrimaryVertex." Check first for the new name
64  fPrimVtx = dynamic_cast<CbmVertex*>(
65  FairRootManager::Instance()->GetObject("PrimaryVertex."));
66  if (nullptr == fPrimVtx) {
67  fPrimVtx = dynamic_cast<CbmVertex*>(
68  FairRootManager::Instance()->GetObject("PrimaryVertex"));
69  }
70  if (nullptr == fPrimVtx) {
71  Error("CbmL1MuchFinderQa::ReInit", "vertex not found!");
72  return kERROR;
73  }
74 
76  (TClonesArray*) FairRootManager::Instance()->GetObject("StsTrackMatch");
77  fStsFitter.Init();
78 
79  return kSUCCESS;
80 }
81 
83 
85 
86 void CbmL1MuchFinderQa::Exec(Option_t* /*option*/) {
87 
88  static int EventCounter = 0;
89  EventCounter++;
90  cout << " MuRecQa event " << EventCounter << endl;
91 
92  static bool first_call = 1;
93 
94  int MuNStations = CbmKF::Instance()->MuchStation2MCIDMap.size();
95 
96  if (first_call) {
97  first_call = 0;
98  TDirectory* curdir = gDirectory;
99  histodir = gDirectory->mkdir("MuRecQa");
100  histodir->cd();
101 
102  fhPerfSignal =
103  new TProfile("eff_signal", "Signal Mu eff vs mom", 60, 0, 30);
104  fhPerfAll = new TProfile("eff_all", "All Mu eff vs mom", 60, 0, 30);
105  fhGhost = new TProfile("ghost", "ghost vs mom", 60, 0, 30);
106 
107  char S1[255], S2[255];
108  for (int ist = 0; ist < MuNStations; ist++) {
109  sprintf(S1, "station %i", ist);
110  //TDirectory *d = histodir->mkdir(S1);
111  //d->cd();
112  sprintf(S1, "Pull_x_%i", ist);
113  sprintf(S2, "Pull_x of sts track at Mu detector %i ", ist);
114  histPull_dx[ist] = new TH1F(S1, S2, 100, -10., 10.);
115  sprintf(S1, "Pull_y_%i", ist);
116  sprintf(S2, "Pull_y of sts track at Mu detector %i ", ist);
117  histPull_dy[ist] = new TH1F(S1, S2, 100, -10., 10.);
118  sprintf(S1, "Pull_tx_%i", ist);
119  sprintf(S2, "Pull_tx of sts track at Mu detector %i ", ist);
120  histPull_tx[ist] = new TH1F(S1, S2, 100, -10., 10.);
121  sprintf(S1, "Pull_ty_%i", ist);
122  sprintf(S2, "Pull_ty of sts track at Mu detector %i ", ist);
123  histPull_ty[ist] = new TH1F(S1, S2, 100, -10., 10.);
124  sprintf(S1, "Pull_qp_%i", ist);
125  sprintf(S2, "Pull_qp of sts track at Mu detector %i ", ist);
126  histPull_qp[ist] = new TH1F(S1, S2, 100, -10., 10.);
127 
128  sprintf(S1, "chi2hit_%i", ist);
129  sprintf(S2, "chi2 between track and hit at Mu detector %i ", ist);
130  histChi2[ist] = new TH1F(S1, S2, 1000, 0, 100);
131 
132 
133  sprintf(S1, "b_Pull_x_%i", ist);
134  sprintf(S2, "b_Pull_x of sts track at Mu detector %i ", ist);
135  histPull_dx[20 + ist] = new TH1F(S1, S2, 100, -10., 10.);
136  sprintf(S1, "b_Pull_y_%i", ist);
137  sprintf(S2, "b_Pull_y of sts track at Mu detector %i ", ist);
138  histPull_dy[20 + ist] = new TH1F(S1, S2, 100, -10., 10.);
139  sprintf(S1, "b_Pull_tx_%i", ist);
140  sprintf(S2, "b_Pull_tx of sts track at Mu detector %i ", ist);
141  histPull_tx[20 + ist] = new TH1F(S1, S2, 100, -10., 10.);
142  sprintf(S1, "b_Pull_ty_%i", ist);
143  sprintf(S2, "b_Pull_ty of sts track at Mu detector %i ", ist);
144  histPull_ty[20 + ist] = new TH1F(S1, S2, 100, -10., 10.);
145  sprintf(S1, "b_Pull_qp_%i", ist);
146  sprintf(S2, "b_Pull_qp of sts track at Mu detector %i ", ist);
147  histPull_qp[20 + ist] = new TH1F(S1, S2, 100, -10., 10.);
148  }
149  curdir->cd();
150  }
151 
152  if (!fSTSTrackMatch) return;
153  if (!fMuchHits) return;
154  if (!fMuchPoints) return;
155  if (!fStsTracks) return;
156  if (!fMuchTracks) return;
157  if (!fSTSTrackMatch) return;
158  if (!fMCTracks) return;
159 
160  int NHits = fMuchHits->GetEntries();
161  int NStsTracks = fStsTracks->GetEntries();
162  int NMuchTracks = fMuchTracks->GetEntries();
163  //int NMCTracks = fMCTracks->GetEntries();
164 
165  bool was_problem = 0;
166 
167  static int NMu5 = 0, NMuRec5 = 0, NMu10 = 0, NMuRec10 = 0;
168  static int NMuS5 = 0, NMuSRec5 = 0, NMuS10 = 0, NMuSRec10 = 0;
169  static int NGhost5 = 0, NGhostRec5 = 0, NGhost10 = 0, NGhostRec10 = 0;
170 
171  int IndMuTrack[NStsTracks];
172 
173  for (int itr = 0; itr < NStsTracks; itr++)
174  IndMuTrack[itr] = -1;
175 
176  for (int itr = 0; itr < NMuchTracks; itr++) {
177  CbmMuchTrack* Tmu = (CbmMuchTrack*) fMuchTracks->At(itr);
178  if (!Tmu) continue;
179  int ists = Tmu->GetStsTrackID();
180  if (ists < 0) continue;
181  IndMuTrack[ists] = itr;
182  }
183 
184  for (int ists = 0; ists < NStsTracks; ists++) {
185  CbmStsTrack* Tsts = (CbmStsTrack*) fStsTracks->At(ists);
186  CbmStsTrackMatch* m = (CbmStsTrackMatch*) fSTSTrackMatch->At(ists);
187  if (!Tsts) continue;
188  if (!m) continue;
189  double ratio =
190  1. * m->GetNofTrueHits()
191  / (m->GetNofTrueHits() + m->GetNofWrongHits() + m->GetNofFakeHits());
192  if (ratio < .7) continue;
193  Int_t mcTrackID = m->GetMCTrackId();
194  if (mcTrackID < 0) continue;
195  CbmMCTrack* mcTrack = (CbmMCTrack*) fMCTracks->At(mcTrackID);
196  if (!mcTrack) continue;
197  //if (fabs((mcTrack->GetStartVertex()).z())>1.) continue;
198  //if( mcTrack->GetMotherID() !=-1 ) continue;
199 
200  Double_t P = mcTrack->GetP();
201 
202  int NMuHits = 0;
203  int NMissedStations = 0;
204  int NH = fMuchHits->GetEntriesFast();
205  int ista_last = -1;
206  for (int ih = 0; ih < NH; ih++) {
207  CbmMuchHit* h = (CbmMuchHit*) fMuchHits->At(ih);
208  int ist = h->GetStationNr() - 1;
209  if (ist != ista_last + 1) { NMissedStations += ist - 1 - ista_last; }
210  ista_last = ist;
211  int ip = h->GetRefIndex();
212  if (ip < 0) continue;
213  CbmMuchPoint* p = (CbmMuchPoint*) fMuchPoints->At(ip);
214  if (mcTrackID == p->GetTrackID()) NMuHits++;
215  }
216 
217  if (Tsts->GetNStsHits() + Tsts->GetNMvdHits() < 4) continue;
218 
219  bool Muon = (abs(mcTrack->GetPdgCode()) == 13);
220  bool Signal = (mcTrack->GetMotherId() < 0 && mcTrackID < 3 && Muon);
221 
222  if (Muon && (NMuHits < 3 || NMissedStations > 0)) continue;
223 
224  bool MuonFlag = 0;
225  if (IndMuTrack[ists] >= 0) {
226  CbmMuchTrack* Tmu = (CbmMuchTrack*) fMuchTracks->At(IndMuTrack[ists]);
227  if (Tmu && Tmu->GetNHits() + Tmu->GetNMissedHits() >= 3)
228  MuonFlag = Tmu->GetNMissedHits() <= 2 && Tmu->GetNMissedStations() == 0;
229  }
230 
231  //cout<<ok<<" "<<Tmu->GetNHits()<<" "<< Tmu->GetNMissedHits()<<endl;
232  if (Muon) { // muon
233  if (Signal) {
234  fhPerfSignal->Fill(P, MuonFlag);
235  if (P < 5) {
236  NMuS5++;
237  NMuSRec5 += MuonFlag;
238  } else {
239  NMuS10++;
240  NMuSRec10 += MuonFlag;
241  }
242  }
243  fhPerfAll->Fill(P, MuonFlag);
244  if (P < 5) {
245  NMu5++;
246  NMuRec5 += MuonFlag;
247  } else {
248  NMu10++;
249  NMuRec10 += MuonFlag;
250  }
251  if (!MuonFlag) was_problem = 1;
252  } else {
253  fhGhost->Fill(P, MuonFlag);
254  if (P < 5) {
255  NGhost5++;
256  NGhostRec5 += MuonFlag;
257  } else {
258  NGhost10++;
259  NGhostRec10 += MuonFlag;
260  }
261  }
262  }
263 
264  cout << " N Signal Mu Total/Reconstructed <5Gev = " << NMuS5 << "/"
265  << NMuSRec5 << "; >=5Gev = " << NMuS10 << "/" << NMuSRec10 << endl;
266  cout << " N Mu Total/Reconstructed <5Gev = " << NMu5 << "/" << NMuRec5
267  << "; >=5Gev = " << NMu10 << "/" << NMuRec10 << endl;
268  cout << " N Ghost Total/Reconstructed <5Gev = " << NGhost5 << "/"
269  << NGhostRec5 << "; >=5Gev = " << NGhost10 << "/" << NGhostRec10 << endl;
270 
271  //if( was_problem ) cout<<"\n problem\n"<<endl;//return;
272 
273  vector<CbmL1MuchHit> vMuchHits;
274 
275  for (int ih = 0; ih < NHits; ih++) {
276  CbmMuchHit* h = (CbmMuchHit*) fMuchHits->At(ih);
277  CbmL1MuchHit m(h, ih);
278  vMuchHits.push_back(m);
279  }
280 
281  /*
282  for( int mcTrackID=0; mcTrackID<NMCTracks; mcTrackID++ ){
283  CbmMCTrack* mcTrack= (CbmMCTrack*) fMCTracks->At(mcTrackID);
284  if( !mcTrack ) continue;
285  //cout<<"mc track "<<mcTrack->GetMotherID()<<"->"<<mcTrackID
286  //<<" ( pdg "<<mcTrack->GetPdgCode()<<", p "<<mcTrack->GetMomentum().Mag()<<" ) : ";
287  for( int ist=0; ist<MuNStations; ist++ ){
288  //if( ist%3 ==0 ) cout<<" | ";
289  CbmMuchPoint *mp = 0;
290  for( int ih=0; ih<NHits; ih++ ){
291  CbmL1MuchHit &h = vMuchHits[ih];
292  if( h.iStation != ist ) continue;
293  CbmMuchHit *mh = (CbmMuchHit*) fMuchHits->At(h.index);
294  int ip = mh->GetRefIndex();
295  if( ip<0 ) continue;
296  CbmMuchPoint *pp = (CbmMuchPoint *) fMuchPoints->At(ip);
297  if( mcTrackID == pp->GetTrackID() ){
298  mp = pp;
299  break;
300  }
301  }
302  //if(mp ) cout<<"+ ";
303  //else cout<<"- ";
304  }
305  //cout<<endl;
306  }
307  */
308 
309  for (int itr = 0; itr < NStsTracks; itr++) {
310  CbmStsTrack* Tsts = (CbmStsTrack*) fStsTracks->At(itr);
311  if (!Tsts) continue;
312  if (Tsts->GetNStsHits() + Tsts->GetNMvdHits() < 4) continue;
313 
314  CbmStsTrackMatch* m = (CbmStsTrackMatch*) fSTSTrackMatch->At(itr);
315  if (!m) continue;
316  Int_t mcTrackID = m->GetMCTrackId();
317  if (mcTrackID < 0) continue;
318  CbmMCTrack* mcTrack = (CbmMCTrack*) fMCTracks->At(mcTrackID);
319  if (!mcTrack) continue;
320  if (abs(mcTrack->GetPdgCode()) != 13) continue;
321  double ratio =
322  1. * m->GetNofTrueHits()
323  / (m->GetNofTrueHits() + m->GetNofWrongHits() + m->GetNofFakeHits());
324  if (ratio < .7) continue;
325 
326  fStsFitter.DoFit(Tsts, 13); // refit with muon mass
327  CbmL1MuchTrack tr;
328  tr.SetStsTrack(Tsts);
329  tr.StsID = itr;
330  tr.NHits = 0;
331  tr.NMissed = 0;
332  tr.ok = 1;
333 
334  for (int ist = 0; ist < MuNStations; ist++) {
335  double Zdet = CbmKF::Instance()->vMuchDetectors[ist].ZReference;
336  tr.Extrapolate(Zdet);
337  if (fabs(tr.T[4]) > 100.) break;
338  for (int ih = 0; ih < NHits; ih++) {
339  CbmL1MuchHit& h = vMuchHits[ih];
340  if (h.iStation != ist) continue;
341  CbmMuchHit* mh = (CbmMuchHit*) fMuchHits->At(h.index);
342  int ip = mh->GetRefIndex();
343  if (ip < 0) continue;
344  CbmMuchPoint* p = (CbmMuchPoint*) fMuchPoints->At(ip);
345  if (p->GetTrackID() != mcTrackID) continue;
346 
347  double dx = tr.T[0] - h.FitPoint.x;
348  double dy = tr.T[1] - h.FitPoint.y;
349  double c0 = tr.C[0] + h.FitPoint.V[0];
350  double c1 = tr.C[1] + h.FitPoint.V[1];
351  double c2 = tr.C[2] + h.FitPoint.V[2];
352  double chi2 = 0.5 * (dx * dx * c0 - 2 * dx * dy * c1 + dy * dy * c2)
353  / (c0 * c2 - c1 * c1);
354 
355  histChi2[ist]->Fill(chi2);
356  {
357  TVector3 pos, mom;
358  CbmL1MuchTrack tt = tr;
359  p->Position(pos);
360  p->Momentum(mom);
361  tt.Propagate(pos.Z());
362  Int_t j = ist + 20;
363  double sx = sqrt(tt.C[0]);
364  double sy = sqrt(tt.C[2]);
365  double stx = sqrt(tt.C[5]);
366  double sty = sqrt(tt.C[9]);
367  double sqp = sqrt(tt.C[14]);
368  double dx = (tt.T[0] - pos.X()) / sx;
369  double dy = (tt.T[1] - pos.Y()) / sy;
370  double dtx = (tt.T[2] - mom.X() / mom.Z()) / stx;
371  double dty = (tt.T[3] - mom.Y() / mom.Z()) / sty;
372  double dqp = (fabs(tt.T[4]) - 1. / mom.Mag()) / sqp;
373  if (sx > 0.0) histPull_dx[j]->Fill(dx);
374  if (sy > 0.0) histPull_dy[j]->Fill(dy);
375  if (stx > 0.0) histPull_tx[j]->Fill(dtx);
376  if (sty > 0.0) histPull_ty[j]->Fill(dty);
377  if (sqp > 0.0) histPull_qp[j]->Fill(dqp);
378  }
379 
380  double qp0 = tr.T[4];
381  h.Filter(tr, 1, qp0);
382  {
383  TVector3 pos, mom;
384  CbmL1MuchTrack tt = tr;
385  p->Position(pos);
386  p->Momentum(mom);
387  tt.Propagate(pos.Z());
388  if (tt.C[0] > 0.0)
389  histPull_dx[ist]->Fill((tt.T[0] - pos.X()) / sqrt(tt.C[0]));
390  if (tt.C[2] > 0.0)
391  histPull_dy[ist]->Fill((tt.T[1] - pos.Y()) / sqrt(tt.C[2]));
392  if (tt.C[5] > 0.0)
393  histPull_tx[ist]->Fill((tt.T[2] - mom.X() / mom.Z())
394  / sqrt(tt.C[5]));
395  if (tt.C[9] > 0.0)
396  histPull_ty[ist]->Fill((tt.T[3] - mom.Y() / mom.Z())
397  / sqrt(tt.C[9]));
398  if (tt.C[14] > 0.0)
399  histPull_qp[ist]->Fill((fabs(tt.T[4]) - 1. / mom.Mag())
400  / sqrt(tt.C[14]));
401  }
402  }
403  }
404  } // tracks
405 
406 
407  if (EventCounter < 100 && EventCounter % 10 == 0
408  || EventCounter >= 100 && EventCounter % 100 == 0)
409  Write();
410 }
411 
412 
414  TFile HistoFile("MuRecQa.root", "RECREATE");
416  HistoFile.Close();
417 }
418 
420  if (!obj->IsFolder())
421  obj->Write();
422  else {
423  TDirectory* cur = gDirectory;
424  TDirectory* sub = cur->mkdir(obj->GetName());
425  sub->cd();
426  TList* listSub = ((TDirectory*) obj)->GetList();
427  TIter it(listSub);
428  while (TObject* obj1 = it())
429  writedir2current(obj1);
430  cur->cd();
431  }
432 }
CbmKF::MuchStation2MCIDMap
std::map< Int_t, Int_t > MuchStation2MCIDMap
Definition: CbmKF.h:94
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmVertex.h
CbmL1MuchFinderQa::histPull_dx
TH1F * histPull_dx[40]
Definition: CbmL1MuchFinderQa.h:60
CbmMuchPoint
Definition: CbmMuchPoint.h:21
CbmL1MuchFinderQa::SetParContainers
void SetParContainers()
Definition: CbmL1MuchFinderQa.cxx:82
CbmKF.h
CbmL1MuchTrack::SetStsTrack
void SetStsTrack(CbmStsTrack *track)
Definition: CbmL1MuchTrack.cxx:8
CbmL1MuchFinderQa::histPull_dy
TH1F * histPull_dy[40]
Definition: CbmL1MuchFinderQa.h:60
CbmL1MuchTrack::NMissed
int NMissed
Definition: CbmL1MuchTrack.h:32
sqrt
friend F32vec4 sqrt(const F32vec4 &a)
Definition: L1/vectors/P4_F32vec4.h:41
CbmL1MuchFinderQa
Definition: CbmL1MuchFinderQa.h:14
CbmL1MuchFinderQa::histChi2
TH1F * histChi2[40]
Definition: CbmL1MuchFinderQa.h:61
CbmL1MuchFinderQa::fMuchHits
TClonesArray * fMuchHits
Much MC points.
Definition: CbmL1MuchFinderQa.h:45
ClassImp
ClassImp(CbmL1MuchFinderQa)
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
CbmL1MuchFinderQa::Finish
void Finish()
Definition: CbmL1MuchFinderQa.cxx:84
CbmL1MuchFinderQa::fhPerfSignal
TProfile * fhPerfSignal
Definition: CbmL1MuchFinderQa.h:59
CbmL1MuchTrack.h
CbmL1MuchFinderQa::Init
InitStatus Init()
Definition: CbmL1MuchFinderQa.cxx:49
CbmStsKFTrackFitter::DoFit
Int_t DoFit(CbmStsTrack *track, Int_t pidHypo=211)
Definition: CbmStsKFTrackFitter.cxx:79
CbmL1MuchTrack::T
double T[6]
Definition: CbmL1MuchTrack.h:29
CbmMuchTrack
Definition: CbmMuchTrack.h:16
CbmKFTrackInterface.h
CbmL1MuchFinderQa::fStsFitter
CbmStsKFTrackFitter fStsFitter
Definition: CbmL1MuchFinderQa.h:52
CbmL1MuchTrack::NHits
int NHits
Definition: CbmL1MuchTrack.h:32
CbmKFMath.h
CbmL1MuchHit
Definition: CbmL1MuchHit.h:10
CbmL1MuchFinderQa::fMuchTracks
TClonesArray * fMuchTracks
Definition: CbmL1MuchFinderQa.h:48
CbmKF::Instance
static CbmKF * Instance()
Definition: CbmKF.h:39
CbmStsTrack.h
Data class for STS tracks.
CbmL1MuchFinderQa::CbmL1MuchFinderQa
CbmL1MuchFinderQa(const char *name="CbmL1MuchFinderQa", Int_t iVerbose=1)
Definition: CbmL1MuchFinderQa.cxx:39
CbmL1MuchFinderQa::fStsTracks
TClonesArray * fStsTracks
Much Hits.
Definition: CbmL1MuchFinderQa.h:46
CbmMuchPoint.h
h
Data class with information on a STS local track.
CbmMuchTrack.h
CbmL1MuchTrack::ok
bool ok
Definition: CbmL1MuchTrack.h:33
CbmL1MuchFinderQa::Exec
void Exec(Option_t *option)
Definition: CbmL1MuchFinderQa.cxx:86
CbmVertex
Definition: CbmVertex.h:26
CbmL1MuchFinderQa::histodir
TDirectory * histodir
Definition: CbmL1MuchFinderQa.h:54
CbmL1MuchFinderQa::fSTSTrackMatch
TClonesArray * fSTSTrackMatch
Much tracks.
Definition: CbmL1MuchFinderQa.h:49
CbmL1MuchFinderQa::fMCTracks
TClonesArray * fMCTracks
Definition: CbmL1MuchFinderQa.h:47
CbmKFPixelMeasurement.h
CbmL1MuchFinderQa::fhPerfAll
TProfile * fhPerfAll
Definition: CbmL1MuchFinderQa.h:59
CbmL1MuchFinderQa::Write
void Write()
Definition: CbmL1MuchFinderQa.cxx:413
CbmKF::vMuchDetectors
std::vector< CbmKFTube > vMuchDetectors
Definition: CbmKF.h:76
CbmL1MuchFinderQa.h
CbmStsKFTrackFitter::Init
void Init()
Definition: CbmStsKFTrackFitter.cxx:29
CbmL1MuchFinderQa::histPull_tx
TH1F * histPull_tx[40]
Definition: CbmL1MuchFinderQa.h:60
CbmMCTrack.h
CbmL1MuchFinderQa::~CbmL1MuchFinderQa
~CbmL1MuchFinderQa()
Definition: CbmL1MuchFinderQa.cxx:47
CbmKFMaterial.h
CbmMCTrack
Definition: CbmMCTrack.h:34
fabs
friend F32vec4 fabs(const F32vec4 &a)
Definition: L1/vectors/P4_F32vec4.h:60
m
__m128 m
Definition: L1/vectors/P4_F32vec4.h:26
CbmL1MuchTrack
Definition: CbmL1MuchTrack.h:13
pos
TVector3 pos
Definition: CbmMvdSensorDigiToHitTask.cxx:60
CbmKFHit.h
CbmL1MuchFinderQa::fhGhost
TProfile * fhGhost
Definition: CbmL1MuchFinderQa.h:59
CbmL1MuchFinderQa::fMuchPoints
TClonesArray * fMuchPoints
Definition: CbmL1MuchFinderQa.h:44
CbmKFTrackInterface::Propagate
Int_t Propagate(Double_t z_out, Double_t QP0)
Definition: CbmKFTrackInterface.cxx:449
CbmL1MuchFinderQa::fPrimVtx
CbmVertex * fPrimVtx
Definition: CbmL1MuchFinderQa.h:51
CbmStsTrack
Definition: CbmStsTrack.h:37
CbmL1MuchTrack::C
double C[15]
Definition: CbmL1MuchTrack.h:29
CbmL1MuchHit.h
CbmL1MuchTrack::StsID
int StsID
Definition: CbmL1MuchTrack.h:35
CbmL1MuchFinderQa::ReInit
InitStatus ReInit()
Definition: CbmL1MuchFinderQa.cxx:51
CbmMCTrack::GetP
Double_t GetP() const
Definition: CbmMCTrack.h:100
CbmL1MuchFinderQa::histPull_qp
TH1F * histPull_qp[40]
Definition: CbmL1MuchFinderQa.h:61
CbmStsKFTrackFitter.h
CbmL1MuchFinderQa::writedir2current
void writedir2current(TObject *obj)
Definition: CbmL1MuchFinderQa.cxx:419
CbmKFTrackInterface::Extrapolate
Int_t Extrapolate(Double_t z, Double_t *QP0=0)
Access to i-th hit.
Definition: CbmKFTrackInterface.cxx:39
CbmL1MuchFinderQa::histPull_ty
TH1F * histPull_ty[40]
Definition: CbmL1MuchFinderQa.h:60