29 std::cout <<
"--> BJetTaggingNormalise: Adjusting ranges of d0, z0 and d0Sig, z0Sig"
36 TKey* key0 = (TKey*) nextcd0();
38 TDirectory* dir0 =
dynamic_cast<TDirectory*
> (key0->ReadObj());
42 TIter next_run(
f->GetListOfKeys());
46 while ((key_run =
dynamic_cast<TKey*
> (next_run())) != 0) {
48 std::cout <<
"--> BJetTaggingNormalise: Getting run " << key_run << std::endl;
50 TObject* obj_run = key_run->ReadObj();
51 TDirectory* tdir_run =
dynamic_cast<TDirectory*
> (obj_run);
60 TString run_dir = tdir_run->GetName();
61 if (!run_dir.Contains(
"run")) {
62 std::cerr <<
"--> BJetTaggingNormalise: no run found" << std::endl;
66 std::cout <<
"--> BJetTaggingNormalise: Getting run no. " << run_dir << std::endl;
70 TString diag_dir = run_dir +
"/JetTagging";
74 std::cout <<
"--> BJetTaggingNormalise: directory " << diag_dir << std::endl;
76 if (!(
dir =
f->GetDirectory(diag_dir))) {
77 std::cerr <<
"--> BJetTaggingNormalise: directory " << diag_dir <<
" not found."
82 std::cout <<
"--> BJetTaggingNormalise: Setting the to process histgrams"
88 std::vector < TString > nomHistosNames;
89 std::vector < TString > denHistosNames;
91 nomHistosNames.push_back(
"track_selector_eff");
92 nomHistosNames.push_back(
"track_selector_eff_LS");
94 nomHistosNames.push_back(
"ip3d_tag_def_rate_2D");
96 nomHistosNames.push_back(
"ip3d_tag_neg_rate_2D");
97 nomHistosNames.push_back(
"ip3d_tag_pos_rate_2D");
102 nomHistosNames.push_back(
"tracks_pTMin_2D");
103 nomHistosNames.push_back(
"tracks_d0Max_2D");
104 nomHistosNames.push_back(
"tracks_z0Max_2D");
105 nomHistosNames.push_back(
"tracks_sigd0Max_2D");
106 nomHistosNames.push_back(
"tracks_sigz0Max_2D");
107 nomHistosNames.push_back(
"tracks_etaMax_2D");
108 nomHistosNames.push_back(
"tracks_nHitBLayer_2D");
109 nomHistosNames.push_back(
"tracks_deadBLayer_2D");
110 nomHistosNames.push_back(
"tracks_nHitPix_2D");
111 nomHistosNames.push_back(
"tracks_nHitSct_2D");
112 nomHistosNames.push_back(
"tracks_nHitSi_2D");
113 nomHistosNames.push_back(
"tracks_nHitTrt_2D");
114 nomHistosNames.push_back(
"tracks_nHitTrtHighE_2D");
115 nomHistosNames.push_back(
"tracks_fitChi2_2D");
116 nomHistosNames.push_back(
"tracks_fitProb_2D");
117 nomHistosNames.push_back(
"tracks_fitChi2OnNdfMax_2D");
119 denHistosNames.push_back(
"track_selector_all");
120 denHistosNames.push_back(
"track_selector_all_LS");
122 denHistosNames.push_back(
"jet_2D_all");
123 denHistosNames.push_back(
"jet_2D_all");
124 denHistosNames.push_back(
"jet_2D_all");
133 denHistosNames.push_back(
"tracks_all_2D");
134 denHistosNames.push_back(
"tracks_all_2D");
135 denHistosNames.push_back(
"tracks_all_2D");
136 denHistosNames.push_back(
"tracks_all_2D");
137 denHistosNames.push_back(
"tracks_all_2D");
138 denHistosNames.push_back(
"tracks_all_2D");
139 denHistosNames.push_back(
"tracks_all_2D");
140 denHistosNames.push_back(
"tracks_all_2D");
141 denHistosNames.push_back(
"tracks_all_2D");
142 denHistosNames.push_back(
"tracks_all_2D");
143 denHistosNames.push_back(
"tracks_all_2D");
144 denHistosNames.push_back(
"tracks_all_2D");
145 denHistosNames.push_back(
"tracks_all_2D");
146 denHistosNames.push_back(
"tracks_all_2D");
147 denHistosNames.push_back(
"tracks_all_2D");
148 denHistosNames.push_back(
"tracks_all_2D");
151 TH2F* workingHistogramNom(0);
152 TH2F* workingHistogramDen(0);
154 TString nomHistos, workingHistogramNameNom;
155 TString denHistos, workingHistogramNameDen;
157 for (
unsigned int i = 0;
i < nomHistosNames.size();
i++) {
158 workingHistogramNameNom = (nomHistosNames[
i]);
159 workingHistogramNameDen = (denHistosNames[
i]);
160 nomHistos = diag_dir +
"/" + workingHistogramNameNom;
161 denHistos = diag_dir +
"/" + workingHistogramNameDen;
166 if (!
f->Get(nomHistos)) {
168 std::cerr <<
"--> BBJetTaggingNormalise: no such histogram " << nomHistos
173 if (!
f->Get(denHistos)) {
175 std::cerr <<
"--> BJetTaggingNormalise: no such histogram " << denHistos
181 workingHistogramNom =
dynamic_cast<TH2F*
> (
f->Get(nomHistos));
182 workingHistogramDen =
dynamic_cast<TH2F*
> (
f->Get(denHistos));
184 if (workingHistogramNom == 0 || workingHistogramDen == 0) {
195 std::cout << nomHistos <<
"/" << denHistos <<
" integral before "
196 << workingHistogramNom->Integral() << std::endl;
198 workingHistogramNom->Divide(workingHistogramDen);
201 std::cout <<
"integral after " << workingHistogramNom->Integral() << std::endl;
205 workingHistogramNom->Write(
"", TObject::kOverwrite);
212 std::vector < TString > nom1DHistosNames;
213 std::vector < TString > den1DHistosNames;
214 std::vector < TString > eff1DHistosNames;
216 nom1DHistosNames.push_back(
"jet_top_tagged");
217 nom1DHistosNames.push_back(
"jet_pt_top_tagged");
218 nom1DHistosNames.push_back(
"tag_MV_w_phi_sum60OP");
219 nom1DHistosNames.push_back(
"tag_MV_w_phi_sum70OP");
220 nom1DHistosNames.push_back(
"tag_MV_w_phi_sum77OP");
221 nom1DHistosNames.push_back(
"tag_MV_w_phi_sum85OP");
222 nom1DHistosNames.push_back(
"tag_MV_w_eta_sum60OP");
223 nom1DHistosNames.push_back(
"tag_MV_w_eta_sum70OP");
224 nom1DHistosNames.push_back(
"tag_MV_w_eta_sum77OP");
225 nom1DHistosNames.push_back(
"tag_MV_w_eta_sum85OP");
226 nom1DHistosNames.push_back(
"tag_MV_w_sj_phi_sum60OP");
227 nom1DHistosNames.push_back(
"tag_MV_w_sj_phi_sum70OP");
228 nom1DHistosNames.push_back(
"tag_MV_w_sj_phi_sum77OP");
229 nom1DHistosNames.push_back(
"tag_MV_w_sj_phi_sum85OP");
230 nom1DHistosNames.push_back(
"tag_MV_w_sj_eta_sum60OP");
231 nom1DHistosNames.push_back(
"tag_MV_w_sj_eta_sum70OP");
232 nom1DHistosNames.push_back(
"tag_MV_w_sj_eta_sum77OP");
233 nom1DHistosNames.push_back(
"tag_MV_w_sj_eta_sum85OP");
235 den1DHistosNames.push_back(
"jet_top");
236 den1DHistosNames.push_back(
"jet_pt_top");
237 den1DHistosNames.push_back(
"tag_MV_w_phi_sumAll");
238 den1DHistosNames.push_back(
"tag_MV_w_phi_sumAll");
239 den1DHistosNames.push_back(
"tag_MV_w_phi_sumAll");
240 den1DHistosNames.push_back(
"tag_MV_w_phi_sumAll");
241 den1DHistosNames.push_back(
"tag_MV_w_eta_sumAll");
242 den1DHistosNames.push_back(
"tag_MV_w_eta_sumAll");
243 den1DHistosNames.push_back(
"tag_MV_w_eta_sumAll");
244 den1DHistosNames.push_back(
"tag_MV_w_eta_sumAll");
245 den1DHistosNames.push_back(
"tag_MV_w_sj_phi_sumAll");
246 den1DHistosNames.push_back(
"tag_MV_w_sj_phi_sumAll");
247 den1DHistosNames.push_back(
"tag_MV_w_sj_phi_sumAll");
248 den1DHistosNames.push_back(
"tag_MV_w_sj_phi_sumAll");
249 den1DHistosNames.push_back(
"tag_MV_w_sj_eta_sumAll");
250 den1DHistosNames.push_back(
"tag_MV_w_sj_eta_sumAll");
251 den1DHistosNames.push_back(
"tag_MV_w_sj_eta_sumAll");
252 den1DHistosNames.push_back(
"tag_MV_w_sj_eta_sumAll");
254 eff1DHistosNames.push_back(
"jet_top_eff");
255 eff1DHistosNames.push_back(
"jet_pt_top_eff");
256 eff1DHistosNames.push_back(
"tag_MV_w_phi_frac60OP");
257 eff1DHistosNames.push_back(
"tag_MV_w_phi_frac70OP");
258 eff1DHistosNames.push_back(
"tag_MV_w_phi_frac77OP");
259 eff1DHistosNames.push_back(
"tag_MV_w_phi_frac85OP");
260 eff1DHistosNames.push_back(
"tag_MV_w_eta_frac60OP");
261 eff1DHistosNames.push_back(
"tag_MV_w_eta_frac70OP");
262 eff1DHistosNames.push_back(
"tag_MV_w_eta_frac77OP");
263 eff1DHistosNames.push_back(
"tag_MV_w_eta_frac85OP");
264 eff1DHistosNames.push_back(
"tag_MV_w_sj_phi_frac60OP");
265 eff1DHistosNames.push_back(
"tag_MV_w_sj_phi_frac70OP");
266 eff1DHistosNames.push_back(
"tag_MV_w_sj_phi_frac77OP");
267 eff1DHistosNames.push_back(
"tag_MV_w_sj_phi_frac85OP");
268 eff1DHistosNames.push_back(
"tag_MV_w_sj_eta_frac60OP");
269 eff1DHistosNames.push_back(
"tag_MV_w_sj_eta_frac70OP");
270 eff1DHistosNames.push_back(
"tag_MV_w_sj_eta_frac77OP");
271 eff1DHistosNames.push_back(
"tag_MV_w_sj_eta_frac85OP");
273 TH1F* working1DHistogramNom(0);
274 TH1F* working1DHistogramDen(0);
275 TH1F* working1DHistogramEff(0);
277 TString nom1DHistos, working1DHistogramNameNom;
278 TString den1DHistos, working1DHistogramNameDen;
279 TString eff1DHistos, working1DHistogramNameEff;
281 for (
unsigned int i = 0;
i < nom1DHistosNames.size();
i++) {
282 working1DHistogramNameNom = (nom1DHistosNames[
i]);
283 working1DHistogramNameDen = (den1DHistosNames[
i]);
284 working1DHistogramNameEff = (eff1DHistosNames[
i]);
285 nom1DHistos = diag_dir +
"/" + working1DHistogramNameNom;
286 den1DHistos = diag_dir +
"/" + working1DHistogramNameDen;
287 eff1DHistos = diag_dir +
"/" + working1DHistogramNameEff;
292 if (!
f->Get(nom1DHistos)) {
294 std::cerr <<
"--> BBJetTaggingNormalise: no such 1D histogram " << nom1DHistos
299 if (!
f->Get(den1DHistos)) {
301 std::cerr <<
"--> BJetTaggingNormalise: no such 1D histogram " << den1DHistos
306 if (!
f->Get(eff1DHistos)) {
308 std::cerr <<
"--> BJetTaggingNormalise: no such 1D histogram " << eff1DHistos
314 working1DHistogramNom =
dynamic_cast<TH1F*
> (
f->Get(nom1DHistos));
315 working1DHistogramDen =
dynamic_cast<TH1F*
> (
f->Get(den1DHistos));
316 working1DHistogramEff =
dynamic_cast<TH1F*
> (
f->Get(eff1DHistos));
318 if (!working1DHistogramNom or !working1DHistogramDen or !working1DHistogramEff) {
329 std::cout << nom1DHistos <<
"/" << den1DHistos <<
" integral before "
330 << working1DHistogramNom->Integral() << std::endl;
332 working1DHistogramEff->Divide(working1DHistogramNom, working1DHistogramDen, 1., 1.,
"B");
335 std::cout <<
"integral after " << working1DHistogramEff->Integral() << std::endl;
339 working1DHistogramEff->Write(
"", TObject::kOverwrite);
345 std::cout <<
"--> BJetTaggingNormalise: Finished" << std::endl;