CbmRoot
CbmMuchMergeVectorsQA.cxx
Go to the documentation of this file.
1 
6 //#include "CbmMuchFindVectors.h"
7 #include "CbmMuchDigiMatch.h"
8 #include "CbmMuchFindHitsStraws.h"
9 #include "CbmMuchModule.h"
10 #include "CbmMuchPoint.h"
11 #include "CbmMuchStation.h"
12 #include "CbmMuchStrawHit.h"
13 #include "CbmMuchTrack.h"
14 
15 #include "FairEventHeader.h"
16 #include "FairRootManager.h"
17 #include "FairRunAna.h"
18 
19 #include <TClonesArray.h>
20 #include <TF1.h>
21 #include <TH1D.h>
22 #include <TH2D.h>
23 #include <TMath.h>
24 #include <TROOT.h>
25 
26 #include <iostream>
27 
28 using std::cout;
29 using std::endl;
30 using std::set;
31 
32 // ----- Default (stabdard) constructor --------------------------------
34  : FairTask("MuchMergeVectorsQA")
35  , fGeoScheme(CbmMuchGeoScheme::Instance())
36  , fStatFirst(-1)
37  , fNstat(0) {}
38 // -------------------------------------------------------------------------
39 
40 // ----- Destructor ----------------------------------------------------
42 // -------------------------------------------------------------------------
43 
44 // ----- Public method Init (abstract in base class) --------------------
46 
47  // Get and check FairRootManager
48  FairRootManager* ioman = FairRootManager::Instance();
49  if (ioman == NULL) Fatal("Init", "RootManager not instantiated!");
50 
51  //CbmMuchFindHitsStraws *hitFinder = (CbmMuchFindHitsStraws*)
52  //FairRun::Instance()->GetTask("CbmMuchFindHitsStraws");
53  //if (hitFinder == NULL) Fatal("CbmMuchFindTracks::Init", "CbmMuchFindHitsStraws not run!");
54 
55  fTracks = static_cast<TClonesArray*>(ioman->GetObject("MuchVectorTrack"));
56  fVectors = static_cast<TClonesArray*>(ioman->GetObject("MuchVector"));
57  fMCTracks = static_cast<TClonesArray*>(ioman->GetObject("MCTrack"));
58  fPoints = static_cast<TClonesArray*>(ioman->GetObject("MuchPoint"));
59  fHits = static_cast<TClonesArray*>(ioman->GetObject("MuchStrawHit"));
60  fHitsGem = static_cast<TClonesArray*>(ioman->GetObject("MuchPixelHit"));
61  fDigis = static_cast<TClonesArray*>(ioman->GetObject("MuchStrawDigi"));
62  fDigisGem = static_cast<TClonesArray*>(ioman->GetObject("MuchDigi"));
63  fDigiMatches =
64  static_cast<TClonesArray*>(ioman->GetObject("MuchStrawDigiMatch"));
66  static_cast<TClonesArray*>(ioman->GetObject("MuchDigiMatch"));
67  fClusters = static_cast<TClonesArray*>(ioman->GetObject("MuchCluster"));
68 
69  // Get straw system configuration
70  Int_t nSt = fGeoScheme->GetNStations();
71 
72  for (Int_t i = 0; i < nSt; ++i) {
74  CbmMuchModule* mod = fGeoScheme->GetModule(i, 0, 0, 0);
76  if (mod->GetDetectorType() == 2 && fStatFirst < 0) fStatFirst = stat;
77  ++fNstat;
78  Int_t nLays = st->GetNLayers();
79  fNdoubl[stat] = nLays;
80 
81  for (Int_t lay = 0; lay < nLays; ++lay) {
82  CbmMuchLayer* layer = st->GetLayer(lay);
83 
84  for (Int_t iside = 0; iside < 2; ++iside) {
85  CbmMuchLayerSide* side = layer->GetSide(iside);
86  Int_t plane = lay * 2 + iside;
87  fZpos[stat][plane] = side->GetZ();
88  }
89  }
90  }
91 
92  if (fStatFirst < 0) fStatFirst = 99; // all GEM stations
93 
94  // Create directory for histograms
95  TDirectory* dir0 = (TDirectory*) gROOT->FindObjectAny("muchQA");
96  TDirectory* dir = new TDirectory("muchQA1", "", "", dir0);
97  dir->cd();
98 
99  BookHistos();
100 
101  return kSUCCESS;
102 }
103 // -------------------------------------------------------------------------
104 
105 // ----- SetParContainers -------------------------------------------------
107 // -------------------------------------------------------------------------
108 
109 // ----- Private method BookHistos -------------------------------------
111  // Book histograms
112 
113  fhChi2mat = new TH1D*[fNstat + 2];
114 
115  for (Int_t ist = 0; ist < fNstat; ++ist) {
116  //Int_t stat = fStatFirst + ist;
117  Int_t stat = 1 + ist;
118  fhChi2mat[ist] = new TH1D(Form("hChi2mat%i", stat),
119  Form("Chi2 of matching in station %i", stat),
120  100,
121  0,
122  50);
123  }
124  fhChi2mat[fNstat] =
125  new TH1D("hChi2mat", "Chi2 of matching in 2 stations", 100, 0, 100);
126  fhChi2mat[fNstat + 1] =
127  new TH1D("hChi2Abs", "Chi2 of 2 vector matching", 100, 0, 50);
128  fhSim = new TH1D("hSim", "Number of reconstructable muons", 10, 0, 10);
129  fhRec = new TH1D("hRec", "Number of reconstructed muons", 10, 0, 10);
130  fhMatchMult = new TH1D("hMatchMult", "Multiplicity of matching", 10, 0, 10);
131  fhMatchOver = new TH1D("hMatchOver", "Matching overlaps", 10, 0, 10);
132  fhOverlap = new TH1D("hOverlap", "Matching overlap flag", 10, 0, 10);
133  fhSimRec = new TH2D("hSimRec", "Reco muons vs simulated", 4, 0, 4, 4, 0, 4);
134 }
135 // -------------------------------------------------------------------------
136 
137 // ----- Public method Exec --------------------------------------------
138 void CbmMuchMergeVectorsQA::Exec(Option_t* opt) {
139  // Do all processing
140 
141  // Check efficiency
142  CheckEffic();
143 }
144 // -------------------------------------------------------------------------
145 
146 // ----- Private method CheckMatch -------------------------------------
148  // Check matching quality of the vector
149 
150  /*
151  Int_t nhits = vec->GetNofHits(), nthr = nhits / 2, id = 0;
152  //Int_t nhits = vec->GetNofHits(), nthr = nhits - 1, id = 0;
153  Int_t ista = vec->GetPreviousTrackId();
154  map<Int_t,Int_t> ids;
155 
156  for (Int_t ih = 0; ih < nhits; ++ih) {
157  CbmMuchStrawHit *hit = (CbmMuchStrawHit*) fHits->UncheckedAt(vec->GetHitIndex(ih));
158  //if (hit->GetFlag() > 1) { cout << " hit " << hit->GetFlag() << endl; }
159  if (hit->GetFlag() % 2) {
160  //if (0) {
161  // Mirror hit
162  id = -1;
163  if (ids.find(id) == ids.end()) ids.insert(pair<Int_t,Int_t>(id,1));
164  else ++ids[id];
165  } else {
166  CbmMuchDigiMatch* digiM = (CbmMuchDigiMatch*) fDigiMatches->UncheckedAt(hit->GetRefId());
167  Int_t np = digiM->GetNofLinks();
168  for (Int_t ip = 0; ip < np; ++ip) {
169  //CbmMuchPoint* point = (CbmMuchPoint*) fPoints->UncheckedAt(digiM->GetLink(0).GetIndex());
170  CbmMuchPoint* point = (CbmMuchPoint*) fPoints->UncheckedAt(digiM->GetLink(ip).GetIndex());
171  id = point->GetTrackID();
172  //if (np > 1) cout << ip << " " << id << endl;
173  if (ids.find(id) == ids.end()) ids.insert(pair<Int_t,Int_t>(id,1));
174  else ++ids[id];
175  }
176  //if (np > 1) { cout << " digi " << digiM->GetNofLinks() << " " << ista << " " << hit->GetX() << " " << hit->GetY() << endl; exit(0); }
177  }
178  }
179  Int_t maxim = -1, idmax = -9;
180  for (map<Int_t,Int_t>::iterator it = ids.begin(); it != ids.end(); ++it) {
181  if (it->second > maxim) {
182  maxim = it->second;
183  idmax = it->first;
184  }
185  }
186  // Set vector ID as its flag
187  //vec->SetFlag(idmax);
188  if (maxim <= nthr || idmax < 0) return kFALSE;
189 
190  if (idmax > 1) return kFALSE; // !!! look only at muons from Pluto
191 
192  fhNhitsOk[ista]->Fill(vec->GetNofHits());
193  fhIds[ista]->Fill(idmax);
194  Int_t evID = FairRunAna::Instance()->GetEventHeader()->GetMCEntryNumber() + 1;
195  fhIdVsEv[ista]->Fill(evID,idmax);
196 
197  // Fill true track parameters
198  Double_t zp = 0.0, parsTr[4] = {0.0};
199  Int_t ok = 0;
200  for (Int_t ih = 0; ih < nhits; ++ih) {
201  CbmMuchStrawHit *hit = (CbmMuchStrawHit*) fHits->UncheckedAt(vec->GetHitIndex(ih));
202  CbmMuchDigiMatch* digiM = (CbmMuchDigiMatch*) fDigiMatches->UncheckedAt(hit->GetRefId());
203  Int_t np = digiM->GetNofLinks();
204  for (Int_t ip = 0; ip < np; ++ip) {
205  CbmMuchPoint* point = (CbmMuchPoint*) fPoints->UncheckedAt(digiM->GetLink(ip).GetIndex());
206  id = point->GetTrackID();
207  if (id != idmax) continue;
208  parsTr[0] = (point->GetXIn() + point->GetXOut()) / 2;
209  parsTr[1] = (point->GetYIn() + point->GetYOut()) / 2;
210  zp = (point->GetZIn() + point->GetZOut()) / 2;
211  parsTr[2] = point->GetPx() / point->GetPz();
212  parsTr[3] = point->GetPy() / point->GetPz();
213  ok = 1;
214  break;
215  }
216  if (ok) break;
217  }
218  // Adjust track coordinates
219  const FairTrackParam *params = vec->GetParamFirst();
220  parsTr[0] += parsTr[2] * (params->GetZ() - zp);
221  parsTr[1] += parsTr[3] * (params->GetZ() - zp);
222  fhDx[ista]->Fill(params->GetX()-parsTr[0]);
223  fhDy[ista]->Fill(params->GetY()-parsTr[1]);
224  fhDtx[ista]->Fill(params->GetTx()-parsTr[2]);
225  fhDty[ista]->Fill(params->GetTy()-parsTr[3]);
226  fhDtxOk[ista]->Fill(params->GetTx()-params->GetX()/params->GetZ());
227  fhDtyOk[ista]->Fill(params->GetTy()-params->GetY()/params->GetZ());
228  cout << " Good: " << idmax << " " << zp << " " << params->GetZ() << " " << parsTr[0] << " " << params->GetX() << " " << parsTr[1] << " " << params->GetY() << " " << parsTr[2] << " " << params->GetTx() << " " << parsTr[3] << " " << params->GetTy() << " " << vec->GetChiSq() << endl;
229 
230  // Fill tube difference between doublets
231  map<Int_t,Int_t> tubes[2];
232  Int_t id0 = -1;
233  for (Int_t ih = 0; ih < nhits; ++ih) {
234  CbmMuchStrawHit *hit = (CbmMuchStrawHit*) fHits->UncheckedAt(vec->GetHitIndex(ih));
235  CbmMuchDigiMatch* digiM = (CbmMuchDigiMatch*) fDigiMatches->UncheckedAt(hit->GetRefId());
236  Int_t np = digiM->GetNofLinks();
237  for (Int_t ip = 0; ip < np; ++ip) {
238  CbmMuchPoint* point = (CbmMuchPoint*) fPoints->UncheckedAt(digiM->GetLink(ip).GetIndex());
239  id = point->GetTrackID();
240  if (id > 1) continue; // look only at muons from vector mesons
241  if (id0 < 0) id0 = id;
242  break;
243  }
244  if (id0 < 0 || id != id0) continue;
245  Int_t lay = fGeoScheme->GetLayerIndex(hit->GetAddress());
246  tubes[id].insert(pair<Int_t,Int_t>(lay,hit->GetTube()));
247  }
248  Double_t slope[2] = {0.08, 0.06};
249  for (Int_t j = 0; j < 2; ++j) {
250  // Loop over trackID
251  Int_t nd = tubes[j].size();
252  if (nd < 2) continue;
253  Int_t tubeNos[4] = {1000, 1000, 1000, 1000};
254  map<Int_t,Int_t>::iterator it = tubes[j].begin();
255  tubeNos[it->first] = it->second;
256  ++it;
257  for ( ; it != tubes[j].end(); ++it) tubeNos[it->first] = it->second;
258  for (Int_t lay = 1; lay < 4; ++lay) {
259  if (tubeNos[lay] < 1000 & tubeNos[lay-1] < 1000)
260  fhDtube[ista][lay-1]->Fill(tubeNos[lay]-tubeNos[lay-1]);
261  if (lay == 2 && tubeNos[lay] < 1000 & tubeNos[lay-2] < 1000)
262  fhDtube2[ista][lay-2]->Fill(tubeNos[lay-2],tubeNos[lay]-tubeNos[lay-2]);
263  if (lay == 3 && tubeNos[lay] < 1000 & tubeNos[lay-2] < 1000) {
264  //fhDtube2[ista][lay-2]->Fill(tubeNos[lay-2],tubeNos[lay]-tubeNos[lay-2]-slope[ista]*tubeNos[lay-2]);
265  Double_t dzz = (fZpos[ista][lay*2]-fZpos[ista][lay*2-4]) / fZpos[ista][lay*2-4];
266  fhDtube2[ista][lay-2]->Fill(tubeNos[lay-2],tubeNos[lay]-tubeNos[lay-2]-dzz*tubeNos[lay-2]);
267  }
268  }
269  if (ok) break;
270  }
271  */
272 
273  return kTRUE;
274 }
275 // -------------------------------------------------------------------------
276 
277 // ----- Private method CheckEffic -------------------------------------
279  // Check efficiency of the vector reco
280 
281  // Find "reconstructable" vectors - having points in all straw doublets
282  // !!! Take only trackID = 0, 1 (from signal mesons)
283  const Int_t nMu = 2;
284  set<Int_t> doublets[20][nMu], singlets[20][nMu];
285  Int_t nPoints = fPoints->GetEntriesFast();
286  Double_t xp[7][20][nMu], yp[7][20][nMu];
287  Bool_t lstraws = kFALSE;
288 
289  for (Int_t ip = 0; ip < nPoints; ++ip) {
290  CbmMuchPoint* p = (CbmMuchPoint*) fPoints->UncheckedAt(ip);
291  Int_t id = p->GetTrackID();
292  if (id > 1) continue;
293  //if (p->GetZ() < fZpos[0][0] - 2.0) continue;
294  Int_t ista =
295  fGeoScheme->GetStationIndex(p->GetDetectorId()); // - fStatFirst;
296  Int_t lay = fGeoScheme->GetLayerIndex(p->GetDetectorId());
297  Int_t side = fGeoScheme->GetLayerSideIndex(p->GetDetectorId());
298 
299  doublets[ista][id].insert(lay);
300  singlets[ista][id].insert(lay * 2 + side);
301  xp[ista][lay * 2 + side][id] = (p->GetXIn() + p->GetXOut()) / 2;
302  yp[ista][lay * 2 + side][id] = (p->GetYIn() + p->GetYOut()) / 2;
303 
304  if (!lstraws) {
305  if (fGeoScheme->GetModuleByDetId(p->GetDetectorId())->GetDetectorType()
306  == 2)
307  lstraws = kTRUE;
308  }
309  }
310 
311  Int_t muons[7][nMu] = {{0}, {0}}, nMuVec = 0, nMuRec = 0;
312  for (Int_t ista = 0; ista < fNstat; ++ista) {
313  if (doublets[ista][0].size() == fNdoubl[ista]) {
314  muons[ista][0] = 1;
315  ++nMuVec;
316  }
317  if (doublets[ista][1].size() == fNdoubl[ista]) {
318  muons[ista][1] = 1;
319  ++nMuVec;
320  }
321  }
322  //if ((muons[0][0] == 0 || muons[1][0] == 0) && (muons[0][1] == 0 || muons[1][1] == 0)) return;
323  if (nMuVec == 0) return;
324  nMuVec = 0;
325  for (Int_t mu = 0; mu < nMu; ++mu) {
326  Int_t simOk = 0;
327  for (Int_t ista = 0; ista < fNstat; ++ista)
328  simOk += muons[ista][mu];
329  nMuVec += simOk / fNstat;
330  }
331 
332  // Match merged vectors
333  Int_t ntracks = fTracks->GetEntriesFast();
334  Int_t pluto = 0; // !!! set to 1 to check exact matching for Pluto
335  Double_t errxS[6] = {0.33, 0.50, 0.2, 0.2, 1, 1};
336  Double_t erryS[6] = {0.33, 0.50, 1.9, 1.9, 1, 1},
337  chi2cut = 10.0; // 2 GEMS, 2 straws
338  //Double_t errxS[6] = {0.33, 0.50, 0.03, 0.03, 1, 1};
339  //Double_t erryS[6] = {0.33, 0.50, 0.26, 0.26, 1, 1}, chi2cut = 10.0; // 2 GEMS, 2 straws
340  Double_t errxG[6] = {0.33, 0.54, 1.0, 1.7, 1, 1};
341  Double_t erryG[6] = {0.33, 0.54, 1.0, 1.7, 1, 1}; // 4 GEMS
342  Double_t chi2tot = 0.0, chi2min = 0.0, chi2[10][nMu] = {{0.0}, {0.0}};
343  Int_t iMatch[nMu] = {0};
344  Double_t *errx = errxG, *erry = erryG;
345  if (lstraws) {
346  errx = errxS;
347  erry = erryS;
348  }
349 
350  for (Int_t mu = 0; mu < nMu; ++mu) {
351  iMatch[mu] = -1;
352  //fhSim->Fill(muons[0][mu]+muons[1][mu]);
353  //if (muons[0][mu] == 0 || muons[1][mu] == 0) continue;
354  fhSim->Fill(muons[2][mu] + muons[3][mu]); // stations 3 and 4
355  if (muons[2][mu] == 0 || muons[3][mu] == 0) continue;
356  for (Int_t j = 0; j < 10; ++j)
357  chi2[j][mu] = 999999.0;
358  chi2tot = chi2min = 999999.0;
359  Int_t nmatch = 0;
360 
361  for (Int_t itr = 0; itr < ntracks; ++itr) {
362  CbmMuchTrack* track = (CbmMuchTrack*) fTracks->UncheckedAt(itr);
363  Int_t nvecs = track->GetNofHits();
364  if (nvecs < 5) continue;
365  Double_t c2[10] = {0.0}, c2tot = 0.0;
366 
367  for (Int_t ivec = 0; ivec < nvecs; ++ivec) {
368  if (track->GetHitType(ivec) != kMUCHSTRAWHIT)
369  continue; // skip STS vector
370  CbmMuchTrack* vec =
371  (CbmMuchTrack*) fVectors->UncheckedAt(track->GetHitIndex(ivec));
372  Int_t nhits = vec->GetNofHits();
373  Int_t ista = vec->GetUniqueID();
374  //if (ivec == 0 && ista < 2 || ivec > 0 && ista == 2) continue; // only 2 last stations
375 
376  Int_t id = vec->GetFlag();
377  if (pluto && id != mu)
378  continue; // !!! this is only for Pluto sample - exact ID match!!!
379  const FairTrackParam* params = vec->GetParamFirst();
380  //cout << " Oops: " << ivec << " " << params->GetZ() << endl;
381  Int_t nm = 0;
382  TClonesArray* hitArray = (ista < fStatFirst) ? fHitsGem : fHits;
383 
384  for (Int_t ih = 0; ih < nhits; ++ih) {
385  //CbmMuchStrawHit *hit = (CbmMuchStrawHit*) fHits->UncheckedAt(vec->GetHitIndex(ih));
386  CbmHit* hit = (CbmHit*) hitArray->UncheckedAt(vec->GetHitIndex(ih));
387  Int_t lay = fGeoScheme->GetLayerIndex(hit->GetAddress());
388  Int_t side = fGeoScheme->GetLayerSideIndex(hit->GetAddress());
389  Int_t plane = lay * 2 + side;
390  if (singlets[ista][mu].find(plane) == singlets[ista][mu].end())
391  continue;
392  Double_t x =
393  params->GetX()
394  + params->GetTx() * (fZpos[ista][plane] - params->GetZ());
395  Double_t y =
396  params->GetY()
397  + params->GetTy() * (fZpos[ista][plane] - params->GetZ());
398  Double_t dx = x - xp[ista][plane][mu];
399  Double_t dy = y - yp[ista][plane][mu];
400  c2[ista] += dx * dx / errx[ista] / errx[ista];
401  c2[ista] += dy * dy / erry[ista] / erry[ista];
402  ++nm;
403  //cout << nm << " " << dx << " " << dy << endl;
404  }
405  nm *= 2;
406  if (nm > 4) c2[ista] /= (nm - 4); // per NDF
407  c2tot += c2[ista];
408  } // for (Int_t ivec = 0; ivec < nvecs;
409  //if (pluto) fhChi2mat[ista]->Fill(chi2[id]); // !!! this is only for Pluto sample - exact ID match!!!
410  //if (c2[2] + c2[3] < chi2[2][mu] + chi2[3][mu]) {
411  if (c2tot < chi2tot * 1.2 && track->GetChiSq() < chi2min
412  || c2tot < chi2tot && track->GetChiSq() < chi2min * 1.2) {
413  for (Int_t j = 0; j < 10; ++j)
414  chi2[j][mu] = c2[j];
415  chi2tot = c2tot;
416  chi2min = track->GetChiSq();
417  iMatch[mu] = itr;
418  }
419  //if (c2[0] < chi2cut && c2[1] < chi2cut && track->GetChiSq() < chi2cut * 2) ++nmatch;
420  if (c2[0] < chi2cut && c2[1] < chi2cut && c2[2] < chi2cut
421  && c2[3] < chi2cut && track->GetChiSq() < chi2cut * 4)
422  ++nmatch;
423  //cout << nvecs << " " << c2tot << endl;
424  } // for (Int_t itr = 0; itr < ntracks;
425  cout << " Nover " << ntracks << " " << nmatch << endl;
426  if (iMatch[mu] < 0) continue;
427  fhMatchOver->Fill(nmatch);
428  nMuRec += TMath::Min(1, nmatch);
429 
430  for (Int_t ista = 0; ista < fNstat; ++ista)
431  fhChi2mat[ista]->Fill(chi2[ista][mu]);
432  //fhChi2mat[fNstat]->Fill(chi2[2][mu]+chi2[3][mu]);
433  fhChi2mat[fNstat]->Fill(chi2tot);
434  CbmMuchTrack* track = (CbmMuchTrack*) fTracks->UncheckedAt(iMatch[mu]);
435  fhChi2mat[fNstat + 1]->Fill(track->GetChiSq());
436  //if (track->GetChiSq() > 20) { cout << track->GetChiSq() << " " << chi2tot << endl; exit(0); }
437 
438  nmatch = 0;
439  for (Int_t ista = 0; ista < fNstat; ++ista)
440  if (chi2[ista][mu] < chi2cut) ++nmatch;
441  fhMatchMult->Fill(nmatch);
442  } // for (Int_t mu = 0; mu < nMu;
443  if (iMatch[0] == iMatch[1] && iMatch[0] >= 0)
444  fhOverlap->Fill(1); // the same track matches 2 muons
445  fhSimRec->Fill(nMuVec, nMuRec);
446 }
447 // -------------------------------------------------------------------------
448 
449 // ----- Public method Finish ------------------------------------------
451 
452  TDirectory* dir0 = (TDirectory*) gROOT->FindObjectAny("muchQA");
453  TDirectory* dir = (TDirectory*) dir0->FindObjectAny("muchQA1");
454  gDirectory->mkdir("muchQA1");
455  gDirectory->cd("muchQA1");
456  dir->GetList()->Write();
457 }
458 // -------------------------------------------------------------------------
459 
460 // -------------------------------------------------------------------------
461 
CbmMuchPoint::GetXOut
Double_t GetXOut() const
Definition: CbmMuchPoint.h:73
CbmMuchModule.h
CbmTrack::GetChiSq
Double_t GetChiSq() const
Definition: CbmTrack.h:58
CbmMuchMergeVectorsQA::fhMatchOver
TH1D * fhMatchOver
Definition: CbmMuchMergeVectorsQA.h:67
CbmMuchGeoScheme
Definition: CbmMuchGeoScheme.h:43
CbmMuchPoint
Definition: CbmMuchPoint.h:21
CbmMuchGeoScheme::GetModule
CbmMuchModule * GetModule(Int_t iStation, Int_t iLayer, Bool_t iSide, Int_t iModule) const
Definition: CbmMuchGeoScheme.cxx:238
CbmMuchStation::GetLayer
CbmMuchLayer * GetLayer(Int_t iLayer) const
Definition: CbmMuchStation.h:58
CbmMuchStation
Definition: CbmMuchStation.h:22
CbmTrack::GetNofHits
virtual Int_t GetNofHits() const
Definition: CbmTrack.h:53
CbmMuchMergeVectorsQA::SetParContainers
virtual void SetParContainers()
Definition: CbmMuchMergeVectorsQA.cxx:106
CbmTrack::GetFlag
Int_t GetFlag() const
Definition: CbmTrack.h:57
CbmMuchMergeVectorsQA::fDigis
TClonesArray * fDigis
Definition: CbmMuchMergeVectorsQA.h:58
CbmMuchMergeVectorsQA
Definition: CbmMuchMergeVectorsQA.h:22
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmMuchPoint::GetDetectorId
Int_t GetDetectorId() const
Definition: CbmMuchPoint.h:69
CbmMuchMergeVectorsQA::Exec
virtual void Exec(Option_t *opt)
Definition: CbmMuchMergeVectorsQA.cxx:138
CbmMuchMergeVectorsQA::BookHistos
void BookHistos()
Definition: CbmMuchMergeVectorsQA.cxx:110
CbmMuchMergeVectorsQA::Init
virtual InitStatus Init()
Definition: CbmMuchMergeVectorsQA.cxx:45
CbmMuchMergeVectorsQA::fDigiMatches
TClonesArray * fDigiMatches
Definition: CbmMuchMergeVectorsQA.h:60
CbmMuchLayer::GetSide
CbmMuchLayerSide * GetSide(Bool_t side)
Definition: CbmMuchLayer.h:49
CbmMuchTrack
Definition: CbmMuchTrack.h:16
CbmMuchMergeVectorsQA::CheckMatch
Bool_t CheckMatch(CbmMuchTrack *vec)
Definition: CbmMuchMergeVectorsQA.cxx:147
CbmMuchMergeVectorsQA.h
CbmMuchPoint::GetYOut
Double_t GetYOut() const
Definition: CbmMuchPoint.h:74
CbmMuchGeoScheme::GetLayerSideIndex
static Int_t GetLayerSideIndex(Int_t address)
Definition: CbmMuchGeoScheme.h:74
CbmMuchGeoScheme::GetNStations
Int_t GetNStations() const
Definition: CbmMuchGeoScheme.h:79
CbmMuchGeoScheme::GetLayerIndex
static Int_t GetLayerIndex(Int_t address)
Definition: CbmMuchGeoScheme.h:71
CbmMuchGeoScheme::GetStationIndex
static Int_t GetStationIndex(Int_t address)
Definition: CbmMuchGeoScheme.h:68
CbmMuchMergeVectorsQA::fClusters
TClonesArray * fClusters
Definition: CbmMuchMergeVectorsQA.h:62
CbmMuchPoint.h
CbmMuchTrack.h
CbmMuchMergeVectorsQA::fVectors
TClonesArray * fVectors
Definition: CbmMuchMergeVectorsQA.h:53
ClassImp
ClassImp(CbmMuchMergeVectorsQA)
CbmMuchMergeVectorsQA::Finish
virtual void Finish()
Definition: CbmMuchMergeVectorsQA.cxx:450
CbmMuchMergeVectorsQA::fStatFirst
Int_t fStatFirst
Definition: CbmMuchMergeVectorsQA.h:47
CbmMuchMergeVectorsQA::fPoints
TClonesArray * fPoints
Definition: CbmMuchMergeVectorsQA.h:55
CbmMuchMergeVectorsQA::fhRec
TH1D * fhRec
Definition: CbmMuchMergeVectorsQA.h:65
CbmMuchMergeVectorsQA::fZpos
Double_t fZpos[5][10]
Definition: CbmMuchMergeVectorsQA.h:50
CbmTrack::GetHitIndex
Int_t GetHitIndex(Int_t iHit) const
Definition: CbmTrack.h:54
CbmHit::GetAddress
Int_t GetAddress() const
Definition: CbmHit.h:73
CbmMuchMergeVectorsQA::fhSim
TH1D * fhSim
Definition: CbmMuchMergeVectorsQA.h:64
CbmMuchStation::GetDetectorId
Int_t GetDetectorId() const
Definition: CbmMuchStation.h:48
CbmMuchLayerSide
Definition: CbmMuchLayerSide.h:22
CbmMuchMergeVectorsQA::fNstat
Int_t fNstat
Definition: CbmMuchMergeVectorsQA.h:48
CbmTrack::GetHitType
HitType GetHitType(Int_t iHit) const
Definition: CbmTrack.h:55
CbmMuchMergeVectorsQA::fHitsGem
TClonesArray * fHitsGem
Definition: CbmMuchMergeVectorsQA.h:57
CbmTrack::GetParamFirst
const FairTrackParam * GetParamFirst() const
Definition: CbmTrack.h:61
CbmMuchModule
Definition: CbmMuchModule.h:24
CbmMuchAddress::GetStationIndex
static Int_t GetStationIndex(Int_t address)
Definition: CbmMuchAddress.h:103
CbmMuchMergeVectorsQA::CheckEffic
void CheckEffic()
Definition: CbmMuchMergeVectorsQA.cxx:278
CbmMuchMergeVectorsQA::~CbmMuchMergeVectorsQA
virtual ~CbmMuchMergeVectorsQA()
Definition: CbmMuchMergeVectorsQA.cxx:41
CbmMuchMergeVectorsQA::CbmMuchMergeVectorsQA
CbmMuchMergeVectorsQA()
Definition: CbmMuchMergeVectorsQA.cxx:33
CbmMuchModule::GetDetectorType
Int_t GetDetectorType() const
Definition: CbmMuchModule.h:52
CbmMuchMergeVectorsQA::fTracks
TClonesArray * fTracks
Definition: CbmMuchMergeVectorsQA.h:52
CbmMuchMergeVectorsQA::fDigiMatchesGem
TClonesArray * fDigiMatchesGem
Definition: CbmMuchMergeVectorsQA.h:61
CbmMuchMergeVectorsQA::fhOverlap
TH1D * fhOverlap
Definition: CbmMuchMergeVectorsQA.h:68
CbmMuchMergeVectorsQA::fGeoScheme
CbmMuchGeoScheme * fGeoScheme
Definition: CbmMuchMergeVectorsQA.h:46
CbmMuchMergeVectorsQA::fHits
TClonesArray * fHits
Definition: CbmMuchMergeVectorsQA.h:56
CbmHit
Definition: CbmHit.h:38
CbmMuchPoint::GetYIn
Double_t GetYIn() const
Definition: CbmMuchPoint.h:71
x
Double_t x
Definition: CbmMvdSensorDigiToHitTask.cxx:68
CbmMuchMergeVectorsQA::fhMatchMult
TH1D * fhMatchMult
Definition: CbmMuchMergeVectorsQA.h:66
CbmMuchMergeVectorsQA::fhSimRec
TH2D * fhSimRec
Definition: CbmMuchMergeVectorsQA.h:70
y
Double_t y
Definition: CbmMvdSensorDigiToHitTask.cxx:68
kMUCHSTRAWHIT
@ kMUCHSTRAWHIT
Definition: CbmHit.h:24
CbmMuchPoint::GetXIn
Double_t GetXIn() const
Definition: CbmMuchPoint.h:70
CbmMuchMergeVectorsQA::fhChi2mat
TH1D ** fhChi2mat
Definition: CbmMuchMergeVectorsQA.h:69
CbmMuchGeoScheme::GetStation
CbmMuchStation * GetStation(Int_t iStation) const
Definition: CbmMuchGeoScheme.cxx:209
CbmMuchStation::GetNLayers
Int_t GetNLayers() const
Definition: CbmMuchStation.h:50
CbmMuchDigiMatch.h
CbmMuchLayer
Definition: CbmMuchLayer.h:21
CbmMuchMergeVectorsQA::fMCTracks
TClonesArray * fMCTracks
Definition: CbmMuchMergeVectorsQA.h:54
CbmMuchLayerSide::GetZ
Double_t GetZ()
Definition: CbmMuchLayerSide.h:49
CbmMuchGeoScheme::GetModuleByDetId
CbmMuchModule * GetModuleByDetId(Int_t detId) const
Definition: CbmMuchGeoScheme.cxx:278
PairAnalysisStyler::Fill
static Int_t Fill[]
Definition: PairAnalysisStyleDefs.h:82
CbmMuchStation.h
CbmMuchMergeVectorsQA::fNdoubl
Int_t fNdoubl[10]
Definition: CbmMuchMergeVectorsQA.h:49
CbmMuchMergeVectorsQA::fDigisGem
TClonesArray * fDigisGem
Definition: CbmMuchMergeVectorsQA.h:59