82 VxdID sensorID(iLayer, iLadder, iSensor);
83 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
87 m_fired.emplace_back(str(format(
"DQMER_PXD_%1%_Fired") % sensorDescr));
92 m_clusters.emplace_back(str(format(
"DQMER_PXD_%1%_Clusters") % sensorDescr));
97 m_startRow.emplace_back(str(format(
"DQMER_PXD_%1%_StartRow") % sensorDescr));
102 m_chargStartRow.emplace_back(str(format(
"DQMER_PXD_%1%_AverageSeedByStartRow") % sensorDescr));
106 m_startRowCount.emplace_back(str(format(
"DQMER_PXD_%1%_SeedCountsByStartRow") % sensorDescr));
111 m_clusterCharge.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterCharge") % sensorDescr));
116 m_pixelSignal.emplace_back(str(format(
"DQMER_PXD_%1%_PixelSignal") % sensorDescr));
121 m_clusterSizeU.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeU") % sensorDescr));
126 m_clusterSizeV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeV") % sensorDescr));
131 m_clusterSizeUV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeUV") % sensorDescr));
141 m_fFiredFlag =
new TH1I(
"DQMER_PXD_FiredFlag",
"DQM ER PXD Fired Flag",
145 m_fClustersFlag =
new TH1I(
"DQMER_PXD_ClustersFlag",
"DQM ER PXD Clusters Flag",
149 m_fStartRowFlag =
new TH1I(
"DQMER_PXD_StartRowFlag",
"DQM ER PXD Start Row Flag",
153 m_fChargStartRowFlag =
new TH1I(
"DQMER_PXD_ChargStartRowFlag",
"DQM ER PXD Charg Start Row Flag",
169 m_fClusterChargeFlag =
new TH1I(
"DQMER_PXD_ClusterChargeFlag",
"DQM ER PXD Cluster Charge Flag",
173 m_fPixelSignalFlag =
new TH1I(
"DQMER_PXD_PixelSignalFlag",
"DQM ER PXD Pixel Signal Flag",
177 m_fClusterSizeUFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUFlag",
"DQM ER PXD Cluster Size U Flag",
181 m_fClusterSizeVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeVFlag",
"DQM ER PXD Cluster Size V Flag",
185 m_fClusterSizeUVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUVFlag",
"DQM ER PXD Cluster Size UV Flag",
195 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
198 m_fFiredFlag->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
311 const std::string& name_refhist, TH1I* flaghist)
314 float WarningLevel = 6.0;
315 float ErrorLevel = 10.0;
317 TH1* hist =
nullptr, *refhist =
nullptr;
320 if (!hist)
return -1;
323 if (!refhist)
return -1;
327 auto temp = std::unique_ptr<TH1F>(
new TH1F(
"temp",
"temp", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
328 hist->GetXaxis()->GetXmax()));
332 for (
int j = 0; j < hist->GetNbinsX(); j++) {
333 double val = hist->GetBinContent(j + 1);
336 temp->SetBinContent(j + 1, val);
337 flagInt += temp->GetBinContent(j + 1);
338 flagrInt += refhist->GetBinContent(j + 1);
342 flaghist->SetBinContent(bin + 1, -1);
345 double flag = temp->GetMean();
346 double flagErr = temp->GetMeanError();
347 double flagRMS = temp->GetRMS();
348 double flagRMSErr = temp->GetRMSError();
349 double flagr = refhist->GetMean();
350 double flagrErr = refhist->GetMeanError();
351 double flagrRMS = refhist->GetRMS();
352 double flagrRMSErr = refhist->GetRMSError();
353 TString strDebugInfo = Form(
"Conditions for Flag--->\n source %f %f+-%f %f+-%f\n referen %f %f+-%f %f+-%f\n",
354 flagInt, flag, flagErr, flagRMS, flagRMSErr,
355 flagrInt, flagr, flagrErr, flagrRMS, flagrRMSErr
357 B2DEBUG(130, strDebugInfo.Data());
359 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
360 (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) ||
361 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
363 flaghist->SetBinContent(bin + 1, 2);
364 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
365 (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) ||
366 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
368 flaghist->SetBinContent(bin + 1, 1);
370 flaghist->SetBinContent(bin + 1, 0);
373 }
else if (Type == 2) {
374 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
375 flaghist->SetBinContent(bin + 1, 2);
376 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
377 flaghist->SetBinContent(bin + 1, 1);
379 flaghist->SetBinContent(bin + 1, 0);
382 }
else if (Type == 3) {
383 if (fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) {
384 flaghist->SetBinContent(bin + 1, 2);
385 }
else if (fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) {
386 flaghist->SetBinContent(bin + 1, 1);
388 flaghist->SetBinContent(bin + 1, 0);
391 }
else if (Type == 4) {
392 if (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) {
393 flaghist->SetBinContent(bin + 1, 2);
394 }
else if (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) {
395 flaghist->SetBinContent(bin + 1, 1);
397 flaghist->SetBinContent(bin + 1, 0);
400 }
else if (Type == 5) {
401 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
402 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
404 flaghist->SetBinContent(bin + 1, 2);
405 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
406 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
408 flaghist->SetBinContent(bin + 1, 1);
410 flaghist->SetBinContent(bin + 1, 0);
413 }
else if (Type == 9) {
414 flagInt = temp->GetBinContent(bin + 1);
415 flagrInt = refhist->GetBinContent(bin + 1);
416 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
417 flaghist->SetBinContent(bin + 1, 2);
418 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
419 flaghist->SetBinContent(bin + 1, 1);
421 flaghist->SetBinContent(bin + 1, 0);
424 }
else if (Type == 10) {
425 float flag2 = refhist->Chi2Test(temp.get());
426 flaghist->SetBinContent(bin + 1, 0);
428 flaghist->SetBinContent(bin + 1, 2);
430 flaghist->SetBinContent(bin + 1, 1);
432 }
else if (Type == 100) {
433 flaghist->SetBinContent(bin + 1, 0);
436 flaghist->SetBinContent(bin + 1, -3);
439 strDebugInfo = Form(
"SetFlag---> %f, type %i\n", flaghist->GetBinContent(bin + 1), Type);
440 B2DEBUG(130, strDebugInfo.Data());