87 VxdID sensorID(iLayer, iLadder, iSensor);
89 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
93 m_fired.emplace_back(str(format(
"DQMER_PXD_%1%_Fired") % sensorDescr));
98 m_clusters.emplace_back(str(format(
"DQMER_PXD_%1%_Clusters") % sensorDescr));
103 m_startRow.emplace_back(str(format(
"DQMER_PXD_%1%_StartRow") % sensorDescr));
108 m_chargStartRow.emplace_back(str(format(
"DQMER_PXD_%1%_AverageSeedByStartRow") % sensorDescr));
112 m_startRowCount.emplace_back(str(format(
"DQMER_PXD_%1%_SeedCountsByStartRow") % sensorDescr));
117 m_clusterCharge.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterCharge") % sensorDescr));
122 m_pixelSignal.emplace_back(str(format(
"DQMER_PXD_%1%_PixelSignal") % sensorDescr));
127 m_clusterSizeU.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeU") % sensorDescr));
132 m_clusterSizeV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeV") % sensorDescr));
137 m_clusterSizeUV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeUV") % sensorDescr));
147 m_fFiredFlag =
new TH1I(
"DQMER_PXD_FiredFlag",
"DQM ER PXD Fired Flag",
151 m_fClustersFlag =
new TH1I(
"DQMER_PXD_ClustersFlag",
"DQM ER PXD Clusters Flag",
155 m_fStartRowFlag =
new TH1I(
"DQMER_PXD_StartRowFlag",
"DQM ER PXD Start Row Flag",
159 m_fChargStartRowFlag =
new TH1I(
"DQMER_PXD_ChargStartRowFlag",
"DQM ER PXD Charg Start Row Flag",
175 m_fClusterChargeFlag =
new TH1I(
"DQMER_PXD_ClusterChargeFlag",
"DQM ER PXD Cluster Charge Flag",
179 m_fPixelSignalFlag =
new TH1I(
"DQMER_PXD_PixelSignalFlag",
"DQM ER PXD Pixel Signal Flag",
183 m_fClusterSizeUFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUFlag",
"DQM ER PXD Cluster Size U Flag",
187 m_fClusterSizeVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeVFlag",
"DQM ER PXD Cluster Size V Flag",
191 m_fClusterSizeUVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUVFlag",
"DQM ER PXD Cluster Size UV Flag",
201 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
204 m_fFiredFlag->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
317 const std::string& name_refhist, TH1I* flaghist)
320 float WarningLevel = 6.0;
321 float ErrorLevel = 10.0;
323 TH1* hist =
nullptr, *refhist =
nullptr;
326 if (!hist)
return -1;
329 if (!refhist)
return -1;
333 auto temp = std::unique_ptr<TH1F>(
new TH1F(
"temp",
"temp", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
334 hist->GetXaxis()->GetXmax()));
338 for (
int j = 0; j < hist->GetNbinsX(); j++) {
339 double val = hist->GetBinContent(j + 1);
342 temp->SetBinContent(j + 1, val);
343 flagInt += temp->GetBinContent(j + 1);
344 flagrInt += refhist->GetBinContent(j + 1);
348 flaghist->SetBinContent(bin + 1, -1);
351 double flag = temp->GetMean();
352 double flagErr = temp->GetMeanError();
353 double flagRMS = temp->GetRMS();
354 double flagRMSErr = temp->GetRMSError();
355 double flagr = refhist->GetMean();
356 double flagrErr = refhist->GetMeanError();
357 double flagrRMS = refhist->GetRMS();
358 double flagrRMSErr = refhist->GetRMSError();
359 TString strDebugInfo = Form(
"Conditions for Flag--->\n source %f %f+-%f %f+-%f\n referen %f %f+-%f %f+-%f\n",
360 flagInt, flag, flagErr, flagRMS, flagRMSErr,
361 flagrInt, flagr, flagrErr, flagrRMS, flagrRMSErr
363 B2DEBUG(130, strDebugInfo.Data());
365 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
366 (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) ||
367 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
369 flaghist->SetBinContent(bin + 1, 2);
370 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
371 (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) ||
372 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
374 flaghist->SetBinContent(bin + 1, 1);
376 flaghist->SetBinContent(bin + 1, 0);
379 }
else if (Type == 2) {
380 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
381 flaghist->SetBinContent(bin + 1, 2);
382 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
383 flaghist->SetBinContent(bin + 1, 1);
385 flaghist->SetBinContent(bin + 1, 0);
388 }
else if (Type == 3) {
389 if (fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) {
390 flaghist->SetBinContent(bin + 1, 2);
391 }
else if (fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) {
392 flaghist->SetBinContent(bin + 1, 1);
394 flaghist->SetBinContent(bin + 1, 0);
397 }
else if (Type == 4) {
398 if (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) {
399 flaghist->SetBinContent(bin + 1, 2);
400 }
else if (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) {
401 flaghist->SetBinContent(bin + 1, 1);
403 flaghist->SetBinContent(bin + 1, 0);
406 }
else if (Type == 5) {
407 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
408 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
410 flaghist->SetBinContent(bin + 1, 2);
411 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
412 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
414 flaghist->SetBinContent(bin + 1, 1);
416 flaghist->SetBinContent(bin + 1, 0);
419 }
else if (Type == 9) {
420 flagInt = temp->GetBinContent(bin + 1);
421 flagrInt = refhist->GetBinContent(bin + 1);
422 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
423 flaghist->SetBinContent(bin + 1, 2);
424 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
425 flaghist->SetBinContent(bin + 1, 1);
427 flaghist->SetBinContent(bin + 1, 0);
430 }
else if (Type == 10) {
431 float flag2 = refhist->Chi2Test(temp.get());
432 flaghist->SetBinContent(bin + 1, 0);
434 flaghist->SetBinContent(bin + 1, 2);
436 flaghist->SetBinContent(bin + 1, 1);
438 }
else if (Type == 100) {
439 flaghist->SetBinContent(bin + 1, 0);
442 flaghist->SetBinContent(bin + 1, -3);
445 strDebugInfo = Form(
"SetFlag---> %f, type %i\n", flaghist->GetBinContent(bin + 1), Type);
446 B2DEBUG(130, strDebugInfo.Data());