2828from ROOT import (
2929 TF1 ,
3030 TH1 ,
31- TH1D ,
3231 TH1F ,
33- TH2F ,
34- TArrow ,
3532 TCanvas ,
36- TDirectory ,
3733 TFile ,
3834 TLegend ,
39- TLine ,
40- TPad ,
41- TPaveLabel ,
42- TPaveText ,
43- TStyle ,
44- TText ,
45- gInterpreter ,
46- gPad ,
4735 gROOT ,
4836 gStyle ,
4937 kBlue ,
6250)
6351from machine_learning_hep .hf_pt_spectrum import hf_pt_spectrum
6452from machine_learning_hep .logger import get_logger
65- from machine_learning_hep .root import save_root_object
6653from machine_learning_hep .utils .hist import get_dim , project_hist
6754
6855
@@ -144,7 +131,8 @@ def __init__(self, datap, case, typean, period):
144131 self .fit_func_bkg = {}
145132 self .fit_range = {}
146133
147- self .path_fig = Path (f"fig/{ self .case } /{ self .typean } " )
134+ # self.path_fig = Path(f"fig/{self.case}/{self.typean}")
135+ self .path_fig = Path (f"{ os .path .expandvars (self .d_resultsallpdata )} /fig" )
148136 for folder in ["qa" , "fit" , "roofit" , "sideband" , "signalextr" , "fd" , "uf" ]:
149137 (self .path_fig / folder ).mkdir (parents = True , exist_ok = True )
150138
@@ -156,6 +144,7 @@ def __init__(self, datap, case, typean, period):
156144
157145 self .p_anahpt = datap ["analysis" ]["anahptspectrum" ]
158146 self .p_fd_method = datap ["analysis" ]["fd_method" ]
147+ self .p_crosssec_prompt = datap ["analysis" ]["crosssec_prompt" ]
159148 self .p_cctype = datap ["analysis" ]["cctype" ]
160149 self .p_sigmamb = datap ["analysis" ]["sigmamb" ]
161150 self .p_inputfonllpred = datap ["analysis" ]["inputfonllpred" ]
@@ -190,7 +179,8 @@ def __init__(self, datap, case, typean, period):
190179 # region helpers
191180 def _save_canvas (self , canvas , filename ):
192181 # folder = self.d_resultsallpmc if mcordata == 'mc' else self.d_resultsallpdata
193- canvas .SaveAs (f"fig/{ self .case } /{ self .typean } /{ filename } " )
182+ # canvas.SaveAs(f"fig/{self.case}/{self.typean}/{filename}")
183+ canvas .SaveAs (f"{ self .path_fig } /{ filename } " )
194184
195185 def _save_hist (self , hist , filename , option = "" ):
196186 if not hist :
@@ -378,12 +368,10 @@ def fit(self):
378368
379369 if self .cfg ("mass_roofit" ):
380370 for entry in self .cfg ("mass_roofit" , []):
381- if lvl := entry .get ("level" ):
382- if lvl != level :
383- continue
384- if ptspec := entry .get ("ptrange" ):
385- if ptspec [0 ] > ptrange [0 ] or ptspec [1 ] < ptrange [1 ]:
386- continue
371+ if (lvl := entry .get ("level" )) and lvl != level :
372+ continue
373+ if (ptspec := entry .get ("ptrange" )) and (ptspec [0 ] > ptrange [0 ] or ptspec [1 ] < ptrange [1 ]):
374+ continue
387375 fitcfg = entry
388376 break
389377 self .logger .debug ("Using fit config for %i: %s" , ipt , fitcfg )
@@ -491,14 +479,8 @@ def efficiency(self):
491479 legsl .SetTextSize (0.035 )
492480
493481 for imult in range (self .p_nbin2 ):
494- stringbin2 = "_{}_{:.2f}_{:.2f}" .format (
495- self .v_var2_binning , self .lvar2_binmin [imult ], self .lvar2_binmax [imult ]
496- )
497- legeffstring = "{:.1f} #leq {} < {:.1f}" .format (
498- self .lvar2_binmin [imult ],
499- self .p_latexbin2var ,
500- self .lvar2_binmax [imult ],
501- )
482+ stringbin2 = f"_{ self .v_var2_binning } _{ self .lvar2_binmin [imult ]:.2f} _{ self .lvar2_binmax [imult ]:.2f} "
483+ legeffstring = f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
502484
503485 if self .signal_loss :
504486 h_gen_pr_sl = lfileeff .Get ("h_signal_loss_gen_pr" + stringbin2 )
@@ -571,13 +553,9 @@ def efficiency(self):
571553 legeffFD .SetTextSize (0.035 )
572554
573555 for imult in range (self .p_nbin2 ):
574- stringbin2 = "_{}_{:.2f}_{:.2f}" .format (
575- self .v_var2_binning , self .lvar2_binmin [imult ], self .lvar2_binmax [imult ]
576- )
577- legeffFDstring = "{:.1f} #leq {} < {:.1f}" .format (
578- self .lvar2_binmin [imult ],
579- self .p_latexbin2var ,
580- self .lvar2_binmax [imult ],
556+ stringbin2 = f"_{ self .v_var2_binning } _{ self .lvar2_binmin [imult ]:.2f} _{ self .lvar2_binmax [imult ]:.2f} "
557+ legeffFDstring = (
558+ f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
581559 )
582560
583561 if self .signal_loss :
@@ -674,10 +652,8 @@ def plotter(self):
674652 hcross .GetYaxis ().SetTitle (f"d#sigma/d#it{{p}}_{{T}} ({ self .p_latexnhadron } ) { self .typean } " )
675653 hcross .SetName ("hcross%d" % imult )
676654 hcross .GetYaxis ().SetRangeUser (1e1 , 1e10 )
677- legvsvar1endstring = "{:.1f} < {} < {:.1f}" .format (
678- self .lvar2_binmin [imult ],
679- self .p_latexbin2var ,
680- self .lvar2_binmax [imult ],
655+ legvsvar1endstring = (
656+ f"{ self .lvar2_binmin [imult ]:.1f} < { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
681657 )
682658 legvsvar1 .AddEntry (hcross , legvsvar1endstring , "LEP" )
683659 hcross .Draw ("same" )
@@ -781,14 +757,12 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
781757 # pylint: disable=logging-not-lazy
782758 self .logger .warning ("Number of events %d for mult bin %d" % (norm , imult ))
783759
760+ if self .p_nevents is not None :
761+ norm = self .p_nevents
784762 if self .p_fprompt_from_mb :
785763 if imult == 0 :
786- fileoutcrossmb = "{}/finalcross{}{}mult0.root" .format (
787- self .d_resultsallpdata , self .case , self .typean
788- )
764+ fileoutcrossmb = f"{ self .d_resultsallpdata } /finalcross{ self .case } { self .typean } mult0.root"
789765 output_prompt = []
790- if self .p_nevents is not None :
791- norm = self .p_nevents
792766 self .logger .warning ("Corrected Number of events %d for mult bin %d" % (norm , imult ))
793767 hf_pt_spectrum (
794768 self .p_anahpt ,
@@ -803,6 +777,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
803777 nameyield ,
804778 norm ,
805779 self .p_sigmamb ,
780+ self .p_crosssec_prompt ,
806781 output_prompt ,
807782 fileoutcrossmb ,
808783 )
@@ -824,10 +799,12 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
824799 nameyield ,
825800 norm ,
826801 self .p_sigmamb ,
802+ self .p_crosssec_prompt ,
827803 output_prompt ,
828804 fileoutcrossmult ,
829805 )
830806 else :
807+ output_prompt = []
831808 hf_pt_spectrum (
832809 self .p_anahpt ,
833810 self .p_br ,
@@ -841,6 +818,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
841818 nameyield ,
842819 norm ,
843820 self .p_sigmamb ,
821+ self .p_crosssec_prompt ,
844822 output_prompt ,
845823 fileoutcrossmult ,
846824 )
@@ -884,17 +862,13 @@ def plotternormyields(self):
884862 hcross .GetYaxis ().SetTitleOffset (1.3 )
885863 hcross .GetYaxis ().SetTitle (f"Corrected yield/events ({ self .p_latexnhadron } ) { self .typean } " )
886864 hcross .GetYaxis ().SetRangeUser (1e-10 , 1 )
887- legvsvar1endstring = "{:.1f} #leq {} < {:.1f}" .format (
888- self .lvar2_binmin [imult ],
889- self .p_latexbin2var ,
890- self .lvar2_binmax [imult ],
865+ legvsvar1endstring = (
866+ f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
891867 )
892868 legvsvar1 .AddEntry (hcross , legvsvar1endstring , "LEP" )
893869 hcross .Draw ("same" )
894870 legvsvar1 .Draw ()
895871 cCrossvsvar1 .SaveAs (
896- "{}/CorrectedYieldsNorm{}{}Vs{}.eps" .format (
897- self .d_resultsallpdata , self .case , self .typean , self .v_var_binning
898- )
872+ f"{ self .d_resultsallpdata } /CorrectedYieldsNorm{ self .case } { self .typean } Vs{ self .v_var_binning } .eps"
899873 )
900874 fileoutcrosstot .Close ()
0 commit comments