CbmRoot
CbmStsDigitizeQa.cxx
Go to the documentation of this file.
1 #include "CbmStsDigitizeQa.h"
2 #include "CbmDigiManager.h"
3 #include "CbmHistManager.h"
4 #include "CbmMCDataManager.h"
5 #include "CbmMatch.h"
6 #include "CbmStsAddress.h"
7 #include "CbmStsDigi.h"
8 #include "CbmStsDigitize.h"
9 #include "CbmStsElement.h"
10 #include "CbmStsModule.h"
11 #include "CbmStsSetup.h"
12 //#include "CbmMCBuffer.h"
13 #include "CbmSimulationReport.h"
14 #include "CbmStsDigitizeQaReport.h"
15 #include "CbmStsParAsic.h"
16 #include "CbmStsParModule.h"
17 #include "CbmStsParSetModule.h"
18 #include "CbmStsParSim.h"
19 
20 #include "FairLogger.h"
21 #include "FairMCPoint.h"
22 #include "FairRootManager.h"
23 #include "FairRun.h"
24 #include "FairRuntimeDb.h"
25 
26 #include "TGeoMatrix.h"
27 #include "TGeoPhysicalNode.h"
28 
29 #include "TClonesArray.h"
30 #include "TF1.h"
31 #include "TH1.h"
32 #include "TH1D.h"
33 #include "TH2.h"
34 #include "TProfile.h"
35 #include "TProfile2D.h"
36 #include "TSystem.h"
37 
38 using std::cout;
39 using std::endl;
40 using std::map;
41 using std::pair;
42 using std::set;
43 using std::string;
44 using std::vector;
45 
47  : FairTask("CbmStsDigitizeQa")
48  , fHM(NULL)
49  , fDigiManager(nullptr)
50  , fOutputDir(" ")
51  , fStsPoints(NULL)
52  , fSetup(NULL)
53  , fNofStation(8)
54  , fMaxScale(0)
55  , fOutFile(NULL)
56  , fnOfDigisChip() {}
57 
59  if (fHM) delete fHM;
60 }
61 
63  FairRuntimeDb* rtdb = FairRun::Instance()->GetRuntimeDb();
64 
65  fSettings = dynamic_cast<CbmStsParSim*>(rtdb->getContainer("CbmStsParSim"));
67  dynamic_cast<CbmStsParSetModule*>(rtdb->getContainer("CbmStsParSetModule"));
68 }
69 
70 InitStatus CbmStsDigitizeQa::Init() {
72  if (!fSetup->IsInit()) fSetup->Init();
75  fHM = new CbmHistManager();
77  fDigiManager->Init();
78  fnOfDigisChip.resize(fNofStation);
79  for (Int_t iStation = 0; iStation < fNofStation; iStation++) {
80  CbmStsElement* stat = fSetup->GetDaughter(iStation);
81  fnOfDigisChip[iStation].resize(stat->GetNofDaughters());
82  for (Int_t iLad = 0; iLad < stat->GetNofDaughters(); iLad++) {
83  CbmStsElement* ladd = stat->GetDaughter(iLad);
84  fnOfDigisChip[iStation][iLad].resize(ladd->GetNofDaughters());
85  for (Int_t iHla = 0; iHla < ladd->GetNofDaughters(); iHla++) {
86  CbmStsElement* hlad = ladd->GetDaughter(iHla);
87  fnOfDigisChip[iStation][iLad][iHla].resize(hlad->GetNofDaughters());
88  for (Int_t iMod = 0; iMod < hlad->GetNofDaughters(); iMod++) {
89  CbmStsModule* modu =
90  static_cast<CbmStsModule*>(hlad->GetDaughter(iMod));
91  Int_t nOfChips =
92  Int_t(modu->GetParameters()->GetNofChannels() / 128.);
93  fnOfDigisChip[iStation][iLad][iHla][iMod].resize(nOfChips);
94  for (Int_t iChip = 0; iChip < nOfChips; iChip++) {
95  fnOfDigisChip[iStation][iLad][iHla][iMod][iChip] = 0;
96  }
97  }
98  }
99  }
100  }
101 
102  // Get parameters of the first ASIC in the first module. This, of course,
103  // assumes that all ASIC parameters in the setup are the same.
104  UInt_t address = fSetup->GetModule(0)->GetAddress();
105  fAsicPar = &(fModuleParSet->GetParModule(address).GetParAsic(0));
106 
109 
110  return kSUCCESS;
111 }
112 
113 void CbmStsDigitizeQa::Exec(Option_t* /*opt*/) {
115  fHM->H1("h_EventNo_DigitizeQa")->Fill(0.5);
116 }
117 
119  ProcessAngles();
120  Int_t nofEvents = fHM->H1("h_EventNo_DigitizeQa")->GetEntries();
121  TString fileName = fOutputDir + "/digiRateChip";
122  fileName += nofEvents;
123  fileName += ".dat";
124  TString rmFile = "rm " + fileName;
125  gSystem->Exec(rmFile);
126  fOutFile.open(Form("%s", fileName.Data()), std::ofstream::app);
127  for (Int_t iStation = 0; iStation < fNofStation; iStation++) {
128  CbmStsElement* stat = fSetup->GetDaughter(iStation);
129  for (Int_t iLad = 0; iLad < stat->GetNofDaughters(); iLad++) {
130  CbmStsElement* ladd = stat->GetDaughter(iLad);
131  for (Int_t iHla = 0; iHla < ladd->GetNofDaughters(); iHla++) {
132  CbmStsElement* hlad = ladd->GetDaughter(iHla);
133  for (Int_t iMod = 0; iMod < hlad->GetNofDaughters(); iMod++) {
134  CbmStsModule* modu =
135  static_cast<CbmStsModule*>(hlad->GetDaughter(iMod));
136  UInt_t nChannels = modu->GetParameters()->GetNofChannels();
137  if (nChannels != 2048) cout << "nofChannels = " << nChannels;
138  Int_t nOfChips = Int_t(nChannels / 128.);
139  for (Int_t iChip = 0; iChip < nOfChips; iChip++)
140  fOutFile << iStation << "\t" << iLad << "\t" << iHla << "\t" << iMod
141  << "\t" << iChip << "\t"
142  << fnOfDigisChip[iStation][iLad][iHla][iMod][iChip]
143  << endl;
144  }
145  }
146  }
147  }
148  gDirectory->mkdir("STSDigitizeQA");
149  gDirectory->cd("STSDigitizeQA");
150  fHM->WriteToFile();
151  gDirectory->cd("../");
152  CbmSimulationReport* report =
154  report->Create(fHM, fOutputDir);
155  delete report;
156 
157  /* Double_t matchedHits = 100. * (Double_t) fHM->H1("hno_NofObjects_MatchedHits_Station_" + type)->Integral() /
158  (Double_t) fHM->H1("hno_NofObjects_Hits_Station_" + type)->Integral();
159  Double_t efficiency = 100 * (Double_t) fHM->H1("hno_NofObjects_MatchedHits_Station_" + type)->Integral() /
160  (Double_t) fHM->H1("hno_NofObjects_Points_Station_" + type)->Integral();
161  Double_t ghost = 100 * ((Double_t) fHM->H1("hno_NofObjects_Hits_Station_" + type)->Integral() -
162  (Double_t) fHM->H1("hno_NofObjects_MatchedHits_Station_" + type)->Integral()) /
163  (Double_t) fHM->H1("hno_NofObjects_Points_Station_" + type)->Integral();
164 
165  std::cout<<" -I- CbmStsTimeBasedQa: Hits: "<<fHM->H1("hno_NofObjects_Hits_Station_" + type)->Integral()
166  <<"\n -I- CbmStsTimeBasedQa: MatchedHits: "<<fHM->H1("hno_NofObjects_MatchedHits_Station_" + type)->Integral()
167  <<"\n -I- CbmStsTimeBasedQa: MatchedHits: "<<matchedHits<<" %"
168  <<"\n -I- CbmStsTimeBasedQa: Efficiency : "<<efficiency<<" %"
169  <<"\n -I- CbmStsTimeBasedQa: Ghost : "<<ghost<<" %";*/
170 }
171 
173  FairRootManager* ioman = FairRootManager::Instance();
174  if (NULL == ioman) LOG(fatal) << GetName() << ": No FairRootManager!";
175 
176  fStsPoints = (TClonesArray*) ioman->GetObject("StsPoint");
177  if (NULL == fStsPoints) LOG(error) << GetName() << ": No StsPoint array!";
178 
180  LOG(fatal) << GetName() << ": No StsDigi branch in input!";
181  return;
182  }
183 
185  LOG(fatal) << GetName() << ": No StsDigiMatch branch in input!";
186  return;
187  }
188 }
189 
193  fHM->Create1<TH1F>("h_EventNo_DigitizeQa", "h_EventNo_DigitizeQa", 1, 0, 1.);
194 }
195 
197  Int_t nofBins = 100;
198  Double_t minX = -0.5;
199  Double_t maxX = 49999.5;
200  string name = "h_NofObjects_";
201  fHM->Create1<TH1F>(name + "Points",
202  name + "Points;Objects per event;Entries",
203  nofBins,
204  minX,
205  maxX);
206  fHM->Create1<TH1F>(name + "Digis",
207  name + "Digis;Objects per event;Entries",
208  nofBins,
209  minX,
210  maxX);
211 
212  nofBins = 8;
213  minX = -0.5;
214  maxX = 7.5;
215  fHM->Create1<TH1F>(name + "Points_Station",
216  name + "Points_Station;Station number;Objects per event",
217  nofBins,
218  minX,
219  maxX);
220  fHM->Create1<TH1F>(name + "Digis_Station",
221  name + "Digis_Station;Station number;Oblects per enent",
222  nofBins,
223  minX,
224  maxX);
225 }
226 
228  Int_t nofBins = 25;
229  Double_t minX = 0.5;
230  Double_t maxX = minX + nofBins;
231  fHM->Create1<TH1F>("h_PointsInDigi",
232  "PointsInDigi;Number of Points;Entries",
233  nofBins,
234  minX,
235  maxX);
236  fHM->Create1<TH1F>("h_PointsInDigiLog",
237  "PointsInDigi;Number of Points;Entries",
238  nofBins,
239  minX,
240  maxX);
241  fHM->Create1<TH1F>("h_DigisByPoint",
242  "DigisByPoint;Number of Digis;Entries",
243  nofBins,
244  minX,
245  maxX);
246  fHM->Create1<TH1F>("h_DigisByPointLog",
247  "DigisByPoint;Number of Digis;Entries",
248  nofBins,
249  minX,
250  maxX);
251  nofBins = fAsicPar->GetNofAdc();
252  fHM->Create1<TH1F>("h_DigiCharge",
253  "DigiCharge;Digi Charge, ADC;Entries",
254  nofBins,
255  0.,
256  Double_t(nofBins));
257  for (Int_t stationId = 0; stationId < fNofStation; stationId++) {
258  fHM->Create2<TH2F>(
259  Form("h_DigisPerChip_Station%i", stationId),
260  Form("Digis per Chip, Station %i;x, cm;y, cm", stationId),
261  400,
262  -50,
263  50,
264  200,
265  -50,
266  50);
267  fHM->Create2<TH2F>(Form("h_PointsMap_Station%i", stationId),
268  Form("Points Map, Station %i;x, cm;y, cm", stationId),
269  100,
270  -50,
271  50,
272  100,
273  -50,
274  50);
275  fHM->Create2<TH2F>(
276  Form("h_MeanAngleMap_Station%i", stationId),
277  Form("Mean Angle Map, Station %i;x, cm;y, cm", stationId),
278  50,
279  -50,
280  50,
281  50,
282  -50,
283  50);
284  fHM->Create2<TH2F>(Form("h_RMSAngleMap_Station%i", stationId),
285  Form("RMS Angle Map, Station %i;x, cm;y, cm", stationId),
286  50,
287  -50,
288  50,
289  50,
290  -50,
291  50);
292  }
293  Double_t local[3] = {0., 0., 0.};
294  Double_t global[3];
295  for (Int_t moduId = 0; moduId < fSetup->GetNofModules(); moduId++) {
296  CbmStsModule* modu = static_cast<CbmStsModule*>(fSetup->GetModule(moduId));
297  TGeoPhysicalNode* node =
298  modu->CbmStsElement::GetDaughter(0)->CbmStsElement::GetPnode();
299  if (node) {
300  TGeoMatrix* matrix = node->GetMatrix();
301  matrix->LocalToMaster(local, global);
302  }
303  fHM->Create1<TH1F>(
304  Form("h_ParticleAngles_%s", modu->GetName()),
305  Form("Particle Angles (%.0f cm, %.0f cm);Angle, deg;Entries",
306  global[0],
307  global[1]),
308  90,
309  0.,
310  90.);
311  }
312 }
313 
315  if (fHM->Exists("h_NofObjects_Digis"))
316  fHM->H1("h_NofObjects_Digis")
318  std::set<Double_t> pointIndexes;
319  std::map<Double_t, Int_t> stations;
320  std::map<Double_t, Int_t> digisByPoint;
321  std::map<Double_t, Int_t>::iterator map_it;
322  pointIndexes.clear();
323  Double_t local[3] = {0., 0., 0.};
324  Double_t global[3];
325  for (Int_t index = 0; index < fDigiManager->GetNofDigis(ECbmModuleId::kSts);
326  index++) {
327  const CbmStsDigi* stsDigi = fDigiManager->Get<CbmStsDigi>(index);
328  const CbmMatch* digiMatch =
330  Int_t stationId = fSetup->GetStationNumber(stsDigi->GetAddress());
331  //Int_t iLad = CbmStsAddress::GetElementId(stsDigi->GetAddress(), kStsLadder);
332  //Int_t iHla =
333  //CbmStsAddress::GetElementId(stsDigi->GetAddress(), kStsHalfLadder);
334  //Int_t iMod = CbmStsAddress::GetElementId(stsDigi->GetAddress(), kStsModule);
335  CbmStsModule* modu = static_cast<CbmStsModule*>(
336  fSetup->GetElement(stsDigi->GetAddress(), kStsModule));
337  Int_t nOfChannelsM = modu->GetParameters()->GetNofChannels();
338  TGeoPhysicalNode* node =
339  modu->CbmStsElement::GetDaughter(0)->CbmStsElement::GetPnode();
340  if (node) {
341  TGeoMatrix* matrix = node->GetMatrix();
342  matrix->LocalToMaster(local, global);
343  }
344 
345  Int_t iChan = stsDigi->GetChannel();
346  Int_t iChip = iChan / 128;
347 
348  // TODO
349  // Sergey Gorbunov: the code crashes at this line,
350  // because iLad is sometimes out of the range,
351  // it needs to be fixed
352  //fnOfDigisChip[stationId][iLad][iHla][iMod][iChip]++;
353 
354  fHM->H2(Form("h_DigisPerChip_Station%i", stationId))
355  ->Fill(global[0] + 50. / 400. * ((iChip - 8.) * 2. - 1.), global[1]);
356 
357  for (Int_t iLink = 0; iLink < digiMatch->GetNofLinks(); iLink++) {
358  const CbmLink link = digiMatch->GetLink(iLink);
359  Double_t index2 = (1000 * link.GetIndex()) + (link.GetFile())
360  + (0.0001 * link.GetEntry());
361  pointIndexes.insert(index2);
362  stations.insert(std::pair<Double_t, Int_t>(index2, stationId));
363  Int_t channel = stsDigi->GetChannel();
364 
365  Int_t side = channel < Int_t(nOfChannelsM / 2.) ? 0 : 1;
366  map_it = digisByPoint.find(index2 + (side * 0.00001));
367  if (map_it != digisByPoint.end()) {
368  map_it->second++;
369  } else {
370  digisByPoint.insert(
371  std::pair<Double_t, Int_t>(index2 + (side * 0.00001), 1));
372  }
373  }
374  fHM->H1("h_NofObjects_Digis_Station")->Fill(stationId);
375  fHM->H1("h_PointsInDigi")->Fill(digiMatch->GetNofLinks());
376  fHM->H1("h_PointsInDigiLog")->Fill(digiMatch->GetNofLinks());
377  fHM->H1("h_DigiCharge")->Fill(stsDigi->GetCharge());
378  }
379  fHM->H1("h_NofObjects_Points")->Fill(pointIndexes.size());
380  std::set<Double_t>::iterator set_it;
381  for (set_it = pointIndexes.begin(); set_it != pointIndexes.end(); ++set_it) {
382  fHM->H1("h_NofObjects_Points_Station")->Fill(stations[*set_it]);
383  fHM->H1("h_DigisByPoint")->Fill(digisByPoint[*set_it]);
384  fHM->H1("h_DigisByPoint")->Fill(digisByPoint[*set_it + 0.00001]);
385  fHM->H1("h_DigisByPointLog")->Fill(digisByPoint[*set_it]);
386  fHM->H1("h_DigisByPointLog")->Fill(digisByPoint[*set_it + 0.00001]);
387  }
388  if (pointIndexes.size() > static_cast<size_t>(fMaxScale))
389  fMaxScale = pointIndexes.size();
390 
391  Double_t pointX, pointY; //, pointZ;
392  Double_t pointPX, pointPZ;
393  for (Int_t iPoint = 0; iPoint < points->GetEntriesFast(); iPoint++) {
394  const FairMCPoint* stsPoint =
395  static_cast<const FairMCPoint*>(points->At(iPoint));
396  CbmStsModule* modu = static_cast<CbmStsModule*>(
397  fSetup->GetElement(stsPoint->GetDetectorID(), kStsModule));
398  TGeoPhysicalNode* node =
399  modu->CbmStsElement::GetDaughter(0)->CbmStsElement::GetPnode();
400  if (node) {
401  TGeoMatrix* matrix = node->GetMatrix();
402  matrix->LocalToMaster(local, global);
403  }
404  pointX = stsPoint->GetX();
405  pointY = stsPoint->GetY();
406  // pointZ = stsPoint -> GetZ();
407  pointPX = stsPoint->GetPx();
408  pointPZ = stsPoint->GetPz();
409  Int_t stationId = fSetup->GetStationNumber(stsPoint->GetDetectorID());
410  fHM->H2(Form("h_PointsMap_Station%i", stationId))->Fill(pointX, pointY);
411  fHM->H1(Form("h_ParticleAngles_%s", modu->GetName()))
412  ->Fill(TMath::Abs(TMath::ATan(pointPX / pointPZ)) * 180. / 3.1416);
413  }
414 }
415 
416 
418  Double_t local[3] = {0., 0., 0.};
419  Double_t global[3];
420  for (Int_t iStation = 0; iStation < fNofStation; iStation++) {
421  CbmStsElement* stat = fSetup->GetDaughter(iStation);
422  for (Int_t iLad = 0; iLad < stat->GetNofDaughters(); iLad++) {
423  CbmStsElement* ladd = stat->GetDaughter(iLad);
424  for (Int_t iHla = 0; iHla < ladd->GetNofDaughters(); iHla++) {
425  CbmStsElement* hlad = ladd->GetDaughter(iHla);
426  for (Int_t iMod = 0; iMod < hlad->GetNofDaughters(); iMod++) {
427  CbmStsElement* modu = hlad->GetDaughter(iMod);
428  Double_t mean =
429  fHM->H1(Form("h_ParticleAngles_%s", modu->GetName()))->GetMean();
430  Double_t rms =
431  fHM->H1(Form("h_ParticleAngles_%s", modu->GetName()))->GetRMS();
432  TGeoPhysicalNode* node =
433  modu->CbmStsElement::GetDaughter(0)->CbmStsElement::GetPnode();
434  if (node) {
435  TGeoMatrix* matrix = node->GetMatrix();
436  matrix->LocalToMaster(local, global);
437  }
438  fHM->H2(Form("h_MeanAngleMap_Station%i", iStation))
439  ->Fill(global[0], global[1], mean);
440  fHM->H2(Form("h_RMSAngleMap_Station%i", iStation))
441  ->Fill(global[0], global[1], rms);
442  }
443  }
444  }
445  }
446 }
CbmHistManager::Exists
Bool_t Exists(const std::string &name) const
Check existence of histogram in manager.
Definition: CbmHistManager.h:303
CbmStsElement::GetAddress
Int_t GetAddress() const
Definition: CbmStsElement.h:65
CbmMatch
Definition: CbmMatch.h:22
CbmMCDataManager.h
CbmStsDigitizeQa::fSettings
const CbmStsParSim * fSettings
Definition: CbmStsDigitizeQa.h:53
CbmHistManager::WriteToFile
void WriteToFile()
Write all histograms to current opened file.
Definition: core/base/CbmHistManager.cxx:103
CbmStsDigitizeQa::fSetup
CbmStsSetup * fSetup
Definition: CbmStsDigitizeQa.h:51
CbmStsDigitizeQa::~CbmStsDigitizeQa
virtual ~CbmStsDigitizeQa()
Definition: CbmStsDigitizeQa.cxx:58
CbmStsParModule::GetNofChannels
UInt_t GetNofChannels() const
Number of channels.
Definition: CbmStsParModule.h:74
CbmStsSetup.h
CbmDigiManager::Init
InitStatus Init()
Initialisation.
Definition: CbmDigiManager.cxx:71
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
CbmStsDigitizeQa::ReadDataBranches
void ReadDataBranches()
Definition: CbmStsDigitizeQa.cxx:172
CbmStsDigitizeQa::fAsicPar
const CbmStsParAsic * fAsicPar
Definition: CbmStsDigitizeQa.h:55
ClassImp
ClassImp(CbmStsDigitizeQa)
CbmStsSetup::Instance
static CbmStsSetup * Instance()
Definition: CbmStsSetup.cxx:293
CbmStsDigitize
Task class for simulating the detector response of the STS.
Definition: CbmStsDigitize.h:50
CbmHistManager::H2
TH2 * H2(const std::string &name) const
Return pointer to TH2 histogram.
Definition: CbmHistManager.h:190
CbmStsDigitize.h
CbmDigiManager::GetNofDigis
static Int_t GetNofDigis(ECbmModuleId systemId)
Definition: CbmDigiManager.cxx:62
CbmMatch.h
CbmStsParAsic::GetNofAdc
UShort_t GetNofAdc() const
Number of ADC channels.
Definition: CbmStsParAsic.h:103
CbmStsParSetModule::GetParModule
const CbmStsParModule & GetParModule(UInt_t address)
Get condition parameters of a sensor.
Definition: CbmStsParSetModule.cxx:49
CbmHistManager.h
Histogram manager.
CbmDigiManager::IsPresent
static Bool_t IsPresent(ECbmModuleId systemId)
Presence of a digi branch.
Definition: CbmDigiManager.cxx:112
CbmStsSetup::GetNofStations
Int_t GetNofStations() const
Definition: CbmStsSetup.h:90
CbmStsParSetModule.h
CbmStsDigitizeQa::ProcessAngles
void ProcessAngles()
Definition: CbmStsDigitizeQa.cxx:417
CbmDigiManager::Instance
static CbmDigiManager * Instance()
Static instance.
Definition: CbmDigiManager.h:93
CbmDigiManager::IsMatchPresent
static Bool_t IsMatchPresent(ECbmModuleId systemId)
Presence of a digi match branch.
Definition: CbmDigiManager.cxx:104
CbmStsParSim.h
CbmStsDigitizeQaReport.h
CbmStsModule
Class representing an instance of a readout unit in the CBM-STS.
Definition: CbmStsModule.h:31
CbmStsDigitizeQa::CreateNofObjectsHistograms
void CreateNofObjectsHistograms()
Definition: CbmStsDigitizeQa.cxx:196
CbmStsDigi.h
CbmStsDigitizeQaReport
Definition: CbmStsDigitizeQaReport.h:11
CbmHistManager
Histogram manager.
Definition: CbmHistManager.h:41
CbmStsDigitizeQa::fnOfDigisChip
std::vector< std::vector< std::vector< std::vector< std::vector< Int_t > > > > > fnOfDigisChip
Definition: CbmStsDigitizeQa.h:60
CbmStsDigitizeQa::CreateHistograms
void CreateHistograms()
Definition: CbmStsDigitizeQa.cxx:190
CbmStsDigitizeQa
Definition: CbmStsDigitizeQa.h:19
CbmStsParModule::GetParAsic
const CbmStsParAsic & GetParAsic(UInt_t channel) const
ASIC parameters for a given channel.
Definition: CbmStsParModule.cxx:29
kStsModule
@ kStsModule
Definition: CbmStsAddress.h:21
CbmDigiManager::Get
const Digi * Get(Int_t index) const
Get a digi object.
Definition: CbmDigiManager.h:52
CbmStsSetup::GetStationNumber
Int_t GetStationNumber(Int_t address)
Definition: CbmStsSetup.cxx:187
CbmStsDigitizeQa::fHM
CbmHistManager * fHM
Definition: CbmStsDigitizeQa.h:47
CbmStsParModule.h
CbmStsDigitizeQa::fMaxScale
Int_t fMaxScale
Definition: CbmStsDigitizeQa.h:57
CbmStsDigitizeQa::SetParContainers
virtual void SetParContainers()
Definition: CbmStsDigitizeQa.cxx:62
CbmSimulationReport::Create
void Create(CbmHistManager *histManager, const std::string &outputDir)
Main function which creates report data.
CbmDigiManager::GetMatch
const CbmMatch * GetMatch(ECbmModuleId systemId, UInt_t index) const
Get a match object.
Definition: CbmDigiManager.cxx:54
CbmStsDigitizeQa::ProcessDigisAndPoints
void ProcessDigisAndPoints(const TClonesArray *points)
Definition: CbmStsDigitizeQa.cxx:314
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
CbmStsDigitizeQa::Exec
virtual void Exec(Option_t *opt)
Definition: CbmStsDigitizeQa.cxx:113
CbmStsElement.h
CbmStsSetup::IsModuleParsInit
Bool_t IsModuleParsInit() const
Initialisation status for module parameters.
Definition: CbmStsSetup.h:130
CbmStsSetup::Init
Bool_t Init(const char *geometryFile=nullptr)
Initialise the setup.
Definition: CbmStsSetup.cxx:201
CbmHistManager::H1
TH1 * H1(const std::string &name) const
Return pointer to TH1 histogram.
Definition: CbmHistManager.h:170
CbmStsDigi
Data class for a single-channel message in the STS.
Definition: CbmStsDigi.h:29
CbmStsDigitizeQa::fOutFile
std::ofstream fOutFile
Definition: CbmStsDigitizeQa.h:58
CbmStsSetup::GetModule
CbmStsModule * GetModule(Int_t index) const
Get a module from the module array.
Definition: CbmStsSetup.h:68
CbmStsDigitizeQa::Finish
virtual void Finish()
Definition: CbmStsDigitizeQa.cxx:118
CbmStsDigi::GetCharge
Double_t GetCharge() const
Definition: CbmStsDigi.h:71
CbmStsDigitizeQa::fOutputDir
std::string fOutputDir
Definition: CbmStsDigitizeQa.h:49
CbmStsDigi::GetAddress
Int_t GetAddress() const
Definition: CbmStsDigi.h:53
points
TClonesArray * points
Definition: Analyze_matching.h:18
CbmDigiManager.h
CbmStsDigitizeQa::fDigiManager
CbmDigiManager * fDigiManager
Definition: CbmStsDigitizeQa.h:48
CbmStsDigitizeQa::CreateDigiHistograms
void CreateDigiHistograms()
Definition: CbmStsDigitizeQa.cxx:227
CbmStsElement::GetDaughter
CbmStsElement * GetDaughter(Int_t index) const
Definition: CbmStsElement.cxx:120
CbmStsElement::GetNofDaughters
Int_t GetNofDaughters() const
Definition: CbmStsElement.h:95
CbmStsSetup::SetModuleParameters
UInt_t SetModuleParameters(CbmStsParSetModule *modulePars)
Set module parameters from parameter container.
Definition: CbmStsSetup.cxx:455
CbmStsDigitizeQa.h
CbmStsParSim
Settings for STS simulation (digitizer)
Definition: CbmStsParSim.h:25
CbmStsDigitizeQa::CbmStsDigitizeQa
CbmStsDigitizeQa(CbmStsDigitize *digitizer=NULL)
Definition: CbmStsDigitizeQa.cxx:46
CbmSimulationReport.h
Base class for simulation reports.
CbmStsAddress.h
CbmStsParSetModule
Parameters container for CbmStsParModule.
Definition: CbmStsParSetModule.h:30
CbmSimulationReport
Base class for simulation reports.
Definition: CbmSimulationReport.h:28
CbmStsSetup::GetElement
CbmStsElement * GetElement(Int_t address, Int_t level)
Definition: CbmStsSetup.cxx:137
CbmStsDigitizeQa::Init
virtual InitStatus Init()
Definition: CbmStsDigitizeQa.cxx:70
CbmStsDigitizeQa::fModuleParSet
CbmStsParSetModule * fModuleParSet
Definition: CbmStsDigitizeQa.h:54
CbmStsModule.h
ECbmModuleId::kSts
@ kSts
Silicon Tracking System.
PairAnalysisStyler::Fill
static Int_t Fill[]
Definition: PairAnalysisStyleDefs.h:82
CbmStsModule::GetParameters
const CbmStsParModule * GetParameters() const
Module parameters.
Definition: CbmStsModule.h:58
CbmStsSetup::GetNofModules
Int_t GetNofModules() const
Definition: CbmStsSetup.h:82
CbmStsDigitizeQa::fStsPoints
TClonesArray * fStsPoints
Definition: CbmStsDigitizeQa.h:50
CbmStsElement
Class representing an element of the STS setup.
Definition: CbmStsElement.h:32
CbmStsSetup::IsInit
Bool_t IsInit() const
Initialisation status for sensor parameters.
Definition: CbmStsSetup.h:124
CbmStsDigitizeQa::fNofStation
Int_t fNofStation
Definition: CbmStsDigitizeQa.h:52
CbmStsParAsic.h
CbmStsDigi::GetChannel
UShort_t GetChannel() const
Channel number in module @value Channel number.
Definition: CbmStsDigi.h:59