@@ -268,26 +268,44 @@ def get_reweighted_count(self, dfsel):
268268 # pylint: disable=line-too-long
269269 def process_efficiency_single (self , index ):
270270 out_file = TFile .Open (self .l_histoeff [index ], "recreate" )
271+ h_list = []
271272 for ibin2 in range (len (self .lvar2_binmin )):
272- stringbin2 = "_%s_%.2f_%.2f" % (self .v_var2_binning_gen , \
273- self .lvar2_binmin [ibin2 ], \
274- self .lvar2_binmax [ibin2 ])
273+ stringbin2 = "_%s_%.2f_%.2f" % (self .v_var2_binning_gen ,
274+ self .lvar2_binmin [ibin2 ],
275+ self .lvar2_binmax [ibin2 ])
275276 n_bins = len (self .lpt_finbinmin )
276277 analysis_bin_lims_temp = self .lpt_finbinmin .copy ()
277278 analysis_bin_lims_temp .append (self .lpt_finbinmax [n_bins - 1 ])
278279 analysis_bin_lims = array .array ('f' , analysis_bin_lims_temp )
279- h_gen_pr = TH1F ("h_gen_pr" + stringbin2 , "Prompt Generated in acceptance |y|<0.5" , \
280- n_bins , analysis_bin_lims )
281- h_presel_pr = TH1F ("h_presel_pr" + stringbin2 , "Prompt Reco in acc |#eta|<0.8 and sel" , \
282- n_bins , analysis_bin_lims )
283- h_sel_pr = TH1F ("h_sel_pr" + stringbin2 , "Prompt Reco and sel in acc |#eta|<0.8 and sel" , \
284- n_bins , analysis_bin_lims )
285- h_gen_fd = TH1F ("h_gen_fd" + stringbin2 , "FD Generated in acceptance |y|<0.5" , \
286- n_bins , analysis_bin_lims )
287- h_presel_fd = TH1F ("h_presel_fd" + stringbin2 , "FD Reco in acc |#eta|<0.8 and sel" , \
288- n_bins , analysis_bin_lims )
289- h_sel_fd = TH1F ("h_sel_fd" + stringbin2 , "FD Reco and sel in acc |#eta|<0.8 and sel" , \
290- n_bins , analysis_bin_lims )
280+
281+ def make_histo (name , title ,
282+ name_extra = stringbin2 ,
283+ bins = n_bins ,
284+ binning = analysis_bin_lims ):
285+ histo = TH1F (name + name_extra , title , bins , binning )
286+ h_list .append (histo )
287+ return histo
288+
289+ h_gen_pr = make_histo ("h_gen_pr" ,
290+ "Prompt Generated in acceptance |y|<0.5" )
291+ h_presel_pr = make_histo ("h_presel_pr" ,
292+ "Prompt Reco in acc |#eta|<0.8 and sel" )
293+ h_presel_pr_wotof = make_histo ("h_presel_pr_wotof" ,
294+ "Prompt Reco in acc woTOF |#eta|<0.8 and pre-sel" )
295+ h_presel_pr_wtof = make_histo ("h_presel_pr_wtof" ,
296+ "Prompt Reco in acc wTOF |#eta|<0.8 and pre-sel" )
297+ h_sel_pr = make_histo ("h_sel_pr" ,
298+ "Prompt Reco and sel in acc |#eta|<0.8 and sel" )
299+ h_sel_pr_wotof = make_histo ("h_sel_pr_wotof" ,
300+ "Prompt Reco and sel woTOF in acc |#eta|<0.8" )
301+ h_sel_pr_wtof = make_histo ("h_sel_pr_wtof" ,
302+ "Prompt Reco and sel wTOF in acc |#eta|<0.8" )
303+ h_gen_fd = make_histo ("h_gen_fd" ,
304+ "FD Generated in acceptance |y|<0.5" )
305+ h_presel_fd = make_histo ("h_presel_fd" ,
306+ "FD Reco in acc |#eta|<0.8 and sel" )
307+ h_sel_fd = make_histo ("h_sel_fd" ,
308+ "FD Reco and sel in acc |#eta|<0.8 and sel" )
291309
292310 bincounter = 0
293311 for ipt in range (self .p_nptfinbins ):
@@ -328,66 +346,38 @@ def process_efficiency_single(self, index):
328346 else :
329347 df_reco_sel_fd = df_reco_presel_fd .copy ()
330348
331- if self .corr_eff_mult [ibin2 ] is True :
332- val , err = self .get_reweighted_count (df_gen_sel_pr )
333- h_gen_pr .SetBinContent (bincounter + 1 , val )
334- h_gen_pr .SetBinError (bincounter + 1 , err )
335- val , err = self .get_reweighted_count (df_reco_presel_pr )
336- h_presel_pr .SetBinContent (bincounter + 1 , val )
337- h_presel_pr .SetBinError (bincounter + 1 , err )
338- val , err = self .get_reweighted_count (df_reco_sel_pr )
339- h_sel_pr .SetBinContent (bincounter + 1 , val )
340- h_sel_pr .SetBinError (bincounter + 1 , err )
341- #print("prompt efficiency tot ptbin=", bincounter, ", value = ",
342- # len(df_reco_sel_pr)/len(df_gen_sel_pr))
343-
344- val , err = self .get_reweighted_count (df_gen_sel_fd )
345- h_gen_fd .SetBinContent (bincounter + 1 , val )
346- h_gen_fd .SetBinError (bincounter + 1 , err )
347- val , err = self .get_reweighted_count (df_reco_presel_fd )
348- h_presel_fd .SetBinContent (bincounter + 1 , val )
349- h_presel_fd .SetBinError (bincounter + 1 , err )
350- val , err = self .get_reweighted_count (df_reco_sel_fd )
351- h_sel_fd .SetBinContent (bincounter + 1 , val )
352- h_sel_fd .SetBinError (bincounter + 1 , err )
353- #print("fd efficiency tot ptbin=", bincounter, ", value = ",
354- # len(df_reco_sel_fd)/len(df_gen_sel_fd))
355- else :
356- val = len (df_gen_sel_pr )
357- err = math .sqrt (val )
358- h_gen_pr .SetBinContent (bincounter + 1 , val )
359- h_gen_pr .SetBinError (bincounter + 1 , err )
360- val = len (df_reco_presel_pr )
361- err = math .sqrt (val )
362- h_presel_pr .SetBinContent (bincounter + 1 , val )
363- h_presel_pr .SetBinError (bincounter + 1 , err )
364- val = len (df_reco_sel_pr )
365- err = math .sqrt (val )
366- h_sel_pr .SetBinContent (bincounter + 1 , val )
367- h_sel_pr .SetBinError (bincounter + 1 , err )
349+ def set_content (df_to_use , histogram ,
350+ i_b = ibin2 , b_c = bincounter ):
351+ if self .corr_eff_mult [i_b ] is True :
352+ val , err = self .get_reweighted_count (df_to_use )
353+ histogram .SetBinContent (b_c + 1 , val )
354+ histogram .SetBinError (b_c + 1 , err )
355+ else :
356+ val = len (df_to_use )
357+ err = math .sqrt (val )
358+ histogram .SetBinContent (b_c + 1 , val )
359+ histogram .SetBinError (b_c + 1 , err )
368360
369- val = len (df_gen_sel_fd )
370- err = math .sqrt (val )
371- h_gen_fd .SetBinContent (bincounter + 1 , val )
372- h_gen_fd .SetBinError (bincounter + 1 , err )
373- val = len (df_reco_presel_fd )
374- err = math .sqrt (val )
375- h_presel_fd .SetBinContent (bincounter + 1 , val )
376- h_presel_fd .SetBinError (bincounter + 1 , err )
377- val = len (df_reco_sel_fd )
378- err = math .sqrt (val )
379- h_sel_fd .SetBinContent (bincounter + 1 , val )
380- h_sel_fd .SetBinError (bincounter + 1 , err )
361+ set_content (df_gen_sel_pr , h_gen_pr )
362+ if "nsigTOF_Pr_0" in df_reco_presel_pr :
363+ set_content (df_reco_presel_pr [df_reco_presel_pr .nsigTOF_Pr_0 < - 998 ],
364+ h_presel_pr_wotof )
365+ set_content (df_reco_presel_pr [df_reco_presel_pr .nsigTOF_Pr_0 > - 998 ],
366+ h_presel_pr_wtof )
367+ set_content (df_reco_presel_pr , h_presel_pr )
368+ set_content (df_reco_sel_pr , h_sel_pr )
369+ set_content (df_reco_sel_pr [df_reco_sel_pr .nsigTOF_Pr_0 < - 998 ], h_sel_pr_wotof )
370+ set_content (df_reco_sel_pr [df_reco_sel_pr .nsigTOF_Pr_0 > - 998 ], h_sel_pr_wtof )
371+ set_content (df_gen_sel_fd , h_gen_fd )
372+ set_content (df_reco_presel_fd , h_presel_fd )
373+ set_content (df_reco_sel_fd , h_sel_fd )
381374
382375 bincounter = bincounter + 1
383376
384377 out_file .cd ()
385- h_gen_pr .Write ()
386- h_presel_pr .Write ()
387- h_sel_pr .Write ()
388- h_gen_fd .Write ()
389- h_presel_fd .Write ()
390- h_sel_fd .Write ()
378+ for h in h_list :
379+ h .Write ()
380+ h_list = []
391381
392382 def process_efficiency (self ):
393383 print ("Doing efficiencies" , self .mcordata , self .period )
0 commit comments