10{
12 {
13 return 0;
14 }
15
17 output.resize(4, output[0]);
19 return Form(n,output[0].GetName());
20 };
22 return Form(t,output[0].GetTitle());
23 };
24 output[1].SetNameTitle(
name(
"leffpixels_found_%s"),
title(
"low efficiency pixels, found, %s"));
25 output[2].SetNameTitle(
name(
"noisypixels_eff_%s"),
title(
"noisy pixels, efficiency, %s"));
26 output[3].SetNameTitle(
name(
"leffpixels_eff_%s"),
title(
"low efficiency pixels, efficiency, %s"));
27 output[0].SetNameTitle(
name(
"noisypixels_found_%s"),
title(
"noisy pixels, found, %s"));
28
33
34
35 if(
input->GetMaximum()<0.5)
return 0;
36
37 std::vector<TH2F> vec_found_leff{},vec_found_noisy{},vec_eff_leff{},vec_eff_noisy{};
38
40 {
41 TH2F tmp_eff_noisy, tmp_eff_leff;
42 TH2F tmp_found_leff, tmp_found_noisy;
43
44 if(method!="FIT")
45 {
46
48
49
50 std::tie(tmp_found_leff,tmp_found_noisy,tmp_eff_leff, tmp_eff_noisy) =
findLEffAndNoisyPixels(input, tmp_inact_pix_around, method);
51
52
54 }
55 else
56 {
57
58
59 tmp_eff_noisy=
TH2F(*input);
60 tmp_eff_noisy.SetName("tmp_eff_noisy");
61 tmp_eff_noisy.Reset();
62 tmp_eff_leff=
TH2F(*input);
63 tmp_eff_leff.SetName("tmp_eff_leff");
64 tmp_eff_leff.Reset();
65 tmp_found_noisy=
TH2F(*input);
66 tmp_found_noisy.SetName("tmp_found_noisy");
67 tmp_found_noisy.Reset();
68 tmp_found_leff=
TH2F(*input);
69 tmp_found_leff.SetName("tmp_found_leff");
70 tmp_found_leff.Reset();
71
73
74 const double Threshold_LEFF=5.;
76
77 for(
int col_ID=1; col_ID<=
input->GetNbinsY(); col_ID++)
78 {
79 for(
int row_ID=1; row_ID<=
input->GetNbinsX(); row_ID++)
80 {
81 double ratio_leff=0, ratio_noisy=0;
82 double gauss_helper_12 = (col_ID-
p[1][row_ID])/p[2][row_ID];
83 double gauss_helper_45 = (col_ID-
p[4][row_ID])/p[5][row_ID];
84 double fit =
p[0][row_ID]*
exp(-0.5*gauss_helper_12*gauss_helper_12)
85 +
p[3][row_ID]*
exp(-0.5*gauss_helper_45*gauss_helper_45) +
p[6][row_ID];
86 double sigma=std::sqrt(fit);
88
89 double bin_content=
input->GetBinContent(row_ID,col_ID);
90
91 if(fit>=bin_content) ratio_leff = std::abs(fit-bin_content)/
sigma;
92 else ratio_noisy = std::abs(fit-bin_content)/
sigma;
93
94 if(bin_content!=0)
95 {
96 if( ratio_leff > Threshold_LEFF) tmp_found_leff.SetBinContent(row_ID,col_ID,1);
97 if( ratio_noisy > Threshold_NOISY) tmp_found_noisy.SetBinContent(row_ID,col_ID,1);
98 }
99 tmp_eff_leff.SetBinContent(row_ID,col_ID,100.*ratio_leff);
100 tmp_eff_noisy.SetBinContent(row_ID,col_ID,100.*ratio_noisy);
101 }
102 }
103 }
104
105
106 vec_found_leff.push_back(tmp_found_leff);
107 vec_found_noisy.push_back(tmp_found_noisy);
108 vec_eff_leff.push_back(tmp_eff_leff);
109 vec_eff_noisy.push_back(tmp_eff_noisy);
110 }
111
112
114 {
115 for(
int col_ID=1; col_ID<=
input->GetNbinsY(); col_ID++)
116 {
117 for(
int row_ID=1; row_ID<=
input->GetNbinsX(); row_ID++)
118 {
119 noisypixels_found_output.Fill(row_ID,col_ID, vec_found_noisy[m].GetBinContent(row_ID,col_ID));
120 leffpixels_found_output.Fill(row_ID,col_ID, vec_found_leff[m].GetBinContent(row_ID,col_ID));
121
122 if(m==0)
123 {
124 noisypixels_eff_output.SetBinContent(row_ID,col_ID, vec_eff_noisy[m].GetBinContent(row_ID,col_ID));
125 leffpixels_eff_output.SetBinContent(row_ID,col_ID, vec_eff_leff[m].GetBinContent(row_ID,col_ID));
126 }
127 else
128 {
129 if(noisypixels_eff_output.GetBinContent(row_ID,col_ID)<vec_eff_noisy[m].GetBinContent(row_ID,col_ID))
130 {
131 noisypixels_eff_output.SetBinContent(row_ID,col_ID, vec_eff_noisy[m].GetBinContent(row_ID,col_ID));
132 }
133 if(leffpixels_eff_output.GetBinContent(row_ID,col_ID)>vec_eff_leff[m].GetBinContent(row_ID,col_ID))
134 {
135 leffpixels_eff_output.SetBinContent(row_ID,col_ID, vec_eff_leff[m].GetBinContent(row_ID,col_ID));
136 }
137 }
138 }
139 }
140 }
141
142
143 for(
int col_ID=1; col_ID<=
input->GetNbinsY(); col_ID++)
144 {
145 for(
int row_ID=1; row_ID<=
input->GetNbinsX(); row_ID++)
146 {
147 if(noisypixels_found_output.GetBinContent(row_ID,col_ID)==
m_methods.size()) noisypixels_found_output.SetBinContent(row_ID,col_ID,1);
148 else noisypixels_found_output.SetBinContent(row_ID,col_ID,0);
149
150 if(leffpixels_found_output.GetBinContent(row_ID,col_ID)==
m_methods.size()) leffpixels_found_output.SetBinContent(row_ID,col_ID,1);
151 else leffpixels_found_output.SetBinContent(row_ID,col_ID,0);
152 }
153 }
154
155 return 0;
156}