diff --git a/machine_learning_hep/analysis/analyzerdhadrons.py b/machine_learning_hep/analysis/analyzerdhadrons.py
index 24672b0303..ac2ce043a7 100644
--- a/machine_learning_hep/analysis/analyzerdhadrons.py
+++ b/machine_learning_hep/analysis/analyzerdhadrons.py
@@ -304,7 +304,7 @@ def fit(self):
self.lpt_finbinmax[ipt],
lpt_probcutfin[ipt],
)
- h_invmass = rfile.Get("hmass" + suffix)
+ h_invmass = rfile.Get("hmass_" + suffix)
# Rebin
h_invmass.Rebin(self.p_rebin[ipt])
if h_invmass.GetEntries() < 100: # TODO: reconsider criterion
@@ -341,6 +341,7 @@ def fit(self):
roows.var(fixpar).setConstant(True)
if h_invmass.GetEntries() == 0:
continue
+
roo_res, roo_ws = self._roofit_mass(
level,
h_invmass,
@@ -418,7 +419,7 @@ def efficiency(self):
print(self.n_fileff)
lfileeff = TFile.Open(self.n_fileff)
lfileeff.ls()
- fileouteff = TFile.Open(f"{self.d_resultsallpmc}/{self.efficiency_filename}{self.case}{self.typean}.root", "recreate")
+ fileouteff = TFile.Open(f"{self.d_resultsallpmc}/efficiencies{self.case}{self.typean}.root", "recreate")
cEff = TCanvas("cEff", "The Fit Canvas")
cEff.SetCanvasSize(1900, 1500)
cEff.SetWindowSize(500, 500)
@@ -494,7 +495,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
if not os.path.exists(yield_filename):
self.logger.fatal("Yield file %s could not be found", yield_filename)
- fileouteff = f"{self.d_resultsallpmc}/{self.efficiency_filename}{self.case}{self.typean}.root"
+ fileouteff = f"{self.d_resultsallpmc}/efficiencies{self.case}{self.typean}.root"
if not os.path.exists(fileouteff):
self.logger.fatal("Efficiency file %s could not be found", fileouteff)
@@ -506,12 +507,13 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
histonorm = TH1F("histonorm", "histonorm", 1, 0, 1)
+ filemass = TFile.Open(self.n_filemass)
+ hevents = filemass.Get("all_events")
+ hselevents = filemass.Get("sel_events")
+
if self.p_nevents is not None:
selnorm = self.p_nevents
else:
- filemass = TFile.Open(self.n_filemass)
- hevents = filemass.Get("all_events")
- hselevents = filemass.Get("sel_events")
norm, selnorm = self.calculate_norm(self.logger, hevents, hselevents)
histonorm.SetBinContent(1, selnorm)
self.logger.warning("Number of events %d", norm)
@@ -554,9 +556,7 @@ def makenormyields(self): # pylint: disable=import-outside-toplevel, too-many-b
f_fileoutcross = TFile.Open(fileoutcross)
if f_fileoutcross:
hcross = f_fileoutcross.Get("hptspectrum")
- hcrossbr = f_fileoutcross.Get("hptspectrum_wo_br")
fileoutcrosstot.cd()
hcross.Write()
- hcrossbr.Write()
histonorm.Write()
fileoutcrosstot.Close()
diff --git a/machine_learning_hep/analysis/analyzerdhadrons_mult.py b/machine_learning_hep/analysis/analyzerdhadrons_mult.py
index cd62e163eb..2350205ae9 100644
--- a/machine_learning_hep/analysis/analyzerdhadrons_mult.py
+++ b/machine_learning_hep/analysis/analyzerdhadrons_mult.py
@@ -50,7 +50,7 @@
)
from machine_learning_hep.hf_pt_spectrum import hf_pt_spectrum
from machine_learning_hep.logger import get_logger
-from machine_learning_hep.utils.hist import get_dim, project_hist
+from machine_learning_hep.utils.hist import get_dim
# pylint: disable=too-few-public-methods, too-many-instance-attributes, too-many-statements, fixme
@@ -320,7 +320,7 @@ def fit(self):
for ipt in range(len(self.lpt_finbinmin)):
lpt_probcutfin[ipt] = self.lpt_probcutfin_tmp[self.bin_matching[ipt]]
self.logger.debug("fitting %s - %i - %i", level, ipt, ibin2)
- roows = self.roows.get(ipt)
+ roows = self.roows.get((ibin2, ipt))
if self.mltype == "MultiClassification":
suffix = "%s%d_%d_%.2f%.2f%s_%.2f_%.2f" % (
self.v_var_binning,
@@ -342,7 +342,7 @@ def fit(self):
self.lvar2_binmin[ibin2],
self.lvar2_binmax[ibin2],
)
- h_invmass = rfile.Get("hmass" + suffix)
+ h_invmass = rfile.Get("hmass_" + suffix)
# Rebin
h_invmass.Rebin(self.p_rebin[ipt])
if h_invmass.GetEntries() < 100: # TODO: reconsider criterion
@@ -378,12 +378,14 @@ def fit(self):
break
self.logger.debug("Using fit config for %i: %s", ipt, fitcfg)
if datasel := fitcfg.get("datasel"):
- h = rfile.Get(f"h_mass-pthf_{datasel}")
- h_invmass = project_hist(h, [0], {1: (ipt + 1, ipt + 1)})
+ h_invmass = rfile.Get(f"hmass_{datasel}_{suffix}")
for fixpar in fitcfg.get("fix_params", []):
if roows.var(fixpar):
roows.var(fixpar).setConstant(True)
+ for par in fitcfg.get("free_params", []):
+ if roows.var(par):
+ roows.var(par).setConstant(False)
if h_invmass.GetEntries() == 0:
continue
@@ -405,8 +407,8 @@ def fit(self):
)
# if level == 'mc':
# roo_ws.Print()
- self.roo_ws[level][ipt] = roo_ws
- self.roows[ipt] = roo_ws
+ self.roows[(ibin2, ipt)] = roo_ws.Clone()
+ self.roo_ws[(level, ibin2, ipt)] = roo_ws.Clone()
if roo_res.status() == 0:
if level in ("data", "mc_sig"):
self.fit_mean[level][ipt] = roo_ws.var(self.p_param_names["gauss_mean"]).getValV()
diff --git a/machine_learning_hep/data/data_run3/database_ml_parameters_Bplus_ml.yml b/machine_learning_hep/data/data_run3/database_ml_parameters_Bplus_ml.yml
new file mode 100644
index 0000000000..b05c5041e4
--- /dev/null
+++ b/machine_learning_hep/data/data_run3/database_ml_parameters_Bplus_ml.yml
@@ -0,0 +1,882 @@
+---
+#############################################################################
+## © Copyright CERN 2018. All rights not expressly granted are reserved. ##
+## Author: Gian.Michele.Innocenti@cern.ch ##
+## This program is free software: you can redistribute it and/or modify it ##
+## under the terms of the GNU General Public License as published by the ##
+## Free Software Foundation, either version 3 of the License, or (at your ##
+## option) any later version. This program is distributed in the hope that ##
+## it will be useful, but WITHOUT ANY WARRANTY; without even the implied ##
+## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ##
+## See the GNU General Public License for more details. ##
+## You should have received a copy of the GNU General Public License ##
+## along with this program. if not, see . ##
+#############################################################################
+
+BPlus_ml:
+ doml: true
+ mass: 5.279
+ sel_reco_unp: "fPt > 1."
+ sel_reco_singletrac_unp: null
+ #sel_gen_unp: "fPt > 1. and fPt < 10."
+ sel_gen_unp: null
+ sel_cen_unp: null
+ sel_good_evt_unp: null
+ #sel_reco_skim: ["mlBkgScore < 0.2", "mlBkgScore < 0.4", "mlBkgScore < 0.6", "mlBkgScore < .08"]
+ sel_reco_skim: [null, null, null, null] # sel_skim_binmin bins
+ sel_gen_skim: [null, null, null, null] # sel_skim_binmin bins
+ sel_skim_binmin: [2, 4, 6, 12] # skimming pt bins (sel_skim_binmin bins)
+ sel_skim_binmax: [4, 6, 12, 24] # skimming pt bins (sel_skim_binmin bins)
+ var_binning: fPt
+ dofullevtmerge: false
+
+ # obsolete, to be removed
+ var_cand: fCandidateSelFlag
+ bitmap_sel:
+ var_name: fFlagMcMatchRec
+ var_name_gen: fFlagMcMatchGen
+ var_name_origgen: fOriginMcGen
+ var_name_origrec: fOriginMcRec
+ var_isstd: isstd
+ var_ismcsignal: ismcsignal
+ var_ismcprompt: ismcprompt
+ var_ismcfd: ismcfd
+ var_ismcbkg: ismcbkg
+ var_ismcrefl: ismcrefl
+ isstd: [[1], []]
+ ismcsignal: [[0], []]
+ ismcprompt: [[0], []]
+ ismcfd: [[1], []]
+ ismcbkg: [[], [1]]
+ ismcrefl: [[1], [1]] # probably missing from tree creator
+
+ #region dfs
+ dfs:
+ read:
+ evtorig:
+ level: all
+ index: fIndexHFBPCOLLBASES
+ trees:
+ O2hfbpcollbase: [fPosX, fPosY, fPosZ, fNumContrib, fMultZeqNTracksPV, fCentFT0A, fCentFT0C, fCentFT0M, fCentFV0A]
+ extra:
+ fIsEventReject: 0
+
+ reco:
+ level: all
+ index: fIndexHfHBpBases
+ trees:
+ O2hfbpbase: [fIndexHFBPCOLLBASES, fPt, fEta, fPhi, fM, fY]
+ O2hfbppar: [fCpa, fCpaXY, fChi2PCA, fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fPtProng0, fPtProng1, fImpactParameter0, fImpactParameter1, fImpactParameterNormalised0, fImpactParameterNormalised1, fMaxNormalisedDeltaIP, fImpactParameterProduct, fNSigTpcTofPiExpPi]
+ O2hfbppard0: [fCpaCharm, fDecayLengthCharm, fImpactParameter0Charm, fImpactParameter1Charm, fImpactParameterProductCharm, fNSigTpcTofPiExpPiCharm, fNSigTpcTofKaExpKaCharm]
+ O2hfbpmld0: [fMlScoresCharm]
+ O2hfbpmc:
+ level: mc
+ vars: [fFlagMcMatchRec, fOriginMcRec]
+ O2hfbpsel:
+ level: mc
+ vars: [fCandidateSelFlag]
+ filter: "fPt > 0."
+ tags:
+ isstd: {var: fFlagMcMatchRec, req: 1, level: mc}
+ ismcsignal: {var: fFlagMcMatchRec, req: 1, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcRec, req: 1, level: mc}
+ ismcfd: {var: fOriginMcRec, req: 2, level: mc}
+ extract_component:
+ - {var: fMlScoresCharm, newvar: mlScoreNonPrompt, component: 2,}
+
+ gen:
+ level: mc
+ trees:
+ O2hfbppbase: [fPt, fEta, fPhi, fFlagMcMatchGen, fOriginMcGen]
+ tags:
+ isstd: {var: fFlagMcMatchGen, req: 1, level: mc}
+ ismcsignal: {var: fFlagMcMatchGen, req: 1, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcGen, req: 1, level: mc}
+ ismcfd: {var: fOriginMcGen, req: 2, level: mc}
+
+ write:
+ evtorig:
+ level: all
+ file: AnalysisResultsEvtOrig.parquet
+ evt:
+ level: all
+ source: evtorig
+ file: AnalysisResultsEvt.parquet
+ reco:
+ level: all
+ file: AnalysisResultsReco.parquet
+ gen:
+ level: mc
+ file: AnalysisResultsGen.parquet
+
+ variables:
+ var_all: [fM, fCpa, fCpaXY, fChi2PCA, fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fPtProng0, fPtProng1, fImpactParameter0, fImpactParameter1, fImpactParameterNormalised0, fImpactParameterNormalised1, fMaxNormalisedDeltaIP, fImpactParameterProduct, fNSigTpcTofPiExpPi, fCpaCharm, fDecayLengthCharm, fImpactParameter0Charm, fImpactParameter1Charm, fImpactParameterProductCharm, fNSigTpcTofPiExpPiCharm, fNSigTpcTofKaExpKaCharm, mlScoreNonPrompt]
+ var_training: [[mlScoreNonPrompt, fImpactParameterProduct, fImpactParameter1, fDecayLength, fCpa, fNSigTpcTofPiExpPi], [mlScoreNonPrompt, fImpactParameterProduct, fImpactParameter1, fDecayLength, fCpa, fNSigTpcTofPiExpPi], [mlScoreNonPrompt, fImpactParameterProduct, fImpactParameter1, fDecayLength, fCpa, fNSigTpcTofPiExpPi], [mlScoreNonPrompt, fImpactParameterProduct, fImpactParameter1, fDecayLength, fCpa, fNSigTpcTofPiExpPi]]
+ # sel_skim_binmin bins
+ var_boundaries: [fPtProng]
+ var_correlation:
+ - [fPtProng0]
+ - [fPtProng1]
+ var_signal: signal
+ var_class: class
+ var_inv_mass: fM
+ var_y: fY
+ var_evt_sel: fIsEventReject
+ var_cuts:
+ - [fPtProng0, lt, null]
+ - [fPtProng1, lt, null]
+
+ plot_options:
+ prob_cut_scan:
+ fPtProng0:
+ xlim:
+ - 0
+ - 10
+ fPtProng1:
+ xlim:
+ - 0
+ - 10
+ eff_cut_scan:
+ fPtProng0:
+ xlim:
+ - 0
+ - 10
+ fPtProng1:
+ xlim:
+ - 0
+ - 10
+
+ files_names:
+ namefile_unmerged_tree: AO2D.root
+ namefile_reco: AnalysisResultsReco.parquet
+ namefile_evt: AnalysisResultsEvt.parquet
+ namefile_collcnt: AnalysisResultsCollCnt.parquet
+ namefile_bccnt: AnalysisResultsBcCnt.parquet
+ namefile_evtvalroot: AnalysisResultsROOTEvtVal.root
+ namefile_evtorig: AnalysisResultsEvtOrig.parquet
+ namefile_gen: AnalysisResultsGen.parquet
+ namefile_reco_applieddata: AnalysisResultsRecoAppliedData.parquet
+ namefile_reco_appliedmc: AnalysisResultsRecoAppliedMC.parquet
+ namefile_mcweights: mcweights.root
+ treeoutput: "Bptree"
+ histofilename: "masshisto.root"
+ efffilename: "effhisto.root"
+ respfilename: "resphisto.root"
+ crossfilename: "cross_section_tot.root"
+ resultfilename: "results.root"
+
+ #region multi
+ multi:
+ data:
+ nprocessesparallel: 60
+ maxfiles: [-1] #list of periods
+ chunksizeunp: [100] #list of periods
+ chunksizeskim: [100] #list of periods
+ fracmerge: [1.0, 1.0, 1.0, 1.0] #list of periods
+ seedmerge: [12] #list of periods
+ period: [LHC24ao] #list of periods
+ select_period: [1]
+ # prefix_dir: /data2/MLhep/real/train_235436/
+ prefix_dir: /data2/MLhep/trains/400294/
+ unmerged_tree_dir: [alice/] #list of periods
+ pkl: ['${USER}/train_400294/Bpml/pkl'] #list of periods
+ pkl_skimmed: ['${USER}/train_400294/Bpml/pklsk'] #list of periods
+ pkl_skimmed_merge_for_ml: ['${USER}/train_400294/Bpml/pklskml'] #list of periods
+ pkl_skimmed_merge_for_ml_all: '${USER}/train_400294/Bpml/pp_data_mltot'
+ pkl_evtcounter_all: '${USER}/train_400294/Bpml/pp_data_evttot'
+ mcreweights: [../Analyses] #list of periods
+ mc:
+ nprocessesparallel: 60
+ maxfiles: [-1] #list of periods
+ chunksizeunp: [100] #list of periods
+ chunksizeskim: [100] #list of periods
+ fracmerge: [1.0, 1.0, 1.0, 1.0] #list of periods
+ seedmerge: [12] #list of periods
+ period: [LHC24i4] #list of periods
+ select_period: [1]
+ # prefix_dir: /data2/MLhep/sim/train_235437/
+ prefix_dir: /data2/MLhep/trains/400102/
+ unmerged_tree_dir: [alice/]
+ pkl: ['${USER}/train_400102/Bpml/pkl'] #list of periods
+ pkl_skimmed: ['${USER}/train_400102/Bpml/pklsk'] #list of periods
+ pkl_skimmed_merge_for_ml: ['${USER}/train_400102/Bpml/pklskml'] #list of periods
+ pkl_skimmed_merge_for_ml_all: '${USER}/pass1/Bpml/pp_mc_prod_mltot'
+ pkl_evtcounter_all: '${USER}/pass1/Bpml/pp_mc_prod_evttot'
+ mcreweights: [../Analyses] #list of periods
+
+ ml:
+ evtsel: null # TODO: fIsEventReject == 0
+ triggersel:
+ data: null
+ mc: null
+
+ nclasses: [100000, 100000]
+ equalise_sig_bkg: True
+ mult_bkg: [1, 2, 3, 4]
+ sampletags: [0, 1]
+ sel_bkg: (fM >5.35 or fM <5.22) # for plotting significance; should agree with bkg selection in sel_ml
+ sel_ml: [(fM >5.35 or fM <5.22), ismcsignal == 1]
+ class_labels: [bkg, sig]
+ nkfolds: 5
+ rnd_shuffle: 12
+ rnd_splt: 12
+ rnd_all: 12
+ test_frac: 0.2
+ binmin: [2, 4, 6, 12] # must be equal to sel_skim_binmin (sel_skim_binmin bins)
+ binmax: [4, 6, 12, 24] # must be equal to sel_skim_binmax (sel_skim_binmin bins)
+ mltype: BinaryClassification
+ ncorescrossval: 10
+ prefix_dir_ml: /data2/ldellost/MLhep_bp/
+ mlplot: mlplot
+ mlout: mlout
+
+ opt:
+ isFONLLfromROOT: true
+ filename_fonll: 'data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root' # file with FONLL predictions
+ fonll_particle: 'hD0Kpipred'
+ fonll_pred: 'max' # edge of the FONLL prediction
+ FF: 0.6086 # fragmentation fraction
+ sigma_MB: 57.8e-3 # Minimum Bias cross section (pp) 50.87e-3 [b], 1 for Pb-Pb
+ Taa: 1 # 23260 [b^-1] in 0-10% Pb-Pb, 3917 [b^-1] in 30-50% Pb-Pb, 1 for pp
+ BR: 3.95e-2 # branching ratio of the decay D0 -> K- pi+
+ f_prompt: 0.9 # estimated fraction of prompt candidates
+ bkg_data_fraction: 0.1 # fraction of real data used in the estimation
+ num_steps: 111 # number of steps used in efficiency and signif. estimation
+ bkg_function: pol2 # fit function for bkg (among TH1 predefined fit functions, e.g. expo, pol1, pol2, ...)
+ save_fit: True # save bkg fits with the various cuts on ML output
+ raahp: [1, 1, 1, 1] # sel_skim_binmin bins
+ # presel_gen_eff: "abs(fY) < 0.5 and abs(fPosZ) < 10"
+ presel_gen_eff: "fPt > 0." # TODO: fix
+
+ mlapplication:
+ data:
+ prefix_dir_app: /data2/ldellost/MLHEP_bp_fixTOF/
+ pkl_skimmed_dec: [LHC22pp/MLapplication/prod_LHC22o/skpkldecdata] #list of periods
+ pkl_skimmed_decmerged: [LHC22pp/MLapplication/prod_LHC22o/skpkldecdatamerged] #list of periods
+ mc:
+ prefix_dir_app: /data2/ldellost/MLHEP_bp_fixTOF/
+ pkl_skimmed_dec: [LHC22pp_mc/MLapplication/LHC24d3a/skpkldecmc, LHC22pp_mc/MLapplication/LHC24d3b/skpkldecmc] #list of periods
+ pkl_skimmed_decmerged: [LHC22pp_mc/MLapplication/LHC24d3a/skpkldecmcmerged, LHC22pp_mc/MLapplication/LHC24d3b/skpkldecmcmerged] #list of periods
+ modelname: xgboost
+ modelsperptbin: [xgboost_classifierBpml_pp_dfselection_fPt_2.0_4.0.sav, xgboost_classifierBpml_pp_dfselection_fPt_4.0_6.0.sav, xgboost_classifierBpml_pp_dfselection_fPt_6.0_12.0.sav, xgboost_classifierBpml_pp_dfselection_fPt_12.0_24.0.sav] # sel_skim_binmin bins
+ probcutpresel:
+ probcutpresel:
+ data: [0.5, 0.5, 0.5, 0.5] #list of nbins
+ mc: [0.5, 0.5, 0.5, 0.5] #list of nbins
+ probcutoptimal: [0.5, 0.5, 0.5, 0.5] #list of nbins
+
+ #region analysis
+ analysis:
+ anahptspectrum: "D0Kpi" #D0Kpi, DplusKpipi, DstarD0pi, DsKKpi, LctopKpi, LcK0Sp
+ fd_method: "Nb" #fc, Nb
+ cctype: "pp"
+ inputfonllpred: data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root
+ dir_general_plots: /data2/ldellost/data/analysis_plots
+
+ jet_obs: &jet_default
+ sel_an_binmin: [2, 4, 6, 12] # hadron pt bins (sel_an_binmin bins)
+ sel_an_binmax: [4, 6, 12, 24] # hadron pt bins (sel_an_binmin bins)
+ bins_ptjet: [5, 7, 15, 30, 50]
+
+ sigmamb: 57.8e-3 #NB: multiplied by 1e12 before giving to HFPtSpectrum!
+
+ # TODO: add separate binnings for MC and data
+ observables:
+ zg:
+ bins_fix: [6, -.1, .5]
+ label: 'z_{g}'
+ nsd:
+ bins_fix: [10, -.5, 9.5]
+ label: 'N_{sd}'
+ rg:
+ bins_fix: [11, -.1, 1.]
+ label: 'R_{g}'
+ zpar:
+ bins_fix: [10, 0., 1.]
+ label: 'z_{#parallel}'
+ dr:
+ bins_fix: [10, 0., 1.]
+ label: '#Deltar'
+ lntheta:
+ bins_fix: [10, 0., 5.]
+ label: '-ln(#theta)'
+ arraycols: [3]
+ lnkt:
+ bins_fix: [10, -8., 2.]
+ label: 'ln k_{T}'
+ arraycols: [3]
+ lntheta-lnkt:
+ arraycols: [3, 4]
+
+ data_selections:
+ mcsig:
+ level: mc
+ query: '(isd0 & seld0) or (isd0bar & seld0bar)'
+ mcrefl:
+ level: mc
+ query: '(isd0 & seld0bar) or (isd0bar & seld0))'
+
+ fit_levels: ['mcsig', 'mcrefl', 'mc', 'data']
+ pdf_names:
+ pdf_sig: "sig"
+ pdf_bkg: "bkg"
+ param_names:
+ mass: "m"
+ gauss_mean: "mean"
+ gauss_sigma: "sigma_g1"
+ double_gauss_sigma: "sigma_wide"
+ fraction_refl: "frac_refl"
+
+ mass_roofit:
+ - level: mcsig
+ datasel: mcsig
+ range: [1.69, 2.04] # systematics? or propagate bg fit uncertainty directly?
+ components:
+ sig:
+ fn: 'Gaussian::peak(m[1.,5.], mean[1.85,1.89], sigma_g1[.01,.08])'
+ bkg:
+ fn: 'Gaussian::wide(m, mean, sigma_wide[.05,1.])'
+ model:
+ fn: 'SUM::sig(frac_wide[0.,.3]*wide, peak)'
+ - level: mcrefl
+ ptrange: [1., 3.]
+ datasel: mcrefl
+ range: [1.69, 2.04]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.1])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.0], sigma_r[.01,.1])'
+ model:
+ fn: 'SUM::refl(frac_l[0.1,.9]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [3., 4.]
+ datasel: mcrefl
+ range: [1.68, 2.06]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.0], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [4., 5.]
+ datasel: mcrefl
+ range: [1.64, 2.08]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.0], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [5., 6.]
+ datasel: mcrefl
+ range: [1.64, 2.10]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.8,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.0], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [6., 8.]
+ datasel: mcrefl
+ range: [1.60, 2.14]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.1], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [8., 12.]
+ datasel: mcrefl
+ range: [1.52, 2.30]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.1], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [12., 48.]
+ datasel: mcrefl
+ range: [1.40, 2.4]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.1], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mc
+ ptrange: [1., 3.]
+ range: [1.69, 2.04]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [3., 4.]
+ range: [1.68, 2.06]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [4., 5.]
+ range: [1.64, 2.08]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [5., 6.]
+ range: [1.64, 2.10]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [6., 8.]
+ range: [1.60, 2.14]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [8., 12.]
+ range: [1.52, 2.30]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [12., 48.]
+ range: [1.40, 2.40]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - ptrange: [1., 2.]
+ per_ptjet: true
+ range: [1.72, 2.02]
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [2., 3.]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ range: [1.72, 2.04]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [3., 4.]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ range: [1.72, 2.06]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [4., 5.]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ # fix_params: ['mean', 'sigma_g1', 'frac_refl']
+ range: [1.72, 2.08]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [5., 6.]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ range: [1.72, 2.10]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [6., 8.]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ range: [1.72, 2.14]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - range: [1.72, 2.20]
+ per_ptjet: true
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ fix_params_ptjet: ['mean', 'sigma_g1']
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+
+ sidesub:
+ - ptrange: [24., 100.]
+ regions:
+ left: [-2., -2.]
+ signal: [-2., 2.]
+ right: [3., 5.]
+ - regions:
+ left: [-5.5, -3.]
+ signal: [-2., 2.]
+ right: [3., 5.5]
+
+ mass_fit:
+ func_sig: 'gaus'
+ func_bkg: 'expo'
+ # par_start: {1: 1.86}
+ # par_fix: {1: 1.86}
+ par_constrain: {1: [1.85, 1.87], 2: [.01, .08]}
+ range: [1.695, 2.06]
+ mass_fit_lim: [1.5, 2.2] # histogram range of the invariant mass distribution [GeV/c^2]
+ bin_width: 0.05 # bin width of the invariant mass histogram
+ efficiency:
+ extra_cols: ['isd0', 'isd0bar', 'seld0', 'seld0bar']
+ filter_det: '(isd0 & seld0) or (isd0bar & seld0bar)'
+ index_match: fIndexArrayD0CMCPJETOS_hf
+ store_matched: true
+
+ unfolding_iterations: 8
+
+ frac_mcana: .2
+ fd_root: '/data2/vkucera/powheg/trees_powheg_fd_central.root'
+ fd_parquet: '/data2/ldellost/powheg/trees_powheg_fd_central.parquet'
+
+ # obsolete?
+ proc_type: Jets
+ useperiod: [1, 1] #list of periods
+ usejetptbinned_deff: false
+ doeff_resp: true #efficiency correction for the response matrix
+ unmatched_gen: true
+ latexnamehadron: "D^{0}"
+ latexnamedecay: "K^{#minus} #pi^{#plus}"
+ var_binning2: pt_jet
+ var_binning2_gen: pt_gen_jet
+ latexbin2var: "#it{p}_{T}^{jet ch}"
+ sel_binmin2_reco: [7.0, 15.0, 30.] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmax2_reco: [15.0, 30., 50.] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmin2_gen: [7.0, 15.0, 30.] # gen jet pt bins (sel_binmin2_gen bins)
+ sel_binmax2_gen: [15.0, 30., 50.] # gen jet pt bins (sel_binmin2_gen bins)
+ var_binningshape: zg_jet
+ var_binningshape_gen: zg_gen_jet
+ var_shape_latex: "#it{z}_{g}"
+ sel_binminshape_reco: [-0.1, 0.1, 0.2, 0.3, 0.4]
+ sel_binmaxshape_reco: [0.1, 0.2, 0.3, 0.4, 0.5]
+ sel_binminshape_gen: [-0.1, 0.1, 0.2, 0.3, 0.4]
+ sel_binmaxshape_gen: [0.1, 0.2, 0.3, 0.4, 0.5]
+ sel_closure_frac: 0.2
+ triggerbit: INT7
+ #jetsel_gen: "abs(y_cand) < 0.8 and abs(z_vtx_gen) < 10 and abs(eta_jet) < 0.5"
+ #jetsel_sim: "abs(y_cand) < 0.8 and abs(eta_jet) < 0.5" # jet selection in simulations
+ #jetsel_reco: "abs(y_cand) < 0.8 and abs(z_vtx_reco) < 10 and abs(eta_jet) < 0.5"
+ #jetsel_gen_matched_reco: "abs(eta_gen_jet) < 5.0"
+ jetsel_gen: "abs(y_cand) < 0.5 and abs(z_vtx_gen) < 10 and abs(eta_jet) < 0.5"
+ jetsel_sim: "abs(y_cand) < 0.5 and abs(eta_jet) < 0.5" # jet selection in simulations
+ jetsel_reco: "abs(y_cand) < 0.5 and abs(z_vtx_reco) < 10 and abs(eta_jet) < 0.5"
+ jetsel_gen_matched_reco: "abs(y_cand) < 0.5 and abs(z_vtx_gen) < 10 and abs(eta_gen_jet) < 0.5"
+ evtsel: null # fIsEventReject==0
+ triggersel:
+ data: "trigger_hasbit_INT7==1"
+ mc: null
+ data: &data_out_default
+ runselection: [null] #FIXME
+ results: ['/home/${USER}/mlhep/data/test/D0ml/resultsMBjetvspt'] #list of periods
+ resultsallp: '/home/${USER}/mlhep/data/test/D0ml/resultsMBjetvspt_all'
+ mc: &mc_out_default
+ runselection: [null, null] #FIXME
+ results: ['/home/${USER}/mlhep/data/mctest/D0ml/resultsMBjetvspt', '/home/${USER}/mlhep/data/mctest/D0ml/resultsMBjetvspt'] #list of periods
+ resultsallp: '/home/${USER}/mlhep/data/mctest/D0ml/resultsMBjetvspt_all'
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_default
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_default
+
+ # simple fitter START
+ sgnfunc: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # kGaus=0, k2Gaus=1, k2GausSigmaRatioPar=2 (sel_an_binmin bins)
+ bkgfunc: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # kExpo=0, kLin=1, kPol2=2, kNoBk=3, kPow=4, kPowEx=5 (sel_an_binmin bins)
+ masspeak: 1.864
+ massmin: [1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66] # sel_an_binmin bins, fit region of the invariant mass distribution [GeV/c^2]
+ massmax: [2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06, 2.06] # sel_an_binmin bins, fit region of the invariant mass distribution [GeV/c^2]
+ rebin: [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] # sel_an_binmin bins
+ fix_mean: [false, false, false, false, false, false, false, false, false, false, false, false] # sel_an_binmin bins
+ masspeaksec: 1.864
+
+ # If SetArraySigma true: sigma_initial is taken from sigmaarray; false: sigma_initial is taken from MC
+ # If SetFixGaussianSigma true: sigma fixed to sigma_initial
+ # SetFixGaussianSigma: [false, false, false, false, false, false, false, false, false, false, false, false] # sel_an_binmin bins
+ SetFixGaussianSigma: [true, true, true, true, true, true, true, true, true, true, true, true] # sel_an_binmin bins
+ SetArraySigma: [false, false, false, false, false, false, false, false, false, false, false, false] # sel_an_binmin bins
+ sigmaarray: [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # initial sigma (sel_an_binmin bins)
+
+ fix_sigmasec: [true, true, true, true, true, true, true, true, true, true, true, true] # sel_an_binmin bins
+ sigmaarraysec: [0.07497, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] # sel_an_binmin bins
+ use_reflections: true
+ # simple fitter END
+
+ signal_sigma: 2.0
+ sigma_scale: 0.9545
+ sideband_sigma_1_left: 4
+ sideband_sigma_2_left: 9
+ sideband_sigma_1_right: 4
+ sideband_sigma_2_right: 9
+ sidebandleftonly: false
+
+ niterunfolding: 15
+ niterunfoldingchosen: 4
+
+ branching_ratio: 3.95e-2
+ xsection_inel: 57.8 # (mb) cross-section of minimum-bias events
+
+ doprior: false
+ domodeldep: false
+ path_modeldep: /home/nzardosh/PYTHIA_Sim/PYTHIA8_Simulations/Plots/D0_Substructure_Simulations_Output.root
+
+ powheg_path_nonprompt: /data/POWHEG/trees_powheg_fd_central.root
+
+ powheg_path_prompt: /data/POWHEG/trees_powheg_pr_central.root
+ powheg_prompt_variations_path: /data/POWHEG/trees_powheg_pr_
+ powheg_prompt_variations: ["F1_R05", "F05_R1", "F2_R1", "F1_R2", "F2_R2", "F05_R05", "Mhigh", "Mlow"]
+
+ pythia8_prompt_variations_path: /data/PYTHIA8/trees_pythia8_pr_
+ pythia8_prompt_variations: ["default", "charm_lo"] #["default","colour0soft"]
+ pythia8_prompt_variations_legend: ["PYTHIA 8 (Monash)", "PYTHIA 8 charm LO"] # ["PYTHIA 8 (Monash)","PYTHIA 8 SoftQCD, mode 0"]
+
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_zg.yml
+
+ # Additional cuts applied before mass histogram is filled
+ use_cuts: False
+ # cuts: # (sel_an_binmin bins)
+ # - Null
+ # - Null
+ # - Null
+ # - Null
+ # - Null
+ # - Null
+ # - Null
+ # - Null
+
+ jet_qa:
+ <<: *jet_default
+
+ jet_rg:
+ <<: *jet_default
+ var_binningshape: rg_jet
+ var_binningshape_gen: rg_gen_jet
+ var_shape_latex: "#it{R}_{g}"
+ sel_binminshape_reco: [-0.1, 0., 0.1, 0.2, 0.3]
+ sel_binmaxshape_reco: [0., 0.1, 0.2, 0.3, 0.4]
+ sel_binminshape_gen: [-0.1, 0., 0.1, 0.2, 0.3]
+ sel_binmaxshape_gen: [0., 0.1, 0.2, 0.3, 0.4]
+ data: &data_out_rg
+ <<: *data_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2016_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2017_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2018_data/593_20210223-2051/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_data/resultsMBjetvspt
+ mc: &mc_out_rg
+ <<: *mc_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2016_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2017_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_2018_mc_prodD2H/594_20210301-1015/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/rg/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_rg
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_rg
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_rg.yml
+
+ jet_nsd:
+ <<: *jet_default
+ var_binningshape: nsd_jet
+ var_binningshape_gen: nsd_gen_jet
+ var_shape_latex: "#it{n}_{SD}"
+ sel_binminshape_reco: [-0.5, 0.5, 1.5, 2.5, 3.5]
+ sel_binmaxshape_reco: [0.5, 1.5, 2.5, 3.5, 4.5]
+ sel_binminshape_gen: [-0.5, 0.5, 1.5, 2.5, 3.5]
+ sel_binmaxshape_gen: [0.5, 1.5, 2.5, 3.5, 4.5]
+ data: &data_out_nsd
+ <<: *data_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2016_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2017_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2018_data/593_20210223-2051/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_data/resultsMBjetvspt
+ mc: &mc_out_nsd
+ <<: *mc_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2016_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2017_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_2018_mc_prodD2H/594_20210301-1015/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/nsd/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_nsd
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_nsd
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_nsd.yml
+
+ jet_FF:
+ <<: *jet_default
+
+ pythia8_prompt_variations: ["default", "colour2soft"]
+ pythia8_prompt_variations_legend: ["PYTHIA 8 (Monash)", "PYTHIA 8 SoftQCD, mode 2"]
+
+ sel_binmin2_reco: [5.0, 7.0, 10., 15.0] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmax2_reco: [7.0, 10., 15.0, 50.] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmin2_gen: [5.0, 7.0, 10., 15.0] # gen jet pt bins (sel_binmin2_gen bins)
+ sel_binmax2_gen: [7.0, 10., 15.0, 50.] # gen jet pt bins (sel_binmin2_gen bins)
+ var_binningshape: z
+ var_binningshape_gen: z_gen
+ var_shape_latex: "#it{z}_{#parallel}^{ch}"
+ sel_binminshape_reco: [0.2001, 0.4001, 0.5001, 0.6001, 0.7001, 0.8001, 0.9001]
+ sel_binmaxshape_reco: [0.4001, 0.5001, 0.6001, 0.7001, 0.8001, 0.9001, 1.0001]
+ sel_binminshape_gen: [0.2001, 0.4001, 0.5001, 0.6001, 0.7001, 0.8001, 0.9001]
+ sel_binmaxshape_gen: [0.4001, 0.5001, 0.6001, 0.7001, 0.8001, 0.9001, 1.0001]
+ data: &data_out_ff
+ <<: *data_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2016_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2017_data/593_20210223-2051/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2018_data/593_20210223-2051/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_data/resultsMBjetvspt
+ mc: &mc_out_ff
+ <<: *mc_out_default
+ results: [/data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2016_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2017_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_2018_mc_prodD2H/594_20210301-1015/resultsMBjetvspt] #list of periods
+ resultsallp: /data/DerivedResultsJets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/ff/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_ff
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_ff
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_FF.yml
+
+ jet_r_shape_2_6:
+ <<: *jet_default
+ lc_d0_ratio: true #make ratio of D0 and corresponding Lc analysis
+ xsec: false
+ use_inclusive_systematics: true
+
+ pythia8_prompt_variations: ["default", "colour2soft"]
+ pythia8_prompt_variations_legend: ["PYTHIA 8 (Monash)", "PYTHIA 8 SoftQCD, mode 2"]
+
+ var_binningshape: delta_r_jet
+ var_binningshape_gen: delta_r_gen_jet
+ var_shape_latex: "#it{r}"
+ sel_binminshape_reco: [0., 0.5, 0.1]
+ sel_binmaxshape_reco: [0.5, 0.1, 0.2]
+ sel_binminshape_gen: [0., 0.5, 0.1]
+ sel_binmaxshape_gen: [0.5, 0.1, 0.2]
+ sel_an_binmin: [2, 3, 4, 5] # hadron pt bins (sel_an_binmin bins)
+ sel_an_binmax: [3, 4, 5, 6] # hadron pt bins (sel_an_binmin bins)
+ binning_matching: [1, 1, 2, 2] # mapping to skimming pt bins (sel_an_binmin bins)
+ sel_binmin2_reco: [3.0, 5.0, 7.0, 15.0] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmax2_reco: [5.0, 7.0, 15.0, 30.] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmin2_gen: [3.0, 5.0, 7.0, 15.0] # gen jet pt bins (sel_binmin2_gen bins)
+ sel_binmax2_gen: [5.0, 7.0, 15.0, 30.] # gen jet pt bins (sel_binmin2_gen bins)
+ cuts:
+ - Null
+ - Null
+ - Null
+ - Null
+ data: &data_out_r_shape_2_6
+ <<: *data_out_default
+ results: [/data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2016_data/593_20210223-2051/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2017_data/593_20210223-2051/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2018_data/593_20210223-2051/resultsMBjetvspt] #list of periods
+ resultsallp: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_data/resultsMBjetvspt
+
+ resultslc: /data/Derived_testResults/Jets/Lc/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_data/resultsMBjetvspt
+
+ mc: &mc_out_r_shape_2_6
+ <<: *mc_out_default
+ results: [/data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2016_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2017_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2018_mc_prodD2H/594_20210301-1015/resultsMBjetvspt] #list of periods
+ resultsallp: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/2_6/vAN-20210223_ROOT6-1/r_shape/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ resultsinclusive: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/r_shape_fullpt/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_r_shape_2_6
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_r_shape_2_6
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_r_shape_2_6.yml
+
+ jet_r_shape_6_12:
+ <<: *jet_default
+ lc_d0_ratio: true
+ xsec: false
+ use_inclusive_systematics: true
+
+ pythia8_prompt_variations: ["default", "colour2soft"]
+ pythia8_prompt_variations_legend: ["PYTHIA 8 (Monash)", "PYTHIA 8 SoftQCD, mode 2"]
+
+ var_binningshape: delta_r_jet
+ var_binningshape_gen: delta_r_gen_jet
+ var_shape_latex: "#it{r}"
+ sel_binminshape_reco: [0., 0.5, 0.1]
+ sel_binmaxshape_reco: [0.5, 0.1, 0.2]
+ sel_binminshape_gen: [0., 0.5, 0.1]
+ sel_binmaxshape_gen: [0.5, 0.1, 0.2]
+
+ sel_an_binmin: [6, 7, 8, 10] # hadron pt bins (sel_an_binmin bins)
+ sel_an_binmax: [7, 8, 10, 12] # hadron pt bins (sel_an_binmin bins)
+ binning_matching: [3, 3, 4, 4] # mapping to skimming pt bins (sel_an_binmin bins)
+ sel_binmin2_reco: [5.0, 7.0, 15.0] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmax2_reco: [7.0, 15.0, 30.] # rec jet pt bins (sel_binmin2_reco bins)
+ sel_binmin2_gen: [5.0, 7.0, 15.0] # gen jet pt bins (sel_binmin2_gen bins)
+ sel_binmax2_gen: [7.0, 15.0, 30.] # gen jet pt bins (sel_binmin2_gen bins)
+ cuts:
+ - Null
+ - Null
+ - Null
+ - Null
+
+ data: &data_out_r_shape_6_12
+ <<: *data_out_default
+ results: [/data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2016_data/593_20210223-2051/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2017_data/593_20210223-2051/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2018_data/593_20210223-2051/resultsMBjetvspt] #list of periods
+ resultsallp: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_data/resultsMBjetvspt
+
+ resultslc: /data/Derived_testResults/Jets/Lc/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_data/resultsMBjetvspt
+
+ mc: &mc_out_r_shape_6_12
+ <<: *mc_out_default
+ results: [/data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2016_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2017_mc_prodD2H/594_20210301-1015/resultsMBjetvspt, /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_2018_mc_prodD2H/594_20210301-1015/resultsMBjetvspt] #list of periods
+ resultsallp: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/6_12/vAN-20210223_ROOT6-1/r_shape/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ resultsinclusive: /data/Derived_testResults/Jets/D0kAnywithJets_Vit/vAN-20210223_ROOT6-1/r_shape_fullpt/default/default/pp_mc_prodD2H/resultsMBjetvspt
+ data_proc: # alternative processor output used as the analyzer input
+ <<: *data_out_r_shape_6_12
+ mc_proc: # alternative processor output used as the analyzer input
+ <<: *mc_out_r_shape_6_12
+ variations_db: ./data/data_prod_20210223/database_variations_D0pp_jet_r_shape_6_12.yml
+
+ systematics:
+ probvariation:
+ useperiod: [0, 0, 1] #period from where to define prob cuts
+ ncutvar: 10 #number of looser and tighter variations
+ maxperccutvar: 0.25 #max diff in efficiency for loosest/tightest var
+ cutvarminrange: [[0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9]] #Min starting point for scan
+ cutvarmaxrange: [[0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9]] #Max starting point for scan
+ fixedmean: True #Fix mean cutvar histo to central fit
+ fixedsigma: True #Fix sigma cutvar histo to central fit
+ mcptshape:
+ #FONLL / generated LHC19h4c1
+ weights: [1.000000]
+ #From SetPtWeightsFromFONLL13overLHC17c3a12 in AliPhysics
+ #weights: [1.429770]
+ weights_min_pt: 0
+ weights_max_pt: 40
+ weights_bins: 400
diff --git a/machine_learning_hep/data/data_run3/database_ml_parameters_D0pp_mult.yml b/machine_learning_hep/data/data_run3/database_ml_parameters_D0pp_mult.yml
new file mode 100644
index 0000000000..7655385a44
--- /dev/null
+++ b/machine_learning_hep/data/data_run3/database_ml_parameters_D0pp_mult.yml
@@ -0,0 +1,495 @@
+---
+#############################################################################
+## © Copyright CERN 2018. All rights not expressly granted are reserved. ##
+## Author: Gian.Michele.Innocenti@cern.ch ##
+## This program is free software: you can redistribute it and/or modify it ##
+## under the terms of the GNU General Public License as published by the ##
+## Free Software Foundation, either version 3 of the License, or (at your ##
+## option) any later version. This program is distributed in the hope that ##
+## it will be useful, but WITHOUT ANY WARRANTY; without even the implied ##
+## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ##
+## See the GNU General Public License for more details. ##
+## You should have received a copy of the GNU General Public License ##
+## along with this program. if not, see . ##
+#############################################################################
+
+D0ml_pp:
+ doml: true
+ mass: 1.864
+ sel_reco_unp: "fPt > 0."
+ sel_gen_unp: null
+ sel_cen_unp: null
+ sel_good_evt_unp: null
+ #sel_reco_skim: ["mlBkgScore < 0.2", "mlBkgScore < 0.4", "mlBkgScore < 0.6", "mlBkgScore < .08", "mlBkgScore < 0.14", "mlBkgScore < 0.26", "mlBkgScore < 0.46", "mlBkgScore < 0.52", "mlBkgScore < 0.46"]
+ sel_reco_skim: [null, null, null, null, null, null, null, null, null, null, null, null] # sel_skim_binmin bins
+ sel_gen_skim: [null, null, null, null, null, null, null, null, null, null, null, null] # sel_skim_binmin bins
+ sel_skim_binmin: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16] # skimming pt bins (sel_skim_binmin bins)
+ sel_skim_binmax: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24] # skimming pt bins (sel_skim_binmin bins)
+ var_binning: fPt
+ dofullevtmerge: false
+
+ var_cand: fCandidateSelFlag
+ bitmap_sel:
+ var_name: fFlagMcMatchRec
+ var_name_gen: fFlagMcMatchGen
+ var_name_origgen: fOriginMcGen
+ var_name_origrec: fOriginMcRec
+ var_isstd: isstd
+ var_ismcsignal: ismcsignal
+ var_ismcprompt: ismcprompt
+ var_ismcfd: ismcfd
+ var_ismcbkg: ismcbkg
+ var_is_part: isd0
+ var_is_antipart: isd0bar
+ var_issel_part: seld0
+ var_issel_antipart: seld0bar
+
+ dfs:
+ read:
+ evtorig:
+ level: all
+ index: fIndexHFD0COLLBASES
+ trees:
+ O2hfd0collbase: [fNumContrib, fMultZeqNTracksPV, fCentFT0M]
+ extra:
+ fIsEventReject: 0
+
+ evtoriggen:
+ level: gen
+ index: fIndexHFD0MCCOLLBASES
+ trees:
+ O2hfd0mccollbase: [fPosX, fPosY, fPosZ, fCentFT0M]
+ O2hfd0mcrcollid: [fIndexArrayHFD0COLLBASES]
+ rename: {old: fCentFT0M, new: fCentFT0Mmc} #CHECK IF IT'S NEEDED
+
+ reco:
+ level: all
+ index: fIndexHfD0Bases
+ trees:
+ O2hfd0base: [fIndexHFD0COLLBASES, fPt, fY, fEta, fPhi, fM]
+ O2hfd0par: [fCpa, fCpaXY, fChi2PCA, fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fPtProng0, fPtProng1, fImpactParameter0, fImpactParameter1, fImpactParameterNormalised0, fImpactParameterNormalised1, fMaxNormalisedDeltaIP, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa]
+ O2hfd0mc:
+ level: mc
+ vars: [fFlagMcMatchRec, fOriginMcRec]
+ O2hfd0sel:
+ level: mc
+ vars: [fCandidateSelFlag]
+ filter: "fPt > 0."
+ tags:
+ isstd: {var: fFlagMcMatchRec, req: 1, level: mc}
+ ismcsignal: {var: fFlagMcMatchRec, req: 1, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcRec, req: 1, level: mc}
+ ismcfd: {var: fOriginMcRec, req: 2, level: mc}
+ isd0: {var: fFlagMcMatchRec, req: 1, level: mc}
+ isd0bar: {var: fFlagMcMatchRec, req: -1, level: mc}
+ seld0: {var: fCandidateSelFlag, req: 1, level: mc}
+ seld0bar: {var: fCandidateSelFlag, req: 2, level: mc}
+
+ gen:
+ level: mc
+ trees:
+ O2hfd0pbase: [fIndexHFD0MCCOLLBASES, fPt, fY, fEta, fPhi, fFlagMcMatchGen, fOriginMcGen]
+ tags:
+ isstd: {var: fFlagMcMatchGen, req: 1, level: mc}
+ ismcsignal: {var: fFlagMcMatchGen, req: 1, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcGen, req: 1, level: mc}
+ ismcfd: {var: fOriginMcGen, req: 2, level: mc}
+
+ merge:
+ - {base: reco, ref: evtorig}
+ - {base: gen, ref: evtoriggen}
+ - {base: gen, ref: evtorig, left_on: fIndexArrayHFD0COLLBASES, out: genrec,}
+
+ write:
+ evtorig:
+ level: all
+ file: AnalysisResultsEvtOrig.parquet
+ evt:
+ level: all
+ source: evtorig
+ file: AnalysisResultsEvt.parquet
+ evtmc:
+ level: mc
+ source: evtoriggen
+ file: AnalysisResultsEvtGen.parquet
+ reco:
+ level: all
+ file: AnalysisResultsReco.parquet
+ gen:
+ level: mc
+ file: AnalysisResultsGenSl.parquet
+ genrec:
+ level: mc
+ file: AnalysisResultsGen.parquet
+
+ variables:
+ var_all: [fPt, fEta, fM, fCpa, fCpaXY, fChi2PCA, fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fPtProng0, fPtProng1, fImpactParameter0, fImpactParameter1, fImpactParameterNormalised0, fImpactParameterNormalised1, fMaxNormalisedDeltaIP, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa]
+ var_training: [[fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa], [fDecayLength, fDecayLengthXY, fChi2PCA, fCpa, fImpactParameterProduct, fNSigTpcTofPiExpPi, fNSigTpcTofKaExpKa]]
+ #TODO: add new variables for dca, max_norm_d0d0exp
+ # sel_skim_binmin bins
+ var_boundaries: [fPtProng]
+ var_correlation:
+ - [fPtProng0]
+ - [fPtProng1]
+ var_signal: signal
+ var_class: class
+ var_inv_mass: fM
+ var_y: fY
+ var_evt_sel: fIsEventReject
+ var_cuts:
+ - [fPtProng0, lt, null]
+ - [fPtProng1, lt, null]
+
+ plot_options:
+ prob_cut_scan:
+ fPtProng0:
+ xlim:
+ - 0
+ - 1
+ fPtProng1:
+ xlim:
+ - 0
+ - 1
+ eff_cut_scan:
+ fPtProng0:
+ xlim:
+ - 0
+ - 1
+ fPtProng1:
+ xlim:
+ - 0
+ - 1
+
+ files_names:
+ namefile_unmerged_tree: AO2D.root
+ namefile_reco: AnalysisResultsReco.parquet
+ namefile_evt: AnalysisResultsEvt.parquet
+ namefile_collcnt: AnalysisResultsCollCnt.parquet
+ namefile_bccnt: AnalysisResultsBcCnt.parquet
+ namefile_evtvalroot: AnalysisResultsROOTEvtVal.root
+ namefile_evtorig: AnalysisResultsEvtOrig.parquet
+ namefile_gen: AnalysisResultsGen.parquet
+ namefile_gen_sl: AnalysisResultsGenSl.parquet
+ namefile_reco_applieddata: AnalysisResultsRecoAppliedData.parquet
+ namefile_reco_appliedmc: AnalysisResultsRecoAppliedMC.parquet
+ namefile_mcweights: mcweights.root
+ treeoutput: "D0tree"
+ histofilename: "masshisto.root"
+ efffilename: "effhisto.root"
+ respfilename: "resphisto.root"
+ crossfilename: "cross_section_tot.root"
+ resultfilename: "results.root"
+
+ #region multi
+ multi:
+ data:
+ nprocessesparallel: 20
+ maxfiles: [-1] #list of periods
+ chunksizeunp: [100] #list of periods
+ chunksizeskim: [100] #list of periods
+ fracmerge: [0.10, 0.03, 0.05, 0.1, 0.2, 0.3, 0.4, 0.6, 0.6, 0.8, 1.0, 1.0] #list of periods
+ #fracmerge: [0.05, 0.10, 0.40, 0.80, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] #list of periods
+ seedmerge: [12] #list of periods
+ period: [LHC22o] #list of periods
+ select_period: [1]
+ # prefix_dir: /data2/MLhep/real/train_235436/
+ prefix_dir: /data2/MLhep/trains/
+ unmerged_tree_dir: [489217/alice/] #list of periods
+ pkl: ['${USER}/train_489217/D0ml/pkl'] #list of periods
+ pkl_skimmed: ['${USER}/train_489217/D0ml/pklsk'] #list of periods
+ pkl_skimmed_merge_for_ml: ['${USER}/train_489217/D0ml/pklskml'] #list of periods
+ pkl_skimmed_merge_for_ml_all: '${USER}/train_489217/D0ml/pp_data_mltot'
+ pkl_evtcounter_all: '${USER}/train_489217/D0ml/pp_data_evttot'
+ mcreweights: [../Analyses] #list of periods
+ mc:
+ nprocessesparallel: 20
+ maxfiles: [-1] #list of periods
+ chunksizeunp: [100] #list of periods
+ chunksizeskim: [1000] #list of periods
+ fracmerge: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] #list of periods
+ seedmerge: [12] #list of periods
+ period: [LHC24b1b] #list of periods
+ select_period: [1]
+ # prefix_dir: /data2/MLhep/sim/train_235437/
+ prefix_dir: /data2/MLhep/trains/
+ unmerged_tree_dir: [508674/alice/]
+ pkl: ['${USER}/train_508674/D0ml/pkl'] #list of periods
+ pkl_skimmed: ['${USER}/train_508674/D0ml/pklsk'] #list of periods
+ pkl_skimmed_merge_for_ml: ['${USER}/train_508674/D0ml/pklskml'] #list of periods
+ pkl_skimmed_merge_for_ml_all: '${USER}/pass6/D0ml/pp_mc_prod_mltot'
+ pkl_evtcounter_all: '${USER}/pass6/D0ml/pp_mc_prod_evttot'
+ mcreweights: [../Analyses] #list of periods
+
+ ml:
+ evtsel: null # TODO: fIsEventReject == 0
+ triggersel:
+ data: null
+ mc: null
+
+ nclasses: [2000000, 2000000, 2000000]
+ equalise_sig_bkg: True
+ mult_bkg: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+ sampletags: [0, 1, 1]
+ sel_bkg: (fM >1.72 and fM <1.8) or fM >1.92 # for plotting significance; should agree with bkg selection in sel_ml
+ sel_ml: [(fM >1.72 and fM <1.8) or fM >1.92, ((isd0 and seld0) or (isd0bar and seld0bar)) and ismcsignal == 1 and ismcprompt == 1, ((isd0 and seld0) or (isd0bar and seld0bar)) and ismcsignal == 1 and ismcfd == 1]
+ class_labels: [bkg, prompt, non-prompt]
+ nkfolds: 5
+ rnd_shuffle: 12
+ rnd_splt: 12
+ rnd_all: 12
+ test_frac: 0.2
+ binmin: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16] # must be equal to sel_skim_binmin (sel_skim_binmin bins)
+ binmax: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24] # must be equal to sel_skim_binmax (sel_skim_binmin bins)
+ mltype: MultiClassification
+ ncorescrossval: 10
+ prefix_dir_ml: /data2/ldellost/MLhep_d0_norefl/
+ mlplot: mlplot
+ mlout: mlout
+
+ opt:
+ isFONLLfromROOT: true
+ filename_fonll: 'data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root' # file with FONLL predictions
+ fonll_particle: 'hD0Kpipred'
+ fonll_pred: 'max' # edge of the FONLL prediction
+ FF: 0.6086 # fragmentation fraction
+ sigma_MB: 59.4e-3 # Minimum Bias cross section (pp) 50.87e-3 [b], 1 for Pb-Pb
+ Taa: 1 # 23260 [b^-1] in 0-10% Pb-Pb, 3917 [b^-1] in 30-50% Pb-Pb, 1 for pp
+ BR: 3.95e-2 # branching ratio of the decay D0 -> K- pi+
+ f_prompt: 0.9 # estimated fraction of prompt candidates
+ bkg_data_fraction: 0.1 # fraction of real data used in the estimation
+ num_steps: 111 # number of steps used in efficiency and signif. estimation
+ bkg_function: pol2 # fit function for bkg (among TH1 predefined fit functions, e.g. expo, pol1, pol2, ...)
+ save_fit: True # save bkg fits with the various cuts on ML output
+ raahp: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # sel_skim_binmin bins
+ # presel_gen_eff: "abs(fY) < 0.5 and abs(fPosZ) < 10"
+ presel_gen_eff: "fPt > 0." # TODO: fix
+
+ mlapplication:
+ data:
+ prefix_dir_app: /data2/ldellost/MLHEP_d0/
+ pkl_skimmed_dec: [LHC22pp/MLapplication/prod_LHC22o/skpkldecdata] #list of periods
+ pkl_skimmed_decmerged: [LHC22pp/MLapplication/prod_LHC22o/skpkldecdatamerged] #list of periods
+ mc:
+ prefix_dir_app: /data2/ldellost/MLHEP_d0/
+ pkl_skimmed_dec: [LHC22pp_mc/MLapplication/LHC24d3a/skpkldecmc] #list of periods
+ pkl_skimmed_decmerged: [LHC22pp_mc/MLapplication/LHC24d3a/skpkldecmcmerged] #list of periods
+ modelname: xgboost
+ modelsperptbin: [xgboost_classifierD0ml_pp_dfselection_fPt_0.0_1.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_1.0_2.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_2.0_3.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_3.0_4.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_4.0_5.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_5.0_6.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_6.0_7.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_7.0_8.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_8.0_10.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_10.0_12.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_12.0_16.0.sav, xgboost_classifierD0ml_pp_dfselection_fPt_16.0_24.0.sav] # sel_skim_binmin bins
+ probcutpresel:
+ probcutpresel:
+ data: [[0.05, 0., 0.], [0.05, 0., 0.], [0.05, 0., 0.], [0.05, 0., 0.], [0.1, 0., 0.], [0.1, 0., 0.], [0.2, 0., 0.], [0.2, 0., 0.], [0.2, 0., 0.], [0.3, 0., 0.], [0.5, 0., 0.], [0.5, 0., 0.]] #list of nbins
+ mc: [[0.05, 0., 0.], [0.05, 0., 0.], [0.05, 0., 0.], [0.05, 0., 0.], [0.1, 0., 0.], [0.1, 0., 0.], [0.2, 0., 0.], [0.2, 0., 0.], [0.2, 0., 0.], [0.3, 0., 0.], [0.5, 0., 0.], [0.5, 0., 0.]] #list of nbins
+ probcutoptimal: [[0.02, 0., 0.], [0.02, 0., 0.], [0.02, 0., 0.], [0.02, 0., 0.], [0.05, 0., 0.], [0.06, 0., 0.], [0.08, 0., 0.], [0.08, 0., 0.], [0.1, 0., 0.], [0.1, 0., 0.], [0.2, 0., 0.], [0.25, 0., 0.]] #list of nbins
+
+ #region analysis
+ analysis:
+ anahptspectrum: "D0Kpi" #D0Kpi, DplusKpipi, DstarD0pi, DsKKpi, LctopKpi, LcK0Sp
+ fd_method: "Nb" # fc, Nb, ext, dd, dd_N
+ crosssec_prompt: True # True for prompt, False for non-prompt
+ cctype: "pp"
+ sigmamb: 59.4e+9 # 50.87e+9 pp5TeV, 57.8e+9 pp13TeV, 59.4e+9 pp Run3, pb
+ inputfonllpred: data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root #data/fonll/CutVarLc_pp13TeV_LHC23_pass4_wide.root #
+ dir_general_plots: analysis_plots
+
+ Run3analysis_forward:
+ proc_type: Dhadrons_mult
+ useperiod: [1]
+ plotbin: [1, 1, 1, 1, 1, 1, 1]
+ usesinglebineff: null
+ fprompt_from_mb: false
+ corrEffMult: [false, true, true, true, true, true, true, true]
+ event_cand_validation: False
+ sel_binmin2: [0, 85, 70, 50, 30, 10, 1, 0] #list of var2 splittng nbins
+ sel_binmax2: [100, 100, 85, 70, 50, 30, 10, 1]
+ var_binning2: fCentFT0M
+ var_binning2_gen: fCentFT0M
+ var_binning2_weights: fMultZeqNTracksPV
+ mc_cut_on_binning2: false
+ signal_loss: true
+ signal_loss_idx: fIndexArrayHFD0COLLBASES
+ nbinshisto: 100
+ minvaluehisto: -0.0005
+ maxvaluehisto: 100.0005
+ triggerbit: ''
+
+ variations_db: database_variations_LcToPKPi_mult.yml
+ observables:
+ hptspectrum:
+ bins_gen_var: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16]
+ bins_det_var: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24]
+ label: "#it{p}_{T}"
+ label_y: "D^{0} Cross section"
+
+ event_weighting_mc:
+ LHC24h1:
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_0_1
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_85_100
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_70_85
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_50_70
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_30_50
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_10_30
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_1_10
+ according_to: fMultZeqNTracksPV
+ - filepath: data/event_weighting_mc/MultWeigths.root
+ histo_name: MultWeigths_0_1
+ according_to: fMultZeqNTracksPV
+
+ use_cuts: False
+ reflections: True
+ sel_an_binmin: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16]
+ sel_an_binmax: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24]
+ binning_matching: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+ presel_gen_eff: "abs(fY) < 0.5"
+ evtsel: null
+ #evtsel: "abs(fPosZ)<10"
+ triggersel:
+ data: null
+ mc: null
+ weighttrig: false
+
+ data:
+ runselection: [null] #FIXME
+ prefix_dir_res: /data2/ldellost/D0analysis/
+ results: [LHC23pp_forw/ResultsFit/prod_LHC23/resultsdata/default/default] #list of periods
+ resultsallp: LHC23pp_forw/ResultsFit/resultsdatatot/default/default
+ mc:
+ runselection: [null] #FIXME
+ prefix_dir_res: /data2/ldellost/D0analysis/
+ results: [LHC23pp_forw_mc/ResultsFit/prod_LHC24h1/resultsmc/default/default] #list of periods
+ resultsallp: LHC23pp_forw_mc/ResultsFit/prod_LHC23/resultsmctot/default/default
+
+ fitcase: D0
+ latexnamehadron: "D^{0}#arrow{K#pi}"
+ latexbin2var: "FT0M"
+ nevents: 290860860000
+ dobkgfromsideband: false
+ mass_fit_lim: [1.5, 2.22] # region for the fit of the invariant mass distribution [GeV/c^2]
+ bin_width: 0.001 # bin width of the invariant mass histogram
+ n_rebin: [2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 7, 8] # number of mass bins to merge
+
+ data_selections:
+ mcsig:
+ level: mc
+ query: '(isd0 & seld0) or (isd0bar & seld0bar)'
+ mcrefl:
+ level: mc
+ query: '(isd0 & seld0bar) or (isd0bar & seld0))'
+
+ fit_levels: ['mcsig', 'mcrefl', 'mc', 'data']
+ pdf_names:
+ pdf_sig: "sig"
+ pdf_bkg: "bkg"
+ param_names:
+ mass: "m"
+ gauss_mean: "mean"
+ gauss_sigma: "sigma_g1"
+ double_gauss_sigma: "sigma_wide"
+ fraction_refl: "frac_refl"
+
+ mass_roofit:
+ - level: mcsig
+ ptrange: [0., 24.]
+ datasel: mcsig
+ range: [1.60, 2.14]
+ components:
+ sig:
+ fn: 'Gaussian::peak(m[1.,5.], mean[1.84,1.89], sigma_g1[.008,.25])'
+ bkg:
+ fn: 'Gaussian::wide(m, mean, sigma_wide[.05,1.])'
+ model:
+ fn: 'SUM::sig(frac_wide[0.,.3]*wide, peak)'
+ - level: mcrefl
+ ptrange: [0., 8.]
+ datasel: mcrefl
+ range: [1.60, 2.14]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.1])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.0], sigma_r[.01,.1])'
+ model:
+ fn: 'SUM::refl(frac_l[0.1,.9]*refl_l, refl_r)'
+ - level: mcrefl
+ ptrange: [8., 48.]
+ datasel: mcrefl
+ range: [1.40, 2.40]
+ components:
+ refl_l:
+ fn: 'Gaussian::refl_l(m, mean_l[1.7,1.865], sigma_l[.01,.2])'
+ refl_r:
+ fn: 'Gaussian::refl_r(m, mean_r[1.865,2.1], sigma_r[.01,.2])'
+ model:
+ fn: 'SUM::refl(frac_l[0.,1.]*refl_l, refl_r)'
+ - level: mc
+ ptrange: [0., 8.]
+ range: [1.60, 2.14]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - level: mc
+ ptrange: [8., 48.]
+ range: [1.40, 2.40]
+ fix_params: ['frac_l', 'mean_l', 'mean_r', 'sigma_l', 'sigma_r', 'frac_wide', 'sigma_g1', 'sigma_wide']
+ components:
+ model:
+ fn: 'SUM::sigrefl(frac_refl[0.,1.]*refl, sig)'
+ - ptrange: [0., 6]
+ range: [1.72, 2.06]
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - ptrange: [6., 8.]
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ range: [1.72, 2.12]
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+ - range: [1.72, 2.20]
+ fix_params: ['frac_refl']
+ free_params: ['sigma_g1']
+ components:
+ bkg:
+ fn: 'Exponential::bkg(m, alpha[-100,0])'
+ model:
+ fn: 'SUM::sum(frac[0.,1.]*sigrefl, bkg)'
+
+ systematics:
+ probvariation:
+ useperiod: [0, 0, 1] #period from where to define prob cuts
+ ncutvar: 10 #number of looser and tighter variations
+ maxperccutvar: 0.25 #max diff in efficiency for loosest/tightest var
+ cutvarminrange: [[0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9]] #Min starting point for scan
+ cutvarmaxrange: [[0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.7, 0.9], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.1, 0.3], [0.7, 0.9]] #Max starting point for scan
+ fixedmean: True #Fix mean cutvar histo to central fit
+ fixedsigma: True #Fix sigma cutvar histo to central fit
+ mcptshape:
+ #FONLL / generated LHC19h4c1
+ weights: [1.000000]
+ #From SetPtWeightsFromFONLL13overLHC17c3a12 in AliPhysics
+ #weights: [1.429770]
+ weights_min_pt: 0
+ weights_max_pt: 40
+ weights_bins: 400
diff --git a/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi.yml b/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi.yml
index 3cc0fc1b3a..30373d7f62 100644
--- a/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi.yml
+++ b/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi.yml
@@ -82,11 +82,11 @@ LcpKpi:
#extra:
#fY: log((sqrt(2.28646**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(2.28646**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated
tags:
- isstd: {var: fFlagMcMatchRec, req: [[1], []], level: mc}
- ismcsignal: {var: fFlagMcMatchRec, req: [[1], []], abs: true, level: mc}
- ismcbkg: {var: fFlagMcMatchRec, req: [[], [1]], abs: true, level: mc}
- ismcprompt: {var: fOriginMcRec, req: [[0], []], level: mc}
- ismcfd: {var: fOriginMcRec, req: [[1], []], level: mc}
+ isstd: {var: fFlagMcMatchRec, req: 17, level: mc}
+ ismcsignal: {var: fFlagMcMatchRec, req: 17, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcRec, req: 1, level: mc}
+ ismcfd: {var: fOriginMcRec, req: 2, level: mc}
swap: {cand: fCandidateSelFlag, var_swap: fIsCandidateSwapped, vars: [ismcsignal, ismcprompt, ismcfd], level: mc}
gen:
@@ -94,11 +94,11 @@ LcpKpi:
trees:
O2hflcpbase: [fIndexHFLCMCCOLLBASES, fPt, fY, fEta, fPhi, fFlagMcMatchGen, fOriginMcGen]
tags:
- isstd: {var: fFlagMcMatchGen, req: [[1], []], level: mc}
- ismcsignal: {var: fFlagMcMatchGen, req: [[1], []], abs: true, level: mc}
- ismcbkg: {var: fFlagMcMatchGen, req: [[], [1]], abs: true, level: mc}
- ismcprompt: {var: fOriginMcGen, req: [[0], []], level: mc}
- ismcfd: {var: fOriginMcGen, req: [[1], []], level: mc}
+ isstd: {var: fFlagMcMatchGen, req: 17, level: mc}
+ ismcsignal: {var: fFlagMcMatchGen, req: 17, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcGen, req: 1, level: mc}
+ ismcfd: {var: fOriginMcGen, req: 2, level: mc}
#extra:
#fY: log((sqrt(2.28646**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(2.28646**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated
@@ -276,13 +276,13 @@ LcpKpi:
period: [LHC24h1] #list of periods
select_period: [1]
prefix_dir: /data2/MLhep/
- #unmerged_tree_dir: [sim/train_339426/alice/cern.ch/user/a/alihyperloop/jobs/0130] #list of periods training
- unmerged_tree_dir: [sim/train_341075/alice/cern.ch/user/a/alihyperloop/jobs/0132] #list of periods
- pkl: [LHC23pp_mc_tuner_mb/prod_LHC24h1/pklmc] #list of periods
- pkl_skimmed: [LHC23pp_mc_tuner_mb/prod_LHC24h1/pklskmc] #list of periods
- pkl_skimmed_merge_for_ml: [LHC23pp_mc_tuner_mb/prod_LHC24h1/pklskmlmc] #list of periods
- pkl_skimmed_merge_for_ml_all: LHC23pp_mc_tuner_mb/prod_LHC24_ana/mltotmc
- pkl_evtcounter_all: LHC23pp_mc_tuner_mb/prod_LHC24_ana/evttotmc
+ #unmerged_tree_dir: [trains/428708/alice] #list of periods
+ unmerged_tree_dir: [trains/428753/alice] #list of periods
+ pkl: ["${USER}/LHC23pp_mc_tuner_mb/prod_LHC24h1b/pklmc"] #list of periods
+ pkl_skimmed: ["${USER}/LHC23pp_mc_tuner_mb/prod_LHC24h1b/pklskmc"] #list of periods
+ pkl_skimmed_merge_for_ml: ["${USER}/LHC23pp_mc_tuner_mb/prod_LHC24h1/pklskmlmc"] #list of periods
+ pkl_skimmed_merge_for_ml_all: "${USER}/HC23pp_mc_tuner_mb/prod_LHC24_ana/mltotmc"
+ pkl_evtcounter_all: "${USER}/LHC23pp_mc_tuner_mb/prod_LHC24_anab/evttotmc"
#select_jobs: [[hy_396609], [hy_396597]]
mcreweights: [../Analyses]
ml:
@@ -334,11 +334,11 @@ LcpKpi:
mlapplication:
data:
- prefix_dir_app: /data2/ldellost/MLhep_newformat_mb/
+ prefix_dir_app: /data2/ldellost/MLhep_newformat_mb_DD/
pkl_skimmed_dec: [LHC23pp/MLapplication/prod_LHC23/skpkldecdata] #list of periods
pkl_skimmed_decmerged: [LHC23pp/MLapplication/prod_LHC23/skpkldecdatamerged] #list of periods
mc:
- prefix_dir_app: /data2/ldellost/MLhep_newformat_mb/
+ prefix_dir_app: /data2/ldellost/MLhep_newformat_mb_DD_h1b/
pkl_skimmed_dec: [LHC23pp_mc/MLapplication_mult/prod_LHC24h1/skpkldecmc] #list of periods
pkl_skimmed_decmerged: [LHC23pp_mc/MLapplication_mult/prod_LHC24h1/skpkldecmcmerged] #list of periods
modelname: xgboost
@@ -432,148 +432,40 @@ LcpKpi:
# Decide whether to take the sigma from MC or data for individual fits
mass_roofit:
- level: mc
- ptrange: [0., 4.]
- range: [2.18, 2.39]
- components:
- sig:
- fn: 'Gaussian::sig(m[1., 10], mean[2.286, 2.2832,2.289], sigma_g1[.007,.007,.012])'
- #wide:
- # fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
- #model:
- # fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
- bkg:
- fn: 'Exponential::mcbkg(m, mcalpha[0.])'
- model:
- fn: 'SUM::mctot(mcfrac[0., 0., 1.0]*sig, mcbkg)'
- - level: mc
- ptrange: [4., 6.]
- range: [2.18, 2.39]
- components:
- sig:
- fn: 'Gaussian::sig(m[1., 10], mean[2.286, 2.283,2.289], sigma_g1[.012,.01,.016])'
- #wide:
- # fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
- #model:
- # fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
- bkg:
- fn: 'Exponential::mcbkg(m, mcalpha[0.])'
- model:
- fn: 'SUM::mctot(mcfrac[0., 0., 1.0]*sig, mcbkg)'
- - level: mc
- ptrange: [6., 10.]
+ ptrange: [0., 24.]
range: [2.10, 2.45]
components:
sig:
- fn: 'Gaussian::sig(m[1., 10], mean[2.2865, 2.283,2.289], sigma_g1[.013,.013,.020])'
- #wide:
- # fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
- #model:
- # fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
- bkg:
- fn: 'Exponential::mcbkg(m, mcalpha[0.])'
- model:
- fn: 'SUM::mctot(mcfrac[0., 0., 1.0]*sig, mcbkg)'
- - level: mc
- ptrange: [10., 24.]
- range: [2.10, 2.45]
- components:
- sig:
- fn: 'Gaussian::sig(m[1., 10], mean[2.2865, 2.283,2.289], sigma_g1[.013,.020,.029])'
- #wide:
- # fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
- #model:
- # fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
- bkg:
- fn: 'Exponential::mcbkg(m, mcalpha[0.])'
- model:
- fn: 'SUM::mctot(mcfrac[0., 0., 1.0]*sig, mcbkg)'
- - ptrange: [0., 2.]
- range: [2.216, 2.36] #2.216, 2.36
- #fix_params: ['n', 'f_peak']
- components:
- #sig:
- #fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ fn: 'Gaussian::peak(m[1., 10], mean[2.283,2.289], sigma_g1[.007,.025])'
+ wide:
+ fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [2., 3.]
+ fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
+ - ptrange: [0., 4.]
range: [2.21, 2.36]
- #fix_params: ['n', 'f_peak']
- components:
- #sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e8, 1e8], a1[-1e8, 1e8], a2[-1e8, 1e8]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [3., 4.]
- range: [2.20, 2.37]
- #fix_params: ['n', 'f_peak']
- components:
- #sig:
- #fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e8, 1e8], a1[-1e8, 1e8], a2[-1e8, 1e8]})'
- model:
- fn: 'SUM::sum(f_sig[0., 0., 0.8]*sig, bkg)'
- - ptrange: [4., 5.]
- range: [2.19, 2.38]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[2000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [5., 6.]
- range: [2.18, 2.39]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[8000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [6., 7.]
- range: [2.16, 2.42]
- #fix_params: ['n', 'f_peak']
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[2000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [7., 8.]
- range: [2.16, 2.42]
- #fix_params: ['n', 'f_peak']
+ - ptrange: [4., 8.]
+ range: [2.16, 2.40]
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[2000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [8., 10.]
+ - ptrange: [8., 24.]
range: [2.1, 2.46]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[1000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - range: [2.1, 2.46]
- #fix_params: ['n', 'f_peak']
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[2000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
diff --git a/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi_mult.yml b/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi_mult.yml
index 1d0415c30a..731b72bcea 100644
--- a/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi_mult.yml
+++ b/machine_learning_hep/data/data_run3/database_ml_parameters_LcToPKPi_mult.yml
@@ -64,6 +64,7 @@ LcpKpi:
trees:
O2hflcmccollbase: [fPosX, fPosY, fPosZ, fCentFT0M]
O2hflcmcrcollid: [fIndexArrayHFLCCOLLBASES]
+ rename: {old: fCentFT0M, new: fCentFT0Mmc}
reco:
level: all
@@ -81,11 +82,11 @@ LcpKpi:
#extra:
#fY: log((sqrt(2.28646**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(2.28646**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated
tags:
- isstd: {var: fFlagMcMatchRec, req: [[1], []], level: mc}
- ismcsignal: {var: fFlagMcMatchRec, req: [[1], []], abs: true, level: mc}
- ismcbkg: {var: fFlagMcMatchRec, req: [[], [1]], abs: true, level: mc}
- ismcprompt: {var: fOriginMcRec, req: [[0], []], level: mc}
- ismcfd: {var: fOriginMcRec, req: [[1], []], level: mc}
+ isstd: {var: fFlagMcMatchRec, req: 17, level: mc}
+ ismcsignal: {var: fFlagMcMatchRec, req: 17, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcRec, req: 1, level: mc}
+ ismcfd: {var: fOriginMcRec, req: 2, level: mc}
swap: {cand: fCandidateSelFlag, var_swap: fIsCandidateSwapped, vars: [ismcsignal, ismcprompt, ismcfd], level: mc}
gen:
@@ -93,11 +94,11 @@ LcpKpi:
trees:
O2hflcpbase: [fIndexHFLCMCCOLLBASES, fPt, fY, fEta, fPhi, fFlagMcMatchGen, fOriginMcGen]
tags:
- isstd: {var: fFlagMcMatchGen, req: [[1], []], level: mc}
- ismcsignal: {var: fFlagMcMatchGen, req: [[1], []], abs: true, level: mc}
- ismcbkg: {var: fFlagMcMatchGen, req: [[], [1]], abs: true, level: mc}
- ismcprompt: {var: fOriginMcGen, req: [[0], []], level: mc}
- ismcfd: {var: fOriginMcGen, req: [[1], []], level: mc}
+ isstd: {var: fFlagMcMatchGen, req: 17, level: mc}
+ ismcsignal: {var: fFlagMcMatchGen, req: 17, abs: true, level: mc}
+ ismcbkg: {var: ismcsignal, req: 0, level: mc}
+ ismcprompt: {var: fOriginMcGen, req: 1, level: mc}
+ ismcfd: {var: fOriginMcGen, req: 2, level: mc}
#extra:
#fY: log((sqrt(2.28646**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(2.28646**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated
@@ -249,6 +250,7 @@ LcpKpi:
namefile_evtvalroot: AnalysisResultsROOTEvtVal.root
namefile_evtorig: AnalysisResultsEvtOrig.parquet
namefile_gen: AnalysisResultsGen.parquet
+ namefile_gen_sl: AnalysisResultsGenSl.parquet
namefile_reco_applieddata: AnalysisResultsRecoAppliedData.parquet
namefile_reco_appliedmc: AnalysisResultsRecoAppliedMC.parquet
namefile_mcweights: mcweights.root
@@ -264,7 +266,7 @@ LcpKpi:
maxfiles: [-1] #list of periods
chunksizeunp: [100] #list of periods
chunksizeskim: [100] #list of periods
- fracmerge: [0.05] #list of periods
+ fracmerge: [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05] #list of periods
seedmerge: [12] #list of periods
period: [LHC23] #list of periods
select_period: [1]
@@ -282,13 +284,13 @@ LcpKpi:
maxfiles: [-1] #list of periods
chunksizeunp: [100] #list of periods
chunksizeskim: [100] #list of periods
- fracmerge: [1.0] #list of periods
+ fracmerge: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] #list of periods
seedmerge: [1] #list of periods
period: [LHC24h1] #list of periods
select_period: [1]
prefix_dir: /data2/MLhep/
unmerged_tree_dir: [sim/train_341075/alice/cern.ch/user/a/alihyperloop/jobs/0132] #list of periods
- pkl: [LHC23pp_mc_tuner_mult/prod_LHC24h1/pklmc] #list of periods
+ pkl: [LHC23pp_mc_tuner_mult/prod_LHC24h1/pklmc2] #list of periods
pkl_skimmed: [LHC23pp_mc_tuner_mult/prod_LHC24h1/pklskmc] #list of periods
pkl_skimmed_merge_for_ml: [LHC23pp_mc_tuner_mult/prod_LHC24h1/pklskmlmc] #list of periods
pkl_skimmed_merge_for_ml_all: LHC23pp_mc_tuner_mult/prod_LHC24_ana/mltotmc
@@ -363,17 +365,18 @@ LcpKpi:
- xgboost_classifierLcpKpi_dfselection_fPt_10.0_12.0.sav
- xgboost_classifierLcpKpi_dfselection_fPt_12.0_24.0.sav
probcutpresel:
- data: [[0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.1, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.3, 0.0, 0.0], [0.4, 0.0, 0.0]] #list of nbins
- mc: [[0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.1, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.2, 0.0, 0.0], [0.3, 0.0, 0.0], [0.4, 0.0, 0.0]] #list of nbins
- probcutoptimal: [[0.02, 0.0, 0.0], [0.03, 0.0, 0.0], [0.04, 0.0, 0.0], [0.07, 0.0, 0.0], [0.09, 0.0, 0.0], [0.11, 0.0, 0.0], [0.15, 0.0, 0.0], [0.18, 0.0, 0.0], [0.25, 0.0, 0.0], [0.35, 0.0, 0.0]] #list of nbins
+ data: [[0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.08, 0.0, 0.0], [0.15, 0.0, 0.0], [0.20, 0.0, 0.0], [0.30, 0.0, 0.0], [0.40, 0.0, 0.0], [0.50, 0.0, 0.0], [0.60, 0.0, 0.0], [0.80, 0.0, 0.0]] #list of nbins
+ mc: [[0.05, 0.0, 0.0], [0.05, 0.0, 0.0], [0.08, 0.0, 0.0], [0.15, 0.0, 0.0], [0.20, 0.0, 0.0], [0.30, 0.0, 0.0], [0.40, 0.0, 0.0], [0.50, 0.0, 0.0], [0.60, 0.0, 0.0], [0.80, 0.0, 0.0]] #list of nbins
+ probcutoptimal: [[0.02, 0.40, 0.0], [0.03, 0.25, 0.0], [0.04, 0.25, 0.0], [0.07, 0.25, 0.0], [0.10, 0.25, 0.0], [0.11, 0.25, 0.0], [0.15, 0.25, 0.0], [0.18, 0.25, 0.0], [0.25, 0.25, 0.0], [0.35, 0.25, 0.0]] #list of nbins
analysis:
anahptspectrum: "LctopKpi" #D0Kpi, DplusKpipi, DstarD0pi, DsKKpi, LctopKpi, LcK0Sp
- fd_method: "Nb" # fc, Nb, ext, dd, dd_N
- crosssec_prompt: true # true for prompt, false for non-prompt
+ fd_method: "dd" # fc, Nb, ext, dd, dd_N
+ crosssec_prompt: True # True for prompt, False for non-prompt
cctype: "pp"
sigmamb: 59.4e+9 # 50.87e+9 pp5TeV, 57.8e+9 pp13TeV, 59.4e+9 pp Run3, pb
- inputfonllpred: data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root #data/fonll/CutVarLc_pp13TeV_LHC23_pass4_wide.root #
+ inputfonllpred: data/fonll/CutVarLc_pp13TeV_LHC23_pass4_wide.root #data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root #
+ #inputfonllpred: data/fonll/DmesonLcPredictions_13TeV_y05_FFptDepLHCb_BRpythia8_PDG2020.root
dir_general_plots: analysis_plots
Run3analysis_forward:
@@ -381,7 +384,7 @@ LcpKpi:
useperiod: [1]
plotbin: [1, 1, 1, 1, 1, 1, 1]
usesinglebineff: null
- fprompt_from_mb: true
+ fprompt_from_mb: false
corrEffMult: [false, true, true, true, true, true, true, true]
event_cand_validation: False
sel_binmin2: [0, 85, 70, 50, 30, 10, 1, 0] #list of var2 splittng nbins
@@ -397,6 +400,14 @@ LcpKpi:
maxvaluehisto: 100.0005
triggerbit: ''
+ variations_db: database_variations_LcToPKPi.yml
+ observables:
+ hptspectrum:
+ bins_gen_var: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 24]
+ bins_det_var: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 24]
+ label: "#it{p}_{T}"
+ label_y: "#Lambda_{c} Cross section"
+
event_weighting_mc:
LHC24h1:
- filepath: data/event_weighting_mc/MultWeigths.root
@@ -450,23 +461,24 @@ LcpKpi:
data:
runselection: [null] #FIXME
- prefix_dir_res: /data2/ldellost/MLhep_newformat/
+ prefix_dir_res: /data2/ldellost/MLhep_newformat_fixed/
results: [LHC23pp_forw/Results/prod_LHC23/resultsdata] #list of periods
resultsallp: LHC23pp_forw/Results/resultsdatatot
mc:
runselection: [null] #FIXME
- prefix_dir_res: /data2/ldellost/MLhep_newformat/
+ prefix_dir_res: /data2/ldellost/MLhep_newformat_fixed/
results: [LHC23pp_mc_forw/Results/prod_LHC24h1/resultsmc] #list of periods
resultsallp: LHC23pp_mc_forw/Results/prod_LHC23/resultsmctot
fitcase: Lc
latexnamehadron: "#Lambda_{c}^{pK#pi}"
latexbin2var: "FT0M"
- nevents: 258442910841
+ #nevents: 258442910841
+ nevents: 290860860000
dobkgfromsideband: false
mass_fit_lim: [2.10, 2.47] # region for the fit of the invariant mass distribution [GeV/c^2]
bin_width: 0.001 # bin width of the invariant mass histogram
- n_rebin: [2, 2, 2, 2, 3, 3, 3, 4, 5, 6] # number of mass bins to merge
+ n_rebin: [2, 2, 2, 2, 2, 3, 3, 4, 5, 6]
pdf_names:
pdf_sig: "sig"
@@ -477,110 +489,47 @@ LcpKpi:
gauss_sigma: "sigma_g1"
double_gauss_sigma: "sigma_wide"
fraction_refl: "frac_refl"
+ alpha_l: "alpha1"
+ n_l: "n1"
# To initialize the individual fits in pT bins
# Decide whether to take the sigma from MC or data for individual fits
mass_roofit:
- level: mc
+ ptrange: [0., 24.]
range: [2.10, 2.45]
components:
sig:
- fn: 'Gaussian::sig(m[2., 4.], mean[2.282,2.29], sigma_g1[.006,.006,.025])'
- #wide:
- # fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
- #model:
- # fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
- bkg:
- fn: 'Exponential::mcbkg(m, mcalpha[0.])'
- model:
- fn: 'SUM::mctot(mcfrac[0., 0., 1.0]*sig, mcbkg)'
- - ptrange: [1., 2.]
- range: [2.216, 2.36] #2.21, 2.36
- #fix_params: ['n', 'f_peak']
- components:
- #sig:
- #fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [2., 3.]
- range: [2.20, 2.37]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [3., 4.]
- range: [2.19, 2.38]
- #fix_params: ['n', 'f_peak']
- components:
- #sig:
- #fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[-1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ fn: 'Gaussian::peak(m[1., 10], mean[2.283,2.289], sigma_g1[.007,.025])'
+ wide:
+ fn: 'Gaussian::wide(m, mean, expr("n*sigma_g1", n[1.,5.], sigma_g1))'
model:
- fn: 'SUM::sum(f_sig[0., 0., 0.8]*sig, bkg)'
- - ptrange: [4., 5.]
- range: [2.18, 2.40]
- #fix_params: ['n', 'f_peak']
+ fn: 'SUM::sig(f_peak[0.,1.]*peak, wide)'
+ - ptrange: [0., 4.]
+ range: [2.21, 2.36]
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[5000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [5., 6.]
- range: [2.18, 2.40]
- #fix_params: ['n', 'f_peak']
+ - ptrange: [4., 8.]
+ range: [2.16, 2.40]
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.005,.015])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[8000, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [6., 7.]
- range: [2.18, 2.40]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[219, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [7., 8.]
- range: [2.16, 2.42]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[200, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - ptrange: [8., 10.]
+ - ptrange: [8., 24.]
range: [2.1, 2.46]
- #fix_params: ['n', 'f_peak']
- components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
- bkg:
- fn: 'Polynomial::bkg(m, {a0[500, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
- model:
- fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
- - range: [2.1, 2.46]
- #fix_params: ['n', 'f_peak']
+ fix_params: ['n', 'f_peak']
components:
- # sig:
- # fn: 'Gaussian::sig(m, mean[2.28,2.29], sigma_g1[.005,.03])'
bkg:
- fn: 'Polynomial::bkg(m, {a0[200, -1e10, 1e10], a1[-1e10, 1e10], a2[-1e10, 1e10]})'
+ #fn: 'Polynomial::bkg(m, {a0[-1,1], a1[-1,1]})'
+ fn: 'Chebychev::bkg(m, {a0[-1,1], a1[-1,1]})'
model:
fn: 'SUM::sum(f_sig[0.,1.]*sig, bkg)'
diff --git a/machine_learning_hep/processerdhadrons.py b/machine_learning_hep/processerdhadrons.py
index a46e90ee37..f3f3e45f9a 100755
--- a/machine_learning_hep/processerdhadrons.py
+++ b/machine_learning_hep/processerdhadrons.py
@@ -164,7 +164,7 @@ def process_histomass_single(self, index):
self.lpt_probcutfin[ipt],
)
- h_invmass = TH1F("hmass" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1])
+ h_invmass = TH1F("hmass_" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1])
fill_hist(h_invmass, df[self.v_invmass])
myfile.cd()
@@ -174,10 +174,10 @@ def process_histomass_single(self, index):
df_sig = df[df[self.v_ismcsignal] == 1]
df_bkg = df[df[self.v_ismcbkg] == 1]
h_invmass_sig = TH1F(
- "hmass_sig" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
+ "hmass_sig_" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
)
h_invmass_bkg = TH1F(
- "hmass_bkg" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
+ "hmass_bkg_" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
)
fill_hist(h_invmass_sig, df_sig[self.v_invmass])
diff --git a/machine_learning_hep/processerdhadrons_mult.py b/machine_learning_hep/processerdhadrons_mult.py
index c0d060a9c0..e11198af51 100755
--- a/machine_learning_hep/processerdhadrons_mult.py
+++ b/machine_learning_hep/processerdhadrons_mult.py
@@ -95,9 +95,14 @@ def __init__(
d_mcreweights,
)
+ self.v_is_part = datap["bitmap_sel"].get("var_is_part", "")
+ self.v_is_antipart = datap["bitmap_sel"].get("var_is_antipart", "")
+ self.v_issel_part = datap["bitmap_sel"].get("var_issel_part", "")
+ self.v_issel_antipart = datap["bitmap_sel"].get("var_issel_antipart", "")
self.v_invmass = datap["variables"].get("var_inv_mass", "fM")
self.p_mass_fit_lim = datap["analysis"][self.typean]["mass_fit_lim"]
self.p_bin_width = datap["analysis"][self.typean]["bin_width"]
+ self.reflections = datap["analysis"][self.typean].get("reflections", False)
self.binarray_pthf = np.asarray(self.cfg("sel_an_binmin", []) + self.cfg("sel_an_binmax", [])[-1:], "d")
limits_mass = datap["analysis"][self.typean]["mass_fit_lim"]
nbins_mass = int(round((limits_mass[1] - limits_mass[0]) / self.p_bin_width))
@@ -237,7 +242,7 @@ def process_histomass_single(self, index):
self.lvar2_binmin[ibin2],
self.lvar2_binmax[ibin2],
)
- h_invmass = TH1F("hmass" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1])
+ h_invmass = TH1F("hmass_" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1])
df_bin = seldf_singlevar_inclusive(
df, self.v_var2_binning, self.lvar2_binmin[ibin2], self.lvar2_binmax[ibin2]
)
@@ -247,13 +252,36 @@ def process_histomass_single(self, index):
if self.mcordata == "mc":
df_bin_sig = df_bin[df_bin[self.v_ismcsignal] == 1]
+ if self.reflections:
+ df_bin_sig = df_bin[
+ ((df_bin[self.v_is_part] == 1) & (df_bin[self.v_issel_part] == 1))
+ | ((df_bin[self.v_is_antipart] == 1) & (df_bin[self.v_issel_antipart] == 1))
+ & (df_bin[self.v_ismcsignal] == 1)
+ ]
h_invmass_sig = TH1F(
- "hmass_sig" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
+ "hmass_mcsig_" + suffix, "", self.p_num_bins, self.p_mass_fit_lim[0], self.p_mass_fit_lim[1]
)
fill_hist(h_invmass_sig, df_bin_sig[self.v_invmass])
+
myfile.cd()
h_invmass_sig.Write()
+ if self.reflections:
+ df_bin_refl = df_bin[
+ ((df_bin[self.v_is_part] == 1) & (df_bin[self.v_issel_antipart] == 1))
+ | ((df_bin[self.v_is_antipart] == 1) & (df_bin[self.v_issel_part] == 1))
+ & (df_bin[self.v_ismcsignal] == 1)
+ ]
+ h_invmass_refl = TH1F(
+ "hmass_mcrefl_" + suffix,
+ "",
+ self.p_num_bins,
+ self.p_mass_fit_lim[0],
+ self.p_mass_fit_lim[1],
+ )
+ fill_hist(h_invmass_refl, df_bin_refl[self.v_invmass])
+ h_invmass_refl.Write()
+
if self.event_cand_validation is True:
label = "h%s" % self.v_var2_binning
histomult = TH1F(label, label, self.nbinshisto, self.minvaluehisto, self.maxvaluehisto)
@@ -335,9 +363,7 @@ def process_efficiency_single(self, index):
out_file = TFile.Open(self.l_histoeff[index], "recreate")
h_list = []
for ibin2, _ in enumerate(self.lvar2_binmin):
- stringbin2 = "_{}_{:.2f}_{:.2f}".format(
- self.v_var2_binning, self.lvar2_binmin[ibin2], self.lvar2_binmax[ibin2]
- )
+ stringbin2 = f"_{self.v_var2_binning}_{self.lvar2_binmin[ibin2]:.2f}_{self.lvar2_binmax[ibin2]:.2f}"
n_bins = len(self.lpt_finbinmin)
analysis_bin_lims_temp = self.lpt_finbinmin.copy()
analysis_bin_lims_temp.append(self.lpt_finbinmax[n_bins - 1])