86 B2FATAL(
"no valid configuration found for SVD reconstruction");
88 B2DEBUG(20,
"SVDRecoConfiguration: from now on we are using " <<
m_svdPlotsConfig->get_uniqueID());
104 B2DEBUG(20,
"ClusTrk: additional sensors to be monitored " << sensor);
109 if (gTools->getNumberOfLayers() == 0) {
110 B2FATAL(
"Missing geometry for VXD, check steering file.");
112 if (gTools->getNumberOfSVDLayers() == 0) {
113 B2WARNING(
"Missing geometry for SVD, SVD-DQM is skipped.");
118 TDirectory* oldDir = gDirectory;
134 float ChargeMax = 160;
138 float TimeMin = -150;
144 TString refFrame =
"in FTSW reference";
146 refFrame =
"in SVD reference";
152 TString name =
"SVDTRK_ClusterChargeU3";
153 TString title =
"SVD U-Cluster-on-Track Charge for layer 3 sensors";
154 m_clsTrkChargeU3 =
new TH1F(name.Data(), title.Data(), ChargeBins, 0, ChargeMax);
158 name =
"SVDTRK_ClusterChargeV3";
159 title =
"SVD V-Cluster-on-Track Charge for layer 3 sensors";
160 m_clsTrkChargeV3 =
new TH1F(name.Data(), title.Data(), ChargeBins, 0, ChargeMax);
165 name =
"SVDTRK_ClusterChargeU456";
166 title =
"SVD U-Cluster-on-Track Charge for layers 4,5,6 sensors";
172 name =
"SVDTRK_ClusterChargeV456";
173 title =
"SVD V-Cluster-on-Track Charge for layers 4,5,6 sensors";
184 std::pair<int, int> p = it.first;
186 int sensor = p.second;
188 name = Form(
"SVDTRK_ClusterCharge_L%d.x.%d", layer, sensor);
189 title = Form(
"SVD Cluster-on-Track Charge for L%d.x.%d", layer, sensor);
190 m_clsTrkCharge[idx] =
new TH1F(name.Data(), title.Data(), ChargeBins, 0, ChargeMax);
191 m_clsTrkCharge[idx]->GetXaxis()->SetTitle(
"cluster charge [ke-]");
196 name = Form(
"SVDTRK_ClusterSNR_L%d.x.%d", layer, sensor);
197 title = Form(
"SVD Cluster-on-Track SNR for L%d.x.%d", layer, sensor);
198 m_clsTrkSNR[idx] =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
199 m_clsTrkSNR[idx]->GetXaxis()->SetTitle(
"cluster SNR");
207 name =
"SVDTRK_ClusterSNRU3";
208 title =
"SVD U-Cluster-on-Track SNR for layer 3 sensors";
209 m_clsTrkSNRU3 =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
213 name =
"SVDTRK_ClusterSNRV3";
214 title =
"SVD V-Cluster-on-Track SNR for layer 3 sensors";
215 m_clsTrkSNRV3 =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
220 name =
"SVDTRK_ClusterSNRU456";
221 title =
"SVD U-Cluster-on-Track SNR for layers 4,5,6 sensors";
222 m_clsTrkSNRU456 =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
226 name =
"SVDTRK_ClusterSNRV456";
227 title =
"SVD V-Cluster-on-Track SNR for layers 4,5,6 sensors";
228 m_clsTrkSNRV456 =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
236 name =
"SVDTRK_ClusterTimeU3";
237 title = Form(
"SVD U-Cluster-on-Track Time %s for layer 3 sensors", refFrame.Data());
238 m_clsTrkTimeU3 =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
242 name =
"SVDTRK_ClusterTimeV3";
243 title = Form(
"SVD V-Cluster-on-Track Time %s for layer 3 sensors", refFrame.Data());
244 m_clsTrkTimeV3 =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
250 name =
"SVDTRK_Cluster3SampleTimeU3";
251 title = Form(
"SVD U-Cluster-on-Track Time %s for layer 3 sensors for 3 samples", refFrame.Data());
256 name =
"SVDTRK_Cluster3SampleTimeV3";
257 title = Form(
"SVD V-Cluster-on-Track Time %s for layer 3 sensors for 3 samples", refFrame.Data());
263 name =
"SVDTRK_Cluster6SampleTimeU3";
264 title = Form(
"SVD U-Cluster-on-Track Time %s for layer 3 sensors for 6 samples", refFrame.Data());
269 name =
"SVDTRK_Cluster6SampleTimeV3";
270 title = Form(
"SVD V-Cluster-on-Track Time %s for layer 3 sensors for 6 samples", refFrame.Data());
277 name =
"SVDTRK_ClusterTimeU456";
278 title = Form(
"SVD U-Cluster-on-Track Time %s for layers 4,5,6 sensors", refFrame.Data());
279 m_clsTrkTimeU456 =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
283 name =
"SVDTRK_ClusterTimeV456";
284 title = Form(
"SVD V-Cluster-on-Track Time %s for layers 4,5,6 sensors", refFrame.Data());
285 m_clsTrkTimeV456 =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
291 name =
"SVDTRK_Cluster3SampleTimeU456";
292 title = Form(
"SVD U-Cluster-on-Track Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
297 name =
"SVDTRK_Cluster3SampleTimeV456";
298 title = Form(
"SVD V-Cluster-on-Track Time %s for layers 4,5,6 sensors for 3 samples", refFrame.Data());
304 name =
"SVDTRK_Cluster6SampleTimeU456";
305 title = Form(
"SVD U-Cluster-on-Track Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
310 name =
"SVDTRK_Cluster6SampleTimeV456";
311 title = Form(
"SVD V-Cluster-on-Track Time %s for layers 4,5,6 sensors for 6 samples", refFrame.Data());
321 name =
"SVDTRK_ClusterTimeUvsEventT0";
322 title = Form(
"SVD U-Cluster-on-Track Time vs EventT0 %s for layer 3 sensors", refFrame.Data());
323 m_clsTrkTimeUEvtT0 =
new TH2F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax, 100, -50, 50);
327 name =
"SVDTRK_ClusterTimeVvsEventT0";
328 title = Form(
"SVD V-Cluster-on-Track Time vs EventT0 %s for layer 3 sensors", refFrame.Data());
329 m_clsTrkTimeVEvtT0 =
new TH2F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax, 100, -50, 50);
337 name =
"SVDTRK_StripMaxBinUAll";
338 title =
"SVD U-Strip-on-Track MaxBin for all sensors";
339 m_stripMaxBinUAll =
new TH1F(name.Data(), title.Data(), MaxBinBins, 0, MaxBinMax);
343 name =
"SVDTRK_StripMaxBinVAll";
344 title =
"SVD V-Strip-on-Track MaxBin for all sensors";
345 m_stripMaxBinVAll =
new TH1F(name.Data(), title.Data(), MaxBinBins, 0, MaxBinMax);
357 replace(sensorDescr.begin(), sensorDescr.end(),
'.',
'_');
362 name = str(format(
"SVDTRK_%1%_ClusterChargeU") % sensorDescr);
363 title = str(format(
"SVD Sensor %1% U-Cluster-on-Track Charge") % sensorDescr);
364 m_clstrkChargeU[i] =
new TH1F(name.Data(), title.Data(), ChargeBins, 0, ChargeMax);
368 name = str(format(
"SVDTRK_%1%_ClusterChargeV") % sensorDescr);
369 title = str(format(
"SVD Sensor %1% V-Cluster-on-Track Charge") % sensorDescr);
370 m_clstrkChargeV[i] =
new TH1F(name.Data(), title.Data(), ChargeBins, 0, ChargeMax);
377 name = str(format(
"SVDTRK_%1%_ClusterSNRU") % sensorDescr);
378 title = str(format(
"SVD Sensor %1% U-Cluster-on-Track SNR") % sensorDescr);
379 m_clstrkSNRU[i] =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
383 name = str(format(
"SVDTRK_%1%_ClusterSNRV") % sensorDescr);
384 title = str(format(
"SVD Sensor %1% V-Cluster-on-Track SNR") % sensorDescr);
385 m_clstrkSNRV[i] =
new TH1F(name.Data(), title.Data(), SNRBins, 0, SNRMax);
392 name = str(format(
"SVDTRK_%1%_ClusterTimeU") % sensorDescr);
393 title = Form(
"SVD Sensor %s U-Cluster-on-Track Time %s", sensorDescr.c_str(), refFrame.Data());
394 m_clstrkTimeU[i] =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
398 name = str(format(
"SVDTRK_%1%_ClusterTimeV") % sensorDescr);
399 title = Form(
"SVD Sensor %s V-Cluster-on-Track Time %s", sensorDescr.c_str(), refFrame.Data());
400 m_clstrkTimeV[i] =
new TH1F(name.Data(), title.Data(), TimeBins, TimeMin, TimeMax);
457 B2WARNING(
"Missing Tracks StoreArray. Skipping SVDDQMClustersOnTrack");
476 double eventT0 = -1000;
490 if (!eventAccepted)
return;
494 if (gTools->getNumberOfSVDLayers() == 0)
return;
500 if (not tfr)
continue;
503 if (not recoTrack)
continue;
507 int iLayer = svdCluster.getSensorID().getLayerNumber();
508 int iLadder = svdCluster.getSensorID().getLadderNumber();
509 int iSensor = svdCluster.getSensorID().getSensorNumber();
512 string sensorId = str(format(
"%1%.%2%.%3%") % iLayer % iLadder % iSensor);
518 if (svdCluster.isUCluster()) {
531 std::pair<int, int> p(iLayer, iSensor);
537 float time = svdCluster.getClsTime();
539 time = time -
m_svdEventInfo->getSVD2FTSWTimeShift(svdCluster.getFirstFrame());
541 if (svdCluster.isUCluster()) {