CbmRoot
CbmMuchTransportQa.cxx
Go to the documentation of this file.
1 
10 #include "CbmMuchTransportQa.h"
12 
13 // -------------------------------------------------------------------------
14 CbmMuchTransportQa::CbmMuchTransportQa(const char* name, Int_t verbose)
15  : FairTask(name, verbose)
16  , fOutFolder("MuchTransportQA", "Much Transport QA")
17  , fhNevents("nEvents", 0)
18  , fvUsNtra()
19  , fvMcPointXY()
20  , fvMcPointPhiZ()
21  , fvMcPointRZ()
22  , fvFraction()
23  , fvMcPointPRatio()
24  , fvMcPointPrimRatio() {}
25 // -------------------------------------------------------------------------
26 
27 // -------------------------------------------------------------------------
29 // -------------------------------------------------------------------------
30 
31 // -------------------------------------------------------------------------
33 
34  fPoints = nullptr;
35  fMcTracks = nullptr;
36  fOutFolder.Clear();
37  fhNevents.SetVal(0);
38 
39  SafeDelete(fhUsNtraAll);
40  SafeDelete(fhUsNtraPrim);
41  SafeDelete(fhUsNtraSec);
42  SafeDelete(fhUsNtraPr);
43  SafeDelete(fhUsNtraPi);
44  SafeDelete(fhUsNtraEl);
45  SafeDelete(fhUsNtraMu);
46  SafeDelete(fhUsNtraKa);
47 
48  for (uint i = 0; i < fvMcPointXY.size(); i++) {
49  SafeDelete(fvMcPointXY[i]);
50  }
51  for (uint i = 0; i < fvMcPointPhiZ.size(); i++) {
52  SafeDelete(fvMcPointPhiZ[i]);
53  }
54  for (uint i = 0; i < fvMcPointRZ.size(); i++) {
55  SafeDelete(fvMcPointRZ[i]);
56  }
57  fvMcPointXY.clear();
58  fvMcPointPhiZ.clear();
59  fvMcPointRZ.clear();
60 
61  for (uint i = 0; i < fvMcPointPRatio.size(); i++) {
62  SafeDelete(fvMcPointPRatio[i]);
63  }
64  for (uint i = 0; i < fvMcPointPrimRatio.size(); i++) {
65  SafeDelete(fvMcPointPrimRatio[i]);
66  }
67  SafeDelete(fhNtracks);
68  SafeDelete(fhFractionPrim);
69  SafeDelete(fhFractionSec);
70  SafeDelete(fhFractionPr);
71  SafeDelete(fhFractionPi);
72  SafeDelete(fhFractionEl);
73  SafeDelete(fhFractionMu);
74  SafeDelete(fhFractionKa);
75 
76  fvUsNtra.clear();
77  fvFraction.clear();
78  fvMcPointPRatio.clear();
79  fvMcPointPrimRatio.clear();
80 
81  SafeDelete(fCanvStationXY);
82  SafeDelete(fCanvStationPhiZ);
83  SafeDelete(fCanvStationRZ);
84  SafeDelete(fCanvUsNtra);
85  SafeDelete(fCanvStationPRatio);
86  SafeDelete(fCanvStationPrimRatio);
87 
88  fNstations = 0;
89  fOutFolder.Clear();
90 }
91 // -------------------------------------------------------------------------
92 
93 
94 // -------------------------------------------------------------------------
96 
97  TDirectory* oldDirectory = gDirectory;
98  FairRootManager* manager = FairRootManager::Instance();
99  fMcTracks = (TClonesArray*) manager->GetObject("MCTrack");
100  fPoints = (TClonesArray*) manager->GetObject("MuchPoint");
102  histFolder = fOutFolder.AddFolder("hist", "Histogramms");
103 
104  if (!manager) {
105  LOG(error) << "No FairRootManager found";
106  return kERROR;
107  }
108  if (!fMcTracks) {
109  LOG(error) << "No MC tracks found";
110  return kERROR;
111  }
112  if (!fPoints) {
113  LOG(error) << "No MC points found";
114  return kERROR;
115  }
117  LOG(fatal) << "No CbmMuchGeoScheme found";
118  return kFATAL;
119  }
120  if (fNstations == 0) {
121  LOG(error) << "CbmMuchGeoScheme is not initialized";
122  return kERROR;
123  }
124  for (Int_t i = 0; i < fNstations; i++) {
126  if (!station) {
127  LOG(fatal) << "Much station " << i << " doesn't exist";
128  return kFATAL;
129  }
130  }
131  fhNevents.SetVal(0);
132  histFolder->Add(&fhNevents);
133 
138  InitCanvases();
139 
140  gDirectory = oldDirectory;
141  return kSUCCESS;
142 }
143 // -------------------------------------------------------------------------
144 
146 
147  fvUsNtra.clear();
148  std::vector<TH1F*>& v = fvUsNtra;
149  v.push_back(fhUsNtraAll = new TH1F("hUsNtraAll", "N tracks", BINS_STA));
150  v.push_back(fhUsNtraPrim =
151  new TH1F("hUsNtraPrim", "N primary tracks", BINS_STA));
152  v.push_back(fhUsNtraSec =
153  new TH1F("hUsNtraSec", "N secondary tracks", BINS_STA));
154  v.push_back(fhUsNtraPr = new TH1F("hUsNtraPr", "N protons", BINS_STA));
155  v.push_back(fhUsNtraPi = new TH1F("hUsNtraPi", "N pions", BINS_STA));
156  v.push_back(fhUsNtraEl = new TH1F("hUsNtraEl", "N electrons", BINS_STA));
157  v.push_back(fhUsNtraMu = new TH1F("hUsNtraMu", "N muons", BINS_STA));
158  v.push_back(fhUsNtraKa = new TH1F("hUsNtraKa", "N kaons", BINS_STA));
159  for (uint i = 0; i < fvUsNtra.size(); i++) {
160  TH1F* h = fvUsNtra[i];
161  h->SetStats(0);
162  h->GetXaxis()->SetTitle("Station");
163  histFolder->Add(h);
164  }
165 }
166 
168 
169  fvFraction.clear();
170  std::vector<TH1F*>& v = fvFraction;
171  v.push_back(fhNtracks = new TH1F("hNtracks", "N tracks per event", BINS_STA));
172  v.push_back(fhFractionPrim = new TH1F(
173  "hFractionPrim", "Fraction of primary tracks", BINS_STA));
174  v.push_back(fhFractionSec = new TH1F(
175  "hFractionSec", "Fraction of secondary tracks", BINS_STA));
176  v.push_back(fhFractionPr =
177  new TH1F("hFractionPr", "Fraction of protons", BINS_STA));
178  v.push_back(fhFractionPi =
179  new TH1F("hFractionPi", "Fraction of pions", BINS_STA));
180  v.push_back(fhFractionEl =
181  new TH1F("hFractionEl", "Fraction of electrons", BINS_STA));
182  v.push_back(fhFractionMu =
183  new TH1F("hFractionMu", "Fraction of muons", BINS_STA));
184  v.push_back(fhFractionKa =
185  new TH1F("hFractionKa", "Fraction of kaons", BINS_STA));
186 
187  for (uint i = 0; i < fvFraction.size(); i++) {
188  TH1F* h = fvFraction[i];
189  h->SetStats(0);
190  h->GetXaxis()->SetTitle("Station");
191  if (i == 0) {
192  h->GetYaxis()->SetTitle("N tracks");
193  } else {
194  h->GetYaxis()->SetTitle("%");
195  }
196  histFolder->Add(h);
197  }
198 }
199 
201 
202  fvMcPointXY.resize(fNstations);
203  fvMcPointPhiZ.resize(fNstations);
204  fvMcPointRZ.resize(fNstations);
205 
206  for (Int_t i = 0; i < fNstations; i++) {
208  Double_t rMax = station->GetRmax();
209  Double_t rMin = station->GetRmin();
210 
211  fvMcPointXY[i] = new TH2F(Form("hMcPointXY%i", i + 1),
212  Form("MC point XY : Station %i; X; Y", i + 1),
213  100,
214  -1.2 * rMax,
215  1.2 * rMax,
216  100,
217  -1.2 * rMax,
218  1.2 * rMax);
219  fvMcPointPhiZ[i] =
220  new TH2F(Form("hMcPointPhiZ%i", i + 1),
221  Form("MC point Phi vs Z : Station %i; Z; Phi", i + 1),
222  100,
223  station->GetZ() - station->GetTubeDz() - 5.,
224  station->GetZ() + station->GetTubeDz() + 5.,
225  100,
226  -200.,
227  200.);
228 
229  float dR = rMax - rMin;
230  fvMcPointRZ[i] = new TH2F(Form("hMcPointRZ%i", i + 1),
231  Form("MC point R vs Z : Station %i; Z; R", i + 1),
232  100,
233  station->GetZ() - station->GetTubeDz() - 5.,
234  station->GetZ() + station->GetTubeDz() + 5.,
235  100,
236  rMin - 0.1 * dR,
237  rMax + 0.1 * dR);
238  histFolder->Add(fvMcPointXY[i]);
239  histFolder->Add(fvMcPointPhiZ[i]);
240  histFolder->Add(fvMcPointRZ[i]);
241  }
242 }
243 
245 
246  fvMcPointPRatio.resize(fNstations);
248  for (Int_t i = 0; i < fNstations; i++) {
249  fvMcPointPRatio[i] =
250  new TPie(Form("fvMcPointPRatio%i", i + 1),
251  Form("McPoint Particle Ratios: Station %i", i + 1),
252  5);
253 
255  new TPie(Form("fvMcPointPrimRatio%i", i + 1),
256  Form("McPoint Primary/Secondary Track: Station %i", i + 1),
257  2);
258 
261  }
262 }
263 
265 
267  new CbmQaCanvas("cMcPointXY", "Much: MC point XY", 2 * 400, 2 * 400);
269 
271  "cMcPointPhiZ", "Much: MC point Phi vs Z", 2 * 800, 2 * 400);
273 
275  new CbmQaCanvas("cMcPointRZ", "Much: MC point R vs Z", 2 * 800, 2 * 400);
277 
278  fCanvUsNtra =
279  new CbmQaCanvas("cUsNtra", "Much: MC unscaled counts", 3 * 400, 3 * 400);
280  fCanvUsNtra->Divide2D(9);
281 
283  "cMcPointPRatios", "Much: MC particle ratios", 2 * 400, 2 * 400);
285 
287  new CbmQaCanvas("cMcPointPrimRatios",
288  "Much: MC primary/secondary track ratios",
289  2 * 400,
290  2 * 400);
292 
296  fOutFolder.Add(fCanvUsNtra);
299 }
300 
301 // -------------------------------------------------------------------------
303  DeInit();
304  return Init();
305 }
306 // -------------------------------------------------------------------------
307 
308 // -------------------------------------------------------------------------
310  // Get run and runtime database
311 
312  // The code currently does not work,
313  // CbmMuchGeoScheme::Instance() must be initialised outside.
314  // - Sergey
315 
316  // FairRuntimeDb* db = FairRuntimeDb::instance();
317  // if ( ! db ) Fatal("SetParContainers", "No runtime database");
318  // Get MUCH geometry parameter container
319  // CbmGeoMuchPar *fGeoPar = (CbmGeoMuchPar*)
320  // db->getContainer("CbmGeoMuchPar"); TObjArray *stations =
321  // fGeoPar->GetStations();
322  // TString geoTag;
323  // CbmSetup::Instance()->GetGeoTag(ECbmModuleId::kMuch, geoTag);
324  // bool mcbmFlag = geoTag.Contains("mcbm", TString::kIgnoreCase);
325  // CbmMuchGeoScheme::Instance()->Init(stations, mcbmFlag);
326 }
327 // -------------------------------------------------------------------------
328 
329 // -------------------------------------------------------------------------
330 void CbmMuchTransportQa::Exec(Option_t*) {
331 
332  LOG(info) << "Event: " << fhNevents.GetVal();
333  fhNevents.SetVal(fhNevents.GetVal() + 1);
334  // bitmask tells which stations were crossed by mc track
335  std::vector<UInt_t> trackStaCross(fMcTracks->GetEntriesFast(), 0);
336 
337  for (Int_t i = 0; i < fPoints->GetEntriesFast(); i++) {
338 
339  CbmMuchPoint* point = (CbmMuchPoint*) fPoints->At(i);
340  Int_t stId = CbmMuchAddress::GetStationIndex(point->GetDetectorID());
341  UInt_t stMask = (1 << stId);
342  Int_t trackId = point->GetTrackID();
343  if (!point) {
344  LOG(fatal) << "Much point " << i << " doesn't exist";
345  break;
346  } // Check if the point corresponds to a certain MC Track
347  if (trackId < 0 || trackId >= fMcTracks->GetEntriesFast()) {
348  LOG(fatal) << "Much point " << i << ": trackId " << trackId
349  << " doesn't belong to [0," << fMcTracks->GetEntriesFast() - 1
350  << "]";
351  break;
352  }
353 
354  CbmMCTrack* mcTrack = (CbmMCTrack*) fMcTracks->At(trackId);
355  if (!mcTrack) {
356  LOG(fatal) << "MC track " << trackId << " doesn't exist";
357  break;
358  }
359 
360  Int_t motherId = mcTrack->GetMotherId();
361  Int_t pdgCode = mcTrack->GetPdgCode();
362  //if (pdgCode == 0) continue;
363  TParticlePDG* particle = TDatabasePDG::Instance()->GetParticle(pdgCode);
364  if (!particle) {
365  LOG(warning) << "Particle with pdg code " << pdgCode << " doesn't exist";
366  //continue;
367  }
368  if (pdgCode == 0 || pdgCode == 22 || // photons
369  pdgCode == 2112) // neutrons
370  {
371  LOG(warning) << "Particle with pdg code " << pdgCode
372  << " left an mc point";
373  //continue;
374  }
375 
376  if (!(trackStaCross[trackId] & stMask)) {
377  FillCountingHistos(stId, motherId, pdgCode);
378  }
379  trackStaCross[trackId] |= stMask;
380  Fill2dSpatialDistributionHistos(point, stId);
381  }
382 }
383 
385  Int_t motherId,
386  Int_t pdgCode) {
387  fhUsNtraAll->Fill(stId);
388  if (motherId == -1) {
389  fhUsNtraPrim->Fill(stId);
390  } else {
391  fhUsNtraSec->Fill(stId);
392  }
393  switch (abs(pdgCode)) {
394  case 2212: // proton
395  fhUsNtraPr->Fill(stId);
396  break;
397  case 211: // pion
398  fhUsNtraPi->Fill(stId);
399  break;
400  case 11: // electron
401  fhUsNtraEl->Fill(stId);
402  break;
403  case 13: // muon
404  fhUsNtraMu->Fill(stId);
405  break;
406  case 321: // kaon
407  fhUsNtraKa->Fill(stId);
408  break;
409  }
410 }
411 // -------------------------------------------------------------------------
412 
414  Int_t stId) {
415 
416  TVector3 v1; // in position of the track
417  TVector3 v2; // out position of the track
418  point->PositionIn(v1);
419  point->PositionOut(v2);
420 
421  fvMcPointXY[stId]->Fill(v1.X(), v1.Y());
422  fvMcPointXY[stId]->Fill(v2.X(), v2.Y());
423  fvMcPointPhiZ[stId]->Fill(v1.Z(), v1.Phi() * TMath::RadToDeg());
424  fvMcPointPhiZ[stId]->Fill(v2.Z(), v2.Phi() * TMath::RadToDeg());
425  fvMcPointRZ[stId]->Fill(v1.Z(), v1.Perp());
426  fvMcPointRZ[stId]->Fill(v2.Z(), v2.Perp());
427 }
428 
429 // -------------------------------------------------------------------------
431 
432  TDirectory* oldDirectory = gDirectory;
433  fhNtracks->Reset();
434  fhNtracks->Add(fhUsNtraAll, 1. / fhNevents.GetVal());
435 
436  std::vector<Double_t> errors(fNstations, 0.);
437  fhUsNtraAll->SetError(errors.data());
438 
439  for (uint i = 1; i < fvFraction.size(); i++) {
440  fvFraction[i]->Divide(fvUsNtra[i], fhUsNtraAll);
441  fvFraction[i]->Scale(100.);
442  }
445  DrawCanvases();
446 
447  gDirectory = oldDirectory;
448  return fOutFolder;
449 }
450 // -------------------------------------------------------------------------
451 
453 
454  for (Int_t i = 0; i < fNstations; i++) {
455  fCanvStationXY->cd(i + 1);
456  gStyle->SetOptStat(0);
457  fvMcPointXY[i]->DrawCopy("colz", "");
458 
459  fCanvStationPhiZ->cd(i + 1);
460  gStyle->SetOptStat(0);
461  fvMcPointPhiZ[i]->DrawCopy("colz", "");
462 
463  fCanvStationRZ->cd(i + 1);
464  gStyle->SetOptStat(0);
465  fvMcPointRZ[i]->DrawCopy("colz", "");
466 
467  fCanvStationPRatio->cd(i + 1);
468  gStyle->SetOptStat(0);
469  fvMcPointPRatio[i]->DrawClone("nol <");
470 
471  TLegend* PRatioPieLeg = fvMcPointPRatio[i]->MakeLegend();
472  PRatioPieLeg->SetY1(.56);
473  PRatioPieLeg->SetY2(.86);
474 
475  fCanvStationPrimRatio->cd(i + 1);
476  gStyle->SetOptStat(0);
477  fvMcPointPrimRatio[i]->DrawClone("nol <");
478 
479  TLegend* PrimRatioPieLeg = fvMcPointPrimRatio[i]->MakeLegend();
480  PrimRatioPieLeg->SetY1(.71);
481  PrimRatioPieLeg->SetY2(.86);
482  PrimRatioPieLeg->SetX1(.40);
483  PrimRatioPieLeg->SetX2(.90);
484 
485  gStyle->SetOptStat(1110);
486  }
487 
488  fCanvUsNtra->cd(1);
489  gStyle->SetOptStat(0);
490  fhUsNtraAll->DrawCopy("colz", "");
491 
492  fCanvUsNtra->cd(2);
493  gStyle->SetOptStat(0);
494  fhNtracks->DrawCopy("colz", "");
495 
496  fCanvUsNtra->cd(3);
497  gStyle->SetOptStat(0);
498  fhUsNtraPrim->DrawCopy("colz", "");
499 
500  fCanvUsNtra->cd(4);
501  gStyle->SetOptStat(0);
502  fhUsNtraSec->DrawCopy("colz", "");
503 
504  fCanvUsNtra->cd(5);
505  gStyle->SetOptStat(0);
506  fhUsNtraPr->DrawCopy("colz", "");
507 
508  fCanvUsNtra->cd(6);
509  gStyle->SetOptStat(0);
510  fhUsNtraPi->DrawCopy("colz", "");
511 
512  fCanvUsNtra->cd(7);
513  gStyle->SetOptStat(0);
514  fhUsNtraEl->DrawCopy("colz", "");
515 
516  fCanvUsNtra->cd(8);
517  gStyle->SetOptStat(0);
518  fhUsNtraMu->DrawCopy("colz", "");
519 
520  fCanvUsNtra->cd(9);
521  gStyle->SetOptStat(0);
522  fhUsNtraKa->DrawCopy("colz", "");
523 }
524 
526 
527  for (Int_t i = 0; i < fNstations; i++) {
528  Double_t PRatios[] = {fhFractionEl->GetBinContent(i + 1),
529  fhFractionPr->GetBinContent(i + 1),
530  fhFractionPi->GetBinContent(i + 1),
531  fhFractionMu->GetBinContent(i + 1),
532  fhFractionKa->GetBinContent(i + 1)};
533  Int_t PRatiosColors[] = {4, 3, 2, 5, 6};
534 
535  fvMcPointPRatio[i]->SetEntryVal(0, PRatios[0]);
536  fvMcPointPRatio[i]->SetEntryVal(1, PRatios[1]);
537  fvMcPointPRatio[i]->SetEntryVal(2, PRatios[2]);
538  fvMcPointPRatio[i]->SetEntryVal(3, PRatios[3]);
539  fvMcPointPRatio[i]->SetEntryVal(4, PRatios[4]);
540  fvMcPointPRatio[i]->SetEntryFillColor(0, PRatiosColors[0]);
541  fvMcPointPRatio[i]->SetEntryFillColor(1, PRatiosColors[1]);
542  fvMcPointPRatio[i]->SetEntryFillColor(2, PRatiosColors[2]);
543  fvMcPointPRatio[i]->SetEntryFillColor(3, PRatiosColors[3]);
544  fvMcPointPRatio[i]->SetEntryFillColor(4, PRatiosColors[4]);
545  fvMcPointPRatio[i]->GetSlice(0)->SetTitle(Form("e: %.1f %%", PRatios[0]));
546  fvMcPointPRatio[i]->GetSlice(1)->SetTitle(Form("p: %.1f %%", PRatios[1]));
547  fvMcPointPRatio[i]->GetSlice(2)->SetTitle(
548  Form("#pi: %.1f %%", PRatios[2]));
549  fvMcPointPRatio[i]->GetSlice(3)->SetTitle(
550  Form("#mu: %.1f %%", PRatios[3]));
551  fvMcPointPRatio[i]->GetSlice(4)->SetTitle(Form("K: %.1f %%", PRatios[4]));
552  fvMcPointPRatio[i]->SetRadius(.33);
553  fvMcPointPRatio[i]->SetLabelsOffset(-.1);
554  fvMcPointPRatio[i]->SetLabelFormat("");
555  }
556 }
557 
559 
560  for (Int_t i = 0; i < fNstations; i++) {
561  Double_t PrimRatios[] = {fhFractionPrim->GetBinContent(i + 1),
562  fhFractionSec->GetBinContent(i + 1)};
563  Int_t PrimRatiosColors[] = {6, 4};
564 
565  fvMcPointPrimRatio[i]->SetEntryVal(0, PrimRatios[0]);
566  fvMcPointPrimRatio[i]->SetEntryVal(1, PrimRatios[1]);
567  fvMcPointPrimRatio[i]->SetEntryFillColor(0, PrimRatiosColors[0]);
568  fvMcPointPrimRatio[i]->SetEntryFillColor(1, PrimRatiosColors[1]);
569  fvMcPointPrimRatio[i]->GetSlice(0)->SetTitle(
570  Form("Primary: %.1f %%", PrimRatios[0]));
571  fvMcPointPrimRatio[i]->GetSlice(1)->SetTitle(
572  Form("Secondary: %.1f %%", PrimRatios[1]));
573  fvMcPointPrimRatio[i]->SetRadius(.33);
574  fvMcPointPrimRatio[i]->SetLabelsOffset(-.1);
575  fvMcPointPrimRatio[i]->SetLabelFormat("");
576  }
577 }
578 
579 // -------------------------------------------------------------------------
581 
582  if (!FairRootManager::Instance() || !FairRootManager::Instance()->GetSink()) {
583  LOG(error) << "No sink found";
584  return;
585  }
586  FairSink* sink = FairRootManager::Instance()->GetSink();
587  sink->WriteObject(&GetQa(), nullptr);
588 }
589 // -------------------------------------------------------------------------
CbmMuchTransportQa::fNstations
Int_t fNstations
geometry
Definition: CbmMuchTransportQa.h:87
CbmMCTrack::GetMotherId
Int_t GetMotherId() const
Definition: CbmMCTrack.h:71
CbmMuchTransportQa
Definition: CbmMuchTransportQa.h:46
CbmMuchTransportQa::Exec
void Exec(Option_t *option)
Definition: CbmMuchTransportQa.cxx:330
CbmMuchPoint
Definition: CbmMuchPoint.h:21
CbmMuchTransportQa::fvMcPointPhiZ
std::vector< TH2F * > fvMcPointPhiZ
MC point Y vs X [N stations].
Definition: CbmMuchTransportQa.h:111
CbmMuchTransportQa::fhNtracks
TH1F * fhNtracks
MC point R vs Z [N stations].
Definition: CbmMuchTransportQa.h:114
CbmMuchStation
Definition: CbmMuchStation.h:22
CbmQaCanvas::Divide2D
void Divide2D(int nPads)
Divide canvas into nPads in 2D in a nice way.
Definition: CbmQaCanvas.cxx:29
CbmMuchTransportQa::Fill2dSpatialDistributionHistos
void Fill2dSpatialDistributionHistos(CbmMuchPoint *point, Int_t stId)
Definition: CbmMuchTransportQa.cxx:413
CbmMuchTransportQa::fMcTracks
TClonesArray * fMcTracks
Definition: CbmMuchTransportQa.h:91
CbmMuchTransportQa::CbmMuchTransportQa
CbmMuchTransportQa(const char *name="MuchHitFinderQa", Int_t verbose=1)
Constructor.
Definition: CbmMuchTransportQa.cxx:14
CbmMuchTransportQa::fCanvUsNtra
CbmQaCanvas * fCanvUsNtra
Definition: CbmMuchTransportQa.h:134
CbmMuchTransportQa::~CbmMuchTransportQa
virtual ~CbmMuchTransportQa()
Destructor.
Definition: CbmMuchTransportQa.cxx:28
CbmMuchTransportQa::fhUsNtraPr
TH1F * fhUsNtraPr
number of secondary tracks
Definition: CbmMuchTransportQa.h:102
CbmMuchTransportQa::fhFractionSec
TH1F * fhFractionSec
fraction of primary tracks
Definition: CbmMuchTransportQa.h:116
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmMuchTransportQa::histFolder
TFolder * histFolder
Definition: CbmMuchTransportQa.h:94
CbmMuchTransportQa::InitRatioPieCharts
void InitRatioPieCharts()
Definition: CbmMuchTransportQa.cxx:244
CbmMuchTransportQa::InitFractionHistos
void InitFractionHistos()
Definition: CbmMuchTransportQa.cxx:167
CbmMuchTransportQa::fvFraction
std::vector< TH1F * > fvFraction
fraction of kaons
Definition: CbmMuchTransportQa.h:122
CbmMuchTransportQa::InitCanvases
void InitCanvases()
Definition: CbmMuchTransportQa.cxx:264
CbmMuchTransportQa::MakePRatioPieCharts
void MakePRatioPieCharts()
Definition: CbmMuchTransportQa.cxx:525
CbmMuchTransportQa::DeInit
void DeInit()
Definition: CbmMuchTransportQa.cxx:32
CbmMuchTransportQa::fhFractionEl
TH1F * fhFractionEl
fraction of pions
Definition: CbmMuchTransportQa.h:119
CbmMuchTransportQa::fhFractionPr
TH1F * fhFractionPr
fraction of secondary tracks
Definition: CbmMuchTransportQa.h:117
CbmMuchTransportQa::InitCountingHistos
void InitCountingHistos()
Definition: CbmMuchTransportQa.cxx:145
CbmMuchGeoScheme::GetNStations
Int_t GetNStations() const
Definition: CbmMuchGeoScheme.h:79
CbmMuchTransportQa::ReInit
InitStatus ReInit()
Definition: CbmMuchTransportQa.cxx:302
CbmMuchTransportQa::MakePrimRatioPieCharts
void MakePrimRatioPieCharts()
Definition: CbmMuchTransportQa.cxx:558
CbmMuchTransportQa::fCanvStationXY
CbmQaCanvas * fCanvStationXY
MC point particle ratio pie charts [N stations].
Definition: CbmMuchTransportQa.h:131
h
Data class with information on a STS local track.
CbmMuchTransportQa::DrawCanvases
void DrawCanvases()
Definition: CbmMuchTransportQa.cxx:452
CbmMuchPoint::PositionIn
void PositionIn(TVector3 &pos) const
Definition: CbmMuchPoint.h:79
CbmMuchStation::GetRmax
Double_t GetRmax() const
Definition: CbmMuchStation.h:52
CbmMuchTransportQa::fhUsNtraSec
TH1F * fhUsNtraSec
number of primary tracks
Definition: CbmMuchTransportQa.h:101
CbmMuchTransportQa::SetParContainers
void SetParContainers()
FairTask methods.
Definition: CbmMuchTransportQa.cxx:309
CbmMuchGeoScheme::Instance
static CbmMuchGeoScheme * Instance()
Definition: CbmMuchGeoScheme.cxx:113
CbmMuchTransportQa::fvMcPointRZ
std::vector< TH2F * > fvMcPointRZ
MC point Phi vs Z [N stations].
Definition: CbmMuchTransportQa.h:112
CbmMuchTransportQa::fhUsNtraAll
TH1F * fhUsNtraAll
number of processed events
Definition: CbmMuchTransportQa.h:99
CbmMuchStation::GetTubeDz
Double_t GetTubeDz() const
Definition: CbmMuchStation.cxx:55
CbmMuchTransportQa::fhFractionPrim
TH1F * fhFractionPrim
number of all tracks / event
Definition: CbmMuchTransportQa.h:115
CbmMuchTransportQa::fvMcPointPrimRatio
std::vector< TPie * > fvMcPointPrimRatio
MC point particle ratio pie charts [N stations].
Definition: CbmMuchTransportQa.h:128
CbmMuchTransportQa::fhUsNtraEl
TH1F * fhUsNtraEl
number of pions
Definition: CbmMuchTransportQa.h:104
CbmMuchTransportQa::fhNevents
TParameter< int > fhNevents
output folder with histos and canvases
Definition: CbmMuchTransportQa.h:96
BINS_STA
#define BINS_STA
Definition: CbmMuchTransportQa.h:40
CbmMuchTransportQa::FillCountingHistos
void FillCountingHistos(Int_t stId, Int_t motherId, Int_t pdgCode)
Definition: CbmMuchTransportQa.cxx:384
CbmMuchPoint::PositionOut
void PositionOut(TVector3 &pos) const
Definition: CbmMuchPoint.h:80
CbmMuchTransportQa::fvUsNtra
std::vector< TH1F * > fvUsNtra
number of kaons
Definition: CbmMuchTransportQa.h:107
CbmMuchTransportQa::fhFractionPi
TH1F * fhFractionPi
fraction of protons
Definition: CbmMuchTransportQa.h:118
CbmMuchStation::GetZ
Double_t GetZ() const
Definition: CbmMuchStation.h:49
CbmMuchTransportQa::fvMcPointPRatio
std::vector< TPie * > fvMcPointPRatio
pointers to the above histos
Definition: CbmMuchTransportQa.h:126
CbmMuchTransportQa::fCanvStationPrimRatio
CbmQaCanvas * fCanvStationPrimRatio
Definition: CbmMuchTransportQa.h:138
CbmMuchTransportQa::fhUsNtraMu
TH1F * fhUsNtraMu
number of electrons
Definition: CbmMuchTransportQa.h:105
CbmMuchAddress::GetStationIndex
static Int_t GetStationIndex(Int_t address)
Definition: CbmMuchAddress.h:103
CbmMuchTransportQa::fhFractionMu
TH1F * fhFractionMu
fraction of electrons
Definition: CbmMuchTransportQa.h:120
CbmQaCanvas
Definition: CbmQaCanvas.h:27
CbmMuchTransportQa::fhUsNtraKa
TH1F * fhUsNtraKa
number of muons
Definition: CbmMuchTransportQa.h:106
CbmMuchTransportQa::fCanvStationPRatio
CbmQaCanvas * fCanvStationPRatio
Definition: CbmMuchTransportQa.h:137
CbmMuchTransportQa::GetQa
TFolder & GetQa()
Definition: CbmMuchTransportQa.cxx:430
v
__m128 v
Definition: L1/vectors/P4_F32vec4.h:1
CbmMuchTransportQa::fhUsNtraPrim
TH1F * fhUsNtraPrim
number of all tracks
Definition: CbmMuchTransportQa.h:100
CbmMCTrack
Definition: CbmMCTrack.h:34
CbmMuchTransportQa::fhUsNtraPi
TH1F * fhUsNtraPi
number of protons
Definition: CbmMuchTransportQa.h:103
CbmMuchGeoScheme::GetStation
CbmMuchStation * GetStation(Int_t iStation) const
Definition: CbmMuchGeoScheme.cxx:209
CbmMuchTransportQa::fvMcPointXY
std::vector< TH2F * > fvMcPointXY
pointers to the above fhUsNtra* histos
Definition: CbmMuchTransportQa.h:110
ClassImp
ClassImp(CbmMuchTransportQa)
CbmMuchTransportQa::Finish
void Finish()
Definition: CbmMuchTransportQa.cxx:580
CbmMuchTransportQa::fCanvStationRZ
CbmQaCanvas * fCanvStationRZ
Definition: CbmMuchTransportQa.h:133
CbmMuchTransportQa::fhFractionKa
TH1F * fhFractionKa
fraction of muons
Definition: CbmMuchTransportQa.h:121
CbmMuchTransportQa::Init2dSpatialDistributionHistos
void Init2dSpatialDistributionHistos()
Definition: CbmMuchTransportQa.cxx:200
CbmMuchTransportQa::fPoints
TClonesArray * fPoints
containers
Definition: CbmMuchTransportQa.h:90
CbmMuchStation::GetRmin
Double_t GetRmin() const
Definition: CbmMuchStation.h:51
CbmMuchTransportQa::fCanvStationPhiZ
CbmQaCanvas * fCanvStationPhiZ
Definition: CbmMuchTransportQa.h:132
CbmMuchTransportQa::fOutFolder
TFolder fOutFolder
subfolder for histograms
Definition: CbmMuchTransportQa.h:95
CbmMuchTransportQa.h
Definition of the CbmMuchTransportQa class.
CbmMuchTransportQa::Init
InitStatus Init()
Definition: CbmMuchTransportQa.cxx:95