CbmRoot
CbmRichMCbmAerogelAna.cxx
Go to the documentation of this file.
2 
3 #include "TCanvas.h"
4 #include "TClonesArray.h"
5 #include "TEllipse.h"
6 #include "TF1.h"
7 #include "TGeoBBox.h"
8 #include "TGeoManager.h"
9 #include "TGeoNode.h"
10 #include "TH1.h"
11 #include "TH1D.h"
12 #include "TLine.h"
13 #include "TMarker.h"
14 #include "TMath.h"
15 #include "TStyle.h"
16 #include <TFile.h>
17 
18 #include "CbmDigiManager.h"
19 #include "CbmDrawHist.h"
20 #include "CbmEvent.h"
21 #include "CbmGlobalTrack.h"
22 #include "CbmMatchRecoToMC.h"
23 #include "CbmRichDigi.h"
24 #include "CbmRichDraw.h"
25 #include "CbmRichGeoManager.h"
26 #include "CbmRichHit.h"
27 #include "CbmRichPoint.h"
28 #include "CbmRichRing.h"
30 #include "CbmRichUtil.h"
31 #include "CbmTofDigi.h"
32 #include "CbmTofHit.h"
33 #include "CbmTofTracklet.h"
34 #include "CbmTrackMatchNew.h"
35 #include "CbmTrdTrack.h"
36 #include "TLatex.h"
37 
38 #include "CbmRichConverter.h"
39 
40 #include "CbmHistManager.h"
41 #include "CbmUtils.h"
42 
43 #include <boost/assign/list_of.hpp>
44 #include <cmath>
45 #include <iostream>
46 #include <sstream>
47 #include <string>
48 
49 using namespace std;
50 using boost::assign::list_of;
51 
52 #define RichZPos 348.
53 
55  : FairTask("CbmRichMCbmAerogelAna")
56  , fRichHits(nullptr)
57  , fRichRings(nullptr)
58  , fCbmEvent(nullptr)
59  , fHM(nullptr)
60  , fXOffsetHisto(12.)
61  , fEventNum(0)
62  , fNofDrawnRings(0)
63  , fNofDrawnRichTofEv(0)
64  , fNofDrawnEvents(0)
65  , fOutputDir("result") {}
66 
68  cout << "CbmRichMCbmAerogelAna::Init" << endl;
69 
70  FairRootManager* ioman = FairRootManager::Instance();
71  if (nullptr == ioman) {
72  Fatal("CbmRichMCbmQaReal::Init", "RootManager not instantised!");
73  }
74 
76  fDigiMan->Init();
77 
79  Fatal("CbmRichMCbmQaReal::Init", "No Rich Digis!");
80 
82  Fatal("CbmRichMCbmQaReal::Init", "No Tof Digis!");
83 
84  fRichHits = (TClonesArray*) ioman->GetObject("RichHit");
85  if (nullptr == fRichHits) {
86  Fatal("CbmRichMCbmAerogelAna::Init", "No Rich Hits!");
87  }
88 
89  fRichRings = (TClonesArray*) ioman->GetObject("RichRing");
90  if (nullptr == fRichRings) {
91  Fatal("CbmRichMCbmAerogelAna::Init", "No Rich Rings!");
92  }
93 
94 
95  // fTofHits =(TClonesArray*) ioman->GetObject("TofHit");
96  // if (nullptr == fTofHits) { Fatal("CbmRichMCbmQaReal::Init", "No Tof Hits!");}
97 
98  // fTofTracks =(TClonesArray*) ioman->GetObject("TofTracks");
99  // if (nullptr == fTofTracks) { Fatal("CbmRichMCbmQaReal::Init", "No Tof Tracks!");}
100 
101  // fT0Digis =(TClonesArray*) ioman->GetObject("CbmT0Digi");
102  // if (nullptr == fT0Digis) { Fatal("CbmRichMCbmQaReal::Init", "No T0 Digis!");}
103 
104  //fT0Digis = ioman->InitObjectAs<std::vector<CbmTofDigi> const *>("T0Digi");
105 
106  fCbmEvent = (TClonesArray*) ioman->GetObject("CbmEvent");
107  if (nullptr == fCbmEvent) { Fatal("fTofDigis::Init", "No Event!"); }
108 
109  InitHistograms();
110 
111  return kSUCCESS;
112 }
113 
115  fHM = new CbmHistManager();
116 
117  fHM->Create1<TH1D>("fhNofEvents", "fhNofEvents;Entries", 1, 0.5, 1.5);
118  fHM->Create1<TH1D>("fhNofCbmEvents", "fhNofCbmEvents;Entries", 1, 0.5, 1.5);
119  fHM->Create1<TH1D>(
120  "fhNofCbmEventsRing", "fhNofCbmEventsRing;Entries", 1, 0.5, 1.5);
121 
122  fHM->Create1<TH1D>(
123  "fhHitsInTimeslice", "fhHitsInTimeslice;Timeslice;#Hits", 200, 1, 200);
124 
125  // nof objects per timeslice
126  fHM->Create1<TH1D>(
127  "fhNofRichDigisInTimeslice",
128  "fhNofRichDigisInTimeslice;# RICH digis / timeslice;Entries",
129  100,
130  -0.5,
131  999.5);
132  fHM->Create1<TH1D>("fhNofRichHitsInTimeslice",
133  "fhNofRichHitsInTimeslice;# RICH hits / timeslice;Entries",
134  100,
135  -0.5,
136  999.5);
137  fHM->Create1<TH1D>(
138  "fhNofRichRingsInTimeslice",
139  "fhNofRichRingsInTimeslice;# RICH rings / timeslice;Entries",
140  10,
141  -0.5,
142  9.5);
143 
144  // RICH hits
145  fHM->Create2<TH2D>("fhRichHitXY",
146  "fhRichHitXY;RICH hit X [cm];RICH hit Y [cm];Entries",
147  67,
148  -20.1 + fXOffsetHisto,
149  20.1 + fXOffsetHisto,
150  84,
151  -25.2,
152  25.2);
153  fHM->Create2<TH2D>("fhEventRichHitXY",
154  "fhEventRichHitXY;RICH hit X [cm];RICH hit Y [cm];Entries",
155  67,
156  -20.1 + fXOffsetHisto,
157  20.1 + fXOffsetHisto,
158  84,
159  -25.2,
160  25.2);
161  fHM->Create1<TH1D>("fhEventRichHitX",
162  "fhEventRichHitX;RICH hit X [cm];Entries",
163  67,
164  -20.1 + fXOffsetHisto,
165  20.1 + fXOffsetHisto);
166  fHM->Create1<TH1D>("fhEventRichHitY",
167  "fhEventRichHitY;RICH hit Y [cm];Entries",
168  84,
169  -25.2,
170  25.2);
171  fHM->Create1<TH1D>("fhRichHitX",
172  "fhRichHitX;RICH hit X [cm];Entries",
173  67,
174  -20.1 + fXOffsetHisto,
175  20.1 + fXOffsetHisto);
176  fHM->Create1<TH1D>(
177  "fhRichHitY", "fhRichHitY;RICH hit Y [cm];Entries", 84, -25.2, 25.2);
178 
179  //ToT
180  fHM->Create1<TH1D>(
181  "fhRichDigisToT", "fhRichDigisToT;ToT [ns];Entries", 601, 9.975, 40.025);
182  fHM->Create1<TH1D>(
183  "fhRichHitToT", "fhRichHitToT;ToT [ns];Entries", 601, 9.975, 40.025);
184 
185  // RICH rings
186  fHM->Create2<TH2D>(
187  "fhRichRingXY",
188  "fhRichRingXY;Ring center X [cm];Ring center Y [cm];Entries",
189  100,
190  -20 + fXOffsetHisto,
191  20 + fXOffsetHisto,
192  100,
193  -20,
194  20);
195  fHM->Create1<TH1D>("fhRichRingRadius",
196  "fhRichRingRadius;Ring radius [cm];Entries",
197  100,
198  0.,
199  7.);
200  fHM->Create1<TH1D>("fhNofHitsInRing",
201  "fhNofHitsInRing;# hits in ring;Entries",
202  50,
203  -0.5,
204  49.5);
205 
206  // RICH rings aerogel/ Event
207  fHM->Create2<TH2D>(
208  "fhEventRichRingXY",
209  "fhEventRichRingXY;Ring center X [cm];Ring center Y [cm];Entries",
210  100,
211  -20 + fXOffsetHisto,
212  20 + fXOffsetHisto,
213  100,
214  -20,
215  20);
216  fHM->Create1<TH1D>("fhEventRichRingRadius",
217  "fhEventRichRingRadius;Ring radius [cm];Entries",
218  100,
219  0.,
220  7.);
221  fHM->Create1<TH1D>("fhEventNofHitsInRing",
222  "fhEventNofHitsInRing;# hits in ring;Entries",
223  50,
224  -0.5,
225  49.5);
226  fHM->Create1<TH1D>("fhEventNofHitsInRingTop",
227  "fhEventNofHitsInRingTop;# hits in ring;Entries",
228  50,
229  -0.5,
230  49.5);
231  fHM->Create1<TH1D>("fhEventNofHitsInRingBottom",
232  "fhEventNofHitsInRingBottom;# hits in ring;Entries",
233  50,
234  -0.5,
235  49.5);
236 
237  fHM->Create1<TH1D>(
238  "fhEventRichHitToT", "fhRichHitToT;ToT [ns];Entries", 601, 9.975, 40.025);
239 
240  fHM->Create1<TH1D>("fhEventRichRingRadiusTop",
241  "fhEventRichRingRadiusTop;Ring radius [cm];Entries",
242  100,
243  0.,
244  7.);
245  fHM->Create1<TH1D>("fhEventRichRingRadiusBottom",
246  "fhEventRichRingRadiusBottom;Ring radius [cm];Entries",
247  100,
248  0.,
249  7.);
250 
251  fHM->Create1<TH1D>(
252  "fhNofRingsTopBottom", "fhNofRingsTopBottom;Entries", 2, -0.5, 1.5);
253 }
254 
255 
256 void CbmRichMCbmAerogelAna::Exec(Option_t* /*option*/) {
257  fEventNum++;
258  fHM->H1("fhNofEvents")->Fill(1);
259  cout << "CbmRichMCbmAerogelAna, event No. " << fEventNum << endl;
260 
261  {
262  for (int i = 0; i < fDigiMan->GetNofDigis(ECbmModuleId::kRich); i++) {
263  const CbmRichDigi* richDigi = fDigiMan->Get<CbmRichDigi>(i);
264  fHM->H1("fhRichDigisToT")->Fill(richDigi->GetToT());
265  }
266  }
267 
268  int nofRichHits = fRichHits->GetEntries();
269  fHM->H1("fhNofRichHitsInTimeslice")->Fill(nofRichHits);
270  fHM->H1("fhHitsInTimeslice")->Fill(fEventNum, nofRichHits);
271  for (int iH = 0; iH < nofRichHits; iH++) {
272  CbmRichHit* richHit = static_cast<CbmRichHit*>(fRichHits->At(iH));
273  fHM->H2("fhRichHitXY")->Fill(richHit->GetX(), richHit->GetY());
274  fHM->H1("fhRichHitToT")->Fill(richHit->GetToT());
275  fHM->H1("fhRichHitX")->Fill(richHit->GetX());
276  fHM->H1("fhRichHitY")->Fill(richHit->GetY());
277  //printf("HitToT: %f \n", richHit->GetToT());
278  }
279 
280 
281  //CBMEVENT
282  auto fNCbmEvent = fCbmEvent->GetEntriesFast();
283 
284  for (int i = 0; i < fNCbmEvent; i++) {
285  fHM->H1("fhNofCbmEvents")->Fill(1);
286  CbmEvent* ev = static_cast<CbmEvent*>(fCbmEvent->At(i));
287  std::vector<int> ringIndx; // Rings in CbmEvent
288  std::vector<int> evRichHitIndx;
289 
290 
291  for (int j = 0; j < ev->GetNofData(ECbmDataType::kRichHit); j++) {
292  auto iRichHit = ev->GetIndex(ECbmDataType::kRichHit, j);
293  evRichHitIndx.push_back(iRichHit);
294 
295  int nofRichRings = fRichRings->GetEntries();
296  for (int l = 0; l < nofRichRings; l++) {
297  CbmRichRing* ring = static_cast<CbmRichRing*>(fRichRings->At(l));
298  auto NofRingHits = ring->GetNofHits();
299  for (int m = 0; m < NofRingHits; m++) {
300  auto RingHitIndx = ring->GetHit(m);
301  if (RingHitIndx == iRichHit) {
302  Bool_t used = false;
303  for (auto check : ringIndx) {
304  if (check == l) {
305  used = true;
306  break;
307  }
308  }
309  if (used == false) ringIndx.push_back(l);
310  break;
311  }
312  }
313  }
314  }
315 
316 
317  //DrawEvent(ev, ringIndx, 1);
318 
319 
320  if (ringIndx.size() > 0) { // Ring in CbmEvent
321  //loop over all Hits in a CbmEvent with Ring:
322  for (int j = 0; j < ev->GetNofData(ECbmDataType::kRichHit); j++) {
323  auto iRichHit = ev->GetIndex(ECbmDataType::kRichHit, j);
324  CbmRichHit* richHit = static_cast<CbmRichHit*>(fRichHits->At(iRichHit));
325  fHM->H1("fhEventRichHitToT")->Fill(richHit->GetToT());
326  fHM->H2("fhEventRichHitXY")->Fill(richHit->GetX(), richHit->GetY());
327  fHM->H1("fhEventRichHitX")->Fill(richHit->GetX());
328  fHM->H1("fhEventRichHitY")->Fill(richHit->GetY());
329  }
330 
331 
332  //loop over rings in CbmEvent
333  for (unsigned int rings = 0; rings < ringIndx.size(); rings++) {
334  CbmRichRing* ring =
335  static_cast<CbmRichRing*>(fRichRings->At(ringIndx[rings]));
336  if (ring == nullptr) continue;
337 
338  fHM->H2("fhEventRichRingXY")
339  ->Fill(ring->GetCenterX(), ring->GetCenterY());
340  fHM->H1("fhEventRichRingRadius")->Fill(ring->GetRadius());
341  fHM->H1("fhEventNofHitsInRing")->Fill(ring->GetNofHits());
342 
343  // for now ignore overlap of hits in crossover region!
344  if (ring->GetCenterY() >= 0.) { // new Aerogel Block
345  fHM->H1("fhEventNofHitsInRingTop")->Fill(ring->GetNofHits());
346  fHM->H1("fhEventRichRingRadiusTop")->Fill(ring->GetRadius());
347  fHM->H1("fhNofRingsTopBottom")->Fill(0);
348  } else { // Aerogel from Mar2019
349  fHM->H1("fhEventNofHitsInRingBottom")->Fill(ring->GetNofHits());
350  fHM->H1("fhEventRichRingRadiusBottom")->Fill(ring->GetRadius());
351  fHM->H1("fhNofRingsTopBottom")->Fill(1);
352  }
353  }
354 
355  //DrawRichTofEv(RichTofEv);
356  fHM->H1("fhNofCbmEventsRing")->Fill(1);
357  }
358  } //End CbmEvent loop
359 
360 
361  RichRings();
362 }
363 
365  int nofRichRings = fRichRings->GetEntries();
366  //fHM->H1("fhNofRichRingsInTimeslice")->Fill(nofRichRings);
367  for (int i = 0; i < nofRichRings; i++) {
368  CbmRichRing* ring = static_cast<CbmRichRing*>(fRichRings->At(i));
369  if (ring == nullptr) continue;
370  //DrawRing(ring);
371  fHM->H2("fhRichRingXY")->Fill(ring->GetCenterX(), ring->GetCenterY());
372  fHM->H1("fhRichRingRadius")->Fill(ring->GetRadius());
373  fHM->H1("fhNofHitsInRing")->Fill(ring->GetNofHits());
374  }
375 }
376 
377 
379  cout.precision(4);
380 
381  //SetDefaultDrawStyle();
382  double nofEvents = fHM->H1("fhNofCbmEvents")->GetEntries();
383  fHM->ScaleByPattern("fh_.*", 1. / nofEvents);
384 
385  {
386  fHM->CreateCanvas(
387  "rich_mcbm_fhNofCbmEvents", "rich_mcbm_fhNofCbmEvents", 600, 600);
388  DrawH1(fHM->H1("fhNofCbmEvents"));
389  }
390 
391  {
392  fHM->CreateCanvas(
393  "rich_mcbm_fhNofCbmEventsRing", "rich_mcbm_fhNofCbmEventsRing", 600, 600);
394  DrawH1(fHM->H1("fhNofCbmEventsRing"));
395  }
396 
397  {
398  fHM->CreateCanvas(
399  "rich_mcbm_fhNofEvents", "rich_mcbm_fhNofEvents", 600, 600);
400  DrawH1(fHM->H1("fhNofEvents"));
401  }
402 
403 
404  {
405  TCanvas* c = fHM->CreateCanvas("rich_mcbm_XY", "rich_mcbm_XY", 1200, 600);
406  c->Divide(2, 1);
407  c->cd(1);
408  DrawH2(fHM->H2("fhRichHitXY"));
409  c->cd(2);
410  DrawH2(fHM->H2("fhRichRingXY"));
411  }
412 
413 
414  {
415  TCanvas* c = fHM->CreateCanvas(
416  "rich_mcbm_XY_inEvent", "rich_mcbm_XY_inEvent", 1200, 600);
417  c->Divide(2, 1);
418  c->cd(1);
419  DrawH2(fHM->H2("fhEventRichHitXY"));
420  c->cd(2);
421  DrawH2(fHM->H2("fhEventRichRingXY"));
422  }
423 
424 
425  {
426  TCanvas* c = fHM->CreateCanvas(
427  "rich_mcbm_X_and_Y_inEvent", "rich_mcbm_X_and_Y_inEvent", 1200, 600);
428  c->Divide(2, 1);
429  c->cd(1);
430  DrawH1(fHM->H1("fhRichHitX"));
431  c->cd(2);
432  DrawH1(fHM->H1("fhRichHitY"));
433  }
434 
435  {
436  TCanvas* c = fHM->CreateCanvas("rich_mcbm_X_and_Y_inEventWithRing",
437  "rich_mcbm_X_and_Y_inEventWithRing",
438  1200,
439  600);
440  c->Divide(2, 1);
441  c->cd(1);
442  DrawH1(fHM->H1("fhEventRichHitX"));
443  c->cd(2);
444  DrawH1(fHM->H1("fhEventRichHitY"));
445  }
446 
447  {
448  TCanvas* c = fHM->CreateCanvas("rich_ToT", "rich_ToT", 1200, 600);
449  c->Divide(2, 1);
450  c->cd(1);
451  DrawH1(fHM->H1("fhRichDigisToT"));
452  c->cd(2);
453  DrawH1(fHM->H1("fhRichHitToT"));
454  }
455 
456  {
457  TCanvas* c =
458  fHM->CreateCanvas("rich_ToT_Event", "rich_ToT_Event", 1200, 600);
459  c->Divide(2, 1);
460  c->cd(1);
461  DrawH1(fHM->H1("fhRichHitToT"));
462  c->cd(2);
463  DrawH1(fHM->H1("fhEventRichHitToT"));
464  }
465 
466 
467  {
468  TCanvas* c =
469  fHM->CreateCanvas("rich_mcbm_rings", "rich_mcbm_rings", 1200, 600);
470  c->Divide(2, 1);
471  c->cd(1);
472  DrawH1(fHM->H1("fhRichRingRadius"));
473  c->cd(2);
474  DrawH1(fHM->H1("fhNofHitsInRing"));
475  }
476 
477  {
478  TCanvas* c = fHM->CreateCanvas(
479  "rich_mcbm_rings_inEvent", "rich_mcbm_rings_inEvent", 1200, 600);
480  c->Divide(2, 1);
481  c->cd(1);
482  DrawH1(fHM->H1("fhEventRichRingRadius"));
483  c->cd(2);
484  DrawH1(fHM->H1("fhEventNofHitsInRing"));
485  }
486 
487  {
488  TCanvas* c = fHM->CreateCanvas("rich_Aerogel_Top_Bottom_Hits",
489  "rich_Aerogel_Top_Bottom_Hits",
490  1200,
491  600);
492  c->Divide(2, 1);
493  c->cd(1);
494  DrawH1(fHM->H1("fhEventNofHitsInRingTop"));
495  unsigned int sumHitsTop = 0;
496  for (unsigned int i = 1; i <= 50; i++) {
497  sumHitsTop +=
498  fHM->H1("fhEventNofHitsInRingTop")->GetBinContent(i) * (i - 1);
499  }
500  std::cout << "Sum Hits Top: " << sumHitsTop << std::endl;
501 
502  c->cd(2);
503  DrawH1(fHM->H1("fhEventNofHitsInRingBottom"));
504  unsigned int sumHitsBottom = 0;
505  for (unsigned int i = 1; i <= 50; i++) {
506  sumHitsBottom +=
507  fHM->H1("fhEventNofHitsInRingBottom")->GetBinContent(i) * (i - 1);
508  }
509  std::cout << "Sum Hits Bottom: " << sumHitsBottom << std::endl;
510  }
511 
512  {
513  TCanvas* c = fHM->CreateCanvas("rich_Aerogel_Top_Bottom_Radius",
514  "rich_Aerogel_Top_Bottom_Radius",
515  1200,
516  600);
517  c->Divide(2, 1);
518  c->cd(1);
519  DrawH1(fHM->H1("fhEventRichRingRadiusTop"));
520  c->cd(2);
521  DrawH1(fHM->H1("fhEventRichRingRadiusBottom"));
522  }
523 
524 
525  {
526  fHM->CreateCanvas("rich_Aerogel_#RingsTopVsBottom",
527  "rich_Aerogel_#RingsTopVsBottom",
528  1200,
529  600);
530  fHM->H1("fhNofRingsTopBottom")->Draw("HIST TEXT");
531  }
532 }
533 
534 
536  //std::cout<<"Tracks: "<< fTofTracks->GetEntriesFast() <<std::endl;
537  std::cout << "Drawing Hists...";
538  DrawHist();
539  std::cout << "DONE!" << std::endl;
540 
541  if (this->fDoDrawCanvas) {
543  std::cout << "Canvas saved to Images!" << std::endl;
544  }
545 
546  if (this->fDoWriteHistToFile) {
547  TDirectory* oldir = gDirectory;
548  std::string s = fOutputDir + "/RecoHists.root";
549  TFile* outFile = new TFile(s.c_str(), "RECREATE");
550  if (outFile->IsOpen()) {
551  fHM->WriteToFile();
552  std::cout << "Written to Root-file \"" << s << "\" ...";
553  outFile->Close();
554  std::cout << "Done!" << std::endl;
555  }
556  gDirectory->cd(oldir->GetPath());
557  }
558 }
559 
560 
561 void CbmRichMCbmAerogelAna::DrawFromFile(const string& fileName,
562  const string& outputDir) {
563  fOutputDir = outputDir;
564 
565  if (fHM != nullptr) delete fHM;
566 
567  fHM = new CbmHistManager();
568  TFile* file = new TFile(fileName.c_str());
569  fHM->ReadFromFile(file);
570  DrawHist();
571 
573 }
574 
575 
577  bool check = false;
578  if ((hit->GetToT() > 23.7) && (hit->GetToT() < 30.0)) check = true;
579 
580  return check;
581 }
582 
583 
585  if (ring->GetRadius() > 1. && ring->GetRadius() < 100.) return true;
586 
587  return false;
588 }
589 
590 
CbmRichPoint.h
CbmEvent::GetIndex
UInt_t GetIndex(ECbmDataType type, UInt_t iData)
Definition: CbmEvent.cxx:24
CbmRichMCbmAerogelAna::fDoDrawCanvas
bool fDoDrawCanvas
Definition: CbmRichMCbmAerogelAna.h:103
CbmRichMCbmAerogelAna::fOutputDir
string fOutputDir
Definition: CbmRichMCbmAerogelAna.h:100
CbmRichRingFinderHoughImpl.h
Ring finder implementation based on Hough Transform method.
CbmRichMCbmAerogelAna::fCbmEvent
TClonesArray * fCbmEvent
Definition: CbmRichMCbmAerogelAna.h:85
CbmHistManager::WriteToFile
void WriteToFile()
Write all histograms to current opened file.
Definition: core/base/CbmHistManager.cxx:103
CbmPixelHit::GetX
Double_t GetX() const
Definition: CbmPixelHit.h:83
CbmHistManager::ScaleByPattern
void ScaleByPattern(const std::string &pattern, Double_t scale)
Scale histograms which name matches specified pattern.
Definition: core/base/CbmHistManager.cxx:221
CbmRichDigi
Definition: CbmRichDigi.h:25
CbmPixelHit::GetY
Double_t GetY() const
Definition: CbmPixelHit.h:84
CbmRichMCbmAerogelAna::Init
virtual InitStatus Init()
Inherited from FairTask.
Definition: CbmRichMCbmAerogelAna.cxx:67
CbmRichMCbmAerogelAna::fRichHits
TClonesArray * fRichHits
Definition: CbmRichMCbmAerogelAna.h:81
CbmHistManager::ReadFromFile
void ReadFromFile(TFile *file)
Read histograms from file.
Definition: core/base/CbmHistManager.cxx:110
CbmRichHit::GetToT
Double_t GetToT() const
Definition: CbmRichHit.h:62
CbmDigiManager::Init
InitStatus Init()
Initialisation.
Definition: CbmDigiManager.cxx:71
CbmRichMCbmAerogelAna
Definition: CbmRichMCbmAerogelAna.h:21
CbmHistManager::Create2
void Create2(const std::string &name, const std::string &title, Int_t nofBinsX, Double_t minBinX, Double_t maxBinX, Int_t nofBinsY, Double_t minBinY, Double_t maxBinY)
Helper function for creation of 2-dimensional histograms and profiles. Template argument is a real ob...
Definition: CbmHistManager.h:104
CbmRichMCbmAerogelAna::fDoWriteHistToFile
bool fDoWriteHistToFile
Definition: CbmRichMCbmAerogelAna.h:102
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmRichMCbmAerogelAna.h
CbmHistManager::H2
TH2 * H2(const std::string &name) const
Return pointer to TH2 histogram.
Definition: CbmHistManager.h:190
CbmGlobalTrack.h
ECbmDataType::kRichHit
@ kRichHit
CbmDigiManager::GetNofDigis
static Int_t GetNofDigis(ECbmModuleId systemId)
Definition: CbmDigiManager.cxx:62
CbmRichRing::GetNofHits
Int_t GetNofHits() const
Definition: CbmRichRing.h:40
CbmRichRing
Definition: CbmRichRing.h:17
CbmRichMCbmAerogelAna::cutRadius
Bool_t cutRadius(CbmRichRing *ring)
Definition: CbmRichMCbmAerogelAna.cxx:584
CbmTofDigi.h
CbmRichRing.h
ECbmModuleId::kTof
@ kTof
Time-of-flight Detector.
CbmDrawHist.h
Helper functions for drawing 1D and 2D histograms and graphs.
CbmRichDraw.h
CbmHistManager.h
Histogram manager.
CbmMatchRecoToMC.h
FairTask for matching RECO data to MC.
CbmRichMCbmAerogelAna::fHM
CbmHistManager * fHM
Definition: CbmRichMCbmAerogelAna.h:87
CbmDigiManager::IsPresent
static Bool_t IsPresent(ECbmModuleId systemId)
Presence of a digi branch.
Definition: CbmDigiManager.cxx:112
CbmTofTracklet.h
CbmDigiManager::Instance
static CbmDigiManager * Instance()
Static instance.
Definition: CbmDigiManager.h:93
CbmRichMCbmAerogelAna::Exec
virtual void Exec(Option_t *option)
Inherited from FairTask.
Definition: CbmRichMCbmAerogelAna.cxx:256
CbmRichGeoManager.h
CbmRichMCbmAerogelAna::InitHistograms
void InitHistograms()
Initialize histograms.
Definition: CbmRichMCbmAerogelAna.cxx:114
CbmRichDigi.h
CbmEvent.h
DrawH1
void DrawH1(TH1 *hist, HistScale logx, HistScale logy, const string &drawOpt, Int_t color, Int_t lineWidth, Int_t lineStyle, Int_t markerSize, Int_t markerStyle)
Definition: CbmDrawHist.cxx:49
CbmRichMCbmAerogelAna::fEventNum
Int_t fEventNum
Definition: CbmRichMCbmAerogelAna.h:91
CbmRichRing::GetHit
UInt_t GetHit(Int_t i) const
Definition: CbmRichRing.h:42
CbmHistManager
Histogram manager.
Definition: CbmHistManager.h:41
CbmDigiManager::Get
const Digi * Get(Int_t index) const
Get a digi object.
Definition: CbmDigiManager.h:52
CbmRichConverter.h
Convert internal data classes to cbmroot common data classes.
CbmTrackMatchNew.h
CbmHistManager::Create1
void Create1(const std::string &name, const std::string &title, Int_t nofBins, Double_t minBin, Double_t maxBin)
Helper function for creation of 1-dimensional histograms and profiles. Template argument is a real ob...
Definition: CbmHistManager.h:81
ECbmModuleId::kRich
@ kRich
Ring-Imaging Cherenkov Detector.
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmRichMCbmAerogelAna::fRichRings
TClonesArray * fRichRings
Definition: CbmRichMCbmAerogelAna.h:83
CbmHistManager::H1
TH1 * H1(const std::string &name) const
Return pointer to TH1 histogram.
Definition: CbmHistManager.h:170
CbmRichMCbmAerogelAna::DrawFromFile
void DrawFromFile(const string &fileName, const string &outputDir)
Draw histogram from file.
Definition: CbmRichMCbmAerogelAna.cxx:561
CbmUtils.h
CbmHistManager::CreateCanvas
TCanvas * CreateCanvas(const std::string &name, const std::string &title, Int_t width, Int_t height)
Create and draw TCanvas and store pointer to it.
Definition: core/base/CbmHistManager.cxx:267
CbmEvent::GetNofData
Int_t GetNofData() const
Definition: CbmEvent.h:90
CbmHistManager::SaveCanvasToImage
void SaveCanvasToImage(const std::string &outputDir, const std::string &options="png,eps")
Save all stored canvases to images.
Definition: core/base/CbmHistManager.cxx:276
CbmRichMCbmAerogelAna::CbmRichMCbmAerogelAna
CbmRichMCbmAerogelAna()
Standard constructor.
Definition: CbmRichMCbmAerogelAna.cxx:54
CbmDigiManager.h
m
__m128 m
Definition: L1/vectors/P4_F32vec4.h:26
CbmRichMCbmAerogelAna::fXOffsetHisto
Double_t fXOffsetHisto
Definition: CbmRichMCbmAerogelAna.h:89
CbmEvent
Class characterising one event by a collection of links (indices) to data objects,...
Definition: CbmEvent.h:30
CbmRichRing::GetRadius
Float_t GetRadius() const
Definition: CbmRichRing.h:82
CbmRichRing::GetCenterY
Float_t GetCenterY() const
Definition: CbmRichRing.h:81
CbmRichMCbmAerogelAna::fDigiMan
CbmDigiManager * fDigiMan
Definition: CbmRichMCbmAerogelAna.h:79
DrawH2
void DrawH2(TH2 *hist, HistScale logx, HistScale logy, HistScale logz, const string &drawOpt)
Definition: CbmDrawHist.cxx:84
CbmRichMCbmAerogelAna::doToT
bool doToT(CbmRichHit *hit)
Definition: CbmRichMCbmAerogelAna.cxx:576
CbmRichDigi::GetToT
Double_t GetToT() const
Definition: CbmRichDigi.h:67
CbmRichHit.h
CbmTrdTrack.h
CbmRichMCbmAerogelAna::Finish
virtual void Finish()
Inherited from FairTask.
Definition: CbmRichMCbmAerogelAna.cxx:535
CbmRichMCbmAerogelAna::DrawHist
void DrawHist()
Draw histograms.
Definition: CbmRichMCbmAerogelAna.cxx:378
CbmRichRing::GetCenterX
Float_t GetCenterX() const
Definition: CbmRichRing.h:80
CbmRichMCbmAerogelAna::RichRings
void RichRings()
Definition: CbmRichMCbmAerogelAna.cxx:364
CbmRichHit
Definition: CbmRichHit.h:19
rings
TClonesArray * rings
Definition: Analyze_matching.h:21