Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
are supposed to be placed in this function.
79 if (gTools->getNumberOfLayers() == 0) {
80 B2FATAL(
"Missing geometry for VXD, check steering file.");
82 if (gTools->getNumberOfSVDLayers() == 0) {
83 B2WARNING(
"Missing geometry for SVD, SVD-DQM is skiped.");
88 TDirectory* oldDir = gDirectory;
95 int nSVDSensors = gTools->getNumberOfSVDSensors();
96 int nSVDChips = gTools->getTotalSVDChips();
99 m_nEvents =
new TH1F(
"SVDDQM_nEvents",
"SVD Number of Events", 1, -0.5, 0.5);
100 m_nEvents->GetYaxis()->SetTitle(
"N events");
105 m_hitMapCountsU =
new TH1F(
"SVDDQM_StripCountsU",
"SVD Integrated Number of ZS5 Fired U-Strips per sensor",
106 nSVDSensors, 0, nSVDSensors);
110 m_hitMapCountsV =
new TH1F(
"SVDDQM_StripCountsV",
"SVD Integrated Number of ZS5 Fired V-Strips per sensor",
111 nSVDSensors, 0, nSVDSensors);
115 m_hitMapClCountsU =
new TH1F(
"SVDDQM_ClusterCountsU",
"SVD Integrated Number of U-Clusters per sensor",
116 nSVDSensors, 0, nSVDSensors);
120 m_hitMapClCountsV =
new TH1F(
"SVDDQM_ClusterCountsV",
"SVD Integrated Number of V-Clusters per sensor",
121 nSVDSensors, 0, nSVDSensors);
125 for (
int i = 0; i < nSVDSensors; i++) {
126 VxdID id = gTools->getSensorIDFromSVDIndex(i);
128 int iLadder =
id.getLadderNumber();
129 int iSensor =
id.getSensorNumber();
130 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
138 m_hitMapCountsChip =
new TH1F(
"SVDDQM_StripCountsChip",
"SVD Integrated Number of ZS5 Fired Strips per chip",
139 nSVDChips, 0, nSVDChips);
143 m_hitMapClCountsChip =
new TH1F(
"SVDDQM_ClusterCountsChip",
"SVD Integrated Number of Clusters per chip",
144 nSVDChips, 0, nSVDChips);
171 float ChargeMax = 80;
175 float TimeMin = -150;
181 TString refFrame =
"in FTSW reference";
183 refFrame =
"in SVD reference";
189 string name = str(format(
"SVDDQM_ClusterChargeUAll"));
190 string title = str(format(
"SVD U-Cluster Charge for all sensors"));
195 name = str(format(
"SVDDQM_ClusterChargeVAll"));
196 title = str(format(
"SVD V-Cluster Charge for all sensors"));
204 name = str(format(
"SVDDQM_ClusterChargeU3"));
205 title = str(format(
"SVD U-Cluster Charge for layer 3 sensors"));
206 m_clusterChargeU3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
210 name = str(format(
"SVDDQM_ClusterChargeV3"));
211 title = str(format(
"SVD V-Cluster Charge for layer 3 sensors"));
212 m_clusterChargeV3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
217 name = str(format(
"SVDDQM_ClusterChargeU456"));
218 title = str(format(
"SVD U-Cluster Charge for layers 4,5,6 sensors"));
224 name = str(format(
"SVDDQM_ClusterChargeV456"));
225 title = str(format(
"SVD V-Cluster Charge for layers 4,5,6 sensors"));
234 name = str(format(
"SVDDQM_ClusterSNRUAll"));
235 title = str(format(
"SVD U-Cluster SNR for all sensors"));
236 m_clusterSNRUAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
240 name = str(format(
"SVDDQM_ClusterSNRVAll"));
241 title = str(format(
"SVD V-Cluster SNR for all sensors"));
242 m_clusterSNRVAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
249 name = str(format(
"SVDDQM_ClusterSNRU3"));
250 title = str(format(
"SVD U-Cluster SNR for layer 3 sensors"));
251 m_clusterSNRU3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
255 name = str(format(
"SVDDQM_ClusterSNRV3"));
256 title = str(format(
"SVD V-Cluster SNR for layer 3 sensors"));
257 m_clusterSNRV3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
262 name = str(format(
"SVDDQM_ClusterSNRU456"));
263 title = str(format(
"SVD U-Cluster SNR for layers 4,5,6 sensors"));
264 m_clusterSNRU456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
268 name = str(format(
"SVDDQM_ClusterSNRV456"));
269 title = str(format(
"SVD V-Cluster SNR for layers 4,5,6 sensors"));
270 m_clusterSNRV456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
277 TString Name =
"SVDDQM_ClusterTimeUAll";
278 TString Title = Form(
"SVD U-Cluster Time %s for all sensors", refFrame.Data());
279 m_clusterTimeUAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
283 Name =
"SVDDQM_ClusterTimeVAll";
284 Title = Form(
"SVD V-Cluster Time %s for all sensors", refFrame.Data());
285 m_clusterTimeVAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
292 Name =
"SVDDQM_ClusterTimeU3";
293 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors", refFrame.Data());
294 m_clusterTimeU3 =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
298 name = str(format(
"SVDDQM_ClusterTimeV3"));
299 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors", refFrame.Data());
300 m_clusterTimeV3 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
305 name = str(format(
"SVDDQM_ClusterTimeU456"));
306 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
307 m_clusterTimeU456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
311 name = str(format(
"SVDDQM_ClusterTimeV456"));
312 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
313 m_clusterTimeV456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
321 name = str(format(
"SVDDQM_StripMaxBinUAll"));
322 title = str(format(
"SVD U-Strip MaxBin for all sensors"));
323 m_stripMaxBinUAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
327 name = str(format(
"SVDDQM_StripMaxBinVAll"));
328 title = str(format(
"SVD V-Strip MaxBin for all sensors"));
329 m_stripMaxBinVAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
334 name = str(format(
"SVDDQM_StripMaxBinU3"));
335 title = str(format(
"SVD U-Strip MaxBin for layer 3 sensors"));
336 m_stripMaxBinU3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
340 name = str(format(
"SVDDQM_StripMaxBinV3"));
341 title = str(format(
"SVD V-Strip MaxBin for layer 3 sensors"));
342 m_stripMaxBinV3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
347 name = str(format(
"SVDDQM_StripMaxBinU6"));
348 title = str(format(
"SVD U-Strip MaxBin for layer 6 sensors"));
349 m_stripMaxBinU6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
353 name = str(format(
"SVDDQM_StripMaxBinV6"));
354 title = str(format(
"SVD V-Strip MaxBin for layer 6 sensors"));
355 m_stripMaxBinV6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
360 for (
int i = 0; i < nSVDSensors; i++) {
361 VxdID id = gTools->getSensorIDFromSVDIndex(i);
363 int iLadder =
id.getLadderNumber();
364 int iSensor =
id.getSensorNumber();
365 VxdID sensorID(iLayer, iLadder, iSensor);
367 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
371 name = str(format(
"SVDDQM_%1%_FiredU") % sensorDescr);
372 title = str(format(
"SVD Sensor %1% Number of Fired U-Strips") % sensorDescr);
373 m_firedU[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
374 m_firedU[i]->GetXaxis()->SetTitle(
"# fired strips");
375 m_firedU[i]->GetYaxis()->SetTitle(
"count");
377 name = str(format(
"SVDDQM_%1%_FiredV") % sensorDescr);
378 title = str(format(
"SVD Sensor %1% Number of Fired V-Strips") % sensorDescr);
379 m_firedV[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
380 m_firedV[i]->GetXaxis()->SetTitle(
"# fired strips");
381 m_firedV[i]->GetYaxis()->SetTitle(
"count");
386 name = str(format(
"SVDDQM_%1%_ClustersU") % sensorDescr);
387 title = str(format(
"SVD Sensor %1% Number of U-Clusters") % sensorDescr);
388 m_clustersU[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
389 m_clustersU[i]->GetXaxis()->SetTitle(
"# clusters");
392 name = str(format(
"SVDDQM_%1%_ClustersV") % sensorDescr);
393 title = str(format(
"SVD Sensor %1% Number of V-Clusters") % sensorDescr);
394 m_clustersV[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
395 m_clustersV[i]->GetXaxis()->SetTitle(
"# clusters");
401 name = str(format(
"SVDDQM_%1%_ClusterChargeU") % sensorDescr);
402 title = str(format(
"SVD Sensor %1% U-Cluster Charge") % sensorDescr);
403 m_clusterChargeU[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
407 name = str(format(
"SVDDQM_%1%_ClusterChargeV") % sensorDescr);
408 title = str(format(
"SVD Sensor %1% V-Cluster Charge") % sensorDescr);
409 m_clusterChargeV[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
416 name = str(format(
"SVDDQM_%1%_ClusterSNRU") % sensorDescr);
417 title = str(format(
"SVD Sensor %1% U-Cluster SNR") % sensorDescr);
418 m_clusterSNRU[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
422 name = str(format(
"SVDDQM_%1%_ClusterSNRV") % sensorDescr);
423 title = str(format(
"SVD Sensor %1% V-Cluster SNR") % sensorDescr);
424 m_clusterSNRV[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
431 name = str(format(
"SVDDQM_%1%_ADCStripU") % sensorDescr);
432 title = str(format(
"SVD Sensor %1% U-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
433 m_stripSignalU[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
437 name = str(format(
"SVDDQM_%1%_ADCStripV") % sensorDescr);
438 title = str(format(
"SVD Sensor %1% V-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
439 m_stripSignalV[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
446 name = str(format(
"SVDDQM_%1%_StripCountU") % sensorDescr);
447 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number") % sensorDescr);
448 m_stripCountU[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
452 name = str(format(
"SVDDQM_%1%_StripCountV") % sensorDescr);
453 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number") % sensorDescr);
454 m_stripCountV[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
461 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountU") % sensorDescr);
462 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number") % sensorDescr);
467 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountV") % sensorDescr);
468 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number") % sensorDescr);
476 name = str(format(
"SVDDQM_%1%_ClusterSizeU") % sensorDescr);
477 title = str(format(
"SVD Sensor %1% U-Cluster Size") % sensorDescr);
478 m_clusterSizeU[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
482 name = str(format(
"SVDDQM_%1%_ClusterSizeV") % sensorDescr);
483 title = str(format(
"SVD Sensor %1% V-Cluster Size") % sensorDescr);
484 m_clusterSizeV[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
491 name = str(format(
"SVDDQM_%1%_ClusterTimeU") % sensorDescr);
492 Title = Form(
"SVD Sensor %s U-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
493 m_clusterTimeU[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
497 name = str(format(
"SVDDQM_%1%_ClusterTimeV") % sensorDescr);
498 Title = Form(
"SVD Sensor %s V-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
499 m_clusterTimeV[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
505 for (
int i = 0; i < nSVDChips; i++) {
506 VxdID id = gTools->getChipIDFromSVDIndex(i);
508 int iLadder =
id.getLadderNumber();
509 int iSensor =
id.getSensorNumber();
510 int iChip = gTools->getSVDChipNumber(
id);
511 int IsU = gTools->isSVDSideU(
id);
512 TString AxisTicks = Form(
"%i_%i_%i_u%i", iLayer, iLadder, iSensor, iChip);
514 AxisTicks = Form(
"%i_%i_%i_v%i", iLayer, iLadder, iSensor, iChip);
526 TDirectory* dirShowAll =
nullptr;
527 dirShowAll = oldDir->mkdir(
"SVDDQMAll");
534 for (
int i = 0; i < nSVDSensors; i++) {
535 VxdID id = gTools->getSensorIDFromSVDIndex(i);
537 int iLadder =
id.getLadderNumber();
538 int iSensor =
id.getSensorNumber();
539 VxdID sensorID(iLayer, iLadder, iSensor);
541 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
545 name = str(format(
"SVD_%1%_StripHitmapU") % sensorDescr);
546 title = str(format(
"SVD Sensor %1% Strip Hitmap in U") % sensorDescr);
550 m_hitMapU[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
551 m_hitMapU[i]->GetYaxis()->SetTitle(
"timebin [time units]");
552 m_hitMapU[i]->GetZaxis()->SetTitle(
"hits");
554 name = str(format(
"SVD_%1%_StripHitmapV") % sensorDescr);
555 title = str(format(
"SVD Sensor %1% Strip Hitmap in V") % sensorDescr);
559 m_hitMapV[i]->GetXaxis()->SetTitle(
"v position [pitch units]");
560 m_hitMapV[i]->GetYaxis()->SetTitle(
"timebin [time units]");
561 m_hitMapV[i]->GetZaxis()->SetTitle(
"hits");
566 name = str(format(
"SVD_%1%_HitmapClstU") % sensorDescr);
567 title = str(format(
"SVD Sensor %1% Hitmap Clusters in U") % sensorDescr);
569 m_hitMapUCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
570 m_hitMapUCl[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
573 name = str(format(
"SVD_%1%_HitmapClstV") % sensorDescr);
574 title = str(format(
"SVD Sensor %1% Hitmap Clusters in V") % sensorDescr);
576 m_hitMapVCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
577 m_hitMapVCl[i]->GetXaxis()->SetTitle(
"v position [pitch units]");
Specific implementation of SensorInfo for PXD Sensors which provides additional pixel specific inform...
TH1F ** m_hitMapUCl
Hitmaps clusters for u.
TH1F ** m_clustersV
number of v clusters per event
TH1F * m_nEvents
number of events
TH1F * m_clusterSNRVAll
v SNR of clusters for all sensors
TH1F * m_clusterTimeV456
v Time of clusters for layer 4,5,6 sensors
TH1F * m_clusterSNRUAll
u SNR of clusters for all sensors
TH1F * m_clusterChargeU3
u charge of clusters for layer 3 sensors
TH1F * m_clusterSNRV3
v SNR of clusters for layer 3 sensors
TH1F * m_hitMapCountsV
Hitmaps v of Digits.
TH2F ** m_hitMapU
Hitmaps pixels for u.
TH1F * m_stripMaxBinU6
u MaxBin of strips for layer 6 sensors (offline Zero Suppression)
TH1F * m_clusterTimeUAll
u time of clusters for all sensors
TH1F * m_hitMapClCountsU
Hitmaps u of Clusters.
TH1F ** m_clusterSizeV
v size
TH1F * m_hitMapCountsU
Hitmaps u of Digits.
TH1F ** m_clusterSNRV
v SNR of clusters per sensor
TH1F ** m_clusterChargeV
v charge of clusters
TH1F ** m_stripSignalU
u charge of strips
TH1F * m_clusterChargeUAll
u charge of clusters for all sensors
TH1F * m_clusterChargeU456
u charge of clusters for layer 4,5,6 sensors
TH1F * m_clusterTimeV3
v Time of clusters for layer 3 sensors
TH1F ** m_stripCountU
u strip count
TH1F ** m_clusterSNRU
u SNR of clusters per sensor
TH1F ** m_hitMapVCl
Hitmaps clusters for v.
TH1F * m_stripMaxBinV3
v MaxBin of strips for layer 3 sensors (offline Zero Suppression)
TH1F * m_clusterTimeVAll
v time of clusters for all sensors
TH1F ** m_onlineZSstripCountV
v strip count (online Zero Suppression
TH1F ** m_stripSignalV
v charge of strips
TH1F ** m_stripCountV
v strip count
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
TH1F * m_clusterChargeVAll
v charge of clusters for all sensors
TH1F ** m_clusterTimeV
v time
TH1F * m_clusterSNRU3
u SNR of clusters for layer 3 sensors
TH1F * m_clusterSNRV456
v SNR of clusters for layer 4,5,6 sensors
TH1F * m_stripMaxBinUAll
u MaxBin of strips for all sensors (offline Zero Suppression)
TList * m_histoList
list of cumulative histograms
TH1F ** m_clusterChargeU
u charge of clusters
TH1F * m_hitMapCountsChip
Hitmaps of digits on chips.
TH1F * m_clusterChargeV3
v charge of clusters for layer 3 sensors
TH2F ** m_hitMapV
Hitmaps pixels for v.
TH1F * m_stripMaxBinV6
v MaxBin of strips for layer 6 sensors (offline Zero Suppression)
TH1F ** m_firedU
Fired u strips per event.
TH1F * m_clusterTimeU3
u Time of clusters for layer 3 sensors
TH1F * m_clusterSNRU456
u SNR of clusters for layer 4,5,6 sensors
TH1F ** m_onlineZSstripCountU
u strip count (online Zero Suppression)
int m_ShowAllHistos
Flag to show all histos in DQM, default = 0 (do not show)
TH1F * m_stripMaxBinU3
u MaxBin of strips for layer 3 sensors (offline Zero Suppression)
bool m_desynchSVDTime
if TRUE: svdTime back in SVD time reference
TH1F * m_stripMaxBinVAll
v MaxBin of strips for all sensors (offline Zero Suppression)
TH1F * m_hitMapClCountsChip
Hitmaps of clusters on chips.
TH1F ** m_clusterTimeU
u time
TH1F * m_clusterTimeU456
u Time of clusters for layer 4,5,6 sensors
TH1F ** m_clusterSizeU
u size
TH1F ** m_firedV
Fired v strips per event.
TH1F * m_clusterChargeV456
v charge of clusters for layer 4,5,6 sensors
TH1F * m_hitMapClCountsV
Hitmaps v of Clusters.
TH1F ** m_clustersU
number of u clusters per event
static const std::size_t c_nAPVSamples
Number of APV samples stored.
Specific implementation of SensorInfo for SVD Sensors which provides additional sensor specific infor...
static GeoCache & getInstance()
Return a reference to the singleton instance.
const GeoTools * getGeoTools()
Return a raw pointer to a GeoTools object.
static const SensorInfoBase & get(Belle2::VxdID id)
Return a reference to the SensorInfo of a given SensorID.
int getVCells() const
Return number of pixel/strips in v direction.
int getUCells() const
Return number of pixel/strips in u direction.
Class to uniquely identify a any structure of the PXD and SVD.
baseType getLayerNumber() const
Get the layer id.