diff --git a/machine_learning_hep/data/data_run3/database_ml_parameters_D0Jet_pp.yml b/machine_learning_hep/data/data_run3/database_ml_parameters_D0Jet_pp.yml index cab92b950d..b1dd5cf8c8 100644 --- a/machine_learning_hep/data/data_run3/database_ml_parameters_D0Jet_pp.yml +++ b/machine_learning_hep/data/data_run3/database_ml_parameters_D0Jet_pp.yml @@ -12,813 +12,1205 @@ # along with this program. if not, see . # D0Jet_pp: - doml: true - mass: 1.86484 - sel_reco_unp: "fPt > 1." - sel_reco_singletrac_unp: null - sel_gen_unp: "fPt > 1." - sel_cen_unp: null - sel_good_evt_unp: null - # sel_reco_skim: ["mlBkgScore < 0.02", "mlBkgScore < 0.04", "mlBkgScore < 0.06", "mlBkgScore < .08", "mlBkgScore < 0.14", "mlBkgScore < 0.26", "mlBkgScore < 0.46", "mlBkgScore < 0.52"] # (sel_skim_binmin bins) FIXME: Update for new model. - sel_reco_skim: [null,null,null,null,null,null,null,null] # (sel_skim_binmin bins) FIXME: Update for new model. - sel_gen_skim: [null,null,null,null,null,null,null,null] # (sel_skim_binmin bins) FIXME: Update for new model. - sel_skim_binmin: [1,3,4,5,6,8,12,16] # skimming pt bins (sel_skim_binmin bins) FIXME: Update for new model. - sel_skim_binmax: [3,4,5,6,8,12,16,48] # skimming pt bins (sel_skim_binmin bins) FIXME: Update for new model. - var_binning: fPt - dofullevtmerge: false - - # obsolete, to be removed - # var_cand: fCandidateSelFlag - # # var_swap: fIsCandidateSwapped - 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],[1]] - ismcfd: [[1],[0]] - ismcbkg: [[],[1]] - ismcrefl: [[1],[1]] # probably missing from tree creator - - #region dfs - dfs: - read: - evtorig: - index: fIndexHfD0McCollBases - trees: - O2hfd0collbase: [fNumContrib, fPosZ] - filter: "abs(fPosZ) < 10." - collcnt: - trees: - O2collcount: [fReadCounts, fReadCountsWithTVX, fReadCountsWithTVXAndZVertexAndSel8, fReadCountsWithTVXAndZVertexAndSelMC] - bccnt: - trees: - O2bccount: [fReadCountsWithTVX, fReadCountsWithTVXAndNoTFB, fReadCountsWithTVXAndNoTFBAndNoITSROFB] - - collgen: # TODO: check if we can use the HF collision table instead - level: gen - index: fIndexD0CMCPJETCOS - trees: - O2d0cmcpjetco: [fPosZ, fCentrality, fEventSel] - filter: "abs(fPosZ) < 10." - jetgen: - level: gen - index: fIndexD0CMCPJETOS - trees: - O2hfd0pbase: [fIndexHfD0McCollBases, fPt, fEta, fPhi, fFlagMcMatchGen, fOriginMcGen] - O2d0cmcpjeto: [fIndexD0CMCPJETCOS, fJetPt, fJetPhi, fJetEta, fJetNConstituents, fJetR] - O2d0cmcpjetmo: [fIndexArrayD0CMCDJETOS_hf, fIndexArrayD0CMCDJETOS_geo, fIndexArrayD0CMCDJETOS_pt] - O2d0cmcpjetsso: [fEnergyMother, fPtLeading, fPtSubLeading, fTheta, fNSub2DR, fNSub1, fNSub2, fAngularity, fPairPt, fPairEnergy, fPairTheta] - extra: - fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated - tags: - ismcsignal: {var: fFlagMcMatchGen, req: [[0],[]], abs: true} - ismcbkg: {var: fFlagMcMatchGen, req: [[],[0]], abs: true} - ismcprompt: {var: fOriginMcGen, req: [[0],[1]]} - ismcfd: {var: fOriginMcGen, req: [[1],[0]]} - filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut - - colldet: - level: det - index: fIndexD0CMCDJETCOS - trees: - O2d0cmcdjetco: [fPosZ, fCentrality, fEventSel] - filter: "abs(fPosZ) < 10." - jetdet: - level: det - index: fIndexD0CMCDJETOS - trees: # add EEC columns - O2hfd0base: [fIndexHfD0CollBases, fPt, fEta, fPhi, fM] - O2hfd0mc: [fFlagMcMatchRec, fOriginMcRec] - O2hfd0par: [fCpa, fCpaXY, fChi2PCA, - fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, - fImpactParameter0, fImpactParameter1, - fImpactParameterNormalised0, fImpactParameterNormalised1, - fPtProng0, fPtProng1, - fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa] - O2hfd0pare: [fErrorDecayLength, fErrorDecayLengthXY, - fErrorImpactParameter0, fErrorImpactParameter1] - O2hfd0sel: [fCandidateSelFlag] - O2hfd0ml: [fMlScores] - O2d0cmcdjeto: [fIndexD0CMCDJETCOS, fJetPt, fJetPhi, fJetEta, fJetNConstituents, fJetR] - O2d0cmcdjetmo: [fIndexArrayD0CMCPJETOS_hf, fIndexArrayD0CMCPJETOS_geo, fIndexArrayD0CMCPJETOS_pt] - O2d0cmcdjetsso: [fEnergyMother, fPtLeading, fPtSubLeading, fTheta, fNSub2DR, fNSub1, fNSub2, fAngularity, fPairPt, fPairEnergy, fPairTheta] - extra: - fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated - isd0: fFlagMcMatchRec == 1 - isd0bar: fFlagMcMatchRec == -1 - tags: - ismcsignal: {var: fFlagMcMatchRec, req: [[0], []], abs: True} - ismcbkg: {var: fFlagMcMatchRec, req: [[], [0]], abs: True} - seld0: {var: fCandidateSelFlag, req: [[0], []]} - seld0bar: {var: fCandidateSelFlag, req: [[1], []]} - ismcprompt: {var: fOriginMcRec, req: [[0],[1]]} - ismcfd: {var: fOriginMcRec, req: [[1],[0]]} - extract_component: - - {var: fMlScores, newvar: mlBkgScore, component: 0} - filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut - # filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.)) and fJetPt > 5." # TODO: check jet eta cut - # filter: "(fPt > 5 and abs(fY) < 0.8) or (fPt <= 5 and abs(fY) < -0.2/15 * fPt**2 + 1.9/15 * fPt + 0.5)" # TODO: check what we want - - colldata: - level: data - index: fIndexD0CJETCOS - trees: - O2d0cjetco: [fPosZ, fCentrality, fEventSel] - filter: "abs(fPosZ) < 10." # systematics? - jetdata: - level: data - index: fIndexD0CJETOS - trees: - O2hfd0base: [fIndexHfD0CollBases, fPt, fEta, fPhi, fM] - O2hfd0par: [fCpa, fCpaXY, fChi2PCA, - fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, - fImpactParameter0, fImpactParameter1, - fImpactParameterNormalised0, fImpactParameterNormalised1, - fPtProng0, fPtProng1, - fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa] - O2hfd0pare: [fErrorDecayLength, fErrorDecayLengthXY, - fErrorImpactParameter0, fErrorImpactParameter1] - O2hfd0ml: [fMlScores] - O2hfd0sel: [fCandidateSelFlag] - O2d0cjeto: [fIndexD0CJETCOS, fJetPt, fJetPhi, fJetEta, fJetNConstituents, fJetR] - O2d0cjetsso: [fEnergyMother, fPtLeading, fPtSubLeading, fTheta, fNSub2DR, fNSub1, fNSub2, fAngularity, fPairPt, fPairEnergy, fPairTheta] - extra: - fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated - extract_component: - - {var: fMlScores, newvar: mlBkgScore, component: 0} - filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut - - merge: - - {base: jetgen, ref: evtorig} - - {base: jetdet, ref: colldet} - - {base: jetdata, ref: colldata} - - write: - jetgen: - level: gen - file: AnalysisResultsGen.parquet - jetdet: - level: det - file: AnalysisResultsReco.parquet - jetdata: - level: data - file: AnalysisResultsReco.parquet - evtorig: - level: all - file: AnalysisResultsEvtOrig.parquet - evt: - level: all - source: evtorig - file: AnalysisResultsEvt.parquet - collcnt: - level: all - file: AnalysisResultsCollCnt.parquet - bccnt: - level: all - file: AnalysisResultsBcCnt.parquet - - variables: - var_all: [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa] - var_training: [[fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa], - [fDecayLength, fDecayLengthXY, fDecayLengthNormalised, fDecayLengthXYNormalised, fCpa, fCpaXY, fImpactParameter0, fImpactParameter1, fErrorImpactParameter0, fErrorImpactParameter1, fNSigTpcPiExpPi, fNSigTpcKaExpPi, fNSigTpcPiExpKa, fNSigTpcKaExpKa]] - #TODO: add new variables for dca, max_norm_d0d0exp - # sel_skim_binmin bins - var_boundaries: [fCosThetaStar, fPtProng] - var_correlation: - - [fCosThetaStar] # TODO: update - - [fPtProng0] - 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_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: 80 - maxfiles: [-1] #list of periods - chunksizeunp: [100] #list of periods - chunksizeskim: [100] #list of periods - fracmerge: [.1] #list of periods - seedmerge: [12] #list of periods - period: [LHC22o] #list of periods - select_period: [1] - prefix_dir: /data2/MLhep/real/train_260031/ # full stats new - # prefix_dir: /data2/MLhep/real/train_257023/ # full stats - # prefix_dir: /data2/MLhep/real/train_240309/ # Andrea's model - # prefix_dir: /data2/MLhep/real/train_245508/ # pass7 - # prefix_dir: /data2/MLhep/real/train_245509/ # no TOF - # prefix_dir: /data2/MLhep/real/train_245510/ # no PID - # prefix_dir: /data2/MLhep/real/train_245511/ # full PID - unmerged_tree_dir: [/alice/] #list of periods - pkl: ['${USER}/d0jet/pkl'] #list of periods - pkl_skimmed: ['${USER}/d0jet/pklsk'] #list of periods - pkl_skimmed_merge_for_ml: ['${USER}/d0jet/pklskml'] #list of periods - pkl_skimmed_merge_for_ml_all: '${USER}/d0jet/pp_data_mltot' - pkl_evtcounter_all: '${USER}/d0jet/pp_data_evttot' - mcreweights: [../Analyses] #list of periods - mc: - nprocessesparallel: 80 - maxfiles: [-1] #list of periods - chunksizeunp: [100] #list of periods - chunksizeskim: [1000] #list of periods - fracmerge: [1.] #list of periods - seedmerge: [12] #list of periods - period: [LHC24d3b] #list of periods - select_period: [1] - prefix_dir: /data2/MLhep/sim/train_259456/ # full stats new - # prefix_dir: /data2/MLhep/sim/train_257228/ # full stats - # prefix_dir: /data2/MLhep/sim/train_259454/ # 97 % tracking eff - # prefix_dir: /data2/MLhep/sim/train_239774/ # Andrea's model - # prefix_dir: /data2/MLhep/sim/train_244893/ # no TOF - # prefix_dir: /data2/MLhep/sim/train_244894/ # no PID - # prefix_dir: /data2/MLhep/sim/train_244895/ # full PID - unmerged_tree_dir: [alice/] - pkl: ['${USER}/d0jet/pkl'] #list of periods - pkl_skimmed: ['${USER}/d0jet/pklsk'] #list of periods - pkl_skimmed_merge_for_ml: ['${USER}/d0jet/pklskml'] #list of periods - pkl_skimmed_merge_for_ml_all: '${USER}/d0jet/pp_mc_prod_mltot' - pkl_evtcounter_all: '${USER}/d0jet/pp_mc_prod_evttot' - mcreweights: [../Analyses] #list of periods - - ml: - evtsel: null # TODO: fIsEventReject == 0 - triggersel: - data: null - mc: null - - nbkg: 500000 - nsig: 500000 - mult_bkg: [1,1,1,1,1,1,1] - nclasses: [20000, 20000] - sampletags: [0, 1] - equalise_sig_bkg: True - # sampletagforsignal: 1 - # sampletagforbkg: 0 - sel_ml: [fM<1.8 or fM>1.92, ismcprompt == 1] - sel_bkg: fM<1.8 or fM>1.92 - class_labels: [bkg, sig] - nkfolds: 5 - rnd_shuffle: 12 - rnd_splt: 12 - rnd_all: 12 - test_frac: 0.2 - binmin: [1,2,4,6,8,12,24] # must be equal to sel_skim_binmin (sel_skim_binmin bins) - binmax: [2,4,6,8,12,24,48] # must be equal to sel_skim_binmax (sel_skim_binmin bins) - mltype: BinaryClassification - ncorescrossval: 10 - prefix_dir_ml: /data2/jklein/MLhep/ - mlplot: mlplot - mlout: mlout - - opt: - isFONLLfromROOT: true - filename_fonll: 'data/fonll/D0DplusDstarPredictions_13TeV_y05_all_300416_BDShapeCorrected.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,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/jklein/ - 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/jklein/ - pkl_skimmed_dec: [LHC22pp_mc/MLapplication/prod_LHC22b1b/skpkldecmc] #list of periods - pkl_skimmed_decmerged: [LHC22pp_mc/MLapplication/prod_LHC22b1b/skpkldecmcmerged] #list of periods - modelname: xgboost - modelsperptbin: [xgboost_classifierD0pp_jet_dfselection_fPt_1.0_2.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_2.0_4.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_4.0_6.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_6.0_8.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_8.0_12.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_12.0_24.0.sav, - xgboost_classifierD0pp_jet_dfselection_fPt_24.0_48.0.sav] # sel_skim_binmin bins - probcutpresel: - data: [0.75,0.75,0.65,0.65,0.45,0.45,0.45,.45] # sel_skim_binmin bins - mc: [0.75,0.75,0.65,0.65,0.45,0.45,0.45,.45] # sel_skim_binmin bins - probcutoptimal: [0.92,0.90,0.82,0.80,0.60,0.60,0.60,.45] # sel_skim_binmin bins - - #region analysis - analysis: - anahptspectrum: "D0Kpi" #D0Kpi, DplusKpipi, DstarD0pi, DsKKpi, LctopKpi, LcK0Sp # used in analysis/analyzerdhadrons_mult.py - fd_method: "Nb" #fc, Nb - cctype: "pp" - inputfonllpred: data/fonll/D0DplusDstarPredictions_13TeV_y05_all_300416_BDShapeCorrected.root # used in machine_learning_hep/hf_pt_spectrum.py - dir_general_plots: /data2/jklein/data/analysis_plots - - jet_obs: &jet_default - sel_an_binmin: [1,2,3,4,5,6,7,8,10,12,16,24] # hadron pt bins (sel_an_binmin bins) - sel_an_binmax: [2,3,4,5,6,7,8,10,12,16,24,48] # hadron pt bins (sel_an_binmin bins) # FIXME: move the last edge in sel_an_binmin - bins_ptjet: [5, 7, 15, 30, 50, 70] # systematics, TODO: split rec and gen binning - bins_ptjet_eff: [2, 5, 7, 15, 30, 50, 70, 90] # systematics, TODO: split rec and gen binning - cand_collidx: fIndexHfD0CollBases - counter_read_data: fReadCountsWithTVXAndZVertexAndSel8 - counter_read_mc: fReadCountsWithTVXAndZVertexAndSelMC - counter_tvx: fReadCountsWithTVX - xsection_inel: 59.4 # (mb) cross-section of minimum-bias events # used # systematics - lumi_scale_mc: 408 # charm enhancement factor in MC to scale the MC luminosity - branching_ratio: 3.947e-2 # used - - observables: - zg: - bins_gen_var: [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] - bins_det_var: [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] - label: '#it{z}_{g}' - label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{z}_{g}" - nsd: - bins_gen_fix: [7, -.5, 6.5] - bins_det_fix: [7, -.5, 6.5] - label: '#it{n}_{SD}' - label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{n}_{SD}" - rg: - bins_gen_var: [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] - bins_det_var: [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] - label: '#it{R}_{g}' - label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{R}_{g}" - zpar: - # bins_gen_fix: [10, 0., 1.] - # bins_det_fix: [10, 0., 1.] - bins_gen_var: [0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.] - bins_det_var: [0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.] - label: '#it{z}_{#parallel}' - label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{z}_{#parallel}" - dr: - bins_gen_fix: [10, 0., 1.] - bins_det_fix: [10, 0., 1.] - label: '#Delta#it{r}' - lntheta: - bins_gen_fix: [10, 0., 5.] - bins_det_fix: [10, 0., 5.] - label: '#minusln(#it{#theta})' - arraycols: [3] - lnkt: - bins_gen_fix: [10, -8., 2.] - bins_det_fix: [10, -8., 2.] - label: 'ln(#it{k}_{T}/(GeV/#it{c}))' - 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)' - - corr_refl: true # systematics - fit_levels: ['mcsig', 'mcrefl', 'mc', 'data'] - 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_per_ptjet: true - sidesub: - - level: mc - regions: - left: [-2., -2.] - signal: [-2., 2.] - right: [3., 3.] - - ptrange: [16., 100.] - regions: - left: [-2., -2.] - signal: [-2., 2.] # systematics - right: [3., 5.] # systematics - - regions: - left: [-5.5, -3.] # systematics - signal: [-2., 2.] # systematics - right: [3., 5.5] # systematics - - # 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.22] # histogram range of the invariant mass distribution [GeV/c^2]; used in processer for binarray_mass (not used for fit range!) - bin_width: 0.001 # bin width of the invariant mass histogram # systematics? - n_rebin: 3 # number of mass bins to merge - efficiency: - extra_cols: ['isd0', 'isd0bar', 'seld0', 'seld0bar', 'mlBkgScore'] - filter_det: '(isd0 & seld0) or (isd0bar & seld0bar)' - index_match: fIndexArrayD0CMCPJETOS_hf - correction_method: run3 - - unfolding_iterations: 8 # used, maximum iteration - unfolding_iterations_sel: 5 # used, selected iteration # systematics - unfolding_prior_flatness: 0. # ranges from 0. (no flatness) to 1. (flat) - - closure: - pure_signal: false - # exclude_feeddown_det: 'ismcsignal==1 & ismcprompt==1' - # exclude_feeddown_gen: 'ismcsignal_gen==1 & ismcprompt_gen==1' - # filter_reflections: '(isd0 & seld0) or (isd0bar & seld0bar)' - use_matched: true - - frac_mcana: .2 # fraction of MC sample for the closure - fd_root: '/data2/vkucera/powheg/trees_powheg_fd_central.root' # systematics - fd_parquet: '/data2/jklein/powheg/trees_powheg_fd_central.parquet' # systematics - - # obsolete? - proc_type: Jets # used - useperiod: [1] #list of periods # used - # 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: [5, 7, 15, 30] # rec jet pt bins (sel_binmin2_reco bins) - # sel_binmax2_reco: [7, 15, 30, 50] # rec jet pt bins (sel_binmin2_reco bins) - # sel_binmin2_gen: [5, 7, 15, 30] # rec jet pt bins (sel_binmin2_reco bins) - # sel_binmax2_gen: [7, 15, 30, 50] # rec jet pt bins (sel_binmin2_reco bins) - # var_binningshape: zg_jet - # var_binningshape_gen: zg_gen_jet - # var_shape_latex: "shape" - # 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 # used but useless - results: ['/home/${USER}/mlhep/d0jet/jet_obs/default/default/data/results'] #list of periods - resultsallp: '/home/${USER}/mlhep/d0jet/jet_obs/default/default/data/results_all' - mc: &mc_out_default - runselection: [null] #FIXME # used but useless - results: ['/home/${USER}/mlhep/d0jet/jet_obs/default/default/mc/results'] #list of periods - resultsallp: '/home/${USER}/mlhep/d0jet/jet_obs/default/default/mc/results_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 # used in cplusutilities/mass_fitter.C - # 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 - - # obsolete (uses Ali... fitter) - # 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.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] # 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.007497,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] # 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 - - # doprior: false - # domodeldep: false - # path_modeldep: /home/nzardosh/PYTHIA_Sim/PYTHIA8_Simulations/Plots/D0_Substructure_Simulations_Output.root - - # replace with fd_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: database_variations_D0Jet_pp_jet_obs.yml - - # Additional cuts applied before mass histogram is filled - use_cuts: True # systematics - cuts: ["mlBkgScore < 0.02", "mlBkgScore < 0.02", "mlBkgScore < 0.02", "mlBkgScore < 0.05", "mlBkgScore < 0.06", "mlBkgScore < 0.08", "mlBkgScore < 0.08", "mlBkgScore < 0.10", "mlBkgScore < 0.10", "mlBkgScore < 0.20", "mlBkgScore < 0.25", "mlBkgScore < 0.30"] # (sel_an_binmin bins) systematics FIXME: Update for new model. - - systematics: # used in machine_learning_hep/analysis/systematics.py - 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.80, 0.80, 0.6, 0.3, 0.3] #Min starting point for scan - cutvarmaxrange: [0.98, 0.95, 0.95, 0.95, 0.95] #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 + doml: true + mass: 1.86484 + sel_reco_unp: "fPt > 1." + sel_reco_singletrac_unp: null + sel_gen_unp: "fPt > 1." + sel_cen_unp: null + sel_good_evt_unp: null + # sel_reco_skim: ["mlBkgScore < 0.02", "mlBkgScore < 0.04", "mlBkgScore < 0.06", "mlBkgScore < .08", "mlBkgScore < 0.14", "mlBkgScore < 0.26", "mlBkgScore < 0.46", "mlBkgScore < 0.52"] # (sel_skim_binmin bins) FIXME: Update for new model. + sel_reco_skim: [null, null, null, null, null, null, null, null] # (sel_skim_binmin bins) FIXME: Update for new model. + sel_gen_skim: [null, null, null, null, null, null, null, null] # (sel_skim_binmin bins) FIXME: Update for new model. + sel_skim_binmin: [1, 3, 4, 5, 6, 8, 12, 16] # skimming pt bins (sel_skim_binmin bins) FIXME: Update for new model. + sel_skim_binmax: [3, 4, 5, 6, 8, 12, 16, 48] # skimming pt bins (sel_skim_binmin bins) FIXME: Update for new model. + var_binning: fPt + dofullevtmerge: false + + # obsolete, to be removed + # var_cand: fCandidateSelFlag + # # var_swap: fIsCandidateSwapped + 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], [1]] + ismcfd: [[1], [0]] + ismcbkg: [[], [1]] + ismcrefl: [[1], [1]] # probably missing from tree creator + + #region dfs + dfs: + read: + evtorig: + index: fIndexHfD0McCollBases + trees: + O2hfd0collbase: [fNumContrib, fPosZ] + filter: "abs(fPosZ) < 10." + collcnt: + trees: + O2collcount: + [ + fReadCounts, + fReadCountsWithTVX, + fReadCountsWithTVXAndZVertexAndSel8, + fReadCountsWithTVXAndZVertexAndSelMC, + ] + bccnt: + trees: + O2bccount: + [ + fReadCountsWithTVX, + fReadCountsWithTVXAndNoTFB, + fReadCountsWithTVXAndNoTFBAndNoITSROFB, + ] + + collgen: # TODO: check if we can use the HF collision table instead + level: gen + index: fIndexD0CMCPJETCOS + trees: + O2d0cmcpjetco: [fPosZ, fCentrality, fEventSel] + filter: "abs(fPosZ) < 10." + jetgen: + level: gen + index: fIndexD0CMCPJETOS + trees: + O2hfd0pbase: + [ + fIndexHfD0McCollBases, + fPt, + fEta, + fPhi, + fFlagMcMatchGen, + fOriginMcGen, + ] + O2d0cmcpjeto: + [ + fIndexD0CMCPJETCOS, + fJetPt, + fJetPhi, + fJetEta, + fJetNConstituents, + fJetR, + ] + O2d0cmcpjetmo: + [ + fIndexArrayD0CMCDJETOS_hf, + fIndexArrayD0CMCDJETOS_geo, + fIndexArrayD0CMCDJETOS_pt, + ] + O2d0cmcpjetsso: + [ + fEnergyMother, + fPtLeading, + fPtSubLeading, + fTheta, + fNSub2DR, + fNSub1, + fNSub2, + fAngularity, + fPairPt, + fPairEnergy, + fPairTheta, + ] + extra: + fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated + tags: + ismcsignal: + { var: fFlagMcMatchGen, req: [[0], []], abs: true } + ismcbkg: { var: fFlagMcMatchGen, req: [[], [0]], abs: true } + ismcprompt: { var: fOriginMcGen, req: [[0], [1]] } + ismcfd: { var: fOriginMcGen, req: [[1], [0]] } + filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut + + colldet: + level: det + index: fIndexD0CMCDJETCOS + trees: + O2d0cmcdjetco: [fPosZ, fCentrality, fEventSel] + filter: "abs(fPosZ) < 10." + jetdet: + level: det + index: fIndexD0CMCDJETOS + trees: # add EEC columns + O2hfd0base: [fIndexHfD0CollBases, fPt, fEta, fPhi, fM] + O2hfd0mc: [fFlagMcMatchRec, fOriginMcRec] + # O2hfd0par: + # [ + # fCpa, + # fCpaXY, + # fChi2PCA, + # fDecayLength, + # fDecayLengthXY, + # fDecayLengthNormalised, + # fDecayLengthXYNormalised, + # fImpactParameter0, + # fImpactParameter1, + # fImpactParameterNormalised0, + # fImpactParameterNormalised1, + # fPtProng0, + # fPtProng1, + # fNSigTpcPiExpPi, + # fNSigTpcKaExpPi, + # fNSigTpcPiExpKa, + # fNSigTpcKaExpKa, + # ] + # O2hfd0pare: + # [ + # fErrorDecayLength, + # fErrorDecayLengthXY, + # fErrorImpactParameter0, + # fErrorImpactParameter1, + # ] + O2hfd0sel: [fCandidateSelFlag] + O2hfd0ml: [fMlScores] + O2d0cmcdjeto: + [ + fIndexD0CMCDJETCOS, + fJetPt, + fJetPhi, + fJetEta, + fJetNConstituents, + fJetR, + ] + O2d0cmcdjetmo: + [ + fIndexArrayD0CMCPJETOS_hf, + fIndexArrayD0CMCPJETOS_geo, + fIndexArrayD0CMCPJETOS_pt, + ] + O2d0cmcdjetsso: + [ + fEnergyMother, + fPtLeading, + fPtSubLeading, + fTheta, + fNSub2DR, + fNSub1, + fNSub2, + fAngularity, + fPairPt, + fPairEnergy, + fPairTheta, + ] + extra: + fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated + isd0: fFlagMcMatchRec == 1 + isd0bar: fFlagMcMatchRec == -1 + tags: + ismcsignal: + { var: fFlagMcMatchRec, req: [[0], []], abs: True } + ismcbkg: { var: fFlagMcMatchRec, req: [[], [0]], abs: True } + seld0: { var: fCandidateSelFlag, req: [[0], []] } + seld0bar: { var: fCandidateSelFlag, req: [[1], []] } + ismcprompt: { var: fOriginMcRec, req: [[0], [1]] } + ismcfd: { var: fOriginMcRec, req: [[1], [0]] } + extract_component: + - { var: fMlScores, newvar: mlBkgScore, component: 0 } + filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut + # filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.)) and fJetPt > 5." # TODO: check jet eta cut + # filter: "(fPt > 5 and abs(fY) < 0.8) or (fPt <= 5 and abs(fY) < -0.2/15 * fPt**2 + 1.9/15 * fPt + 0.5)" # TODO: check what we want + + colldata: + level: data + index: fIndexD0CJETCOS + trees: + O2d0cjetco: [fPosZ, fCentrality, fEventSel] + filter: "abs(fPosZ) < 10." # systematics? + jetdata: + level: data + index: fIndexD0CJETOS + trees: + O2hfd0base: [fIndexHfD0CollBases, fPt, fEta, fPhi, fM] + # O2hfd0par: + # [ + # fCpa, + # fCpaXY, + # fChi2PCA, + # fDecayLength, + # fDecayLengthXY, + # fDecayLengthNormalised, + # fDecayLengthXYNormalised, + # fImpactParameter0, + # fImpactParameter1, + # fImpactParameterNormalised0, + # fImpactParameterNormalised1, + # fPtProng0, + # fPtProng1, + # fNSigTpcPiExpPi, + # fNSigTpcKaExpPi, + # fNSigTpcPiExpKa, + # fNSigTpcKaExpKa, + # ] + # O2hfd0pare: + # [ + # fErrorDecayLength, + # fErrorDecayLengthXY, + # fErrorImpactParameter0, + # fErrorImpactParameter1, + # ] + O2hfd0ml: [fMlScores] + O2hfd0sel: [fCandidateSelFlag] + O2d0cjeto: + [ + fIndexD0CJETCOS, + fJetPt, + fJetPhi, + fJetEta, + fJetNConstituents, + fJetR, + ] + O2d0cjetsso: + [ + fEnergyMother, + fPtLeading, + fPtSubLeading, + fTheta, + fNSub2DR, + fNSub1, + fNSub2, + fAngularity, + fPairPt, + fPairEnergy, + fPairTheta, + ] + extra: + fY: log((sqrt(1.864**2 + (fPt * cosh(fEta))**2) + fPt * sinh(fEta)) / sqrt(1.864**2 + fPt**2)) #TODO : change mass or make sure Lc mass is updated + extract_component: + - { var: fMlScores, newvar: mlBkgScore, component: 0 } + filter: "fPt >= 1. and abs(fY) <= 0.8 and abs(fJetEta) < (.9 - (fJetR / 100.))" # TODO: check jet eta cut + + merge: + - { base: jetgen, ref: evtorig } + - { base: jetdet, ref: colldet } + - { base: jetdata, ref: colldata } + + write: + jetgen: + level: gen + file: AnalysisResultsGen.parquet + jetdet: + level: det + file: AnalysisResultsReco.parquet + jetdata: + level: data + file: AnalysisResultsReco.parquet + evtorig: + level: all + file: AnalysisResultsEvtOrig.parquet + evt: + level: all + source: evtorig + file: AnalysisResultsEvt.parquet + collcnt: + level: all + file: AnalysisResultsCollCnt.parquet + bccnt: + level: all + file: AnalysisResultsBcCnt.parquet + + variables: + var_all: + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ] + var_training: + [ + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + [ + fDecayLength, + fDecayLengthXY, + fDecayLengthNormalised, + fDecayLengthXYNormalised, + fCpa, + fCpaXY, + fImpactParameter0, + fImpactParameter1, + fErrorImpactParameter0, + fErrorImpactParameter1, + fNSigTpcPiExpPi, + fNSigTpcKaExpPi, + fNSigTpcPiExpKa, + fNSigTpcKaExpKa, + ], + ] + #TODO: add new variables for dca, max_norm_d0d0exp + # sel_skim_binmin bins + var_boundaries: [fCosThetaStar, fPtProng] + var_correlation: + - [fCosThetaStar] # TODO: update + - [fPtProng0] + 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_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: 80 + maxfiles: [-1] #list of periods + chunksizeunp: [100] #list of periods + chunksizeskim: [100] #list of periods + fracmerge: [.1] #list of periods + seedmerge: [12] #list of periods + period: [LHC22o] #list of periods + select_period: [1] + prefix_dir: /data2/MLhep/real/train_318624/ # full stats new + # prefix_dir: /data2/MLhep/real/train_257023/ # full stats + # prefix_dir: /data2/MLhep/real/train_240309/ # Andrea's model + # prefix_dir: /data2/MLhep/real/train_245508/ # pass7 + # prefix_dir: /data2/MLhep/real/train_245509/ # no TOF + # prefix_dir: /data2/MLhep/real/train_245510/ # no PID + # prefix_dir: /data2/MLhep/real/train_245511/ # full PID + unmerged_tree_dir: [/alice/] #list of periods + pkl: ["${USER}/d0jet/pkl"] #list of periods + pkl_skimmed: ["${USER}/d0jet/pklsk"] #list of periods + pkl_skimmed_merge_for_ml: ["${USER}/d0jet/pklskml"] #list of periods + pkl_skimmed_merge_for_ml_all: "${USER}/d0jet/pp_data_mltot" + pkl_evtcounter_all: "${USER}/d0jet/pp_data_evttot" + mcreweights: [../Analyses] #list of periods + mc: + nprocessesparallel: 80 + maxfiles: [-1] #list of periods + chunksizeunp: [100] #list of periods + chunksizeskim: [1000] #list of periods + fracmerge: [1.] #list of periods + seedmerge: [12] #list of periods + period: [LHC24d3b] #list of periods + select_period: [1] + prefix_dir: /data2/MLhep/sim/train_318983/ # full stats new + # prefix_dir: /data2/MLhep/sim/train_257228/ # full stats + # prefix_dir: /data2/MLhep/sim/train_259454/ # 97 % tracking eff + # prefix_dir: /data2/MLhep/sim/train_239774/ # Andrea's model + # prefix_dir: /data2/MLhep/sim/train_244893/ # no TOF + # prefix_dir: /data2/MLhep/sim/train_244894/ # no PID + # prefix_dir: /data2/MLhep/sim/train_244895/ # full PID + unmerged_tree_dir: [alice/] + pkl: ["${USER}/d0jet/pkl"] #list of periods + pkl_skimmed: ["${USER}/d0jet/pklsk"] #list of periods + pkl_skimmed_merge_for_ml: ["${USER}/d0jet/pklskml"] #list of periods + pkl_skimmed_merge_for_ml_all: "${USER}/d0jet/pp_mc_prod_mltot" + pkl_evtcounter_all: "${USER}/d0jet/pp_mc_prod_evttot" + mcreweights: [../Analyses] #list of periods + + ml: + evtsel: null # TODO: fIsEventReject == 0 + triggersel: + data: null + mc: null + + nbkg: 500000 + nsig: 500000 + mult_bkg: [1, 1, 1, 1, 1, 1, 1] + nclasses: [20000, 20000] + sampletags: [0, 1] + equalise_sig_bkg: True + # sampletagforsignal: 1 + # sampletagforbkg: 0 + sel_ml: [fM<1.8 or fM>1.92, ismcprompt == 1] + sel_bkg: fM<1.8 or fM>1.92 + class_labels: [bkg, sig] + nkfolds: 5 + rnd_shuffle: 12 + rnd_splt: 12 + rnd_all: 12 + test_frac: 0.2 + binmin: [1, 2, 4, 6, 8, 12, 24] # must be equal to sel_skim_binmin (sel_skim_binmin bins) + binmax: [2, 4, 6, 8, 12, 24, 48] # must be equal to sel_skim_binmax (sel_skim_binmin bins) + mltype: BinaryClassification + ncorescrossval: 10 + prefix_dir_ml: /data2/jklein/MLhep/ + mlplot: mlplot + mlout: mlout + + opt: + isFONLLfromROOT: true + filename_fonll: "data/fonll/D0DplusDstarPredictions_13TeV_y05_all_300416_BDShapeCorrected.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, 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/jklein/ + 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/jklein/ + pkl_skimmed_dec: [LHC22pp_mc/MLapplication/prod_LHC22b1b/skpkldecmc] #list of periods + pkl_skimmed_decmerged: [ + LHC22pp_mc/MLapplication/prod_LHC22b1b/skpkldecmcmerged, + ] #list of periods + modelname: xgboost + modelsperptbin: [ + xgboost_classifierD0pp_jet_dfselection_fPt_1.0_2.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_2.0_4.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_4.0_6.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_6.0_8.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_8.0_12.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_12.0_24.0.sav, + xgboost_classifierD0pp_jet_dfselection_fPt_24.0_48.0.sav, + ] # sel_skim_binmin bins + probcutpresel: + data: [0.75, 0.75, 0.65, 0.65, 0.45, 0.45, 0.45, .45] # sel_skim_binmin bins + mc: [0.75, 0.75, 0.65, 0.65, 0.45, 0.45, 0.45, .45] # sel_skim_binmin bins + probcutoptimal: [0.92, 0.90, 0.82, 0.80, 0.60, 0.60, 0.60, .45] # sel_skim_binmin bins + + #region analysis + analysis: + anahptspectrum: "D0Kpi" #D0Kpi, DplusKpipi, DstarD0pi, DsKKpi, LctopKpi, LcK0Sp # used in analysis/analyzerdhadrons_mult.py + fd_method: "Nb" #fc, Nb + cctype: "pp" + inputfonllpred: data/fonll/D0DplusDstarPredictions_13TeV_y05_all_300416_BDShapeCorrected.root # used in machine_learning_hep/hf_pt_spectrum.py + dir_general_plots: /data2/jklein/data/analysis_plots + + jet_obs: &jet_default + sel_an_binmin: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24] # hadron pt bins (sel_an_binmin bins) + sel_an_binmax: [2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 24, 48] # hadron pt bins (sel_an_binmin bins) # FIXME: move the last edge in sel_an_binmin + bins_ptjet: [5, 7, 15, 30, 50, 70] # systematics, TODO: split rec and gen binning + bins_ptjet_eff: [2, 5, 7, 15, 30, 50, 70, 90] # systematics, TODO: split rec and gen binning + cand_collidx: fIndexHfD0CollBases + counter_read_data: fReadCountsWithTVXAndZVertexAndSel8 + counter_read_mc: fReadCountsWithTVXAndZVertexAndSelMC + counter_tvx: fReadCountsWithTVX + xsection_inel: 59.4 # (mb) cross-section of minimum-bias events # used # systematics + lumi_scale_mc: 408 # charm enhancement factor in MC to scale the MC luminosity + branching_ratio: 3.947e-2 # used + + observables: + zg: + bins_gen_var: + [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] + bins_det_var: + [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] + label: "#it{z}_{g}" + label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{z}_{g}" + nsd: + bins_gen_fix: [7, -.5, 6.5] + bins_det_fix: [7, -.5, 6.5] + label: "#it{n}_{SD}" + label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{n}_{SD}" + rg: + bins_gen_var: + [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] + bins_det_var: + [-.1, .0, .05, .1, .15, .2, .25, .3, .35, .4, .45, .5] + label: "#it{R}_{g}" + label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{R}_{g}" + zpar: + # bins_gen_fix: [10, 0., 1.] + # bins_det_fix: [10, 0., 1.] + bins_gen_var: + [ + 0.2, + 0.25, + 0.3, + 0.35, + 0.4, + 0.45, + 0.5, + 0.55, + 0.6, + 0.65, + 0.7, + 0.75, + 0.8, + 0.85, + 0.9, + 0.95, + 1., + ] + bins_det_var: + [ + 0.2, + 0.25, + 0.3, + 0.35, + 0.4, + 0.45, + 0.5, + 0.55, + 0.6, + 0.65, + 0.7, + 0.75, + 0.8, + 0.85, + 0.9, + 0.95, + 1., + ] + label: "#it{z}_{#parallel}" + label_y: "(1/#it{N}_{jet ch}) d#it{N}/d#it{z}_{#parallel}" + dr: + bins_gen_fix: [10, 0., 1.] + bins_det_fix: [10, 0., 1.] + label: "#Delta#it{r}" + lntheta: + bins_gen_fix: [10, 0., 5.] + bins_det_fix: [10, 0., 5.] + label: "#minusln(#it{#theta})" + arraycols: [3] + lnkt: + bins_gen_fix: [10, -8., 2.] + bins_det_fix: [10, -8., 2.] + label: "ln(#it{k}_{T}/(GeV/#it{c}))" + 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)" + + corr_refl: true # systematics + fit_levels: ["mcsig", "mcrefl", "mc", "data"] + 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_per_ptjet: true + sidesub: + - level: mc + regions: + left: [-2., -2.] + signal: [-2., 2.] + right: [3., 3.] + - ptrange: [16., 100.] + regions: + left: [-2., -2.] + signal: [-2., 2.] # systematics + right: [3., 5.] # systematics + - regions: + left: [-5.5, -3.] # systematics + signal: [-2., 2.] # systematics + right: [3., 5.5] # systematics + + # 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.22] # histogram range of the invariant mass distribution [GeV/c^2]; used in processer for binarray_mass (not used for fit range!) + bin_width: 0.001 # bin width of the invariant mass histogram # systematics? + n_rebin: 3 # number of mass bins to merge + efficiency: + extra_cols: + ["isd0", "isd0bar", "seld0", "seld0bar", "mlBkgScore"] + filter_det: "(isd0 & seld0) or (isd0bar & seld0bar)" + index_match: fIndexArrayD0CMCPJETOS_hf + correction_method: run3 + + unfolding_iterations: 8 # used, maximum iteration + unfolding_iterations_sel: 5 # used, selected iteration # systematics + unfolding_prior_flatness: 0. # ranges from 0. (no flatness) to 1. (flat) + + closure: + pure_signal: false + # exclude_feeddown_det: 'ismcsignal==1 & ismcprompt==1' + # exclude_feeddown_gen: 'ismcsignal_gen==1 & ismcprompt_gen==1' + # filter_reflections: '(isd0 & seld0) or (isd0bar & seld0bar)' + use_matched: true + + frac_mcana: .2 # fraction of MC sample for the closure + fd_root: "/data2/vkucera/powheg/trees_powheg_fd_central.root" # systematics + fd_parquet: "/data2/jklein/powheg/trees_powheg_fd_central.parquet" # systematics + + # obsolete? + proc_type: Jets # used + useperiod: [1] #list of periods # used + # 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: [5, 7, 15, 30] # rec jet pt bins (sel_binmin2_reco bins) + # sel_binmax2_reco: [7, 15, 30, 50] # rec jet pt bins (sel_binmin2_reco bins) + # sel_binmin2_gen: [5, 7, 15, 30] # rec jet pt bins (sel_binmin2_reco bins) + # sel_binmax2_gen: [7, 15, 30, 50] # rec jet pt bins (sel_binmin2_reco bins) + # var_binningshape: zg_jet + # var_binningshape_gen: zg_gen_jet + # var_shape_latex: "shape" + # 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 # used but useless + results: [ + "/home/${USER}/mlhep/d0jet/jet_obs/default/default/data/results", + ] #list of periods + resultsallp: "/home/${USER}/mlhep/d0jet/jet_obs/default/default/data/results_all" + mc: &mc_out_default + runselection: [null] #FIXME # used but useless + results: [ + "/home/${USER}/mlhep/d0jet/jet_obs/default/default/mc/results", + ] #list of periods + resultsallp: "/home/${USER}/mlhep/d0jet/jet_obs/default/default/mc/results_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 # used in cplusutilities/mass_fitter.C + # 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 + + # obsolete (uses Ali... fitter) + # 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.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] # 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.007497,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01] # 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 + + # doprior: false + # domodeldep: false + # path_modeldep: /home/nzardosh/PYTHIA_Sim/PYTHIA8_Simulations/Plots/D0_Substructure_Simulations_Output.root + + # replace with fd_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: database_variations_D0Jet_pp_jet_obs.yml + + # Additional cuts applied before mass histogram is filled + use_cuts: True # systematics + cuts: [ + "mlBkgScore < 0.02", + "mlBkgScore < 0.02", + "mlBkgScore < 0.02", + "mlBkgScore < 0.05", + "mlBkgScore < 0.06", + "mlBkgScore < 0.08", + "mlBkgScore < 0.08", + "mlBkgScore < 0.10", + "mlBkgScore < 0.10", + "mlBkgScore < 0.20", + "mlBkgScore < 0.25", + "mlBkgScore < 0.30", + ] # (sel_an_binmin bins) systematics FIXME: Update for new model. + + systematics: # used in machine_learning_hep/analysis/systematics.py + 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.80, 0.80, 0.6, 0.3, 0.3] #Min starting point for scan + cutvarmaxrange: [0.98, 0.95, 0.95, 0.95, 0.95] #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