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