Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
are supposed to be placed in this function.
82 if (gTools->getNumberOfLayers() == 0) {
83 B2FATAL(
"Missing geometry for VXD, check steering file.");
85 if (gTools->getNumberOfSVDLayers() == 0) {
86 B2WARNING(
"Missing geometry for SVD, SVD-DQM is skiped.");
91 TDirectory* oldDir = gDirectory;
98 int nSVDSensors = gTools->getNumberOfSVDSensors();
99 int nSVDChips = gTools->getTotalSVDChips();
102 m_nEvents =
new TH1F(
"SVDDQM_nEvents",
"SVD Number of Events", 1, -0.5, 0.5);
103 m_nEvents->GetYaxis()->SetTitle(
"N events");
108 m_hitMapCountsU =
new TH1F(
"SVDDQM_StripCountsU",
"SVD Integrated Number of ZS5 Fired U-Strips per sensor",
109 nSVDSensors, 0, nSVDSensors);
113 m_hitMapCountsV =
new TH1F(
"SVDDQM_StripCountsV",
"SVD Integrated Number of ZS5 Fired V-Strips per sensor",
114 nSVDSensors, 0, nSVDSensors);
118 m_hitMapClCountsU =
new TH1F(
"SVDDQM_ClusterCountsU",
"SVD Integrated Number of U-Clusters per sensor",
119 nSVDSensors, 0, nSVDSensors);
123 m_hitMapClCountsV =
new TH1F(
"SVDDQM_ClusterCountsV",
"SVD Integrated Number of V-Clusters per sensor",
124 nSVDSensors, 0, nSVDSensors);
128 for (
int i = 0; i < nSVDSensors; i++) {
129 VxdID id = gTools->getSensorIDFromSVDIndex(i);
131 int iLadder =
id.getLadderNumber();
132 int iSensor =
id.getSensorNumber();
133 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
141 m_hitMapCountsChip =
new TH1F(
"SVDDQM_StripCountsChip",
"SVD Integrated Number of ZS5 Fired Strips per chip",
142 nSVDChips, 0, nSVDChips);
146 m_hitMapClCountsChip =
new TH1F(
"SVDDQM_ClusterCountsChip",
"SVD Integrated Number of Clusters per chip",
147 nSVDChips, 0, nSVDChips);
174 float ChargeMax = 80;
178 float TimeMin = -150;
184 TString refFrame =
"in FTSW reference";
186 refFrame =
"in SVD reference";
192 string name = str(format(
"SVDDQM_ClusterChargeUAll"));
193 string title = str(format(
"SVD U-Cluster Charge for all sensors"));
198 name = str(format(
"SVDDQM_ClusterChargeVAll"));
199 title = str(format(
"SVD V-Cluster Charge for all sensors"));
207 name = str(format(
"SVDDQM_ClusterChargeU3"));
208 title = str(format(
"SVD U-Cluster Charge for layer 3 sensors"));
209 m_clusterChargeU3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
213 name = str(format(
"SVDDQM_ClusterChargeV3"));
214 title = str(format(
"SVD V-Cluster Charge for layer 3 sensors"));
215 m_clusterChargeV3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
220 name = str(format(
"SVDDQM_ClusterChargeU456"));
221 title = str(format(
"SVD U-Cluster Charge for layers 4,5,6 sensors"));
227 name = str(format(
"SVDDQM_ClusterChargeV456"));
228 title = str(format(
"SVD V-Cluster Charge for layers 4,5,6 sensors"));
237 name = str(format(
"SVDDQM_ClusterSNRUAll"));
238 title = str(format(
"SVD U-Cluster SNR for all sensors"));
239 m_clusterSNRUAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
243 name = str(format(
"SVDDQM_ClusterSNRVAll"));
244 title = str(format(
"SVD V-Cluster SNR for all sensors"));
245 m_clusterSNRVAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
252 name = str(format(
"SVDDQM_ClusterSNRU3"));
253 title = str(format(
"SVD U-Cluster SNR for layer 3 sensors"));
254 m_clusterSNRU3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
258 name = str(format(
"SVDDQM_ClusterSNRV3"));
259 title = str(format(
"SVD V-Cluster SNR for layer 3 sensors"));
260 m_clusterSNRV3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
265 name = str(format(
"SVDDQM_ClusterSNRU456"));
266 title = str(format(
"SVD U-Cluster SNR for layers 4,5,6 sensors"));
267 m_clusterSNRU456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
271 name = str(format(
"SVDDQM_ClusterSNRV456"));
272 title = str(format(
"SVD V-Cluster SNR for layers 4,5,6 sensors"));
273 m_clusterSNRV456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
280 TString Name =
"SVDDQM_ClusterTimeUAll";
281 TString Title = Form(
"SVD U-Cluster Time %s for all sensors", refFrame.Data());
282 m_clusterTimeUAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
286 Name =
"SVDDQM_ClusterTimeVAll";
287 Title = Form(
"SVD V-Cluster Time %s for all sensors", refFrame.Data());
288 m_clusterTimeVAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
295 Name =
"SVDDQM_ClusterTimeU3";
296 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors", refFrame.Data());
297 m_clusterTimeU3 =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
301 name = str(format(
"SVDDQM_ClusterTimeV3"));
302 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors", refFrame.Data());
303 m_clusterTimeV3 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
308 name = str(format(
"SVDDQM_ClusterTimeU456"));
309 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
310 m_clusterTimeU456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
314 name = str(format(
"SVDDQM_ClusterTimeV456"));
315 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
316 m_clusterTimeV456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
324 name = str(format(
"SVDDQM_StripMaxBinUAll"));
325 title = str(format(
"SVD U-Strip MaxBin for all sensors"));
326 m_stripMaxBinUAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
330 name = str(format(
"SVDDQM_StripMaxBinVAll"));
331 title = str(format(
"SVD V-Strip MaxBin for all sensors"));
332 m_stripMaxBinVAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
337 name = str(format(
"SVDDQM_StripMaxBinU3"));
338 title = str(format(
"SVD U-Strip MaxBin for layer 3 sensors"));
339 m_stripMaxBinU3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
343 name = str(format(
"SVDDQM_StripMaxBinV3"));
344 title = str(format(
"SVD V-Strip MaxBin for layer 3 sensors"));
345 m_stripMaxBinV3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
350 name = str(format(
"SVDDQM_StripMaxBinU6"));
351 title = str(format(
"SVD U-Strip MaxBin for layer 6 sensors"));
352 m_stripMaxBinU6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
356 name = str(format(
"SVDDQM_StripMaxBinV6"));
357 title = str(format(
"SVD V-Strip MaxBin for layer 6 sensors"));
358 m_stripMaxBinV6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
363 for (
int i = 0; i < nSVDSensors; i++) {
364 VxdID id = gTools->getSensorIDFromSVDIndex(i);
366 int iLadder =
id.getLadderNumber();
367 int iSensor =
id.getSensorNumber();
368 VxdID sensorID(iLayer, iLadder, iSensor);
370 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
374 name = str(format(
"SVDDQM_%1%_FiredU") % sensorDescr);
375 title = str(format(
"SVD Sensor %1% Number of Fired U-Strips") % sensorDescr);
376 m_firedU[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
377 m_firedU[i]->GetXaxis()->SetTitle(
"# fired strips");
378 m_firedU[i]->GetYaxis()->SetTitle(
"count");
380 name = str(format(
"SVDDQM_%1%_FiredV") % sensorDescr);
381 title = str(format(
"SVD Sensor %1% Number of Fired V-Strips") % sensorDescr);
382 m_firedV[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
383 m_firedV[i]->GetXaxis()->SetTitle(
"# fired strips");
384 m_firedV[i]->GetYaxis()->SetTitle(
"count");
389 name = str(format(
"SVDDQM_%1%_ClustersU") % sensorDescr);
390 title = str(format(
"SVD Sensor %1% Number of U-Clusters") % sensorDescr);
391 m_clustersU[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
392 m_clustersU[i]->GetXaxis()->SetTitle(
"# clusters");
395 name = str(format(
"SVDDQM_%1%_ClustersV") % sensorDescr);
396 title = str(format(
"SVD Sensor %1% Number of V-Clusters") % sensorDescr);
397 m_clustersV[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
398 m_clustersV[i]->GetXaxis()->SetTitle(
"# clusters");
404 name = str(format(
"SVDDQM_%1%_ClusterChargeU") % sensorDescr);
405 title = str(format(
"SVD Sensor %1% U-Cluster Charge") % sensorDescr);
406 m_clusterChargeU[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
410 name = str(format(
"SVDDQM_%1%_ClusterChargeV") % sensorDescr);
411 title = str(format(
"SVD Sensor %1% V-Cluster Charge") % sensorDescr);
412 m_clusterChargeV[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
419 name = str(format(
"SVDDQM_%1%_ClusterSNRU") % sensorDescr);
420 title = str(format(
"SVD Sensor %1% U-Cluster SNR") % sensorDescr);
421 m_clusterSNRU[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
425 name = str(format(
"SVDDQM_%1%_ClusterSNRV") % sensorDescr);
426 title = str(format(
"SVD Sensor %1% V-Cluster SNR") % sensorDescr);
427 m_clusterSNRV[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
434 name = str(format(
"SVDDQM_%1%_ADCStripU") % sensorDescr);
435 title = str(format(
"SVD Sensor %1% U-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
436 m_stripSignalU[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
440 name = str(format(
"SVDDQM_%1%_ADCStripV") % sensorDescr);
441 title = str(format(
"SVD Sensor %1% V-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
442 m_stripSignalV[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
449 name = str(format(
"SVDDQM_%1%_StripCountU") % sensorDescr);
450 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number") % sensorDescr);
451 m_stripCountU[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
455 name = str(format(
"SVDDQM_%1%_StripCountV") % sensorDescr);
456 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number") % sensorDescr);
457 m_stripCountV[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
464 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountU") % sensorDescr);
465 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number") % sensorDescr);
470 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountV") % sensorDescr);
471 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number") % sensorDescr);
479 name = str(format(
"SVDDQM_%1%_ClusterSizeU") % sensorDescr);
480 title = str(format(
"SVD Sensor %1% U-Cluster Size") % sensorDescr);
481 m_clusterSizeU[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
485 name = str(format(
"SVDDQM_%1%_ClusterSizeV") % sensorDescr);
486 title = str(format(
"SVD Sensor %1% V-Cluster Size") % sensorDescr);
487 m_clusterSizeV[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
494 name = str(format(
"SVDDQM_%1%_ClusterTimeU") % sensorDescr);
495 Title = Form(
"SVD Sensor %s U-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
496 m_clusterTimeU[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
500 name = str(format(
"SVDDQM_%1%_ClusterTimeV") % sensorDescr);
501 Title = Form(
"SVD Sensor %s V-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
502 m_clusterTimeV[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
508 for (
int i = 0; i < nSVDChips; i++) {
509 VxdID id = gTools->getChipIDFromSVDIndex(i);
511 int iLadder =
id.getLadderNumber();
512 int iSensor =
id.getSensorNumber();
513 int iChip = gTools->getSVDChipNumber(
id);
514 int IsU = gTools->isSVDSideU(
id);
515 TString AxisTicks = Form(
"%i_%i_%i_u%i", iLayer, iLadder, iSensor, iChip);
517 AxisTicks = Form(
"%i_%i_%i_v%i", iLayer, iLadder, iSensor, iChip);
529 TDirectory* dirShowAll = NULL;
530 dirShowAll = oldDir->mkdir(
"SVDDQMAll");
537 for (
int i = 0; i < nSVDSensors; i++) {
538 VxdID id = gTools->getSensorIDFromSVDIndex(i);
540 int iLadder =
id.getLadderNumber();
541 int iSensor =
id.getSensorNumber();
542 VxdID sensorID(iLayer, iLadder, iSensor);
544 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
548 name = str(format(
"SVD_%1%_StripHitmapU") % sensorDescr);
549 title = str(format(
"SVD Sensor %1% Strip Hitmap in U") % sensorDescr);
553 m_hitMapU[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
554 m_hitMapU[i]->GetYaxis()->SetTitle(
"timebin [time units]");
555 m_hitMapU[i]->GetZaxis()->SetTitle(
"hits");
557 name = str(format(
"SVD_%1%_StripHitmapV") % sensorDescr);
558 title = str(format(
"SVD Sensor %1% Strip Hitmap in V") % sensorDescr);
562 m_hitMapV[i]->GetXaxis()->SetTitle(
"v position [pitch units]");
563 m_hitMapV[i]->GetYaxis()->SetTitle(
"timebin [time units]");
564 m_hitMapV[i]->GetZaxis()->SetTitle(
"hits");
569 name = str(format(
"SVD_%1%_HitmapClstU") % sensorDescr);
570 title = str(format(
"SVD Sensor %1% Hitmap Clusters in U") % sensorDescr);
572 m_hitMapUCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
573 m_hitMapUCl[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
576 name = str(format(
"SVD_%1%_HitmapClstV") % sensorDescr);
577 title = str(format(
"SVD Sensor %1% Hitmap Clusters in V") % sensorDescr);
579 m_hitMapVCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
580 m_hitMapVCl[i]->GetXaxis()->SetTitle(
"v position [pitch units]");