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