26 writeIfValid(
TH1F* pH) {
27 if (pH) pH->Write(
"", TObject::kOverwrite);
31 fillIfValid(
TH1F* pH,
float val) {
32 if (pH) pH->Fill(
val);
37 getBinContentIfValid(
TH1F* pH,
int binIdx) {
47 getBinErrorIfValid(
TH1F* pH,
int binIdx) {
52 if (pH)
result = pH->GetBinError(binIdx);
62 bool applyEffThreshold =
true;
63 bool EffThreshold =
false;
65 float Minimum_efficiency = 0.5;
69 TFile*
f = TFile::Open(inFilename.c_str(),
"UPDATE");
72 std::cerr <<
"MonitoringFile::RPCPostProcess(): "
73 <<
"Input file not opened \n";
76 if (
f->GetSize() < 1000.) {
77 std::cerr <<
"MonitoringFile::RPCPostProcess(): "
78 <<
"Input file empty \n";
85 TIter next_run(
f->GetListOfKeys());
87 while ((key_run =
dynamic_cast<TKey*
>(next_run())) != 0) {
88 TObject* obj_run = key_run->ReadObj();
89 TDirectory* tdir_run =
dynamic_cast<TDirectory*
>(obj_run);
91 std::string tdir_run_name(tdir_run->GetName());
92 if (tdir_run_name.find(
"run") != std::string::npos) {
93 run_dir = std::move(tdir_run_name);
96 run_number =
atoi((run_dir.substr(4, run_dir.size() - 4)).c_str());
97 std::cout <<
"run_number rpc monitoring " <<
run_number << std::endl;
99 std::string pathRawMon = run_dir +
"/Muon/MuonRawDataMonitoring/RPC/";
101 std::string pathTrackMon = run_dir +
"/Muon/MuonRawDataMonitoring/RPCStandAloneTrackMon/";
103 std::string dir_ov_raw = pathRawMon +
"Overview/";
104 std::string dir_sum_raw = pathRawMon +
"Summary/";
105 std::string dir_dqmf_raw = pathRawMon +
"Dqmf/";
107 std::string dir_sideA_track = pathTrackMon +
"RPCBA/";
108 std::string dir_sideC_track = pathTrackMon +
"RPCBC/";
109 std::string dir_glob_track = pathTrackMon +
"GLOBAL/";
110 std::string dir_sum_track = pathTrackMon +
"Summary/";
111 std::string dir_dqmf_track = pathTrackMon +
"Dqmf/";
112 std::string dir_trigger_track = pathTrackMon +
"TriggerEfficiency/";
114 double n_hit_f, n_tr_p, panel_eff, panel_err_eff;
115 double nEta,
nPhi, nEtaPhi, gapEff = 0.0, gapErrEff = 0.0;
116 double res_mean, res2_mean, res_RMS;
118 double panelCS, panelCS2, panelCS_entries, panelCS_mean, panelCS2_mean, panelCS_RMS;
119 double Time_mean, Time2_mean, Time_RMS;
120 double noiseCorr, noiseCorrErr;
121 double noiseTot, noiseTotErr;
125 std::string METracks_name = dir_trigger_track +
"hMEtracks";
126 std::string MuctpiThr0_name = dir_trigger_track +
"hRPCMuctpiThr0";
127 std::string MuctpiThr1_name = dir_trigger_track +
"hRPCMuctpiThr1";
128 std::string MuctpiThr2_name = dir_trigger_track +
"hRPCMuctpiThr2";
129 std::string MuctpiThr3_name = dir_trigger_track +
"hRPCMuctpiThr3";
130 std::string MuctpiThr4_name = dir_trigger_track +
"hRPCMuctpiThr4";
131 std::string MuctpiThr5_name = dir_trigger_track +
"hRPCMuctpiThr5";
132 std::string PadThr0_name = dir_trigger_track +
"hRPCPadThr0";
133 std::string PadThr1_name = dir_trigger_track +
"hRPCPadThr1";
134 std::string PadThr2_name = dir_trigger_track +
"hRPCPadThr2";
135 std::string PadThr3_name = dir_trigger_track +
"hRPCPadThr3";
136 std::string PadThr4_name = dir_trigger_track +
"hRPCPadThr4";
137 std::string PadThr5_name = dir_trigger_track +
"hRPCPadThr5";
138 std::string PhiEtaCoinThr0_name = dir_trigger_track +
"hRPCPhiEtaCoinThr0";
139 std::string PhiEtaCoinThr1_name = dir_trigger_track +
"hRPCPhiEtaCoinThr1";
140 std::string PhiEtaCoinThr2_name = dir_trigger_track +
"hRPCPhiEtaCoinThr2";
141 std::string PhiEtaCoinThr3_name = dir_trigger_track +
"hRPCPhiEtaCoinThr3";
142 std::string PhiEtaCoinThr4_name = dir_trigger_track +
"hRPCPhiEtaCoinThr4";
143 std::string PhiEtaCoinThr5_name = dir_trigger_track +
"hRPCPhiEtaCoinThr5";
145 std::string MuctpiThr_eff0_name = dir_trigger_track +
"hRPCMuctpiThr_eff0";
146 std::string MuctpiThr_eff1_name = dir_trigger_track +
"hRPCMuctpiThr_eff1";
147 std::string MuctpiThr_eff2_name = dir_trigger_track +
"hRPCMuctpiThr_eff2";
148 std::string MuctpiThr_eff3_name = dir_trigger_track +
"hRPCMuctpiThr_eff3";
149 std::string MuctpiThr_eff4_name = dir_trigger_track +
"hRPCMuctpiThr_eff4";
150 std::string MuctpiThr_eff5_name = dir_trigger_track +
"hRPCMuctpiThr_eff5";
151 std::string PadThr_eff0_name = dir_trigger_track +
"hRPCPadThr_eff0";
152 std::string PadThr_eff1_name = dir_trigger_track +
"hRPCPadThr_eff1";
153 std::string PadThr_eff2_name = dir_trigger_track +
"hRPCPadThr_eff2";
154 std::string PadThr_eff3_name = dir_trigger_track +
"hRPCPadThr_eff3";
155 std::string PadThr_eff4_name = dir_trigger_track +
"hRPCPadThr_eff4";
156 std::string PadThr_eff5_name = dir_trigger_track +
"hRPCPadThr_eff5";
157 std::string PhiEtaCoinThr_eff0_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff0";
158 std::string PhiEtaCoinThr_eff1_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff1";
159 std::string PhiEtaCoinThr_eff2_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff2";
160 std::string PhiEtaCoinThr_eff3_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff3";
161 std::string PhiEtaCoinThr_eff4_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff4";
162 std::string PhiEtaCoinThr_eff5_name = dir_trigger_track +
"hRPCPhiEtaCoinThr_eff5";
166 METracks_name.c_str()) &&
168 TH1I* hist_METracks = (
TH1I*) (
f->Get(METracks_name.c_str()));
169 TH1I* hist_MuctpiThr0 = (
TH1I*) (
f->Get(MuctpiThr0_name.c_str()));
170 TH1I* hist_MuctpiThr1 = (
TH1I*) (
f->Get(MuctpiThr1_name.c_str()));
171 TH1I* hist_MuctpiThr2 = (
TH1I*) (
f->Get(MuctpiThr2_name.c_str()));
172 TH1I* hist_MuctpiThr3 = (
TH1I*) (
f->Get(MuctpiThr3_name.c_str()));
173 TH1I* hist_MuctpiThr4 = (
TH1I*) (
f->Get(MuctpiThr4_name.c_str()));
174 TH1I* hist_MuctpiThr5 = (
TH1I*) (
f->Get(MuctpiThr5_name.c_str()));
175 TH1I* hist_PadThr0 = (
TH1I*) (
f->Get(PadThr0_name.c_str()));
176 TH1I* hist_PadThr1 = (
TH1I*) (
f->Get(PadThr1_name.c_str()));
177 TH1I* hist_PadThr2 = (
TH1I*) (
f->Get(PadThr2_name.c_str()));
178 TH1I* hist_PadThr3 = (
TH1I*) (
f->Get(PadThr3_name.c_str()));
179 TH1I* hist_PadThr4 = (
TH1I*) (
f->Get(PadThr4_name.c_str()));
180 TH1I* hist_PadThr5 = (
TH1I*) (
f->Get(PadThr5_name.c_str()));
181 TH1I* hist_PhiEtaCoinThr0 = (
TH1I*) (
f->Get(PhiEtaCoinThr0_name.c_str()));
182 TH1I* hist_PhiEtaCoinThr1 = (
TH1I*) (
f->Get(PhiEtaCoinThr1_name.c_str()));
183 TH1I* hist_PhiEtaCoinThr2 = (
TH1I*) (
f->Get(PhiEtaCoinThr2_name.c_str()));
184 TH1I* hist_PhiEtaCoinThr3 = (
TH1I*) (
f->Get(PhiEtaCoinThr3_name.c_str()));
185 TH1I* hist_PhiEtaCoinThr4 = (
TH1I*) (
f->Get(PhiEtaCoinThr4_name.c_str()));
186 TH1I* hist_PhiEtaCoinThr5 = (
TH1I*) (
f->Get(PhiEtaCoinThr5_name.c_str()));
187 TH1I* hist_MuctpiThr_eff0 = (
TH1I*) (
f->Get(MuctpiThr_eff0_name.c_str()));
188 TH1I* hist_MuctpiThr_eff1 = (
TH1I*) (
f->Get(MuctpiThr_eff1_name.c_str()));
189 TH1I* hist_MuctpiThr_eff2 = (
TH1I*) (
f->Get(MuctpiThr_eff2_name.c_str()));
190 TH1I* hist_MuctpiThr_eff3 = (
TH1I*) (
f->Get(MuctpiThr_eff3_name.c_str()));
191 TH1I* hist_MuctpiThr_eff4 = (
TH1I*) (
f->Get(MuctpiThr_eff4_name.c_str()));
192 TH1I* hist_MuctpiThr_eff5 = (
TH1I*) (
f->Get(MuctpiThr_eff5_name.c_str()));
193 TH1I* hist_PadThr_eff0 = (
TH1I*) (
f->Get(PadThr_eff0_name.c_str()));
194 TH1I* hist_PadThr_eff1 = (
TH1I*) (
f->Get(PadThr_eff1_name.c_str()));
195 TH1I* hist_PadThr_eff2 = (
TH1I*) (
f->Get(PadThr_eff2_name.c_str()));
196 TH1I* hist_PadThr_eff3 = (
TH1I*) (
f->Get(PadThr_eff3_name.c_str()));
197 TH1I* hist_PadThr_eff4 = (
TH1I*) (
f->Get(PadThr_eff4_name.c_str()));
198 TH1I* hist_PadThr_eff5 = (
TH1I*) (
f->Get(PadThr_eff5_name.c_str()));
199 TH1I* hist_PhiEtaCoinThr_eff0 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff0_name.c_str()));
200 TH1I* hist_PhiEtaCoinThr_eff1 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff1_name.c_str()));
201 TH1I* hist_PhiEtaCoinThr_eff2 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff2_name.c_str()));
202 TH1I* hist_PhiEtaCoinThr_eff3 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff3_name.c_str()));
203 TH1I* hist_PhiEtaCoinThr_eff4 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff4_name.c_str()));
204 TH1I* hist_PhiEtaCoinThr_eff5 = (
TH1I*) (
f->Get(PhiEtaCoinThr_eff5_name.c_str()));
206 int nb = hist_METracks->GetNbinsX();
207 double Ly_eff, Ly_effErr;
208 auto calculateErr = [](
float hitOn,
float trPrj) ->
double {
209 return std::sqrt(std::abs(hitOn) / trPrj) *
210 std::sqrt(1. - std::abs(hitOn) / trPrj) /
218 if (n_Ly_TrPrj > 0) {
220 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
222 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
224 hist_MuctpiThr_eff0->SetBinError(
ib + 1, Ly_effErr);
228 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
229 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
231 hist_MuctpiThr_eff1->SetBinError(
ib + 1, Ly_effErr);
234 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
236 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
238 hist_MuctpiThr_eff2->SetBinError(
ib + 1, Ly_effErr);
241 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
243 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
245 hist_MuctpiThr_eff3->SetBinError(
ib + 1, Ly_effErr);
248 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
250 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
252 hist_MuctpiThr_eff4->SetBinError(
ib + 1, Ly_effErr);
255 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
257 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
259 hist_MuctpiThr_eff5->SetBinError(
ib + 1, Ly_effErr);
262 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
264 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
266 hist_PadThr_eff0->SetBinError(
ib + 1, Ly_effErr);
269 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
271 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
273 hist_PadThr_eff1->SetBinError(
ib + 1, Ly_effErr);
276 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
278 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
280 hist_PadThr_eff2->SetBinError(
ib + 1, Ly_effErr);
283 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
285 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
287 hist_PadThr_eff3->SetBinError(
ib + 1, Ly_effErr);
290 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
292 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
294 hist_PadThr_eff4->SetBinError(
ib + 1, Ly_effErr);
297 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
299 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
301 hist_PadThr_eff5->SetBinError(
ib + 1, Ly_effErr);
304 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
306 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
308 hist_PhiEtaCoinThr_eff0->SetBinError(
ib + 1, Ly_effErr);
311 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
313 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
315 hist_PhiEtaCoinThr_eff1->SetBinError(
ib + 1, Ly_effErr);
318 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
320 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
322 hist_PhiEtaCoinThr_eff2->SetBinError(
ib + 1, Ly_effErr);
325 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
327 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
329 hist_PhiEtaCoinThr_eff3->SetBinError(
ib + 1, Ly_effErr);
332 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
334 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
336 hist_PhiEtaCoinThr_eff4->SetBinError(
ib + 1, Ly_effErr);
339 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
341 Ly_effErr = calculateErr(n_Ly_hitOn, n_Ly_TrPrj);
343 hist_PhiEtaCoinThr_eff5->SetBinError(
ib + 1, Ly_effErr);
348 TDirectory*
dir =
f->GetDirectory(dir_trigger_track.c_str());
351 hist_MuctpiThr_eff0->Write(
"", TObject::kOverwrite);
352 hist_MuctpiThr_eff1->Write(
"", TObject::kOverwrite);
353 hist_MuctpiThr_eff2->Write(
"", TObject::kOverwrite);
354 hist_MuctpiThr_eff3->Write(
"", TObject::kOverwrite);
355 hist_MuctpiThr_eff4->Write(
"", TObject::kOverwrite);
356 hist_MuctpiThr_eff5->Write(
"", TObject::kOverwrite);
357 hist_PadThr_eff0->Write(
"", TObject::kOverwrite);
358 hist_PadThr_eff1->Write(
"", TObject::kOverwrite);
359 hist_PadThr_eff2->Write(
"", TObject::kOverwrite);
360 hist_PadThr_eff3->Write(
"", TObject::kOverwrite);
361 hist_PadThr_eff4->Write(
"", TObject::kOverwrite);
362 hist_PadThr_eff5->Write(
"", TObject::kOverwrite);
363 hist_PhiEtaCoinThr_eff0->Write(
"", TObject::kOverwrite);
364 hist_PhiEtaCoinThr_eff1->Write(
"", TObject::kOverwrite);
365 hist_PhiEtaCoinThr_eff2->Write(
"", TObject::kOverwrite);
366 hist_PhiEtaCoinThr_eff3->Write(
"", TObject::kOverwrite);
367 hist_PhiEtaCoinThr_eff4->Write(
"", TObject::kOverwrite);
368 hist_PhiEtaCoinThr_eff5->Write(
"", TObject::kOverwrite);
374 std::string LyHit_name, LyPrj_name, LyEff_name;
375 LyHit_name = dir_glob_track +
"Hit_on_Track_Layer";
376 LyPrj_name = dir_glob_track +
"Track_Projected_on_Layer";
377 LyEff_name = dir_glob_track +
"Layer_Efficiency";
380 LyHit_name.c_str()) &&
382 TH1I* hist_LyHit = (
TH1I*) (
f->Get(LyHit_name.c_str()));
383 TH1I* hist_LyPrj = (
TH1I*) (
f->Get(LyPrj_name.c_str()));
384 TH1F* hist_LyEff = (
TH1F*) (
f->Get(LyEff_name.c_str()));
386 int nb = hist_LyEff->GetNbinsX();
387 double Ly_eff, Ly_effErr;
392 if (n_Ly_TrPrj > 0) {
393 Ly_eff =
float(n_Ly_hitOn) /
float(n_Ly_TrPrj);
395 Ly_effErr = sqrt(fabs(n_Ly_hitOn) / n_Ly_TrPrj) *
396 sqrt(1. - fabs(n_Ly_hitOn) / n_Ly_TrPrj) /
399 hist_LyEff->SetBinError(
ib + 1, Ly_effErr);
404 TDirectory*
dir =
f->GetDirectory(dir_glob_track.c_str());
408 hist_LyEff->Write(
"", TObject::kOverwrite);
414 std::string LyHit_SideA_name, LyPrj_SideA_name, LyEff_SideA_name;
415 LyHit_SideA_name = dir_sideA_track +
"Layer_HitOnTrack_sideA";
416 LyPrj_SideA_name = dir_sideA_track +
"Layer_TrackProj_sideA";
417 LyEff_SideA_name = dir_sideA_track +
"Layer_Efficiency_sideA";
420 LyHit_SideA_name.c_str()) &&
422 TH1I* hist_LyHit_SideA = (
TH1I*) (
f->Get(LyHit_SideA_name.c_str()));
423 TH1I* hist_LyPrj_SideA = (
TH1I*) (
f->Get(LyPrj_SideA_name.c_str()));
424 TH1F* hist_LyEff_SideA = (
TH1F*) (
f->Get(LyEff_SideA_name.c_str()));
426 int nb = hist_LyEff_SideA->GetNbinsX();
427 double Ly_eff_SideA, Ly_effErr_SideA;
432 if (n_Ly_TrPrj_SideA > 0) {
433 Ly_eff_SideA =
float(n_Ly_hitOn_SideA) /
float(n_Ly_TrPrj_SideA);
435 Ly_effErr_SideA = sqrt(fabs(n_Ly_hitOn_SideA) / n_Ly_TrPrj_SideA) *
436 sqrt(1. - fabs(n_Ly_hitOn_SideA) / n_Ly_TrPrj_SideA) /
437 sqrt(n_Ly_TrPrj_SideA);
439 hist_LyEff_SideA->SetBinError(
ib + 1, Ly_effErr_SideA);
444 TDirectory*
dir =
f->GetDirectory(dir_sideA_track.c_str());
448 hist_LyEff_SideA->Write(
"", TObject::kOverwrite);
453 std::string LyHit_SideC_name, LyPrj_SideC_name, LyEff_SideC_name;
454 LyHit_SideC_name = dir_sideC_track +
"Layer_HitOnTrack_sideC";
455 LyPrj_SideC_name = dir_sideC_track +
"Layer_TrackProj_sideC";
456 LyEff_SideC_name = dir_sideC_track +
"Layer_Efficiency_sideC";
459 LyHit_SideC_name.c_str()) &&
461 TH1I* hist_LyHit_SideC = (
TH1I*) (
f->Get(LyHit_SideC_name.c_str()));
462 TH1I* hist_LyPrj_SideC = (
TH1I*) (
f->Get(LyPrj_SideC_name.c_str()));
463 TH1F* hist_LyEff_SideC = (
TH1F*) (
f->Get(LyEff_SideC_name.c_str()));
465 int nb = hist_LyEff_SideC->GetNbinsX();
466 double Ly_eff_SideC, Ly_effErr_SideC;
471 if (n_Ly_TrPrj_SideC > 0) {
472 Ly_eff_SideC =
float(n_Ly_hitOn_SideC) /
float(n_Ly_TrPrj_SideC);
474 Ly_effErr_SideC = sqrt(fabs(n_Ly_hitOn_SideC) / n_Ly_TrPrj_SideC) *
475 sqrt(1. - fabs(n_Ly_hitOn_SideC) / n_Ly_TrPrj_SideC) /
476 sqrt(n_Ly_TrPrj_SideC);
478 hist_LyEff_SideC->SetBinError(
ib + 1, Ly_effErr_SideC);
482 TDirectory*
dir =
f->GetDirectory(dir_sideC_track.c_str());
486 hist_LyEff_SideC->Write(
"", TObject::kOverwrite);
492 int rpc_eventstotal = 0;
494 TH1I* rpc_hits = (
TH1I*) (
f->Get((dir_ov_raw +
"Number_of_RPC_hits_per_event").c_str()));
495 rpc_eventstotal =
int(rpc_hits->GetEntries());
500 std::string AverageEff_C_name = dir_sideC_track +
"Efficiency_Distribution_sideC";
501 std::string AverageEff_A_name = dir_sideA_track +
"Efficiency_Distribution_sideA";
502 std::string AverageGapEff_C_name = dir_sideC_track +
"GapEfficiency_Distribution_sideC";
503 std::string AverageGapEff_A_name = dir_sideA_track +
"GapEfficiency_Distribution_sideA";
504 std::string AverageNoiseCorr_C_name = dir_sideC_track +
"NoiseCorr_Distribution_sideC";
505 std::string AverageNoiseCorr_A_name = dir_sideA_track +
"NoiseCorr_Distribution_sideA";
506 std::string AverageNoiseTot_C_name = dir_sideC_track +
"NoiseTot_Distribution_sideC";
507 std::string AverageNoiseTot_A_name = dir_sideA_track +
"NoiseTot_Distribution_sideA";
508 std::string AverageCS_C_name = dir_sideC_track +
"CS_Distribution_sideC";
509 std::string AverageCS_A_name = dir_sideA_track +
"CS_Distribution_sideA";
510 std::string AverageRes_CS1_C_name = dir_sideC_track +
"Res_CS1_Distribution_sideC";
511 std::string AverageRes_CS1_A_name = dir_sideA_track +
"Res_CS1_Distribution_sideA";
512 std::string AverageRes_CS2_C_name = dir_sideC_track +
"Res_CS2_Distribution_sideC";
513 std::string AverageRes_CS2_A_name = dir_sideA_track +
"Res_CS2_Distribution_sideA";
514 std::string AverageRes_CSmore2_C_name = dir_sideC_track +
"Res_CSmore2_Distribution_sideC";
515 std::string AverageRes_CSmore2_A_name = dir_sideA_track +
"Res_CSmore2_Distribution_sideA";
516 std::string AverageRes_CS1rms_C_name = dir_sideC_track +
"Res_CS1rms_Distribution_sideC";
517 std::string AverageRes_CS1rms_A_name = dir_sideA_track +
"Res_CS1rms_Distribution_sideA";
518 std::string AverageRes_CS2rms_C_name = dir_sideC_track +
"Res_CS2rms_Distribution_sideC";
519 std::string AverageRes_CS2rms_A_name = dir_sideA_track +
"Res_CS2rms_Distribution_sideA";
520 std::string AverageRes_CSmore2rms_C_name = dir_sideC_track +
"Res_CSmore2rms_Distribution_sideC";
521 std::string AverageRes_CSmore2rms_A_name = dir_sideA_track +
"Res_CSmore2rms_Distribution_sideA";
522 std::string AverageOccupancy_C_name = dir_sideC_track +
"Occupancy_Distribution_sideC";
523 std::string AverageOccupancy_A_name = dir_sideA_track +
"Occupancy_Distribution_sideA";
524 std::string AverageTime_C_name = dir_sideC_track +
"Time_Distribution_sideC";
525 std::string AverageTime_A_name = dir_sideA_track +
"Time_Distribution_sideA";
528 auto initialiseHisto = [
f](
const std::string&
name) ->
TH1F* {
534 TH1F* h_AverageEff_C = initialiseHisto(AverageEff_C_name);
535 TH1F* h_AverageEff_A = initialiseHisto(AverageEff_A_name);
536 TH1F* h_AverageGapEff_C = initialiseHisto(AverageGapEff_C_name);
537 TH1F* h_AverageGapEff_A = initialiseHisto(AverageGapEff_A_name);
538 TH1F* h_AverageNoiseCorr_C = initialiseHisto(AverageNoiseCorr_C_name);
539 TH1F* h_AverageNoiseCorr_A = initialiseHisto(AverageNoiseCorr_A_name);
540 TH1F* h_AverageNoiseTot_C = initialiseHisto(AverageNoiseTot_C_name);
541 TH1F* h_AverageNoiseTot_A = initialiseHisto(AverageNoiseTot_A_name);
542 TH1F* h_AverageCS_C = initialiseHisto(AverageCS_C_name);
543 TH1F* h_AverageCS_A = initialiseHisto(AverageCS_A_name);
544 TH1F* h_AverageRes_CS1_C = initialiseHisto(AverageRes_CS1_C_name);
545 TH1F* h_AverageRes_CS1_A = initialiseHisto(AverageRes_CS1_A_name);
546 TH1F* h_AverageRes_CS2_C = initialiseHisto(AverageRes_CS2_C_name);
547 TH1F* h_AverageRes_CS2_A = initialiseHisto(AverageRes_CS2_A_name);
548 TH1F* h_AverageRes_CSmore2_C = initialiseHisto(AverageRes_CSmore2_C_name);
549 TH1F* h_AverageRes_CSmore2_A = initialiseHisto(AverageRes_CSmore2_A_name);
550 TH1F* h_AverageRes_CS1rms_C = initialiseHisto(AverageRes_CS1rms_C_name);
551 TH1F* h_AverageRes_CS1rms_A = initialiseHisto(AverageRes_CS1rms_A_name);
552 TH1F* h_AverageRes_CS2rms_C = initialiseHisto(AverageRes_CS2rms_C_name);
553 TH1F* h_AverageRes_CS2rms_A = initialiseHisto(AverageRes_CS2rms_A_name);
554 TH1F* h_AverageRes_CSmore2rms_C = initialiseHisto(AverageRes_CSmore2rms_C_name);
555 TH1F* h_AverageRes_CSmore2rms_A = initialiseHisto(AverageRes_CSmore2rms_A_name);
556 TH1F* h_AverageOccupancy_C = initialiseHisto(AverageOccupancy_C_name);
557 TH1F* h_AverageOccupancy_A = initialiseHisto(AverageOccupancy_A_name);
558 TH1F* h_AverageTime_C = initialiseHisto(AverageTime_C_name);
559 TH1F* h_AverageTime_A = initialiseHisto(AverageTime_A_name);
561 auto resetIfValid = [](
TH1F* pH) ->
void {
568 resetIfValid(h_AverageEff_C);
569 resetIfValid(h_AverageEff_A);
570 resetIfValid(h_AverageGapEff_C);
571 resetIfValid(h_AverageGapEff_A);
572 resetIfValid(h_AverageNoiseCorr_C);
573 resetIfValid(h_AverageNoiseCorr_A);
574 resetIfValid(h_AverageNoiseTot_C);
575 resetIfValid(h_AverageNoiseTot_A);
576 resetIfValid(h_AverageCS_C);
577 resetIfValid(h_AverageCS_A);
578 resetIfValid(h_AverageRes_CS1_C);
579 resetIfValid(h_AverageRes_CS1_A);
580 resetIfValid(h_AverageRes_CS2_C);
581 resetIfValid(h_AverageRes_CS2_A);
582 resetIfValid(h_AverageRes_CSmore2_C);
583 resetIfValid(h_AverageRes_CSmore2_A);
584 resetIfValid(h_AverageRes_CS1rms_C);
585 resetIfValid(h_AverageRes_CS1rms_A);
586 resetIfValid(h_AverageRes_CS2rms_C);
587 resetIfValid(h_AverageRes_CS2rms_A);
588 resetIfValid(h_AverageRes_CSmore2rms_C);
589 resetIfValid(h_AverageRes_CSmore2rms_A);
590 resetIfValid(h_AverageOccupancy_C);
591 resetIfValid(h_AverageOccupancy_A);
592 resetIfValid(h_AverageTime_C);
593 resetIfValid(h_AverageTime_A);
596 int countpanelindb = 0;
597 int countpaneleff0 = 0;
598 int countpaneltrack0 = 0;
599 for (
int i_sec = 0; i_sec != 15 * 1 + 1; i_sec++) {
600 char sector_char[100];
601 std::string sector_name;
602 sprintf(sector_char,
"_Sector%.2d", i_sec + 1);
603 sector_name = sector_char;
604 std::cout <<
" RPC sector_name processing " << sector_name << std::endl;
606 std::string TrackProj_name = dir_sum_track +
"SummaryTrackProj" + sector_name;
607 std::string HitOnTrack_name = dir_sum_track +
"SummaryHitOnTrack" + sector_name;
608 std::string HitOnTrackCross_name = dir_sum_track +
"SummaryHitOnTrack_withCrossStrip" + sector_name;
609 std::string Eff_name = dir_sum_track +
"SummaryEfficiency" + sector_name;
610 std::string GapEff_name = dir_sum_track +
"SummaryGapEfficiency" + sector_name;
611 std::string NoiseCorr_name = dir_sum_track +
"SummaryNoiseCorr" + sector_name;
612 std::string NoiseCorr_s_name = dir_sum_track +
"SummaryNoiseCorr_NotNorm" + sector_name;
613 std::string NoiseTot_name = dir_sum_track +
"SummaryNoiseTot" + sector_name;
614 std::string NoiseTot_s_name = dir_sum_track +
"SummaryNoiseTot_NotNorm" + sector_name;
615 std::string Res_CS1_name = dir_sum_track +
"SummaryRes_CS1" + sector_name;
616 std::string Res_CS1_s_name = dir_sum_track +
"SummaryRes_CS1_NotNorm" + sector_name;
617 std::string Res_CS1_square_name = dir_sum_track +
"SummaryRes_CS1_square" + sector_name;
618 std::string Res_CS1_entries_name = dir_sum_track +
"SummaryRes_CS1_entries" + sector_name;
619 std::string Res_CS2_name = dir_sum_track +
"SummaryRes_CS2" + sector_name;
620 std::string Res_CS2_s_name = dir_sum_track +
"SummaryRes_CS2_NotNorm" + sector_name;
621 std::string Res_CS2_square_name = dir_sum_track +
"SummaryRes_CS2_square" + sector_name;
622 std::string Res_CS2_entries_name = dir_sum_track +
"SummaryRes_CS2_entries" + sector_name;
623 std::string Res_CSmore2_name = dir_sum_track +
"SummaryRes_CSmore2" + sector_name;
624 std::string Res_CSmore2_s_name = dir_sum_track +
"SummaryRes_CSmore2_NotNorm" + sector_name;
625 std::string Res_CSmore2_square_name = dir_sum_track +
"SummaryRes_CSmore2_square" + sector_name;
626 std::string Res_CSmore2_entries_name = dir_sum_track +
"SummaryRes_CSmore2_entries" + sector_name;
627 std::string CS_name = dir_sum_track +
"SummaryCS" + sector_name;
628 std::string CS_s_name = dir_sum_track +
"SummaryCS_NotNorm" + sector_name;
629 std::string CS_square_name = dir_sum_track +
"SummaryCS_square" + sector_name;
630 std::string CS_entries_name = dir_sum_track +
"SummaryCS_entries" + sector_name;
631 std::string CS1_entries_name = dir_sum_track +
"SummaryCS1_entries" + sector_name;
632 std::string CS2_entries_name = dir_sum_track +
"SummaryCS2_entries" + sector_name;
633 std::string Time_name = dir_sum_track +
"SummaryTime" + sector_name;
634 std::string Time_s_name = dir_sum_track +
"SummaryTime_NotNorm" + sector_name;
635 std::string Time_square_name = dir_sum_track +
"SummaryTime_square" + sector_name;
636 std::string Occupancy_name = dir_sum_track +
"SummaryOccupancy" + sector_name;
637 std::string Occupancy_s_name = dir_sum_track +
"SummaryOccupancy_NotNorm" + sector_name;
638 std::string PanelId_name = dir_sum_track +
"SummaryPanelID" + sector_name;
641 std::string EffSecDist_name = dir_sum_track +
"SummaryEffDistriPerSector" + sector_name;
642 std::string GapEffSecDist_name = dir_sum_track +
"SummaryGapEffDistriPerSector" + sector_name;
643 std::string NoiseCorrSecDist_name = dir_sum_track +
"SummaryNoiseCorrDistriPerSector" + sector_name;
644 std::string NoiseTotSecDist_name = dir_sum_track +
"SummaryNoiseTotDistriPerSector" + sector_name;
645 std::string CSSecDist_name = dir_sum_track +
"SummaryCSDistriPerSector" + sector_name;
646 std::string Res_CS1SecDist_name = dir_sum_track +
"SummaryRes_CS1DistriPerSector" + sector_name;
647 std::string Res_CS2SecDist_name = dir_sum_track +
"SummaryRes_CS2DistriPerSector" + sector_name;
648 std::string Res_CSmore2SecDist_name = dir_sum_track +
"SummaryRes_CSmore2DistriPerSector" + sector_name;
649 std::string Res_CS1_rmsSecDist_name = dir_sum_track +
"SummaryRes_CS1rmsDistriPerSector" + sector_name;
650 std::string Res_CS2_rmsSecDist_name = dir_sum_track +
"SummaryRes_CS2rmsDistriPerSector" + sector_name;
651 std::string Res_CSmore2_rmsSecDist_name = dir_sum_track +
"SummaryRes_CSmore2rmsDistriPerSector" +
653 std::string TimeSecDist_name = dir_sum_track +
"SummaryTimeDistriPerSector" + sector_name;
654 std::string OccupancySecDist_name = dir_sum_track +
"SummaryOccupancyDistriPerSector" + sector_name;
656 auto initialiseHisto = [
f](
const std::string&
name) ->
TH1F* {
661 TH1F* h_TrackProj = initialiseHisto(TrackProj_name);
662 TH1F* h_HitOnTrack = initialiseHisto(HitOnTrack_name);
663 TH1F* h_HitOnTrackCross = initialiseHisto(HitOnTrackCross_name);
664 TH1F* h_Eff = initialiseHisto(Eff_name);
665 TH1F* h_GapEff = initialiseHisto(GapEff_name);
666 TH1F* h_NoiseCorr = initialiseHisto(NoiseCorr_name);
667 TH1F* h_NoiseCorr_s = initialiseHisto(NoiseCorr_s_name);
668 TH1F* h_NoiseTot = initialiseHisto(NoiseTot_name);
669 TH1F* h_NoiseTot_s = initialiseHisto(NoiseTot_s_name);
670 TH1F* h_Res_CS1 = initialiseHisto(Res_CS1_name);
671 TH1F* h_Res_CS1_s = initialiseHisto(Res_CS1_s_name);
672 TH1F* h_Res_CS1_square = initialiseHisto(Res_CS1_square_name);
673 TH1F* h_Res_CS1_entries = initialiseHisto(Res_CS1_entries_name);
674 TH1F* h_Res_CS2 = initialiseHisto(Res_CS2_name);
675 TH1F* h_Res_CS2_s = initialiseHisto(Res_CS2_s_name);
676 TH1F* h_Res_CS2_square = initialiseHisto(Res_CS2_square_name);
677 TH1F* h_Res_CS2_entries = initialiseHisto(Res_CS2_entries_name);
678 TH1F* h_Res_CSmore2 = initialiseHisto(Res_CSmore2_name);
679 TH1F* h_Res_CSmore2_s = initialiseHisto(Res_CSmore2_s_name);
680 TH1F* h_Res_CSmore2_square = initialiseHisto(Res_CSmore2_square_name);
681 TH1F* h_Res_CSmore2_entries = initialiseHisto(Res_CSmore2_entries_name);
682 TH1F* h_CS = initialiseHisto(CS_name);
683 TH1F* h_CS_s = initialiseHisto(CS_s_name);
684 TH1F* h_CS_square = initialiseHisto(CS_square_name);
685 TH1F* h_CS_entries = initialiseHisto(CS_square_name);
686 TH1F* h_CS1_entries = initialiseHisto(CS1_entries_name);
687 TH1F* h_CS2_entries = initialiseHisto(CS2_entries_name);
688 TH1F* h_Time = initialiseHisto(Time_name);
689 TH1F* h_Time_s = initialiseHisto(Time_s_name);
690 TH1F* h_Time_square = initialiseHisto(Time_square_name);
691 TH1F* h_Occupancy = initialiseHisto(Occupancy_name);
692 TH1F* h_Occupancy_s = initialiseHisto(Occupancy_s_name);
693 TH1F* h_PanelId = initialiseHisto(PanelId_name);
695 TH1F* h_EffSecDist = initialiseHisto(EffSecDist_name);
696 TH1F* h_GapEffSecDist = initialiseHisto(GapEffSecDist_name);
697 TH1F* h_NoiseCorrSecDist = initialiseHisto(NoiseCorrSecDist_name);
698 TH1F* h_NoiseTotSecDist = initialiseHisto(NoiseTotSecDist_name);
699 TH1F* h_CSSecDist = initialiseHisto(CSSecDist_name);
700 TH1F* h_Res_CS1SecDist = initialiseHisto(Res_CS1SecDist_name);
701 TH1F* h_Res_CS2SecDist = initialiseHisto(Res_CS2SecDist_name);
702 TH1F* h_Res_CSmore2SecDist = initialiseHisto(Res_CSmore2SecDist_name);
703 TH1F* h_Res_CS1_rmsSecDist = initialiseHisto(Res_CS1_rmsSecDist_name);
704 TH1F* h_Res_CS2_rmsSecDist = initialiseHisto(Res_CS2_rmsSecDist_name);
705 TH1F* h_Res_CSmore2_rmsSecDist = initialiseHisto(Res_CSmore2_rmsSecDist_name);
706 TH1F* h_TimeSecDist = initialiseHisto(TimeSecDist_name);
707 TH1F* h_OccupancySecDist = initialiseHisto(OccupancySecDist_name);
709 auto resetIfValid = [](
TH1F* pH) ->
void {
713 resetIfValid(h_EffSecDist);
714 resetIfValid(h_GapEffSecDist);
715 resetIfValid(h_NoiseCorrSecDist);
716 resetIfValid(h_NoiseTotSecDist);
717 resetIfValid(h_CSSecDist);
718 resetIfValid(h_Res_CS1SecDist);
719 resetIfValid(h_Res_CS2SecDist);
720 resetIfValid(h_Res_CSmore2SecDist);
721 resetIfValid(h_Res_CS1_rmsSecDist);
722 resetIfValid(h_Res_CS2_rmsSecDist);
723 resetIfValid(h_Res_CSmore2_rmsSecDist);
724 resetIfValid(h_TimeSecDist);
725 resetIfValid(h_OccupancySecDist);
729 if (h_TrackProj && h_HitOnTrack && h_Eff) {
730 for (
int ib = 0;
ib != h_TrackProj->GetNbinsX();
ib++) {
742 panel_eff = n_hit_f / n_tr_p;
747 panel_err_eff = sqrt(fabs(n_hit_f) / n_tr_p) *
748 sqrt(1. - fabs(n_hit_f) / n_tr_p) /
754 h_Eff->SetBinError(
ib + 1, panel_err_eff);
755 if (h_EffSecDist) h_EffSecDist->Fill(panel_eff);
756 if (
ib > (h_TrackProj->GetNbinsX() / 2)) {
757 fillIfValid(h_AverageEff_A, panel_eff);
759 fillIfValid(h_AverageEff_C, panel_eff);
764 TDirectory*
dir =
f->GetDirectory(dir_sum_track.c_str());
767 h_Eff->Write(
"", TObject::kOverwrite);
768 writeIfValid(h_EffSecDist);
773 if (h_TrackProj && h_HitOnTrack && h_HitOnTrackCross && h_GapEff) {
780 bmin =
int( h_GapEff->GetXaxis()->GetXmin());
781 for (
int ib = 0;
ib != h_TrackProj->GetNbinsX();
ib++) {
787 if ((
bmin +
ib) % 2 != 0)
continue;
796 gapEff = (
nEta +
nPhi - nEtaPhi) / n_tr_p;
797 gapErrEff = sqrt(fabs(
nEta +
nPhi - nEtaPhi) / n_tr_p) *
798 sqrt(1. - fabs(
nEta +
nPhi - nEtaPhi) / n_tr_p) /
805 h_GapEff->SetBinError(
ib + 1, gapErrEff);
806 fillIfValid(h_GapEffSecDist, gapEff);
807 if (
ib > (h_TrackProj->GetNbinsX() / 2)) {
808 fillIfValid(h_AverageGapEff_A, gapEff);
810 fillIfValid(h_AverageGapEff_C, gapEff);
813 TDirectory*
dir =
f->GetDirectory(dir_sum_track.c_str());
816 h_GapEff->Write(
"", TObject::kOverwrite);
817 if (h_GapEffSecDist) h_GapEffSecDist->Write(
"", TObject::kOverwrite);
827 if (h_Res_CS1 && h_Res_CS1_s && h_Res_CS1_square && h_Res_CS1_entries) {
828 for (
int ib = 0;
ib != h_Res_CS1->GetNbinsX();
ib++) {
837 res_RMS = sqrt((fabs(res2_mean - res_mean * res_mean)) / (h_Res_CS1_entries->
GetBinContent(
ib + 1)));
840 h_Res_CS1->SetBinError(
ib + 1, res_RMS);
841 fillIfValid(h_Res_CS1SecDist, res_mean);
842 fillIfValid(h_Res_CS1_rmsSecDist, res_RMS);
843 if (
ib > (h_Res_CS1->GetNbinsX() / 2)) {
844 fillIfValid(h_AverageRes_CS1_A, res_mean);
845 fillIfValid(h_AverageRes_CS1rms_A, res_RMS);
847 fillIfValid(h_AverageRes_CS1_C, res_mean);
848 fillIfValid(h_AverageRes_CS1rms_C, res_RMS);
852 TDirectory* dirRes1 =
f->GetDirectory(dir_sum_track.c_str());
855 h_Res_CS1->Write(
"", TObject::kOverwrite);
856 writeIfValid(h_Res_CS1SecDist);
857 writeIfValid(h_Res_CS1_rmsSecDist);
865 if (h_Res_CS2 && h_Res_CS2_s && h_Res_CS2_square && h_Res_CS2_entries) {
866 for (
int ib = 0;
ib != h_Res_CS2->GetNbinsX();
ib++) {
875 res_RMS = sqrt(fabs((res2_mean - res_mean * res_mean) / (h_Res_CS2_entries->
GetBinContent(
ib + 1))));
878 h_Res_CS2->SetBinError(
ib + 1, res_RMS);
879 fillIfValid(h_Res_CS2SecDist, res_mean);
880 fillIfValid(h_Res_CS2_rmsSecDist, res_RMS);
881 if (
ib > (h_Res_CS2->GetNbinsX() / 2)) {
882 fillIfValid(h_AverageRes_CS2_A, res_mean);
883 fillIfValid(h_AverageRes_CS2rms_A, res_RMS);
885 fillIfValid(h_AverageRes_CS2_C, res_mean);
886 fillIfValid(h_AverageRes_CS2rms_C, res_RMS);
890 TDirectory* dirRes2 =
f->GetDirectory(dir_sum_track.c_str());
893 h_Res_CS2->Write(
"", TObject::kOverwrite);
894 writeIfValid(h_Res_CS2SecDist);
895 writeIfValid(h_Res_CS2_rmsSecDist);
903 if (h_Res_CSmore2 && h_Res_CSmore2_s && h_Res_CSmore2_square && h_Res_CSmore2_entries) {
904 for (
int ib = 0;
ib != h_Res_CSmore2->GetNbinsX();
ib++) {
914 res_RMS = sqrt(fabs((res2_mean - res_mean * res_mean) / (h_Res_CSmore2_entries->
GetBinContent(
918 h_Res_CSmore2->SetBinError(
ib + 1, res_RMS);
919 fillIfValid(h_Res_CSmore2SecDist, res_mean);
920 fillIfValid(h_Res_CSmore2_rmsSecDist, res_RMS);
921 if (
ib > (h_Res_CSmore2->GetNbinsX() / 2)) {
922 fillIfValid(h_AverageRes_CSmore2_A, res_mean);
923 fillIfValid(h_AverageRes_CSmore2rms_A, res_RMS);
925 fillIfValid(h_AverageRes_CSmore2_C, res_mean);
926 fillIfValid(h_AverageRes_CSmore2rms_C, res_RMS);
930 TDirectory* dirResp2 =
f->GetDirectory(dir_sum_track.c_str());
933 h_Res_CSmore2->Write(
"", TObject::kOverwrite);
934 writeIfValid(h_Res_CSmore2SecDist);
935 writeIfValid(h_Res_CSmore2_rmsSecDist);
940 if ((rpc_eventstotal > 0) && h_Occupancy && h_Occupancy_s) {
941 for (
int ib = 0;
ib != h_Occupancy->GetNbinsX();
ib++) {
948 panel_occ = panel_occ /
float(rpc_eventstotal);
951 h_Occupancy->SetBinError(
ib + 1, sqrt(panel_occ));
954 panel_occ = log10(panel_occ);
958 fillIfValid(h_OccupancySecDist, panel_occ);
959 if (h_PanelId and(
ib > (h_PanelId->GetNbinsX() / 2))) {
960 fillIfValid(h_AverageOccupancy_A, panel_occ);
962 fillIfValid(h_AverageOccupancy_C, panel_occ);
966 TDirectory* dirOcc =
f->GetDirectory(dir_sum_track.c_str());
969 h_Occupancy->Write(
"", TObject::kOverwrite);
970 h_OccupancySecDist->Write(
"", TObject::kOverwrite);
976 if (h_CS && h_CS_s && h_CS_square && h_CS_entries) {
977 for (
int ib = 0;
ib != h_CS->GetNbinsX();
ib++) {
986 if (panelCS_entries != 0) {
987 panelCS_mean = panelCS / panelCS_entries;
988 panelCS2_mean = panelCS2 / panelCS_entries;
989 panelCS_RMS = sqrt(fabs((panelCS2_mean - panelCS_mean * panelCS_mean) / panelCS_entries));
992 h_CS->SetBinError(
ib + 1, panelCS_RMS);
994 fillIfValid(h_CSSecDist, panelCS_mean);
995 if (
ib > (h_CS->GetNbinsX() / 2)) {
996 fillIfValid(h_AverageCS_A, panelCS_mean);
998 fillIfValid(h_AverageCS_C, panelCS_mean);
1003 TDirectory* dirCS =
f->GetDirectory(dir_sum_track.c_str());
1006 h_CS->Write(
"", TObject::kOverwrite);
1007 writeIfValid(h_CSSecDist);
1012 if (h_Time && h_Time_s && h_Time_square && h_CS_entries) {
1013 for (
int ib = 0;
ib != h_Time->GetNbinsX();
ib++) {
1022 Time_RMS = sqrt(fabs((Time2_mean - Time_mean * Time_mean) / (h_CS_entries->
GetBinContent(
ib + 1))));
1025 h_Time->SetBinError(
ib + 1, Time_RMS);
1027 fillIfValid(h_TimeSecDist, Time_mean);
1028 if (
ib > (h_Time->GetNbinsX() / 2)) {
1029 fillIfValid(h_AverageTime_A, Time_mean);
1031 fillIfValid(h_AverageTime_C, Time_mean);
1036 TDirectory* dirTime =
f->GetDirectory(dir_sum_track.c_str());
1039 h_Time->Write(
"", TObject::kOverwrite);
1040 writeIfValid(h_TimeSecDist);
1044 noiseErrNorm = 18257.42;
1045 if ((rpc_eventstotal > 0) && h_NoiseCorr && h_NoiseCorr_s && h_NoiseTot && h_NoiseTot_s && h_CS_entries) {
1047 for (
int ib = 0;
ib != h_NoiseCorr->GetNbinsX();
ib++) {
1055 noiseCorrErr = sqrt(noiseCorr) * noiseErrNorm /
float(rpc_eventstotal);
1056 noiseCorr = (noiseCorr * 1000000) /
float(rpc_eventstotal);
1058 h_NoiseCorr->SetBinError(
ib + 1, noiseCorrErr);
1059 fillIfValid(h_NoiseCorrSecDist, noiseCorr);
1062 noiseTotErr = sqrt(noiseTot) * noiseErrNorm /
float(rpc_eventstotal);
1063 noiseTot = (noiseTot * 1000000) /
float(rpc_eventstotal);
1065 h_NoiseTot->SetBinError(
ib + 1, noiseTotErr);
1067 fillIfValid(h_NoiseTotSecDist, noiseTot);
1069 if (
ib > (h_NoiseCorr->GetNbinsX() / 2)) {
1070 fillIfValid(h_AverageNoiseTot_A, noiseTot);
1071 fillIfValid(h_AverageNoiseCorr_A, noiseCorr);
1073 fillIfValid(h_AverageNoiseTot_C, noiseTot);
1074 fillIfValid(h_AverageNoiseCorr_C, noiseCorr);
1077 TDirectory* dirNoise =
f->GetDirectory(dir_sum_track.c_str());
1078 if (dirNoise != 0) {
1080 h_NoiseCorr->Write(
"", TObject::kOverwrite);
1081 h_NoiseTot->Write(
"", TObject::kOverwrite);
1083 writeIfValid(h_NoiseCorrSecDist);
1084 writeIfValid(h_NoiseTotSecDist);
1091 float effeta = -9999;
1092 float effphi = -9999;
1093 char arr_effeta [14] = {};
1094 char arr_effphi [14] = {};
1095 float erreffeta = -1;
1096 float erreffphi = -1;
1097 char arr_erreffeta [14] = {};
1098 char arr_erreffphi [14] = {};
1099 float reseta_cs1 = -9999;
1100 float resphi_cs1 = -9999;
1101 char arr_reseta_cs1 [14] = {};
1102 char arr_resphi_cs1 [14] = {};
1103 float errreseta_cs1 = -1;
1104 float errresphi_cs1 = -1;
1105 char arr_errreseta_cs1 [14] = {};
1106 char arr_errresphi_cs1 [14] = {};
1107 float reseta_cs2 = -9999;
1108 float resphi_cs2 = -9999;
1109 char arr_reseta_cs2 [14] = {};
1110 char arr_resphi_cs2 [14] = {};
1111 float errreseta_cs2 = -1;
1112 float errresphi_cs2 = -1;
1113 char arr_errreseta_cs2 [14] = {};
1114 char arr_errresphi_cs2 [14] = {};
1115 float reseta_csother = -9999;
1116 float resphi_csother = -9999;
1117 char arr_reseta_csother [14] = {};
1118 char arr_resphi_csother [14] = {};
1119 float errreseta_csother = -1;
1120 float errresphi_csother = -1;
1121 char arr_errreseta_csother [14] = {};
1122 char arr_errresphi_csother [14] = {};
1123 float timeeta = -9999;
1124 float timephi = -9999;
1125 char arr_timeeta [14] = {};
1126 char arr_timephi [14] = {};
1127 float errtimeeta = -1;
1128 float errtimephi = -1;
1129 char arr_errtimeeta [14] = {};
1130 char arr_errtimephi [14] = {};
1131 float noiseeta = -9999;
1132 float noisephi = -9999;
1133 char arr_noiseeta [14] = {};
1134 char arr_noisephi [14] = {};
1135 float errnoiseeta = -1;
1136 float errnoisephi = -1;
1137 char arr_errnoiseeta [14] = {};
1138 char arr_errnoisephi [14] = {};
1139 float noiseeta_cor = -9999;
1140 float noisephi_cor = -9999;
1141 char arr_noiseeta_cor [14] = {};
1142 char arr_noisephi_cor [14] = {};
1143 float errnoiseeta_cor = -1;
1144 float errnoisephi_cor = -1;
1145 char arr_errnoiseeta_cor [14] = {};
1146 char arr_errnoisephi_cor [14] = {};
1147 float cl_sizeeta = -9999;
1148 float cl_sizephi = -9999;
1149 char arr_cl_sizeeta [14] = {};
1150 char arr_cl_sizephi [14] = {};
1151 float errcl_sizeeta = -1;
1152 float errcl_sizephi = -1;
1153 char arr_errcl_sizeeta [14] = {};
1154 char arr_errcl_sizephi [14] = {};
1156 float eta_effphi = 0;
1157 float phi_effeta = 0;
1160 int Binposition = 0;
1161 int TableVersion = 1;
1164 int NumberOfInfo = 1;
1172 coolrpc.
coolDbFolder(
"sqlite://;schema=RPCDQMFOFFLINE.db;dbname=RPC_DQA",
"/OFFLINE/OFFLINE_DQMF");
1174 if (h_Eff) nbin = h_Eff->GetNbinsX();
1175 auto writeToCString = [](
float val,
char* array0) ->
void {
1177 sprintf(array0,
"%f ",
val);
1181 for (
int ibin = 1; ibin != nbin + 1; ibin++) {
1183 if (PanelCode == 0)
continue;
1184 if (ibin % 2 == 0) {
1186 if (n_tr_pphi < 1000)
continue;
1188 effphi = getBinContentIfValid(h_Eff, ibin);
1189 writeToCString(effphi, arr_effphi);
1190 erreffphi = getBinErrorIfValid(h_Eff, ibin);
1191 writeToCString(erreffphi, arr_erreffphi);
1193 resphi_cs1 = getBinContentIfValid(h_Res_CS1, ibin);
1194 writeToCString(resphi_cs1, arr_resphi_cs1);
1195 errresphi_cs1 = getBinErrorIfValid(h_Res_CS1, ibin);
1196 writeToCString(errresphi_cs1, arr_errresphi_cs1);
1198 resphi_cs2 = getBinContentIfValid(h_Res_CS2, ibin);
1199 writeToCString(resphi_cs2, arr_resphi_cs2);
1200 errresphi_cs2 = getBinErrorIfValid(h_Res_CS2, ibin);
1201 writeToCString(errresphi_cs2, arr_errresphi_cs2);
1203 resphi_csother = getBinContentIfValid(h_Res_CSmore2, ibin);
1204 writeToCString(resphi_csother, arr_resphi_csother);
1205 errresphi_csother = getBinErrorIfValid(h_Res_CSmore2, ibin);
1206 writeToCString(errresphi_csother, arr_errresphi_csother);
1208 timephi = getBinContentIfValid(h_Time, ibin);
1209 writeToCString(timephi, arr_timephi);
1210 errtimephi = getBinErrorIfValid(h_Time, ibin);
1211 writeToCString(errtimephi, arr_errtimephi);
1213 noisephi = getBinContentIfValid(h_NoiseTot, ibin);
1214 writeToCString(noisephi, arr_noisephi);
1215 errnoisephi = getBinErrorIfValid(h_NoiseTot, ibin);
1216 writeToCString(errnoisephi, arr_errnoisephi);
1218 noisephi_cor = getBinContentIfValid(h_NoiseCorr, ibin);
1219 writeToCString(noisephi_cor, arr_noisephi_cor);
1220 errnoisephi_cor = getBinErrorIfValid(h_NoiseCorr, ibin);
1221 writeToCString(errnoisephi_cor, arr_errnoisephi_cor);
1223 cl_sizephi = getBinContentIfValid(h_CS, ibin);
1224 writeToCString(cl_sizephi, arr_cl_sizephi);
1225 errcl_sizephi = getBinErrorIfValid(h_CS, ibin);
1226 writeToCString(errcl_sizephi, arr_errcl_sizephi);
1231 if (n_tr_peta < 1000)
continue;
1233 effeta = getBinContentIfValid(h_Eff, ibin);
1234 writeToCString(effeta, arr_effeta);
1235 erreffeta = getBinErrorIfValid(h_Eff, ibin);
1236 writeToCString(erreffeta, arr_erreffeta);
1238 reseta_cs1 = getBinContentIfValid(h_Res_CS1, ibin);
1239 writeToCString(reseta_cs1, arr_reseta_cs1);
1240 errreseta_cs1 = getBinErrorIfValid(h_Res_CS1, ibin);
1241 writeToCString(errreseta_cs1, arr_errreseta_cs1);
1243 reseta_cs2 = getBinContentIfValid(h_Res_CS2, ibin);
1244 writeToCString(reseta_cs2, arr_reseta_cs2);
1245 errreseta_cs2 = getBinErrorIfValid(h_Res_CS2, ibin);
1246 writeToCString(errreseta_cs2, arr_errreseta_cs2);
1248 reseta_csother = getBinContentIfValid(h_Res_CSmore2, ibin);
1249 writeToCString(reseta_csother, arr_reseta_csother);
1250 errreseta_csother = getBinErrorIfValid(h_Res_CSmore2, ibin);
1251 writeToCString(errreseta_csother, arr_errreseta_csother);
1253 timeeta = getBinContentIfValid(h_Time, ibin);
1254 writeToCString(timeeta, arr_timeeta);
1255 errtimeeta = getBinErrorIfValid(h_Time, ibin);
1256 writeToCString(errtimeeta, arr_errtimeeta);
1258 noiseeta = getBinContentIfValid(h_NoiseTot, ibin);
1259 writeToCString(noiseeta, arr_noiseeta);
1260 errnoiseeta = getBinErrorIfValid(h_NoiseTot, ibin);
1261 writeToCString(errnoiseeta, arr_errnoiseeta);
1263 noiseeta_cor = getBinContentIfValid(h_NoiseCorr, ibin);
1264 writeToCString(noiseeta_cor, arr_noiseeta_cor);
1265 errnoiseeta_cor = getBinErrorIfValid(h_NoiseCorr, ibin);
1266 writeToCString(errnoiseeta_cor, arr_errnoiseeta_cor);
1268 cl_sizeeta = getBinContentIfValid(h_CS, ibin);
1269 writeToCString(cl_sizeeta, arr_cl_sizeeta);
1270 errcl_sizeeta = getBinErrorIfValid(h_CS, ibin);
1271 writeToCString(errcl_sizeeta, arr_errcl_sizeeta);
1278 char recPhi1 [4000];
1279 char recPhi2 [4000];
1280 char detPhi1 [4000];
1281 char detPhi2 [4000];
1282 sprintf(recEta,
"%5d %5d %5d %5d %s %s %s %s %s %s %s %s %s %s ", TableVersion,
1283 n_tr_peta, NumberOfInfo,
StripCluster, arr_effeta, arr_erreffeta, arr_reseta_cs1,
1284 arr_errreseta_cs1, arr_reseta_cs2, arr_errreseta_cs2, arr_reseta_csother,
1285 arr_errreseta_csother, arr_timeeta, arr_errtimeeta);
1286 sprintf(detEta,
"%s %s %s %s %s %s ", arr_noiseeta, arr_errnoiseeta,
1287 arr_noiseeta_cor, arr_errnoiseeta_cor, arr_cl_sizeeta, arr_errcl_sizeeta);
1288 sprintf(recPhi1,
"%5d %5d %5d %s %s %s %s %s ", n_tr_pphi, NumberOfInfo,
1289 StripCluster, arr_effphi, arr_resphi_cs1, arr_resphi_cs2, arr_resphi_csother,
1291 sprintf(recPhi2,
"%s %s %s %s %s ", arr_erreffphi, arr_errresphi_cs1,
1292 arr_errresphi_cs2, arr_errresphi_csother, arr_errtimephi);
1293 sprintf(detPhi1,
"%s %s %s %s %s %s ", arr_noisephi, arr_errnoisephi,
1294 arr_noisephi_cor, arr_errnoisephi_cor, arr_cl_sizephi, arr_errcl_sizephi);
1295 sprintf(detPhi2,
"0 ");
1307 int TableVersionCondDB = 2;
1308 float gapeffeta = -9999;
1309 char arr_gapeffeta [10];
1310 float errgapeffeta = -1;
1311 char arr_errgapeffeta [10];
1312 float gapeffphi = -9999;
1313 char arr_gapeffphi [10];
1314 float errgapeffphi = -1;
1315 char arr_errgapeffphi [10];
1316 float gapeff = -9999;
1317 float errgapeff = -1;
1318 float entriesCSeta = -1;
1319 int entriesCS1eta = -1;
1320 int entriesCS2eta = -1;
1321 float entriesCSphi = -1;
1322 int entriesCS1phi = -1;
1323 int entriesCS2phi = -1;
1324 float rateCS1eta = -1;
1325 char arr_rateCS1eta [10];
1326 float rateCS2eta = -1;
1327 char arr_rateCS2eta [10];
1328 float rateCSmore2eta = -1;
1329 char arr_rateCSmore2eta [10];
1330 float rateCS1phi = -1;
1331 char arr_rateCS1phi [10];
1332 float rateCS2phi = -1;
1333 char arr_rateCS2phi [10];
1334 float rateCSmore2phi = -1;
1335 char arr_rateCSmore2phi [10];
1339 coolrpc.
coolDbFolder(
"sqlite://;schema=RPCConditionDB.db;dbname=RPC_DQA",
"/OFFLINE/FINAL");
1340 std::string dir_cool_raw = run_dir +
"/Muon/MuonRawDataMonitoring/RPC/CoolDB/";
1341 TDirectory* coolFolder =
f->GetDirectory(dir_cool_raw.c_str());
1343 if (coolFolder != 0) {
1344 std::vector<std::string> layerList;
1345 layerList.push_back(
"LowPt0");
1346 layerList.push_back(
"LowPt1");
1347 layerList.push_back(
"Pivot0");
1348 layerList.push_back(
"Pivot1");
1349 layerList.push_back(
"HighPt0");
1350 layerList.push_back(
"HighPt1");
1351 int NumberLayerStrip = 0;
1352 int PanelStripId = 0;
1353 int StripProfileContenent = 0;
1355 for (std::vector<std::string>::const_iterator iter = layerList.begin(); iter != layerList.end(); ++iter) {
1356 for (
int i_dblPhi = 0; i_dblPhi != 2 * 1 + 1; ++i_dblPhi) {
1358 sprintf(coolName,
"Sector%.2d_%s_dblPhi%d", i_sec + 1, (*iter).c_str(), i_dblPhi + 1);
1359 std::string stripId_name = dir_cool_raw + coolName +
"_PanelId";
1360 std::string stripProfile_name = dir_cool_raw + coolName +
"_Profile";
1361 TH1F* h_stripId = NULL;
1362 TH1F* h_stripProfile = NULL;
1365 h_stripId = (
TH1F*) (
f->Get(stripId_name.c_str()));
1368 h_stripProfile = (
TH1F*) (
f->Get(stripProfile_name.c_str()));
1371 if (h_stripId && h_stripProfile) {
1372 int SingleStripsValue = 0;
1373 int StripsOnPanel = 1;
1374 char SingleStripsStatus [80];
1375 char SingleStripsStatusOK[80];
1376 std::string PanelStripsStatus;
1377 std::string PanelStripsStatusOK;
1379 NumberLayerStrip = h_stripProfile->GetNbinsX();
1380 for (
int Nstrips = 1; Nstrips != NumberLayerStrip + 1; Nstrips++) {
1383 float StripOccupancy = (
float) (StripProfileContenent) / rpc_eventstotal;
1384 if (StripOccupancy == 0) SingleStripsValue = 0;
1385 if (StripOccupancy > 0 && StripOccupancy < 0.9) SingleStripsValue = 5;
1386 if (StripOccupancy > 0.9) SingleStripsValue = 9;
1388 if (h_stripId->GetBinCenter(Nstrips) > 0) {
1389 sprintf(SingleStripsStatus,
"%d 000.0 0.000|", SingleStripsValue);
1390 sprintf(SingleStripsStatusOK,
"5 000.0 0.000|");
1392 sprintf(SingleStripsStatus,
"|000.0 0.000 %d", SingleStripsValue);
1393 sprintf(SingleStripsStatusOK,
"|000.0 0.000 5");
1395 PanelStripsStatus = PanelStripsStatus + SingleStripsStatus;
1396 PanelStripsStatusOK = PanelStripsStatusOK + SingleStripsStatusOK;
1401 (
int) h_stripId->
GetBinContent(Nstrips + 1)) StripsOnPanel++;
1408 if (h_stripId->GetBinCenter(Nstrips) < 0) {
1410 std::reverse(PanelStripsStatus.begin(), PanelStripsStatus.end());
1411 std::reverse(PanelStripsStatusOK.begin(), PanelStripsStatusOK.end());
1414 for (
int ibin = 1; ibin != nbin + 1; ibin++) {
1416 if (PanelCode != PanelStripId)
continue;
1417 if (ibin % 2 != 0) {
1422 if (h_PanelId) Binposition = (
int) h_PanelId->GetBinCenter(ibin);
1424 if (Binposition > 0) {
1425 ibin_perp = ibin + 1;
1426 eta_effphi = getBinContentIfValid(h_Eff, ibin + 1);
1428 ibin_perp = ibin - 1;
1429 eta_effphi = getBinContentIfValid(h_Eff, ibin - 1);
1431 gapeff = getBinContentIfValid(h_GapEff, ibin);
1432 errgapeff = getBinErrorIfValid(h_GapEff, ibin);
1433 effeta = getBinContentIfValid(h_Eff, ibin);
1434 erreffeta = getBinErrorIfValid(h_Eff, ibin);
1437 errgapeffeta = errgapeff;
1438 EffThreshold = (effeta < Minimum_efficiency) || (eta_effphi < Minimum_efficiency);
1440 reseta_cs1 = getBinContentIfValid(h_Res_CS1, ibin);
1441 errreseta_cs1 = getBinErrorIfValid(h_Res_CS1, ibin);
1443 reseta_cs2 = getBinContentIfValid(h_Res_CS2, ibin);
1444 errreseta_cs2 = getBinErrorIfValid(h_Res_CS2, ibin);
1446 reseta_csother = getBinContentIfValid(h_Res_CSmore2, ibin);
1447 errreseta_csother = getBinErrorIfValid(h_Res_CSmore2, ibin);
1449 noiseeta = getBinContentIfValid(h_NoiseTot, ibin);
1450 errnoiseeta = getBinErrorIfValid(h_NoiseTot, ibin);
1452 noiseeta_cor = getBinContentIfValid(h_NoiseCorr, ibin);
1453 errnoiseeta_cor = getBinErrorIfValid(h_NoiseCorr, ibin);
1455 cl_sizeeta = getBinContentIfValid(h_CS, ibin);
1456 errcl_sizeeta = getBinErrorIfValid(h_CS, ibin);
1458 entriesCSeta = getBinContentIfValid(h_CS_entries, ibin);
1459 entriesCS1eta = getBinContentIfValid(h_CS1_entries, ibin);
1460 entriesCS2eta = getBinContentIfValid(h_CS2_entries, ibin);
1462 if (entriesCSeta > 0) {
1463 rateCS1eta = entriesCS1eta / entriesCSeta;
1464 rateCS2eta = entriesCS2eta / entriesCSeta;
1465 rateCSmore2eta = (entriesCSeta - (entriesCS1eta + entriesCS2eta)) / entriesCSeta;
1468 if (applyEffThreshold) {
1469 if (effeta < Minimum_efficiency && eta_effphi < Minimum_efficiency) {
1470 effeta = Minimum_efficiency;
1471 gapeffeta = Minimum_efficiency;
1474 PanelStripsStatus = PanelStripsStatusOK;
1476 errcl_sizeeta = 0.1,
1480 }
else if (effeta < Minimum_efficiency && eta_effphi > Minimum_efficiency) {
1481 effeta = Minimum_efficiency;
1482 gapeffeta = eta_effphi;
1485 PanelStripsStatus = PanelStripsStatusOK;
1487 errcl_sizeeta = 0.1,
1491 }
else if (effeta > Minimum_efficiency && eta_effphi < Minimum_efficiency) {
1496 sprintf(arr_effeta,
"%f ", effeta);
1498 sprintf(arr_erreffeta,
"%f ", erreffeta);
1499 arr_erreffeta [5] = 0;
1500 sprintf(arr_gapeffeta,
"%f ", gapeffeta);
1501 arr_gapeffeta [5] = 0;
1502 sprintf(arr_errgapeffeta,
"%f ", errgapeffeta);
1503 arr_errgapeffeta [5] = 0;
1504 sprintf(arr_reseta_cs1,
"%f ", reseta_cs1);
1505 arr_reseta_cs1 [5] = 0;
1506 sprintf(arr_errreseta_cs1,
"%f ", errreseta_cs1);
1507 arr_errreseta_cs1 [5] = 0;
1508 sprintf(arr_reseta_cs2,
"%f ", reseta_cs2);
1509 arr_reseta_cs2 [5] = 0;
1510 sprintf(arr_errreseta_cs2,
"%f ", errreseta_cs2);
1511 arr_errreseta_cs2 [5] = 0;
1512 sprintf(arr_reseta_csother,
"%f ", reseta_csother);
1513 arr_reseta_csother [5] = 0;
1514 sprintf(arr_errreseta_csother,
"%f ", errreseta_csother);
1515 arr_errreseta_csother[5] = 0;
1516 sprintf(arr_noiseeta,
"%f ", noiseeta);
1517 arr_noiseeta [5] = 0;
1518 sprintf(arr_errnoiseeta,
"%f ", errnoiseeta);
1519 arr_errnoiseeta [5] = 0;
1520 sprintf(arr_noiseeta_cor,
"%f ", noiseeta_cor);
1521 arr_noiseeta_cor [5] = 0;
1522 sprintf(arr_errnoiseeta_cor,
"%f ", errnoiseeta_cor);
1523 arr_errnoiseeta_cor [5] = 0;
1524 sprintf(arr_cl_sizeeta,
"%f ", cl_sizeeta);
1525 arr_cl_sizeeta [5] = 0;
1526 sprintf(arr_errcl_sizeeta,
"%f ", errcl_sizeeta);
1527 arr_errcl_sizeeta [5] = 0;
1528 sprintf(arr_rateCS1eta,
"%f ", rateCS1eta);
1529 arr_rateCS1eta [5] = 0;
1530 sprintf(arr_rateCS2eta,
"%f ", rateCS2eta);
1531 arr_rateCS2eta [5] = 0;
1532 sprintf(arr_rateCSmore2eta,
"%f ", rateCSmore2eta);
1533 arr_rateCSmore2eta [5] = 0;
1535 char PanelRes [255];
1536 char StripStatus [4096];
1538 sprintf(PanelRes,
"%d %d %d %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",
1539 TableVersionCondDB, n_tr_peta, StripsOnPanel, arr_effeta, arr_erreffeta,
1540 arr_gapeffeta, arr_errgapeffeta, arr_reseta_cs1, arr_errreseta_cs1, arr_reseta_cs2,
1541 arr_errreseta_cs2, arr_reseta_csother, arr_errreseta_csother, arr_noiseeta,
1542 arr_errnoiseeta, arr_noiseeta_cor, arr_errnoiseeta_cor, arr_cl_sizeeta,
1543 arr_errcl_sizeeta, arr_rateCS1eta, arr_rateCS2eta, arr_rateCSmore2eta);
1544 sprintf(StripStatus,
"%s", PanelStripsStatus.c_str());
1545 std::string cool_tagCondDB =
"RecoCondDB";
1550 if (printout and EffThreshold and h_GapEff) std::cout << stripProfile_name <<
1551 " under THR " << EffThreshold <<
" " << PanelCode <<
" ibin " << ibin <<
" h_EffEta " <<
1553 " h_GapEffEta " << h_GapEff->GetBinContent(ibin) <<
" h_GapEffPhi " <<
1554 h_GapEff->GetBinContent(ibin_perp) <<
" cool_EtaEff " << effeta <<
" cool_GapEffEta " <<
1555 gapeffeta <<
" --- Eta Summary " << PanelRes <<
" --- StripStatus " << StripStatus <<
1558 EffThreshold) std::cout <<
"inCOOL_ETA_id_ntrk_panelEff_gapEff " << PanelCode <<
" " <<
1559 n_tr_peta <<
" " << (
int) (n_tr_peta * effeta) <<
" " << (
int) (n_tr_peta * gapeffeta) <<
1562 if (effeta == 0.0) countpaneleff0++;
1563 if (n_tr_peta == 0) countpaneltrack0++;
1568 if (h_PanelId) Binposition = (
int) h_PanelId->GetBinCenter(ibin);
1570 if (Binposition > 0) {
1571 ibin_perp = ibin - 1;
1572 gapeff = getBinContentIfValid(h_GapEff, ibin - 1);
1573 errgapeff = getBinErrorIfValid(h_GapEff, ibin - 1);
1574 phi_effeta = getBinContentIfValid(h_Eff, ibin - 1);
1576 ibin_perp = ibin + 1;
1577 gapeff = getBinContentIfValid(h_GapEff, ibin + 1);
1578 errgapeff = getBinErrorIfValid(h_GapEff, ibin + 1);
1579 phi_effeta = getBinContentIfValid(h_Eff, ibin + 1);
1581 effphi = getBinContentIfValid(h_Eff, ibin);
1582 erreffphi = getBinErrorIfValid(h_Eff, ibin);
1584 errgapeffphi = errgapeff;
1585 EffThreshold = (effphi < Minimum_efficiency) || (phi_effeta < Minimum_efficiency);
1588 resphi_cs1 = getBinContentIfValid(h_Res_CS1, ibin);
1589 errresphi_cs1 = getBinErrorIfValid(h_Res_CS1, ibin);
1591 resphi_cs2 = getBinContentIfValid(h_Res_CS2, ibin);
1592 errresphi_cs2 = getBinErrorIfValid(h_Res_CS2, ibin);
1594 resphi_csother = getBinContentIfValid(h_Res_CSmore2, ibin);
1595 errresphi_csother = getBinErrorIfValid(h_Res_CSmore2, ibin);
1597 noisephi = getBinContentIfValid(h_NoiseTot, ibin);
1598 errnoisephi = getBinErrorIfValid(h_NoiseTot, ibin);
1600 noisephi_cor = getBinContentIfValid(h_NoiseCorr, ibin);
1601 errnoisephi_cor = getBinErrorIfValid(h_NoiseCorr, ibin);
1603 cl_sizephi = getBinContentIfValid(h_CS, ibin);
1604 errcl_sizephi = getBinErrorIfValid(h_CS, ibin);
1606 entriesCSphi = getBinContentIfValid(h_CS_entries, ibin);
1607 entriesCS1phi = getBinContentIfValid(h_CS1_entries, ibin);
1608 entriesCS2phi = getBinContentIfValid(h_CS2_entries, ibin);
1609 if (entriesCSphi > 0) {
1610 rateCS1phi = entriesCS1phi / entriesCSphi;
1611 rateCS2phi = entriesCS2phi / entriesCSphi;
1612 rateCSmore2phi = (entriesCSphi - (entriesCS1phi + entriesCS2phi)) / entriesCSphi;
1616 if (applyEffThreshold) {
1617 if (effphi < Minimum_efficiency && phi_effeta < Minimum_efficiency) {
1618 effphi = Minimum_efficiency;
1619 gapeffphi = Minimum_efficiency;
1622 PanelStripsStatus = PanelStripsStatusOK;
1624 errcl_sizephi = 0.1,
1628 }
else if (effphi < Minimum_efficiency && phi_effeta > Minimum_efficiency) {
1629 effphi = Minimum_efficiency;
1630 gapeffphi = phi_effeta;
1633 PanelStripsStatus = PanelStripsStatusOK;
1635 errcl_sizephi = 0.1,
1639 }
else if (effphi > Minimum_efficiency && phi_effeta < Minimum_efficiency) {
1642 PanelStripsStatus = PanelStripsStatusOK;
1646 sprintf(arr_effphi,
"%f ", effphi);
1648 sprintf(arr_erreffphi,
"%f ", erreffphi);
1649 arr_erreffphi [5] = 0;
1650 sprintf(arr_gapeffphi,
"%f ", gapeffphi);
1651 arr_gapeffphi [5] = 0;
1652 sprintf(arr_errgapeffphi,
"%f ", errgapeffphi);
1653 arr_errgapeffphi [5] = 0;
1654 sprintf(arr_resphi_cs1,
"%f ", resphi_cs1);
1655 arr_resphi_cs1 [5] = 0;
1656 sprintf(arr_errresphi_cs1,
"%f ", errresphi_cs1);
1657 arr_errresphi_cs1 [5] = 0;
1658 sprintf(arr_resphi_cs2,
"%f ", resphi_cs2);
1659 arr_resphi_cs2 [5] = 0;
1660 sprintf(arr_errresphi_cs2,
"%f ", errresphi_cs2);
1661 arr_errresphi_cs2 [5] = 0;
1662 sprintf(arr_resphi_csother,
"%f ", resphi_csother);
1663 arr_resphi_csother [5] = 0;
1664 sprintf(arr_errresphi_csother,
"%f ", errresphi_csother);
1665 arr_errresphi_csother[5] = 0;
1666 sprintf(arr_noisephi,
"%f ", noisephi);
1667 arr_noisephi [5] = 0;
1668 sprintf(arr_errnoisephi,
"%f ", errnoisephi);
1669 arr_errnoisephi [5] = 0;
1670 sprintf(arr_noisephi_cor,
"%f ", noisephi_cor);
1671 arr_noisephi_cor [5] = 0;
1672 sprintf(arr_errnoisephi_cor,
"%f ", errnoisephi_cor);
1673 arr_errnoisephi_cor [5] = 0;
1674 sprintf(arr_cl_sizephi,
"%f ", cl_sizephi);
1675 arr_cl_sizephi [5] = 0;
1676 sprintf(arr_errcl_sizephi,
"%f ", errcl_sizephi);
1677 arr_errcl_sizephi [5] = 0;
1678 sprintf(arr_rateCS1phi,
"%f ", rateCS1phi);
1679 arr_rateCS1phi [5] = 0;
1680 sprintf(arr_rateCS2phi,
"%f ", rateCS2phi);
1681 arr_rateCS2phi [5] = 0;
1682 sprintf(arr_rateCSmore2phi,
"%f ", rateCSmore2phi);
1683 arr_rateCSmore2phi [5] = 0;
1685 char PanelRes [255];
1686 char StripStatus [4096];
1687 sprintf(PanelRes,
"%d %d %d %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",
1688 TableVersionCondDB, n_tr_pphi,
1689 StripsOnPanel, arr_effphi, arr_erreffphi, arr_gapeffphi, arr_errgapeffphi,
1690 arr_resphi_cs1, arr_errresphi_cs1, arr_resphi_cs2,
1691 arr_errresphi_cs2, arr_resphi_csother, arr_errresphi_csother, arr_noisephi,
1692 arr_errnoisephi, arr_noisephi_cor, arr_errnoisephi_cor,
1693 arr_cl_sizephi, arr_errcl_sizephi, arr_rateCS1phi, arr_rateCS2phi,
1694 arr_rateCSmore2phi);
1695 sprintf(StripStatus,
"%s", PanelStripsStatus.c_str());
1696 std::string
cool_tag =
"RecoCondDB";
1703 EffThreshold) std::cout << stripProfile_name <<
" under THR " << EffThreshold <<
" " <<
1704 PanelCode <<
" ibin " << ibin <<
" h_EffPhi " << h_Eff->
GetBinContent(ibin)
1707 " h_GapEffEta " << h_GapEff->
GetBinContent(ibin_perp) <<
" cool_PhiEff "
1708 << effphi <<
" cool_GapEffPhi " << gapeffphi <<
1709 " --- Phi Summary " << PanelRes <<
" --- StripStatus " << StripStatus << std::endl;
1711 if (printout && EffThreshold) std::cout <<
"inCOOL_PHI_id_ntrk_panelEff_gapEff " << PanelCode <<
" " << n_tr_pphi <<
" " << (
int) (n_tr_pphi * effphi) <<
" " << (
int) (n_tr_pphi * gapeffphi) << std::endl;
1713 if (effphi == 0.0) countpaneleff0++;
1714 if (n_tr_pphi == 0) countpaneltrack0++;
1717 PanelStripsStatus.clear();
1718 PanelStripsStatusOK.clear();
1721 PanelStripsStatus.clear();
1722 PanelStripsStatusOK.clear();
1729 std::cout <<
"Count RC panels in DB " << countpanelindb <<
" Count RPCpanels in DB with zero efficiency " << countpaneleff0 <<
" Count RPCpanels in DB with zero track " << countpaneltrack0 << std::endl;
1731 std::cout <<
"Count RC panels in DB " << countpanelindb <<
" Count RPCpanels in DB with zero efficiency " << countpaneleff0 <<
" Count RPCpanels in DB with zero track " << countpaneltrack0 << std::endl;
1733 TDirectory* dirA =
f->GetDirectory(dir_sideA_track.c_str());
1737 writeIfValid(h_AverageEff_A);
1738 writeIfValid(h_AverageGapEff_A);
1739 writeIfValid(h_AverageRes_CS1_A);
1740 writeIfValid(h_AverageRes_CS1rms_A);
1741 writeIfValid(h_AverageRes_CS2_A);
1742 writeIfValid(h_AverageRes_CS2rms_A);
1743 writeIfValid(h_AverageRes_CSmore2_A);
1744 writeIfValid(h_AverageRes_CSmore2rms_A);
1745 writeIfValid(h_AverageOccupancy_A);
1746 writeIfValid(h_AverageCS_A);
1747 writeIfValid(h_AverageTime_A);
1748 writeIfValid(h_AverageNoiseCorr_A);
1749 writeIfValid(h_AverageNoiseTot_A);
1751 TDirectory* dirC =
f->GetDirectory(dir_sideC_track.c_str());
1754 writeIfValid(h_AverageEff_C);
1755 writeIfValid(h_AverageGapEff_C);
1756 writeIfValid(h_AverageRes_CS1_C);
1757 writeIfValid(h_AverageRes_CS1rms_C);
1758 writeIfValid(h_AverageRes_CS2_C);
1759 writeIfValid(h_AverageRes_CS2rms_C);
1760 writeIfValid(h_AverageRes_CSmore2_C);
1761 writeIfValid(h_AverageRes_CSmore2rms_C);
1762 writeIfValid(h_AverageOccupancy_C);
1763 writeIfValid(h_AverageCS_C);
1764 writeIfValid(h_AverageTime_C);
1765 writeIfValid(h_AverageNoiseCorr_C);
1766 writeIfValid(h_AverageNoiseTot_C);
1780 if (!(
f->Get(HistoName))) {