87 VxdID sensorID(iLayer, iLadder, iSensor);
88 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
92 m_fired.emplace_back(str(format(
"DQMER_PXD_%1%_Fired") % sensorDescr));
97 m_clusters.emplace_back(str(format(
"DQMER_PXD_%1%_Clusters") % sensorDescr));
102 m_startRow.emplace_back(str(format(
"DQMER_PXD_%1%_StartRow") % sensorDescr));
107 m_chargStartRow.emplace_back(str(format(
"DQMER_PXD_%1%_AverageSeedByStartRow") % sensorDescr));
111 m_startRowCount.emplace_back(str(format(
"DQMER_PXD_%1%_SeedCountsByStartRow") % sensorDescr));
116 m_clusterCharge.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterCharge") % sensorDescr));
121 m_pixelSignal.emplace_back(str(format(
"DQMER_PXD_%1%_PixelSignal") % sensorDescr));
126 m_clusterSizeU.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeU") % sensorDescr));
131 m_clusterSizeV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeV") % sensorDescr));
136 m_clusterSizeUV.emplace_back(str(format(
"DQMER_PXD_%1%_ClusterSizeUV") % sensorDescr));
146 m_fFiredFlag =
new TH1I(
"DQMER_PXD_FiredFlag",
"DQM ER PXD Fired Flag",
150 m_fClustersFlag =
new TH1I(
"DQMER_PXD_ClustersFlag",
"DQM ER PXD Clusters Flag",
154 m_fStartRowFlag =
new TH1I(
"DQMER_PXD_StartRowFlag",
"DQM ER PXD Start Row Flag",
158 m_fChargStartRowFlag =
new TH1I(
"DQMER_PXD_ChargStartRowFlag",
"DQM ER PXD Charg Start Row Flag",
174 m_fClusterChargeFlag =
new TH1I(
"DQMER_PXD_ClusterChargeFlag",
"DQM ER PXD Cluster Charge Flag",
178 m_fPixelSignalFlag =
new TH1I(
"DQMER_PXD_PixelSignalFlag",
"DQM ER PXD Pixel Signal Flag",
182 m_fClusterSizeUFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUFlag",
"DQM ER PXD Cluster Size U Flag",
186 m_fClusterSizeVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeVFlag",
"DQM ER PXD Cluster Size V Flag",
190 m_fClusterSizeUVFlag =
new TH1I(
"DQMER_PXD_ClasterSizeUVFlag",
"DQM ER PXD Cluster Size UV Flag",
200 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
203 m_fFiredFlag->GetXaxis()->SetBinLabel(i + 1, AxisTicks.Data());
316 const std::string& name_refhist, TH1I* flaghist)
319 float WarningLevel = 6.0;
320 float ErrorLevel = 10.0;
322 TH1* hist =
nullptr, *refhist =
nullptr;
325 if (!hist)
return -1;
328 if (!refhist)
return -1;
332 auto temp = std::unique_ptr<TH1F>(
new TH1F(
"temp",
"temp", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
333 hist->GetXaxis()->GetXmax()));
337 for (
int j = 0; j < hist->GetNbinsX(); j++) {
338 double val = hist->GetBinContent(j + 1);
341 temp->SetBinContent(j + 1, val);
342 flagInt += temp->GetBinContent(j + 1);
343 flagrInt += refhist->GetBinContent(j + 1);
347 flaghist->SetBinContent(bin + 1, -1);
350 double flag = temp->GetMean();
351 double flagErr = temp->GetMeanError();
352 double flagRMS = temp->GetRMS();
353 double flagRMSErr = temp->GetRMSError();
354 double flagr = refhist->GetMean();
355 double flagrErr = refhist->GetMeanError();
356 double flagrRMS = refhist->GetRMS();
357 double flagrRMSErr = refhist->GetRMSError();
358 TString strDebugInfo = Form(
"Conditions for Flag--->\n source %f %f+-%f %f+-%f\n referen %f %f+-%f %f+-%f\n",
359 flagInt, flag, flagErr, flagRMS, flagRMSErr,
360 flagrInt, flagr, flagrErr, flagrRMS, flagrRMSErr
362 B2DEBUG(130, strDebugInfo.Data());
364 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
365 (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) ||
366 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
368 flaghist->SetBinContent(bin + 1, 2);
369 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
370 (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) ||
371 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
373 flaghist->SetBinContent(bin + 1, 1);
375 flaghist->SetBinContent(bin + 1, 0);
378 }
else if (Type == 2) {
379 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
380 flaghist->SetBinContent(bin + 1, 2);
381 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
382 flaghist->SetBinContent(bin + 1, 1);
384 flaghist->SetBinContent(bin + 1, 0);
387 }
else if (Type == 3) {
388 if (fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) {
389 flaghist->SetBinContent(bin + 1, 2);
390 }
else if (fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) {
391 flaghist->SetBinContent(bin + 1, 1);
393 flaghist->SetBinContent(bin + 1, 0);
396 }
else if (Type == 4) {
397 if (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) {
398 flaghist->SetBinContent(bin + 1, 2);
399 }
else if (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) {
400 flaghist->SetBinContent(bin + 1, 1);
402 flaghist->SetBinContent(bin + 1, 0);
405 }
else if (Type == 5) {
406 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
407 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
409 flaghist->SetBinContent(bin + 1, 2);
410 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
411 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
413 flaghist->SetBinContent(bin + 1, 1);
415 flaghist->SetBinContent(bin + 1, 0);
418 }
else if (Type == 9) {
419 flagInt = temp->GetBinContent(bin + 1);
420 flagrInt = refhist->GetBinContent(bin + 1);
421 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
422 flaghist->SetBinContent(bin + 1, 2);
423 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
424 flaghist->SetBinContent(bin + 1, 1);
426 flaghist->SetBinContent(bin + 1, 0);
429 }
else if (Type == 10) {
430 float flag2 = refhist->Chi2Test(temp.get());
431 flaghist->SetBinContent(bin + 1, 0);
433 flaghist->SetBinContent(bin + 1, 2);
435 flaghist->SetBinContent(bin + 1, 1);
437 }
else if (Type == 100) {
438 flaghist->SetBinContent(bin + 1, 0);
441 flaghist->SetBinContent(bin + 1, -3);
444 strDebugInfo = Form(
"SetFlag---> %f, type %i\n", flaghist->GetBinContent(bin + 1), Type);
445 B2DEBUG(130, strDebugInfo.Data());