75 VxdID sensorID(iLayer, iLadder, iSensor);
76 string sensorDescr = std::format(
"{0}_{1}_{2}", iLayer, iLadder, iSensor);
80 m_fired.emplace_back(std::format(
"DQMER_PXD_{0}_Fired", sensorDescr));
85 m_clusters.emplace_back(std::format(
"DQMER_PXD_{0}_Clusters", sensorDescr));
90 m_startRow.emplace_back(std::format(
"DQMER_PXD_{0}_StartRow", sensorDescr));
95 m_chargStartRow.emplace_back(std::format(
"DQMER_PXD_{0}_AverageSeedByStartRow", sensorDescr));
99 m_startRowCount.emplace_back(std::format(
"DQMER_PXD_{0}_SeedCountsByStartRow", sensorDescr));
104 m_clusterCharge.emplace_back(std::format(
"DQMER_PXD_{0}_ClusterCharge", sensorDescr));
109 m_pixelSignal.emplace_back(std::format(
"DQMER_PXD_{0}_PixelSignal", sensorDescr));
114 m_clusterSizeU.emplace_back(std::format(
"DQMER_PXD_{0}_ClusterSizeU", sensorDescr));
119 m_clusterSizeV.emplace_back(std::format(
"DQMER_PXD_{0}_ClusterSizeV", sensorDescr));
124 m_clusterSizeUV.emplace_back(std::format(
"DQMER_PXD_{0}_ClusterSizeUV", sensorDescr));
134 m_fFiredFlag =
new TH1I(
"DQMER_PXD_FiredFlag",
"DQM ER PXD Fired Flag",
138 m_fClustersFlag =
new TH1I(
"DQMER_PXD_ClustersFlag",
"DQM ER PXD Clusters Flag",
142 m_fStartRowFlag =
new TH1I(
"DQMER_PXD_StartRowFlag",
"DQM ER PXD Start Row Flag",
146 m_fChargStartRowFlag =
new TH1I(
"DQMER_PXD_ChargStartRowFlag",
"DQM ER PXD Charg Start Row Flag",
162 m_fClusterChargeFlag =
new TH1I(
"DQMER_PXD_ClusterChargeFlag",
"DQM ER PXD Cluster Charge Flag",
166 m_fPixelSignalFlag =
new TH1I(
"DQMER_PXD_PixelSignalFlag",
"DQM ER PXD Pixel Signal Flag",
170 m_fClusterSizeUFlag =
new TH1I(
"DQMER_PXD_ClusterSizeUFlag",
"DQM ER PXD Cluster Size U Flag",
174 m_fClusterSizeVFlag =
new TH1I(
"DQMER_PXD_ClusterSizeVFlag",
"DQM ER PXD Cluster Size V Flag",
178 m_fClusterSizeUVFlag =
new TH1I(
"DQMER_PXD_ClusterSizeUVFlag",
"DQM ER PXD Cluster Size UV Flag",
188 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
191 m_fFiredFlag->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
304 const std::string& name_refhist, TH1I* flaghist)
307 float WarningLevel = 6.0;
308 float ErrorLevel = 10.0;
311 if (!hist)
return -1;
313 if (!refhist)
return -1;
317 auto temp = std::unique_ptr<TH1F>(
new TH1F(
"temp",
"temp", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
318 hist->GetXaxis()->GetXmax()));
322 for (
int j = 0; j < hist->GetNbinsX(); j++) {
323 double val = hist->GetBinContent(j + 1);
326 temp->SetBinContent(j + 1, val);
327 flagInt += temp->GetBinContent(j + 1);
328 flagrInt += refhist->GetBinContent(j + 1);
332 flaghist->SetBinContent(bin + 1, -1);
335 double flag = temp->GetMean();
336 double flagErr = temp->GetMeanError();
337 double flagRMS = temp->GetRMS();
338 double flagRMSErr = temp->GetRMSError();
339 double flagr = refhist->GetMean();
340 double flagrErr = refhist->GetMeanError();
341 double flagrRMS = refhist->GetRMS();
342 double flagrRMSErr = refhist->GetRMSError();
343 TString strDebugInfo = Form(
"Conditions for Flag--->\n source %f %f+-%f %f+-%f\n referen %f %f+-%f %f+-%f\n",
344 flagInt, flag, flagErr, flagRMS, flagRMSErr,
345 flagrInt, flagr, flagrErr, flagrRMS, flagrRMSErr
347 B2DEBUG(130, strDebugInfo.Data());
349 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
350 (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) ||
351 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
353 flaghist->SetBinContent(bin + 1, 2);
354 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
355 (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) ||
356 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
358 flaghist->SetBinContent(bin + 1, 1);
360 flaghist->SetBinContent(bin + 1, 0);
363 }
else if (Type == 2) {
364 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
365 flaghist->SetBinContent(bin + 1, 2);
366 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
367 flaghist->SetBinContent(bin + 1, 1);
369 flaghist->SetBinContent(bin + 1, 0);
372 }
else if (Type == 3) {
373 if (fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) {
374 flaghist->SetBinContent(bin + 1, 2);
375 }
else if (fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) {
376 flaghist->SetBinContent(bin + 1, 1);
378 flaghist->SetBinContent(bin + 1, 0);
381 }
else if (Type == 4) {
382 if (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) {
383 flaghist->SetBinContent(bin + 1, 2);
384 }
else if (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) {
385 flaghist->SetBinContent(bin + 1, 1);
387 flaghist->SetBinContent(bin + 1, 0);
390 }
else if (Type == 5) {
391 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
392 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
394 flaghist->SetBinContent(bin + 1, 2);
395 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
396 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
398 flaghist->SetBinContent(bin + 1, 1);
400 flaghist->SetBinContent(bin + 1, 0);
403 }
else if (Type == 9) {
404 flagInt = temp->GetBinContent(bin + 1);
405 flagrInt = refhist->GetBinContent(bin + 1);
406 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
407 flaghist->SetBinContent(bin + 1, 2);
408 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
409 flaghist->SetBinContent(bin + 1, 1);
411 flaghist->SetBinContent(bin + 1, 0);
414 }
else if (Type == 10) {
415 float flag2 = refhist->Chi2Test(temp.get());
416 flaghist->SetBinContent(bin + 1, 0);
418 flaghist->SetBinContent(bin + 1, 2);
420 flaghist->SetBinContent(bin + 1, 1);
422 }
else if (Type == 100) {
423 flaghist->SetBinContent(bin + 1, 0);
426 flaghist->SetBinContent(bin + 1, -3);
429 strDebugInfo = Form(
"SetFlag---> %f, type %i\n", flaghist->GetBinContent(bin + 1), Type);
430 B2DEBUG(130, strDebugInfo.Data());