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,12 @@ 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 (
374+ ptspec [ 0 ] > ptrange [ 0 ] or ptspec [ 1 ] < ptrange [ 1 ]
375+ ) :
376+ continue
387377 fitcfg = entry
388378 break
389379 self .logger .debug ("Using fit config for %i: %s" , ipt , fitcfg )
@@ -491,14 +481,8 @@ def efficiency(self):
491481 legsl .SetTextSize (0.035 )
492482
493483 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- )
484+ stringbin2 = f"_{ self .v_var2_binning } _{ self .lvar2_binmin [imult ]:.2f} _{ self .lvar2_binmax [imult ]:.2f} "
485+ legeffstring = f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
502486
503487 if self .signal_loss :
504488 h_gen_pr_sl = lfileeff .Get ("h_signal_loss_gen_pr" + stringbin2 )
@@ -571,13 +555,9 @@ def efficiency(self):
571555 legeffFD .SetTextSize (0.035 )
572556
573557 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 ],
558+ stringbin2 = f"_{ self .v_var2_binning } _{ self .lvar2_binmin [imult ]:.2f} _{ self .lvar2_binmax [imult ]:.2f} "
559+ legeffFDstring = (
560+ f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
581561 )
582562
583563 if self .signal_loss :
@@ -674,10 +654,8 @@ def plotter(self):
674654 hcross .GetYaxis ().SetTitle (f"d#sigma/d#it{{p}}_{{T}} ({ self .p_latexnhadron } ) { self .typean } " )
675655 hcross .SetName ("hcross%d" % imult )
676656 hcross .GetYaxis ().SetRangeUser (1e1 , 1e10 )
677- legvsvar1endstring = "{:.1f} < {} < {:.1f}" .format (
678- self .lvar2_binmin [imult ],
679- self .p_latexbin2var ,
680- self .lvar2_binmax [imult ],
657+ legvsvar1endstring = (
658+ f"{ self .lvar2_binmin [imult ]:.1f} < { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
681659 )
682660 legvsvar1 .AddEntry (hcross , legvsvar1endstring , "LEP" )
683661 hcross .Draw ("same" )
@@ -781,14 +759,12 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
781759 # pylint: disable=logging-not-lazy
782760 self .logger .warning ("Number of events %d for mult bin %d" % (norm , imult ))
783761
762+ if self .p_nevents is not None :
763+ norm = self .p_nevents
784764 if self .p_fprompt_from_mb :
785765 if imult == 0 :
786- fileoutcrossmb = "{}/finalcross{}{}mult0.root" .format (
787- self .d_resultsallpdata , self .case , self .typean
788- )
766+ fileoutcrossmb = f"{ self .d_resultsallpdata } /finalcross{ self .case } { self .typean } mult0.root"
789767 output_prompt = []
790- if self .p_nevents is not None :
791- norm = self .p_nevents
792768 self .logger .warning ("Corrected Number of events %d for mult bin %d" % (norm , imult ))
793769 hf_pt_spectrum (
794770 self .p_anahpt ,
@@ -803,6 +779,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
803779 nameyield ,
804780 norm ,
805781 self .p_sigmamb ,
782+ self .p_crosssec_prompt ,
806783 output_prompt ,
807784 fileoutcrossmb ,
808785 )
@@ -824,10 +801,12 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
824801 nameyield ,
825802 norm ,
826803 self .p_sigmamb ,
804+ self .p_crosssec_prompt ,
827805 output_prompt ,
828806 fileoutcrossmult ,
829807 )
830808 else :
809+ output_prompt = []
831810 hf_pt_spectrum (
832811 self .p_anahpt ,
833812 self .p_br ,
@@ -841,6 +820,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
841820 nameyield ,
842821 norm ,
843822 self .p_sigmamb ,
823+ self .p_crosssec_prompt ,
844824 output_prompt ,
845825 fileoutcrossmult ,
846826 )
@@ -884,17 +864,13 @@ def plotternormyields(self):
884864 hcross .GetYaxis ().SetTitleOffset (1.3 )
885865 hcross .GetYaxis ().SetTitle (f"Corrected yield/events ({ self .p_latexnhadron } ) { self .typean } " )
886866 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 ],
867+ legvsvar1endstring = (
868+ f"{ self .lvar2_binmin [imult ]:.1f} #leq { self .p_latexbin2var } < { self .lvar2_binmax [imult ]:.1f} "
891869 )
892870 legvsvar1 .AddEntry (hcross , legvsvar1endstring , "LEP" )
893871 hcross .Draw ("same" )
894872 legvsvar1 .Draw ()
895873 cCrossvsvar1 .SaveAs (
896- "{}/CorrectedYieldsNorm{}{}Vs{}.eps" .format (
897- self .d_resultsallpdata , self .case , self .typean , self .v_var_binning
898- )
874+ f"{ self .d_resultsallpdata } /CorrectedYieldsNorm{ self .case } { self .typean } Vs{ self .v_var_binning } .eps"
899875 )
900876 fileoutcrosstot .Close ()
0 commit comments