25 float WarningLevel = 6.0;
26 float ErrorLevel = 10.0;
27 auto temp = std::unique_ptr<TH1F>(
new TH1F(
"temp",
"temp", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
28 hist->GetXaxis()->GetXmax()));
32 for (
int j = 0; j < hist->GetNbinsX(); j++) {
33 double val = hist->GetBinContent(j + 1);
36 temp->SetBinContent(j + 1, val);
37 flagInt += temp->GetBinContent(j + 1);
38 flagrInt += refhist->GetBinContent(j + 1);
42 flaghist->SetBinContent(bin + 1, -1);
45 double flag = temp->GetMean();
46 double flagErr = temp->GetMeanError();
47 double flagRMS = temp->GetRMS();
48 double flagRMSErr = temp->GetRMSError();
49 double flagr = refhist->GetMean();
50 double flagrErr = refhist->GetMeanError();
51 double flagrRMS = refhist->GetRMS();
52 double flagrRMSErr = refhist->GetRMSError();
53 TString strDebugInfo = Form(
"Conditions for Flag--->\n source %f %f+-%f %f+-%f\n referen %f %f+-%f %f+-%f\n",
54 flagInt, flag, flagErr, flagRMS, flagRMSErr,
55 flagrInt, flagr, flagrErr, flagrRMS, flagrRMSErr
57 B2DEBUG(130, strDebugInfo.Data());
59 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
60 (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) ||
61 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
63 flaghist->SetBinContent(bin + 1, 2);
64 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
65 (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) ||
66 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
68 flaghist->SetBinContent(bin + 1, 1);
70 flaghist->SetBinContent(bin + 1, 0);
73 }
else if (Type == 2) {
74 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
75 flaghist->SetBinContent(bin + 1, 2);
76 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
77 flaghist->SetBinContent(bin + 1, 1);
79 flaghist->SetBinContent(bin + 1, 0);
82 }
else if (Type == 3) {
83 if (fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) {
84 flaghist->SetBinContent(bin + 1, 2);
85 }
else if (fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) {
86 flaghist->SetBinContent(bin + 1, 1);
88 flaghist->SetBinContent(bin + 1, 0);
91 }
else if (Type == 4) {
92 if (fabs(flagRMS - flagrRMS) > ErrorLevel * (flagRMSErr + flagrRMSErr)) {
93 flaghist->SetBinContent(bin + 1, 2);
94 }
else if (fabs(flagRMS - flagrRMS) > WarningLevel * (flagRMSErr + flagrRMSErr)) {
95 flaghist->SetBinContent(bin + 1, 1);
97 flaghist->SetBinContent(bin + 1, 0);
100 }
else if (Type == 5) {
101 if ((fabs(flag - flagr) > ErrorLevel * (flagErr + flagrErr)) ||
102 (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
104 flaghist->SetBinContent(bin + 1, 2);
105 }
else if ((fabs(flag - flagr) > WarningLevel * (flagErr + flagrErr)) ||
106 (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt)))
108 flaghist->SetBinContent(bin + 1, 1);
110 flaghist->SetBinContent(bin + 1, 0);
113 }
else if (Type == 9) {
114 flagInt = temp->GetBinContent(bin + 1);
115 flagrInt = refhist->GetBinContent(bin + 1);
116 if (fabs(flagInt - flagrInt) > ErrorLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
117 flaghist->SetBinContent(bin + 1, 2);
118 }
else if (fabs(flagInt - flagrInt) > WarningLevel * (
sqrt(flagInt) +
sqrt(flagrInt))) {
119 flaghist->SetBinContent(bin + 1, 1);
121 flaghist->SetBinContent(bin + 1, 0);
124 }
else if (Type == 10) {
125 float flag2 = refhist->Chi2Test(temp.get());
126 flaghist->SetBinContent(bin + 1, 0);
128 flaghist->SetBinContent(bin + 1, 2);
130 flaghist->SetBinContent(bin + 1, 1);
132 }
else if (Type == 100) {
133 flaghist->SetBinContent(bin + 1, 0);
136 flaghist->SetBinContent(bin + 1, -3);
139 strDebugInfo = Form(
"SetFlag---> %f, type %i\n", flaghist->GetBinContent(bin + 1), Type);
140 B2DEBUG(130, strDebugInfo.Data());
148 auto histF = std::unique_ptr<TH1F>(
new TH1F(
"histF",
"histF", hist->GetNbinsX(), hist->GetXaxis()->GetXmin(),
149 hist->GetXaxis()->GetXmax()));
150 auto refhistF = std::unique_ptr<TH1F>(
new TH1F(
"refhistF",
"refhistF", refhist->GetNbinsX(), refhist->GetXaxis()->GetXmin(),
151 refhist->GetXaxis()->GetXmax()));
152 for (
int j = 0; j < hist->GetNbinsX(); j++) {
153 histF->SetBinContent(j + 1, hist->GetBinContent(j + 1));
154 refhistF->SetBinContent(j + 1, refhist->GetBinContent(j + 1));
156 int ret =
SetFlag(Type, bin, pars, ratio, histF.get(), refhistF.get(), flaghist);