85 B2FATAL(
"no valid configuration found for SVD reconstruction");
87 B2DEBUG(20,
"SVDRecoConfiguration: from now on we are using " <<
m_svdPlotsConfig->get_uniqueID());
94 if (gTools->getNumberOfLayers() == 0) {
95 B2FATAL(
"Missing geometry for VXD, check steering file.");
97 if (gTools->getNumberOfSVDLayers() == 0) {
98 B2WARNING(
"Missing geometry for SVD, SVD-DQM is skipped.");
103 TDirectory* oldDir = gDirectory;
111 int nSVDChips = gTools->getTotalSVDChips();
114 m_nEvents =
new TH1F(
"SVDDQM_nEvents",
"SVD Number of Events", 1, -0.5, 0.5);
115 m_nEvents->GetYaxis()->SetTitle(
"N events");
120 m_hitMapCountsU =
new TH1F(
"SVDDQM_StripCountsU",
"SVD Integrated Number of ZS5 Fired U-Strips per sensor",
121 nSVDSensors, 0, nSVDSensors);
125 m_hitMapCountsV =
new TH1F(
"SVDDQM_StripCountsV",
"SVD Integrated Number of ZS5 Fired V-Strips per sensor",
126 nSVDSensors, 0, nSVDSensors);
130 m_hitMapClCountsU =
new TH1F(
"SVDDQM_ClusterCountsU",
"SVD Integrated Number of U-Clusters per sensor",
131 nSVDSensors, 0, nSVDSensors);
135 m_hitMapClCountsV =
new TH1F(
"SVDDQM_ClusterCountsV",
"SVD Integrated Number of V-Clusters per sensor",
136 nSVDSensors, 0, nSVDSensors);
140 for (
int i = 0; i < nSVDSensors; i++) {
141 VxdID id = gTools->getSensorIDFromSVDIndex(i);
143 int iLadder =
id.getLadderNumber();
144 int iSensor =
id.getSensorNumber();
145 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
153 m_hitMapCountsChip =
new TH1F(
"SVDDQM_StripCountsChip",
"SVD Integrated Number of ZS5 Fired Strips per chip",
154 nSVDChips, 0, nSVDChips);
158 m_hitMapClCountsChip =
new TH1F(
"SVDDQM_ClusterCountsChip",
"SVD Integrated Number of Clusters per chip",
159 nSVDChips, 0, nSVDChips);
204 float ChargeMax = 80;
208 float TimeMin = -150;
211 int GroupIdBins = 21;
212 float GroupIdMin = -1.5;
213 float GroupIdMax = 19.5;
218 TString refFrame =
"in FTSW reference";
220 refFrame =
"in SVD reference";
226 string name = str(format(
"SVDDQM_ClusterChargeUAll"));
227 string title = str(format(
"SVD U-Cluster Charge for all sensors"));
232 name = str(format(
"SVDDQM_ClusterChargeVAll"));
233 title = str(format(
"SVD V-Cluster Charge for all sensors"));
241 name = str(format(
"SVDDQM_ClusterChargeU3"));
242 title = str(format(
"SVD U-Cluster Charge for layer 3 sensors"));
243 m_clusterChargeU3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
247 name = str(format(
"SVDDQM_ClusterChargeV3"));
248 title = str(format(
"SVD V-Cluster Charge for layer 3 sensors"));
249 m_clusterChargeV3 =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
254 name = str(format(
"SVDDQM_ClusterChargeU456"));
255 title = str(format(
"SVD U-Cluster Charge for layers 4,5,6 sensors"));
261 name = str(format(
"SVDDQM_ClusterChargeV456"));
262 title = str(format(
"SVD V-Cluster Charge for layers 4,5,6 sensors"));
271 name = str(format(
"SVDDQM_ClusterSNRUAll"));
272 title = str(format(
"SVD U-Cluster SNR for all sensors"));
273 m_clusterSNRUAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
277 name = str(format(
"SVDDQM_ClusterSNRVAll"));
278 title = str(format(
"SVD V-Cluster SNR for all sensors"));
279 m_clusterSNRVAll =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
286 name = str(format(
"SVDDQM_ClusterSNRU3"));
287 title = str(format(
"SVD U-Cluster SNR for layer 3 sensors"));
288 m_clusterSNRU3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
292 name = str(format(
"SVDDQM_ClusterSNRV3"));
293 title = str(format(
"SVD V-Cluster SNR for layer 3 sensors"));
294 m_clusterSNRV3 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
299 name = str(format(
"SVDDQM_ClusterSNRU456"));
300 title = str(format(
"SVD U-Cluster SNR for layers 4,5,6 sensors"));
301 m_clusterSNRU456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
305 name = str(format(
"SVDDQM_ClusterSNRV456"));
306 title = str(format(
"SVD V-Cluster SNR for layers 4,5,6 sensors"));
307 m_clusterSNRV456 =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
314 TString Name =
"SVDDQM_ClusterTimeUAll";
315 TString Title = Form(
"SVD U-Cluster Time %s for all sensors", refFrame.Data());
316 m_clusterTimeUAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
320 Name =
"SVDDQM_ClusterTimeVAll";
321 Title = Form(
"SVD V-Cluster Time %s for all sensors", refFrame.Data());
322 m_clusterTimeVAll =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
329 Name =
"SVDDQM_ClusterTimeU3";
330 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors", refFrame.Data());
331 m_clusterTimeU3 =
new TH1F(Name.Data(), Title.Data(), TimeBins, TimeMin, TimeMax);
335 name = str(format(
"SVDDQM_ClusterTimeV3"));
336 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors", refFrame.Data());
337 m_clusterTimeV3 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
342 name = str(format(
"SVDDQM_ClusterTimeU456"));
343 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
344 m_clusterTimeU456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
348 name = str(format(
"SVDDQM_ClusterTimeV456"));
349 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors", refFrame.Data());
350 m_clusterTimeV456 =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
359 Name =
"SVDDQM_Cluster3TimeU3";
360 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors for 3 samples", refFrame.Data());
365 name = str(format(
"SVDDQM_Cluster3TimeV3"));
366 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors for 3 samples", refFrame.Data());
371 name = str(format(
"SVDDQM_Cluster3TimeU456"));
372 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
377 name = str(format(
"SVDDQM_Cluster3TimeV456"));
378 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
387 Name =
"SVDDQM_Cluster6TimeU3";
388 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors for 6 samples", refFrame.Data());
393 name = str(format(
"SVDDQM_Cluster6TimeV3"));
394 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors for 6 samples", refFrame.Data());
400 name = str(format(
"SVDDQM_Cluster6TimeU456"));
401 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
406 name = str(format(
"SVDDQM_Cluster6TimeV456"));
407 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
418 name = str(format(
"SVDDQM_ClusterChargeGroupIDsL3U"));
419 title = str(format(
"SVD U-Cluster Charge for layer 3 sensors for group Id = 0, 1, 2 & 3"));
424 name = str(format(
"SVDDQM_ClusterChargeGroupIDsL3V"));
425 title = str(format(
"SVD V-Cluster Charge for layer 3 sensors for group Id = 0, 1, 2 & 3"));
431 name = str(format(
"SVDDQM_ClusterChargeGroupIDsL456U"));
432 title = str(format(
"SVD U-Cluster Charge for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3"));
438 name = str(format(
"SVDDQM_ClusterChargeGroupIDsL456V"));
439 title = str(format(
"SVD V-Cluster Charge for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3"));
448 name = str(format(
"SVDDQM_ClusterSNRGroupIDsL3U"));
449 title = str(format(
"SVD U-Cluster SNR for layer 3 sensors for group Id = 0, 1, 2 & 3"));
454 name = str(format(
"SVDDQM_ClusterSNRGroupIDsL3V"));
455 title = str(format(
"SVD V-Cluster SNR for layer 3 sensors for group Id = 0, 1, 2 & 3"));
461 name = str(format(
"SVDDQM_ClusterSNRGroupIDsL456U"));
462 title = str(format(
"SVD U-Cluster SNR for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3"));
467 name = str(format(
"SVDDQM_ClusterSNRGroupIDsL456V"));
468 title = str(format(
"SVD V-Cluster SNR for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3"));
478 Name =
"SVDDQM_ClusterTimeGroupIDsL3U";
479 Title = Form(
"SVD U-Cluster Time %s for layer 3 sensors for group Id = 0, 1, 2 & 3", refFrame.Data());
484 name = str(format(
"SVDDQM_ClusterTimeGroupIDsL3V"));
485 Title = Form(
"SVD V-Cluster Time %s for layer 3 sensors for group Id = 0, 1, 2 & 3", refFrame.Data());
491 name = str(format(
"SVDDQM_ClusterTimeGroupIDsL456U"));
492 Title = Form(
"SVD U-Cluster Time %s for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3", refFrame.Data());
497 name = str(format(
"SVDDQM_ClusterTimeGroupIDsL456V"));
498 Title = Form(
"SVD V-Cluster Time %s for layers 4,5,6 sensors for group Id = 0, 1, 2 & 3", refFrame.Data());
507 Name =
"SVDDQM_ClusterTimeGroupIdU";
508 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for U/P Side", refFrame.Data());
509 m_clusterTimeGroupIdU =
new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin, GroupIdMax);
513 Name =
"SVDDQM_ClusterTimeGroupIdV";
514 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for V/N Side", refFrame.Data());
515 m_clusterTimeGroupIdV =
new TH2F(Name.Data(), Title.Data(), TimeBins / 2, TimeMin, TimeMax, GroupIdBins, GroupIdMin, GroupIdMax);
523 Name =
"SVDDQM_cluster6TimeGroupIdU";
524 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for U/P Side for coarse trigger", refFrame.Data());
530 Name =
"SVDDQM_cluster6TimeGroupIdV";
531 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for V/N Side for coarse trigger", refFrame.Data());
538 Name =
"SVDDQM_cluster3TimeGroupIdU";
539 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for U/P Side for fine trigger", refFrame.Data());
545 Name =
"SVDDQM_cluster3TimeGroupIdV";
546 Title = Form(
"SVD cluster Time Group Id %s vs cluster time for V/N Side for fine trigger", refFrame.Data());
556 name = str(format(
"SVDDQM_StripMaxBinUAll"));
557 title = str(format(
"SVD U-Strip MaxBin for all sensors"));
558 m_stripMaxBinUAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
562 name = str(format(
"SVDDQM_StripMaxBinVAll"));
563 title = str(format(
"SVD V-Strip MaxBin for all sensors"));
564 m_stripMaxBinVAll =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
569 name = str(format(
"SVDDQM_StripMaxBinU3"));
570 title = str(format(
"SVD U-Strip MaxBin for layer 3 sensors"));
571 m_stripMaxBinU3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
575 name = str(format(
"SVDDQM_StripMaxBinV3"));
576 title = str(format(
"SVD V-Strip MaxBin for layer 3 sensors"));
577 m_stripMaxBinV3 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
582 name = str(format(
"SVDDQM_StripMaxBinU6"));
583 title = str(format(
"SVD U-Strip MaxBin for layer 6 sensors"));
584 m_stripMaxBinU6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
588 name = str(format(
"SVDDQM_StripMaxBinV6"));
589 title = str(format(
"SVD V-Strip MaxBin for layer 6 sensors"));
590 m_stripMaxBinV6 =
new TH1F(name.c_str(), title.c_str(), MaxBinBins, 0, MaxBinMax);
596 for (
int i = 0; i < nSVDSensors; i++) {
597 VxdID id = gTools->getSensorIDFromSVDIndex(i);
599 int iLadder =
id.getLadderNumber();
600 int iSensor =
id.getSensorNumber();
601 VxdID sensorID(iLayer, iLadder, iSensor);
603 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
609 name = str(format(
"SVDDQM_%1%_FiredU") % sensorDescr);
610 title = str(format(
"SVD Sensor %1% Number of Fired U-Strips") % sensorDescr);
611 m_firedU[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
612 m_firedU[i]->GetXaxis()->SetTitle(
"# fired strips");
613 m_firedU[i]->GetYaxis()->SetTitle(
"count");
615 name = str(format(
"SVDDQM_%1%_FiredV") % sensorDescr);
616 title = str(format(
"SVD Sensor %1% Number of Fired V-Strips") % sensorDescr);
617 m_firedV[i] =
new TH1F(name.c_str(), title.c_str(), 50, 0, 50);
618 m_firedV[i]->GetXaxis()->SetTitle(
"# fired strips");
619 m_firedV[i]->GetYaxis()->SetTitle(
"count");
624 name = str(format(
"SVDDQM_%1%_ClustersU") % sensorDescr);
625 title = str(format(
"SVD Sensor %1% Number of U-Clusters") % sensorDescr);
626 m_clustersU[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
627 m_clustersU[i]->GetXaxis()->SetTitle(
"# clusters");
630 name = str(format(
"SVDDQM_%1%_ClustersV") % sensorDescr);
631 title = str(format(
"SVD Sensor %1% Number of V-Clusters") % sensorDescr);
632 m_clustersV[i] =
new TH1F(name.c_str(), title.c_str(), 20, 0, 20);
633 m_clustersV[i]->GetXaxis()->SetTitle(
"# clusters");
639 name = str(format(
"SVDDQM_%1%_ADCStripU") % sensorDescr);
640 title = str(format(
"SVD Sensor %1% U-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
641 m_stripSignalU[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
645 name = str(format(
"SVDDQM_%1%_ADCStripV") % sensorDescr);
646 title = str(format(
"SVD Sensor %1% V-Strip signal in ADC Counts, all 6 APV samples") % sensorDescr);
647 m_stripSignalV[i] =
new TH1F(name.c_str(), title.c_str(), 256, -0.5, 255.5);
656 name = str(format(
"SVDDQM_%1%_ClusterChargeU") % sensorDescr);
657 title = str(format(
"SVD Sensor %1% U-Cluster Charge") % sensorDescr);
658 m_clusterChargeU[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
662 name = str(format(
"SVDDQM_%1%_ClusterChargeV") % sensorDescr);
663 title = str(format(
"SVD Sensor %1% V-Cluster Charge") % sensorDescr);
664 m_clusterChargeV[i] =
new TH1F(name.c_str(), title.c_str(), ChargeBins, 0, ChargeMax);
671 name = str(format(
"SVDDQM_%1%_ClusterSNRU") % sensorDescr);
672 title = str(format(
"SVD Sensor %1% U-Cluster SNR") % sensorDescr);
673 m_clusterSNRU[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
677 name = str(format(
"SVDDQM_%1%_ClusterSNRV") % sensorDescr);
678 title = str(format(
"SVD Sensor %1% V-Cluster SNR") % sensorDescr);
679 m_clusterSNRV[i] =
new TH1F(name.c_str(), title.c_str(), SNRBins, 0, SNRMax);
687 name = str(format(
"SVDDQM_%1%_StripCountU") % sensorDescr);
688 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number") % sensorDescr);
689 m_stripCountU[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
693 name = str(format(
"SVDDQM_%1%_StripCountV") % sensorDescr);
694 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number") % sensorDescr);
695 m_stripCountV[i] =
new TH1F(name.c_str(), title.c_str(), 768, -0.5, 767.5);
702 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountU") % sensorDescr);
703 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number") % sensorDescr);
708 name = str(format(
"SVDDQM_%1%_OnlineZSStripCountV") % sensorDescr);
709 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number") % sensorDescr);
719 name = str(format(
"SVDDQM_%1%_Strip3CountU") % sensorDescr);
720 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number for 3 samples") % sensorDescr);
725 name = str(format(
"SVDDQM_%1%_Strip3CountV") % sensorDescr);
726 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number for 3 samples") % sensorDescr);
735 name = str(format(
"SVDDQM_%1%_OnlineZSStrip3CountU") % sensorDescr);
736 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number for 3 samples") % sensorDescr);
741 name = str(format(
"SVDDQM_%1%_OnlineZSStrip3CountV") % sensorDescr);
742 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number for 3 samples") % sensorDescr);
751 name = str(format(
"SVDDQM_%1%_Strip6CountU") % sensorDescr);
752 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired U-Strip vs Strip Number for 6 samples") % sensorDescr);
757 name = str(format(
"SVDDQM_%1%_strip6CountV") % sensorDescr);
758 title = str(format(
"SVD Sensor %1% Integrated Number of ZS5 Fired V-Strip vs Strip Number for 6 samples") % sensorDescr);
766 name = str(format(
"SVDDQM_%1%_OnlineZSStrip6CountU") % sensorDescr);
767 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired U-Strip vs Strip Number for 6 samples") % sensorDescr);
772 name = str(format(
"SVDDQM_%1%_OnlineZSStrip6CountV") % sensorDescr);
773 title = str(format(
"SVD Sensor %1% Integrated Number of online-ZS Fired V-Strip vs Strip Number for 6 samples") % sensorDescr);
783 name = str(format(
"SVDDQM_%1%_StripCountSignalGroupIDsU") % sensorDescr);
784 title = str(format(
"SVD Sensor %1% Integrated NumberFired U-Strip for group Id = 0, 1, 2 & 3 vs Strip Number") % sensorDescr);
789 name = str(format(
"SVDDQM_%1%_StripCountSignalGroupIDsV") % sensorDescr);
790 title = str(format(
"SVD Sensor %1% Integrated Number of Fired V-Strip for group Id = 0, 1, 2 & 3 vs Strip Number") % sensorDescr);
799 name = str(format(
"SVDDQM_%1%_ClusterSizeU") % sensorDescr);
800 title = str(format(
"SVD Sensor %1% U-Cluster Size") % sensorDescr);
801 m_clusterSizeU[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
805 name = str(format(
"SVDDQM_%1%_ClusterSizeV") % sensorDescr);
806 title = str(format(
"SVD Sensor %1% V-Cluster Size") % sensorDescr);
807 m_clusterSizeV[i] =
new TH1F(name.c_str(), title.c_str(), 9, 1, 10);
814 name = str(format(
"SVDDQM_%1%_ClusterTimeU") % sensorDescr);
815 Title = Form(
"SVD Sensor %s U-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
816 m_clusterTimeU[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
820 name = str(format(
"SVDDQM_%1%_ClusterTimeV") % sensorDescr);
821 Title = Form(
"SVD Sensor %s V-Cluster Time %s", sensorDescr.c_str(), refFrame.Data());
822 m_clusterTimeV[i] =
new TH1F(name.c_str(), Title.Data(), TimeBins, TimeMin, TimeMax);
828 for (
int i = 0; i < nSVDChips; i++) {
829 VxdID id = gTools->getChipIDFromSVDIndex(i);
831 int iLadder =
id.getLadderNumber();
832 int iSensor =
id.getSensorNumber();
833 int iChip = gTools->getSVDChipNumber(
id);
834 int IsU = gTools->isSVDSideU(
id);
835 TString AxisTicks = Form(
"%i_%i_%i_u%i", iLayer, iLadder, iSensor, iChip);
837 AxisTicks = Form(
"%i_%i_%i_v%i", iLayer, iLadder, iSensor, iChip);
849 TDirectory* dirShowAll =
nullptr;
850 dirShowAll = oldDir->mkdir(
"SVDDQMAll");
857 for (
int i = 0; i < nSVDSensors; i++) {
858 VxdID id = gTools->getSensorIDFromSVDIndex(i);
860 int iLadder =
id.getLadderNumber();
861 int iSensor =
id.getSensorNumber();
862 VxdID sensorID(iLayer, iLadder, iSensor);
864 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
868 name = str(format(
"SVD_%1%_StripHitmapU") % sensorDescr);
869 title = str(format(
"SVD Sensor %1% Strip Hitmap in U") % sensorDescr);
873 m_hitMapU[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
874 m_hitMapU[i]->GetYaxis()->SetTitle(
"timebin [time units]");
875 m_hitMapU[i]->GetZaxis()->SetTitle(
"hits");
877 name = str(format(
"SVD_%1%_StripHitmapV") % sensorDescr);
878 title = str(format(
"SVD Sensor %1% Strip Hitmap in V") % sensorDescr);
882 m_hitMapV[i]->GetXaxis()->SetTitle(
"v position [pitch units]");
883 m_hitMapV[i]->GetYaxis()->SetTitle(
"timebin [time units]");
884 m_hitMapV[i]->GetZaxis()->SetTitle(
"hits");
889 name = str(format(
"SVD_%1%_HitmapClstU") % sensorDescr);
890 title = str(format(
"SVD Sensor %1% Hitmap Clusters in U") % sensorDescr);
892 m_hitMapUCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
893 m_hitMapUCl[i]->GetXaxis()->SetTitle(
"u position [pitch units]");
896 name = str(format(
"SVD_%1%_HitmapClstV") % sensorDescr);
897 title = str(format(
"SVD Sensor %1% Hitmap Clusters in V") % sensorDescr);
899 m_hitMapVCl[i] =
new TH1F(name.c_str(), title.c_str(), nStrips, 0, nStrips);
900 m_hitMapVCl[i]->GetXaxis()->SetTitle(
"v position [pitch units]");
966 if (!eventAccepted)
return;
976 if (gTools->getNumberOfSVDLayers() == 0)
return;
982 if (!storeSVDShaperDigits.
isValid()) {
983 B2WARNING(
"Missing SVDShaperDigit, SVDDQMExpressRecoModule is skipped.");
989 int firstSVDLayer = gTools->getFirstSVDLayer();
990 int lastSVDLayer = gTools->getLastSVDLayer();
991 int nSVDSensors = gTools->getNumberOfSVDSensors();
994 vector< set<int> > uStrips(nSVDSensors);
995 vector< set<int> > vStrips(nSVDSensors);
997 int iLayer = digitIn.getSensorID().getLayerNumber();
998 if ((iLayer < firstSVDLayer) || (iLayer > lastSVDLayer))
continue;
999 int iLadder = digitIn.getSensorID().getLadderNumber();
1000 int iSensor = digitIn.getSensorID().getSensorNumber();
1001 VxdID sensorID(iLayer, iLadder, iSensor);
1002 int index = gTools->getSVDSensorIndex(sensorID);
1004 if (digitIn.isUStrip()) {
1010 if (nSamples == 3) {
1023 uStrips.at(index).insert(digitIn.getCellID());
1024 int Chip = (int)(digitIn.getCellID() / gTools->getSVDChannelsPerChip()) + 1;
1025 int indexChip = gTools->getSVDChipIndex(sensorID, kTRUE, Chip);
1048 if (nSamples == 3) {
1063 vStrips.at(index).insert(digitIn.getCellID());
1064 int Chip = (int)(digitIn.getCellID() / gTools->getSVDChannelsPerChip()) + 1;
1065 int indexChip = gTools->getSVDChipIndex(sensorID, kFALSE, Chip);
1086 for (
int i = 0; i < nSVDSensors; i++) {
1087 if ((
m_firedU[i] !=
nullptr) && (uStrips[i].size() > 0))
1088 m_firedU[i]->Fill(uStrips[i].size());
1089 if ((
m_firedV[i] !=
nullptr) && (vStrips[i].size() > 0))
1090 m_firedV[i]->Fill(vStrips[i].size());
1095 if (storeNoZSSVDShaperDigits.
isValid())
1097 int iLayer = digitIn.getSensorID().getLayerNumber();
1098 if ((iLayer < firstSVDLayer) || (iLayer > lastSVDLayer))
continue;
1099 int iLadder = digitIn.getSensorID().getLadderNumber();
1100 int iSensor = digitIn.getSensorID().getSensorNumber();
1101 VxdID sensorID(iLayer, iLadder, iSensor);
1102 int index = gTools->getSVDSensorIndex(sensorID);
1104 if (digitIn.isUStrip()) {
1107 if (nSamples == 3) {
1116 if (nSamples == 3) {
1125 vector< set<int> > countsU(nSVDSensors);
1126 vector< set<int> > countsV(nSVDSensors);
1128 for (
const SVDCluster& cluster : storeSVDClusters) {
1130 int iLayer = cluster.getSensorID().getLayerNumber();
1131 if ((iLayer < firstSVDLayer) || (iLayer > lastSVDLayer))
continue;
1132 int iLadder = cluster.getSensorID().getLadderNumber();
1133 int iSensor = cluster.getSensorID().getSensorNumber();
1134 VxdID sensorID(iLayer, iLadder, iSensor);
1135 int index = gTools->getSVDSensorIndex(sensorID);
1138 float time = cluster.getClsTime();
1140 time = time -
m_svdEventInfo->getSVD2FTSWTimeShift(cluster.getFirstFrame());
1142 vector<int> vec = cluster.getTimeGroupId();
1143 auto minElement = min_element(vec.begin(), vec.end());
1145 if (vec.size() > 0) {
1146 groupId = *minElement;
1148 if (cluster.isUCluster()) {
1152 if (trgQuality == 1)
1154 if (trgQuality == 2)
1162 if (trgQuality == 1)
1164 if (trgQuality == 2)
1170 if (cluster.isUCluster()) {
1171 countsU.at(index).insert(SensorInfo.
getUCellID(cluster.getPosition()));
1172 int indexChip = gTools->getSVDChipIndex(sensorID, kTRUE,
1173 (
int)(SensorInfo.
getUCellID(cluster.getPosition()) / gTools->getSVDChannelsPerChip()) + 1);
1188 if (nSamples == 3) {
1199 if (nSamples == 3) {
1211 if (groupId == 0 || groupId == 1 || groupId == 2 || groupId == 3) {
1229 countsV.at(index).insert(SensorInfo.
getVCellID(cluster.getPosition()));
1230 int indexChip = gTools->getSVDChipIndex(sensorID, kFALSE,
1231 (
int)(SensorInfo.
getVCellID(cluster.getPosition()) / gTools->getSVDChannelsPerChip()) + 1);
1246 if (nSamples == 3) {
1257 if (nSamples == 3) {
1268 if (groupId == 0 || groupId == 1 || groupId == 2 || groupId == 3) {
1287 for (
int i = 0; i < nSVDSensors; i++) {
1288 if ((
m_clustersU[i] !=
nullptr) && (countsU[i].size() > 0))
1290 if ((
m_clustersV[i] !=
nullptr) && (countsV[i].size() > 0))