From cc3048de0db7ef218c630d2c5e7272d6de4bca31 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 10:24:55 +0200 Subject: [PATCH 01/50] Add files to script and tar to filelists to create 2022 jobs --- .../filelists/May0223_2022_filelists.tgz | Bin 0 -> 2048000 bytes .../scripts/config_2022_postEE.json | 1140 +++++++++++++++++ .../scripts/config_2022_preEE.json | 1140 +++++++++++++++++ .../scripts/htt_2022_postEE.py | 434 +++++++ .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 434 +++++++ 5 files changed, 3148 insertions(+) create mode 100644 Analysis/HiggsTauTauRun2/filelists/May0223_2022_filelists.tgz create mode 100644 Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json create mode 100644 Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json create mode 100755 Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py create mode 100755 Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py diff --git a/Analysis/HiggsTauTauRun2/filelists/May0223_2022_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/May0223_2022_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9f2c1433887b381674b17ab9c922af5a056804be GIT binary patch literal 2048000 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 E073^;vH$=8 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json new file mode 100644 index 000000000..7f382cf7e --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -0,0 +1,1140 @@ +{ + "job": { + "filelist" : "filelists/Mar31_2018_MC_124X_DYJetsToLL.dat", + "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/May0223_Data_124X_2022-postEE/", + "max_events": -1, + "timings": true, + //"channels": ["mt","et","tt","zmm","zee","em"], + // "channels": ["mt","zmm","tt","et"], + "channels": ["tt"], +// "channels": ["tt","mt","et","em","zmm","zee"], + "sequences": { + "all": ["default"] +//,"scale_met_high,""scale_met_lo","res_met_high","res_met_lo"] +// "et": ["scale_t_lo", "scale_t_hi"], +// "mt": ["scale_t_lo", "scale_t_hi"], + // "tt": ["scale_t_lo", "scale_t_hi"], + // "em": ["scale_e_lo", "scale_e_hi"] + }, + "output_postfix":"", + "sample": "VBF_HToTauTau_M-125" + }, + "sequence": { + // "do_mssm_higgspt" : true, + // "mssm_higgspt_file" : "/vols/build/cms/gu18/CMSSW_8_0_25/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTau2/input/mssm_higgspt/higgs_pt_v2_mssm_mode.root", + "usePFMET" : true, + "do_gen_analysis" : false, + "mc" : "mc2018", + "era" : "data_2022_postEE", + "strategy" : "cpdecays18", + "is_data" : false, + "is_embedded" : false, + "save_output_jsons": false, + "make_sync_ntuple" : false, + "do_jetmet_uncerts": false, + "lumi_mask_only" : false, + "iso_study" : false, + "qcd_study" : false, + "tau_id_study":true, + "add_Hhh_variables" : false, + "get_effective" : false, + "do_btag_eff": false, + "trg_in_mc" : true, + "do_vbftrg" : false, + "filter_trg" : false, + "do_leptonplustau" : false, + "do_singlelepton" :true, + "do_singletau" : true, + "store_trigobjpt" :true, + "tt_trg_iso_mode" : 0, + "moriond_tau_scale" : true, + "recoil_corrector" : false, + "do_preselection" : true, + "force_old_effs" : false, + "electrons" : "electrons", + "muons" : "muons", + "taus" : "taus", + "jets" : "ak4PFJetsCHS", + "met" : "pfMET", + "genTaus" : "genParticles", + "genJets" : "genJets", + "do_mt_tagandprobe" : false, + "do_recoil" : false, + "do_iso_eff" : false, + "do_tau_eff" : false, + "do_ff_weights" : false, + "do_ff_systematics": false, + "do_pdf_wts": false, + "do_qcd_scale_wts": false, + //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", + "output_folder" : "/eos/user/e/ebokor/output", + "svfit_from_grid" : true, + "read_all_svfit_files" : true, + "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", + "svfit_override" : "", + "mela_folder" : "/vols/cms/dw515/Offline/output/SM/Jun22_MELA/", + "mela_mode" : 0, + "njets_mode" : 0, + //"event_check_file":"checkfile.dat", + "pu_id_training": 4, + "bjet_regr_correction" : false, + "new_svfit_mode" : 0, + "kinfit_mode" : 0, + "mva_met_mode" : 0, + "do_met_filters" : 1, + "faked_tau_selector" : 0, + "hadronic_tau_selector" : 0, + "run_gen_info" : false, + "do_pu_wt" : true, + "data_pu_file" : "input/pileup/2018UL/PileupHistogram-goldenJSON-13tev-2018-69200ub-99bins.root", + "mc_pu_file" : "input/pileup/2018UL/pileup_2018_DYJetsToLL-LO.root", + "run_trg_filter": false, + "baseline": { + "tau_scale_mode" : true, + "jes_mode" : 0, + "jer_mode" : 0, + "btag_mode" : 0, + "do_reshape" : false, + "use_deep_csv" : false, + "use_deep_jet" : true, + "wp_to_check" : "loose", + "bfake_mode" : 0, + "tau_es_shift" : 1.0, + "muon_es_shift" : 1.0, + "efaketau_0pi_es_shift": 1.01362, + "efaketau_0pi_es_shift_endcap": 0.96903, + "efaketau_1pi_es_shift": 1.01945, + "efaketau_1pi_es_shift_endcap": 0.985, + "mufaketau_0pi_es_shift": 1.0, + "mufaketau_1pi_es_shift": 1.0, + "tau_1prong0pi0_es_shift": 0.991, + "tau_1prong1pi0_es_shift": 1.004, + "tau_3prong0pi0_es_shift": 0.998, + "tau_3prong1pi0_es_shift": 1.004, + "embedtau_1prong1pi0_es_shift": 0.9943, + "embedtau_1prong0pi0_es_shift": 0.9967, + "embedtau_3prong0pi0_es_shift": 0.9926, + "embedtau_3prong1pi0_es_shift": 0.9926, + "elec_es_shift" : 1.0, + "elec_es_shift_barrel": 0.9967, + "elec_es_shift_endcap": 0.9944, + "muon_res_shift": 0.0, + "elec_res_shift": 0.0, + "tau_res_shift": 0.0, + "fakeJ_tau_shift": 1.0, + "metscale_mode" : 0, + "metres_mode" : 0, + "metcl_mode" : 0, + "metuncl_mode" : 0, + "mass_shift" : 1.0, + "do_em_extras" : true, + "di_elec_veto" : false, + "extra_elec_veto" : false, + "max_extra_elecs" : 1, + "di_muon_veto" : false, + "extra_muon_veto" : false, + "max_extra_muons" : 1, + "tau_es_corr" : false, + "lep_iso" : true, + "do_tau_anti_elec" : false, + "tau_anti_elec" : "", + "do_tau_anti_muon" : false, + "tau_anti_muon" : "", + "elec_id" : "CutBased" + } + }, + "channels": { + "et": { + "baseline": { + "pair_dr": 0.5, + "di_elec_veto" :true, + "di_muon_veto" :true, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 1, + "max_extra_muons": 0, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_et_lite_2018.root", + "ff_fracs_file" : "" + } + }, + "tt": { + "baseline": { + "max_extra_elecs": 0, + "max_extra_muons": 0, + "di_muon_veto" :true, + "di_elec_veto" :true, + "extra_elec_veto" : true, + "extra_muon_veto" : true, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_tt_lite_2018.root", + "ff_fracs_file" : "" + } + }, + + "mt": { + "baseline": { + "pair_dr": 0.5, + "di_muon_veto" :true, + "di_elec_veto" :true, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 0, + "max_extra_muons": 1, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_mt_lite_2018.root", + "ff_fracs_file" : "" + } + }, + "em": { + "baseline": { + "pair_dr": 0.3, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 1, + "max_extra_muons": 1 + } + }, + "zmm": { + "baseline": { + "pair_dr": 0.3, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 0, + "max_extra_muons": 2 + } + }, + "zee": { + "baseline": { + "pair_dr": 0.5, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 2, + "max_extra_muons": 0 + } + } + }, + "sequences": { + "scale_t_lo": { + "baseline": { + "addit_output_folder" : "TSCALE_DOWN", + "tau_scale_mode": true, + "elec_es_shift_barrel": 0.99, + "elec_es_shift_endcap": 0.975, + "tau_es_shift": 0.97, + "muon_es_shift": 0.998 + } + }, + "scale_t_hi": { + "baseline": { + "addit_output_folder" : "TSCALE_UP", + "tau_scale_mode": true, + "elec_es_shift_barrel": 1.01, + "elec_es_shift_endcap": 1.025, + "tau_es_shift": 1.03, + "muon_es_shift": 1.002 + } + }, + "scale_jfake_lo": { + "baseline": { + "addit_output_folder" : "JFAKE_DOWN", + "fakeJ_tau_shift": 0.97 + } + }, + "scale_jfake_hi": { + "baseline": { + "addit_output_folder": "JFAKE_UP", + "fakeJ_tau_shift": 1.03 + } + }, + "scale_t_0pi_hi": { + "baseline": { + "addit_output_folder" : "TSCALE0PI_UP", + "tau_shift_func_1prong0pi0": "0.991 + (0.0080 + (0.0300-0.0080)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong0pi0_es_shift": 1.0006 + } + }, + "scale_t_0pi_lo": { + "baseline": { + "addit_output_folder" : "TSCALE0PI_DOWN", + "tau_shift_func_1prong0pi0": "0.991 - (0.0080 + (0.0300-0.0080)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong0pi0_es_shift": 0.9928 + } + }, + "scale_t_1pi_hi": { + "baseline": { + "addit_output_folder" : "TSCALE1PI_UP", + "tau_shift_func_1prong1pi0": "1.004 + (0.0060 + (0.0200-0.0060)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong1pi0_es_shift" : 0.998 + } + }, + "scale_t_1pi_lo": { + "baseline": { + "addit_output_folder" : "TSCALE1PI_DOWN", + "tau_shift_func_1prong1pi0": "1.004 - (0.0060 + (0.0200-0.0060)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong1pi0_es_shift" : 0.9912 + } + }, + "scale_t_3prong_hi": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG_UP", + "tau_shift_func_3prong0pi0": "0.998 + (0.0070 + (0.0110-0.0070)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong0pi0_es_shift" : 0.9958 + } + }, + "scale_t_3prong_lo": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG_DOWN", + "tau_shift_func_3prong0pi0": "0.998 - (0.0070 + (0.0110-0.0070)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong0pi0_es_shift" : 0.9894 + } + }, + "scale_t_3prong1pi0_hi": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG1PI0_UP", + "tau_shift_func_3prong1pi0": "1.004 + (0.009 + (0.0390-0.009)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong1pi0_es_shift" : 0.9948 + } + }, + "scale_t_3prong1pi0_lo": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG1PI0_DOWN", + "tau_shift_func_3prong1pi0": "1.004 - (0.009 + (0.0390-0.009)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong1pi0_es_shift" : 0.985 + } + }, + "scale_efake_0pi_lo": { + "baseline": { + "addit_output_folder" : "EFAKE0PI_DOWN", + "efaketau_0pi_es_shift": 1.00888, + "efaketau_0pi_es_shift_endcap": 0.95653 + } + }, + "scale_efake_0pi_hi": { + "baseline": { + "addit_output_folder" : "EFAKE0PI_UP", + "efaketau_0pi_es_shift": 1.02266, + "efaketau_0pi_es_shift_endcap": 1.00307 + } + }, + "scale_efake_1pi_lo": { + "baseline": { + "addit_output_folder" : "EFAKE1PI_DOWN", + "efaketau_1pi_es_shift": 1.00347, + "efaketau_1pi_es_shift_endcap": 0.94191 + } + }, + "scale_efake_1pi_hi": { + "baseline": { + "addit_output_folder" : "EFAKE1PI_UP", + "efaketau_1pi_es_shift": 1.03171, + "efaketau_1pi_es_shift_endcap": 1.03999 + } + }, + + "scale_mufake_0pi_lo": { + "baseline": { + "addit_output_folder" : "MUFAKE0PI_DOWN", + "mufaketau_0pi_es_shift": 0.99 + } + }, + "scale_mufake_0pi_hi": { + "baseline": { + "addit_output_folder" : "MUFAKE0PI_UP", + "mufaketau_0pi_es_shift": 1.01 + } + }, + "scale_mufake_1pi_lo": { + "baseline": { + "addit_output_folder" : "MUFAKE1PI_DOWN", + "mufaketau_1pi_es_shift": 0.99 + } + }, + "scale_mufake_1pi_hi": { + "baseline": { + "addit_output_folder" : "MUFAKE1PI_UP", + "mufaketau_1pi_es_shift": 1.01 + } + }, + "scale_e_lo": { + "baseline": { + "addit_output_folder" : "ESCALE_DOWN", + "e_scale_mode": true, + "elec_es_shift_barrel": 0.9917, + "elec_es_shift_endcap": 0.9819, + "e_unc_mode": 1 + } + }, + "scale_e_hi": { + "baseline": { + "addit_output_folder" : "ESCALE_UP", + "e_scale_mode": true, + "elec_es_shift_barrel": 1.0017, + "elec_es_shift_endcap": 1.0069, + "e_unc_mode": 2 + } + }, + "scale_mu_lo": { + "baseline": { + "addit_output_folder" : "MUSCALE_DOWN", + "mu_scale_mode": true, + //"muon_es_shift": 0.998, + //"muon_es_shift_barrel": 0.996, + //"muon_es_shift_nearendcap": 0.991, + //"muon_es_shift_farendcap": 0.983 + "muon_es_shift": 0.9985, + "muon_es_shift_barrel": 0.9985, + "muon_es_shift_nearendcap": 0.9985, + "muon_es_shift_farendcap": 0.9985 + } + }, + "scale_mu_hi": { + "baseline": { + "addit_output_folder" : "MUSCALE_UP", + "mu_scale_mode": true, + //"muon_es_shift": 1.002, + //"muon_es_shift_barrel": 1.004, + //"muon_es_shift_nearendcap": 1.009, + //"muon_es_shift_farendcap": 1.017 + "muon_es_shift": 1.0015, + "muon_es_shift_barrel": 1.0015, + "muon_es_shift_nearendcap": 1.0015, + "muon_es_shift_farendcap": 1.0015 + } + }, + "res_mu_hi": { + "baseline": { + "addit_output_folder" : "MURES_UP", + "muon_res_shift": 0.1 + } + }, + "res_mu_lo": { + "baseline": { + "addit_output_folder" : "MURES_DOWN", + "muon_res_shift": -0.1 + } + }, + "res_e_hi": { + "baseline": { + "addit_output_folder" : "ERES_UP", + "elec_res_shift": 0.1 + } + }, + "res_e_lo": { + "baseline": { + "addit_output_folder" : "ERES_DOWN", + "elec_res_shift": -0.1 + } + }, + "res_t_hi": { + "baseline": { + "addit_output_folder" : "TRES_UP", + "tau_res_shift": 0.01 + } + }, + "res_t_lo": { + "baseline": { + "addit_output_folder" : "TRES_DOWN", + "tau_res_shift": -0.01 + } + }, + "res_j_lo": { + "baseline": { + "addit_output_folder" : "JER_DOWN", + "jes_mode" : 1 + } + }, + "res_j_hi": { + "baseline": { + "addit_output_folder" : "JER_UP", + "jer_mode" : 2 + } + }, + "scale_j_lo": { + "baseline": { + "addit_output_folder" : "JES_DOWN", + "jes_mode" : 1, + "split_by_source" : false +// "btag_mode" : 3 + } + }, + "scale_j_hi": { + "baseline": { + "addit_output_folder" : "JES_UP", + "jes_mode" : 2, + "split_by_source" : false +// "btag_mode" : 4 + } + }, + "scale_j_corr_lo": { + "baseline": { + "addit_output_folder" : "JES_CORR_DOWN", + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_corr_hi": { + "baseline": { + "addit_output_folder" : "JES_CORR_UP", + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JES_UNCORR_DOWN", + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JES_UNCORR_UP", + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // adding regrouped JECs (legacy/full run2 -- https://tinyurl.com/r976rmc) + "scale_j_relbal_lo": { + "baseline": { + "addit_output_folder" : "JESRBAL_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "RelativeBal" + } + }, + "scale_j_relbal_hi": { + "baseline": { + "addit_output_folder" : "JESRBAL_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "RelativeBal" + } + }, + "scale_j_abs_lo": { + "baseline": { + "addit_output_folder" : "JESABS_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "Absolute" + } + }, + "scale_j_abs_hi": { + "baseline": { + "addit_output_folder" : "JESABS_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "Absolute" + } + }, + "scale_j_abs_year_lo": { + "baseline": { + "addit_output_folder" : "JESABS_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "Absolute_2018" + } + }, + "scale_j_abs_year_hi": { + "baseline": { + "addit_output_folder" : "JESABS_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "Absolute_2018" + } + }, + "scale_j_flav_lo": { + "baseline": { + "addit_output_folder" : "JESFLAV_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "FlavorQCD" + } + }, + "scale_j_flav_hi": { + "baseline": { + "addit_output_folder" : "JESFLAV_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "FlavorQCD" + } + }, + "scale_j_bbec1_lo": { + "baseline": { + "addit_output_folder" : "JESBBEC1_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "BBEC1" + } + }, + "scale_j_bbec1_hi": { + "baseline": { + "addit_output_folder" : "JESBBEC1_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "BBEC1" + } + }, + "scale_j_bbec1_year_lo": { + "baseline": { + "addit_output_folder" : "JESBBEC1_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "BBEC1_2018" + } + }, + "scale_j_bbec1_year_hi": { + "baseline": { + "addit_output_folder" : "JESBBEC1_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "BBEC1_2018" + } + }, + "scale_j_ec2_lo": { + "baseline": { + "addit_output_folder" : "JESEC2_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "EC2" + } + }, + "scale_j_ec2_hi": { + "baseline": { + "addit_output_folder" : "JESEC2_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "EC2" + } + }, + "scale_j_ec2_year_lo": { + "baseline": { + "addit_output_folder" : "JESEC2_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "EC2_2018" + } + }, + "scale_j_ec2_year_hi": { + "baseline": { + "addit_output_folder" : "JESEC2_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "EC2_2018" + } + }, + "scale_j_hf_lo": { + "baseline": { + "addit_output_folder" : "JESHF_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "HF" + } + }, + "scale_j_hf_hi": { + "baseline": { + "addit_output_folder" : "JESHF_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "HF" + } + }, + "scale_j_hf_year_lo": { + "baseline": { + "addit_output_folder" : "JESHF_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "HF_2018" + } + }, + "scale_j_hf_year_hi": { + "baseline": { + "addit_output_folder" : "JESHF_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "HF_2018" + } + }, + "scale_j_relsamp_year_lo": { + "baseline": { + "addit_output_folder" : "JESRELSAMP_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "RelativeSample_2018" + } + }, + "scale_j_relsamp_year_hi": { + "baseline": { + "addit_output_folder" : "JESRELSAMP_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "RelativeSample_2018" + } + }, + // + "scale_j_full_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1 + } + }, + "scale_j_full_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2 + } + }, + // adding correlations splitting for regional sources + // jes full detector + "scale_j_full_corr_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_full_corr_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_full_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_full_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // + "scale_j_cent_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1 + } + }, + "scale_j_cent_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2 + } + }, + // adding correlations splitting for regional sources + // jes central detector + "scale_j_cent_corr_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_cent_corr_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_cent_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_cent_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // + //"scale_j_hf_lo": { + // "baseline": { + // "addit_output_folder" : "JESHF_DOWN", + // "split_by_source" : false, + // "split_by_region" : true, + // "jec_region" : 2, + // "jes_mode" : 1 + // } + // }, + // "scale_j_hf_hi": { + // "baseline": { + // "addit_output_folder" : "JESHF_UP", + // "split_by_source" : false, + // "split_by_region" : true, + // "jec_region" : 2, + // "jes_mode" : 2 + // } + // }, + // adding correlations splitting for regional sources + // jes HF detector + "scale_j_hf_corr_lo": { + "baseline": { + "addit_output_folder" : "JESHF_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_hf_corr_hi": { + "baseline": { + "addit_output_folder" : "JESHF_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_hf_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESHF_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_hf_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESHF_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + "scale_embed_met_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_DOWN", + "embed_metscale_mode" : 1 + } + }, + "scale_embed_met_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_UP", + "embed_metscale_mode" : 2 + } + }, + "scale_met_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_DOWN", + "metscale_mode" : 1 + } + }, + "scale_met_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_UP", + "metscale_mode" : 2 + } + }, + "res_met_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_DOWN", + "metres_mode" : 1 + } + }, + "res_met_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_UP", + "metres_mode" : 2 + } + }, + + "scale_met_njets0_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS0_DOWN", + "metscale_mode" : 1, + "njets_mode" : 1 + } + }, + "scale_met_njets0_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS0_UP", + "metscale_mode" : 2, + "njets_mode" : 1 + } + }, + "res_met_njets0_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS0_DOWN", + "metres_mode" : 1, + "njets_mode" : 1 + } + }, + "res_met_njets0_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS0_UP", + "metres_mode" : 2, + "njets_mode" : 1 + } + }, + + "scale_met_njets1_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS1_DOWN", + "metscale_mode" : 1, + "njets_mode" : 2 + } + }, + "scale_met_njets1_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS1_UP", + "metscale_mode" : 2, + "njets_mode" : 2 + } + }, + "res_met_njets1_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS1_DOWN", + "metres_mode" : 1, + "njets_mode" : 2 + } + }, + "res_met_njets1_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS1_UP", + "metres_mode" : 2, + "njets_mode" : 2 + } + }, + "scale_met_njets2_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS2_DOWN", + "metscale_mode" : 1, + "njets_mode" : 3 + } + }, + "scale_met_njets2_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS2_UP", + "metscale_mode" : 2, + "njets_mode" : 3 + } + }, + "res_met_njets2_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS2_DOWN", + "metres_mode" : 1, + "njets_mode" : 3 + } + }, + "res_met_njets2_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS2_UP", + "metres_mode" : 2, + "njets_mode" : 3 + } + }, + "met_cl_lo": { + "baseline": { + "addit_output_folder" : "METCL_DOWN", + "metcl_mode" : 1 + } + }, + "met_cl_hi": { + "baseline": { + "addit_output_folder" : "METCL_UP", + "metcl_mode" : 2 + } + }, + "met_uncl_lo": { + "baseline": { + "addit_output_folder" : "METUNCL_DOWN", + "metuncl_mode" : 1 + } + }, + "met_uncl_hi": { + "baseline": { + "addit_output_folder" : "METUNCL_UP", + "metuncl_mode" : 2 + } + }, + "scale_b_lo": { + "baseline": { + "addit_output_folder" : "BTAG_DOWN", + "btag_mode" : 1 + } + }, + "scale_b_hi": { + "baseline": { + "addit_output_folder" : "BTAG_UP", + "btag_mode" : 2 + } + }, + "scale_bfake_lo": { + "baseline": { + "addit_output_folder" : "BFAKE_DOWN", + "bfake_mode" : 1 + } + }, + "scale_bfake_hi": { + "baseline": { + "addit_output_folder" : "BFAKE_UP", + "bfake_mode" : 2 + } + }, + "scale_lf_lo": { + "baseline": { + "addit_output_folder" : "LF_DOWN", + "btag_mode" : 5 + } + }, + "scale_lf_hi": { + "baseline": { + "addit_output_folder" : "LF_UP", + "btag_mode" : 6 + } + }, + "scale_hf_lo": { + "baseline": { + "addit_output_folder" : "HF_DOWN", + "btag_mode" : 7 + } + }, + "scale_hf_hi": { + "baseline": { + "addit_output_folder" : "HF_UP", + "btag_mode" : 8 + } + }, + "scale_hfstats1_lo": { + "baseline": { + "addit_output_folder" : "HFSTATS1_DOWN", + "btag_mode" :9 + } + }, + "scale_hfstats1_hi": { + "baseline": { + "addit_output_folder" : "HFSTATS1_UP", + "btag_mode" : 10 + } + }, + "scale_hfstats2_lo": { + "baseline": { + "addit_output_folder" : "HFSTATS2_DOWN", + "btag_mode" :11 + } + }, + "scale_hfstats2_hi": { + "baseline": { + "addit_output_folder" : "HFSTATS2_UP", + "btag_mode" : 12 + } + }, + "scale_lfstats1_lo": { + "baseline": { + "addit_output_folder" : "LFSTATS1_DOWN", + "btag_mode" :13 + } + }, + "scale_lfstats1_hi": { + "baseline": { + "addit_output_folder" : "LFSTATS1_UP", + "btag_mode" : 14 + } + }, + "scale_lfstats2_lo": { + "baseline": { + "addit_output_folder" : "LFSTATS2_DOWN", + "btag_mode" :15 + } + }, + "scale_lfstats2_hi": { + "baseline": { + "addit_output_folder" : "LFSTATS2_UP", + "btag_mode" : 16 + } + }, + "scale_cferr1_lo": { + "baseline": { + "addit_output_folder" : "CFERR1_DOWN", + "btag_mode" :17 + } + }, + "scale_cferr1_hi": { + "baseline": { + "addit_output_folder" : "CFERR1_UP", + "btag_mode" : 18 + } + }, + "scale_cferr2_lo": { + "baseline": { + "addit_output_folder" : "CFERR2_DOWN", + "btag_mode" :19 + } + }, + "scale_cferr2_hi": { + "baseline": { + "addit_output_folder" : "CFERR2_UP", + "btag_mode" : 20 + } + }, + "default": {} + }, + "samples": { + + } +} diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json new file mode 100644 index 000000000..80e58a249 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json @@ -0,0 +1,1140 @@ +{ + "job": { + "filelist" : "filelists/Mar31_2018_MC_124X_DYJetsToLL.dat", + "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/May0223_Data_124X_2022-preEE/", + "max_events": -1, + "timings": true, + //"channels": ["mt","et","tt","zmm","zee","em"], + // "channels": ["mt","zmm","tt","et"], + "channels": ["tt"], +// "channels": ["tt","mt","et","em","zmm","zee"], + "sequences": { + "all": ["default"] +//,"scale_met_high,""scale_met_lo","res_met_high","res_met_lo"] +// "et": ["scale_t_lo", "scale_t_hi"], +// "mt": ["scale_t_lo", "scale_t_hi"], + // "tt": ["scale_t_lo", "scale_t_hi"], + // "em": ["scale_e_lo", "scale_e_hi"] + }, + "output_postfix":"", + "sample": "VBF_HToTauTau_M-125" + }, + "sequence": { + // "do_mssm_higgspt" : true, + // "mssm_higgspt_file" : "/vols/build/cms/gu18/CMSSW_8_0_25/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTau2/input/mssm_higgspt/higgs_pt_v2_mssm_mode.root", + "usePFMET" : true, + "do_gen_analysis" : false, + "mc" : "mc2018", + "era" : "data_2022_preEE", + "strategy" : "cpdecays18", + "is_data" : false, + "is_embedded" : false, + "save_output_jsons": false, + "make_sync_ntuple" : false, + "do_jetmet_uncerts": false, + "lumi_mask_only" : false, + "iso_study" : false, + "qcd_study" : false, + "tau_id_study":true, + "add_Hhh_variables" : false, + "get_effective" : false, + "do_btag_eff": false, + "trg_in_mc" : true, + "do_vbftrg" : false, + "filter_trg" : false, + "do_leptonplustau" : false, + "do_singlelepton" :true, + "do_singletau" : true, + "store_trigobjpt" :true, + "tt_trg_iso_mode" : 0, + "moriond_tau_scale" : true, + "recoil_corrector" : false, + "do_preselection" : true, + "force_old_effs" : false, + "electrons" : "electrons", + "muons" : "muons", + "taus" : "taus", + "jets" : "ak4PFJetsCHS", + "met" : "pfMET", + "genTaus" : "genParticles", + "genJets" : "genJets", + "do_mt_tagandprobe" : false, + "do_recoil" : false, + "do_iso_eff" : false, + "do_tau_eff" : false, + "do_ff_weights" : false, + "do_ff_systematics": false, + "do_pdf_wts": false, + "do_qcd_scale_wts": false, + //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", + "output_folder" : "/eos/user/e/ebokor/output", + "svfit_from_grid" : true, + "read_all_svfit_files" : true, + "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", + "svfit_override" : "", + "mela_folder" : "/vols/cms/dw515/Offline/output/SM/Jun22_MELA/", + "mela_mode" : 0, + "njets_mode" : 0, + //"event_check_file":"checkfile.dat", + "pu_id_training": 4, + "bjet_regr_correction" : false, + "new_svfit_mode" : 0, + "kinfit_mode" : 0, + "mva_met_mode" : 0, + "do_met_filters" : 1, + "faked_tau_selector" : 0, + "hadronic_tau_selector" : 0, + "run_gen_info" : false, + "do_pu_wt" : true, + "data_pu_file" : "input/pileup/2018UL/PileupHistogram-goldenJSON-13tev-2018-69200ub-99bins.root", + "mc_pu_file" : "input/pileup/2018UL/pileup_2018_DYJetsToLL-LO.root", + "run_trg_filter": false, + "baseline": { + "tau_scale_mode" : true, + "jes_mode" : 0, + "jer_mode" : 0, + "btag_mode" : 0, + "do_reshape" : false, + "use_deep_csv" : false, + "use_deep_jet" : true, + "wp_to_check" : "loose", + "bfake_mode" : 0, + "tau_es_shift" : 1.0, + "muon_es_shift" : 1.0, + "efaketau_0pi_es_shift": 1.01362, + "efaketau_0pi_es_shift_endcap": 0.96903, + "efaketau_1pi_es_shift": 1.01945, + "efaketau_1pi_es_shift_endcap": 0.985, + "mufaketau_0pi_es_shift": 1.0, + "mufaketau_1pi_es_shift": 1.0, + "tau_1prong0pi0_es_shift": 0.991, + "tau_1prong1pi0_es_shift": 1.004, + "tau_3prong0pi0_es_shift": 0.998, + "tau_3prong1pi0_es_shift": 1.004, + "embedtau_1prong1pi0_es_shift": 0.9943, + "embedtau_1prong0pi0_es_shift": 0.9967, + "embedtau_3prong0pi0_es_shift": 0.9926, + "embedtau_3prong1pi0_es_shift": 0.9926, + "elec_es_shift" : 1.0, + "elec_es_shift_barrel": 0.9967, + "elec_es_shift_endcap": 0.9944, + "muon_res_shift": 0.0, + "elec_res_shift": 0.0, + "tau_res_shift": 0.0, + "fakeJ_tau_shift": 1.0, + "metscale_mode" : 0, + "metres_mode" : 0, + "metcl_mode" : 0, + "metuncl_mode" : 0, + "mass_shift" : 1.0, + "do_em_extras" : true, + "di_elec_veto" : false, + "extra_elec_veto" : false, + "max_extra_elecs" : 1, + "di_muon_veto" : false, + "extra_muon_veto" : false, + "max_extra_muons" : 1, + "tau_es_corr" : false, + "lep_iso" : true, + "do_tau_anti_elec" : false, + "tau_anti_elec" : "", + "do_tau_anti_muon" : false, + "tau_anti_muon" : "", + "elec_id" : "CutBased" + } + }, + "channels": { + "et": { + "baseline": { + "pair_dr": 0.5, + "di_elec_veto" :true, + "di_muon_veto" :true, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 1, + "max_extra_muons": 0, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_et_lite_2018.root", + "ff_fracs_file" : "" + } + }, + "tt": { + "baseline": { + "max_extra_elecs": 0, + "max_extra_muons": 0, + "di_muon_veto" :true, + "di_elec_veto" :true, + "extra_elec_veto" : true, + "extra_muon_veto" : true, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_tt_lite_2018.root", + "ff_fracs_file" : "" + } + }, + + "mt": { + "baseline": { + "pair_dr": 0.5, + "di_muon_veto" :true, + "di_elec_veto" :true, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 0, + "max_extra_muons": 1, + "do_tau_anti_muon": true, + "do_tau_anti_elec":true, + "do_ff_weights" : true, + "do_ff_systematics": true, + "ff_categories" :"inclusive", + "ff_file" : "input/fake_factors/fakefactors_ws_mt_lite_2018.root", + "ff_fracs_file" : "" + } + }, + "em": { + "baseline": { + "pair_dr": 0.3, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 1, + "max_extra_muons": 1 + } + }, + "zmm": { + "baseline": { + "pair_dr": 0.3, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 0, + "max_extra_muons": 2 + } + }, + "zee": { + "baseline": { + "pair_dr": 0.5, + "extra_elec_veto":true, + "extra_muon_veto":true, + "max_extra_elecs": 2, + "max_extra_muons": 0 + } + } + }, + "sequences": { + "scale_t_lo": { + "baseline": { + "addit_output_folder" : "TSCALE_DOWN", + "tau_scale_mode": true, + "elec_es_shift_barrel": 0.99, + "elec_es_shift_endcap": 0.975, + "tau_es_shift": 0.97, + "muon_es_shift": 0.998 + } + }, + "scale_t_hi": { + "baseline": { + "addit_output_folder" : "TSCALE_UP", + "tau_scale_mode": true, + "elec_es_shift_barrel": 1.01, + "elec_es_shift_endcap": 1.025, + "tau_es_shift": 1.03, + "muon_es_shift": 1.002 + } + }, + "scale_jfake_lo": { + "baseline": { + "addit_output_folder" : "JFAKE_DOWN", + "fakeJ_tau_shift": 0.97 + } + }, + "scale_jfake_hi": { + "baseline": { + "addit_output_folder": "JFAKE_UP", + "fakeJ_tau_shift": 1.03 + } + }, + "scale_t_0pi_hi": { + "baseline": { + "addit_output_folder" : "TSCALE0PI_UP", + "tau_shift_func_1prong0pi0": "0.991 + (0.0080 + (0.0300-0.0080)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong0pi0_es_shift": 1.0006 + } + }, + "scale_t_0pi_lo": { + "baseline": { + "addit_output_folder" : "TSCALE0PI_DOWN", + "tau_shift_func_1prong0pi0": "0.991 - (0.0080 + (0.0300-0.0080)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong0pi0_es_shift": 0.9928 + } + }, + "scale_t_1pi_hi": { + "baseline": { + "addit_output_folder" : "TSCALE1PI_UP", + "tau_shift_func_1prong1pi0": "1.004 + (0.0060 + (0.0200-0.0060)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong1pi0_es_shift" : 0.998 + } + }, + "scale_t_1pi_lo": { + "baseline": { + "addit_output_folder" : "TSCALE1PI_DOWN", + "tau_shift_func_1prong1pi0": "1.004 - (0.0060 + (0.0200-0.0060)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_1prong1pi0_es_shift" : 0.9912 + } + }, + "scale_t_3prong_hi": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG_UP", + "tau_shift_func_3prong0pi0": "0.998 + (0.0070 + (0.0110-0.0070)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong0pi0_es_shift" : 0.9958 + } + }, + "scale_t_3prong_lo": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG_DOWN", + "tau_shift_func_3prong0pi0": "0.998 - (0.0070 + (0.0110-0.0070)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong0pi0_es_shift" : 0.9894 + } + }, + "scale_t_3prong1pi0_hi": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG1PI0_UP", + "tau_shift_func_3prong1pi0": "1.004 + (0.009 + (0.0390-0.009)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong1pi0_es_shift" : 0.9948 + } + }, + "scale_t_3prong1pi0_lo": { + "baseline": { + "addit_output_folder" : "TSCALE3PRONG1PI0_DOWN", + "tau_shift_func_3prong1pi0": "1.004 - (0.009 + (0.0390-0.009)/(170.-34.)*(max(min(x,170.),34.)-34))", + "embedtau_3prong1pi0_es_shift" : 0.985 + } + }, + "scale_efake_0pi_lo": { + "baseline": { + "addit_output_folder" : "EFAKE0PI_DOWN", + "efaketau_0pi_es_shift": 1.00888, + "efaketau_0pi_es_shift_endcap": 0.95653 + } + }, + "scale_efake_0pi_hi": { + "baseline": { + "addit_output_folder" : "EFAKE0PI_UP", + "efaketau_0pi_es_shift": 1.02266, + "efaketau_0pi_es_shift_endcap": 1.00307 + } + }, + "scale_efake_1pi_lo": { + "baseline": { + "addit_output_folder" : "EFAKE1PI_DOWN", + "efaketau_1pi_es_shift": 1.00347, + "efaketau_1pi_es_shift_endcap": 0.94191 + } + }, + "scale_efake_1pi_hi": { + "baseline": { + "addit_output_folder" : "EFAKE1PI_UP", + "efaketau_1pi_es_shift": 1.03171, + "efaketau_1pi_es_shift_endcap": 1.03999 + } + }, + + "scale_mufake_0pi_lo": { + "baseline": { + "addit_output_folder" : "MUFAKE0PI_DOWN", + "mufaketau_0pi_es_shift": 0.99 + } + }, + "scale_mufake_0pi_hi": { + "baseline": { + "addit_output_folder" : "MUFAKE0PI_UP", + "mufaketau_0pi_es_shift": 1.01 + } + }, + "scale_mufake_1pi_lo": { + "baseline": { + "addit_output_folder" : "MUFAKE1PI_DOWN", + "mufaketau_1pi_es_shift": 0.99 + } + }, + "scale_mufake_1pi_hi": { + "baseline": { + "addit_output_folder" : "MUFAKE1PI_UP", + "mufaketau_1pi_es_shift": 1.01 + } + }, + "scale_e_lo": { + "baseline": { + "addit_output_folder" : "ESCALE_DOWN", + "e_scale_mode": true, + "elec_es_shift_barrel": 0.9917, + "elec_es_shift_endcap": 0.9819, + "e_unc_mode": 1 + } + }, + "scale_e_hi": { + "baseline": { + "addit_output_folder" : "ESCALE_UP", + "e_scale_mode": true, + "elec_es_shift_barrel": 1.0017, + "elec_es_shift_endcap": 1.0069, + "e_unc_mode": 2 + } + }, + "scale_mu_lo": { + "baseline": { + "addit_output_folder" : "MUSCALE_DOWN", + "mu_scale_mode": true, + //"muon_es_shift": 0.998, + //"muon_es_shift_barrel": 0.996, + //"muon_es_shift_nearendcap": 0.991, + //"muon_es_shift_farendcap": 0.983 + "muon_es_shift": 0.9985, + "muon_es_shift_barrel": 0.9985, + "muon_es_shift_nearendcap": 0.9985, + "muon_es_shift_farendcap": 0.9985 + } + }, + "scale_mu_hi": { + "baseline": { + "addit_output_folder" : "MUSCALE_UP", + "mu_scale_mode": true, + //"muon_es_shift": 1.002, + //"muon_es_shift_barrel": 1.004, + //"muon_es_shift_nearendcap": 1.009, + //"muon_es_shift_farendcap": 1.017 + "muon_es_shift": 1.0015, + "muon_es_shift_barrel": 1.0015, + "muon_es_shift_nearendcap": 1.0015, + "muon_es_shift_farendcap": 1.0015 + } + }, + "res_mu_hi": { + "baseline": { + "addit_output_folder" : "MURES_UP", + "muon_res_shift": 0.1 + } + }, + "res_mu_lo": { + "baseline": { + "addit_output_folder" : "MURES_DOWN", + "muon_res_shift": -0.1 + } + }, + "res_e_hi": { + "baseline": { + "addit_output_folder" : "ERES_UP", + "elec_res_shift": 0.1 + } + }, + "res_e_lo": { + "baseline": { + "addit_output_folder" : "ERES_DOWN", + "elec_res_shift": -0.1 + } + }, + "res_t_hi": { + "baseline": { + "addit_output_folder" : "TRES_UP", + "tau_res_shift": 0.01 + } + }, + "res_t_lo": { + "baseline": { + "addit_output_folder" : "TRES_DOWN", + "tau_res_shift": -0.01 + } + }, + "res_j_lo": { + "baseline": { + "addit_output_folder" : "JER_DOWN", + "jes_mode" : 1 + } + }, + "res_j_hi": { + "baseline": { + "addit_output_folder" : "JER_UP", + "jer_mode" : 2 + } + }, + "scale_j_lo": { + "baseline": { + "addit_output_folder" : "JES_DOWN", + "jes_mode" : 1, + "split_by_source" : false +// "btag_mode" : 3 + } + }, + "scale_j_hi": { + "baseline": { + "addit_output_folder" : "JES_UP", + "jes_mode" : 2, + "split_by_source" : false +// "btag_mode" : 4 + } + }, + "scale_j_corr_lo": { + "baseline": { + "addit_output_folder" : "JES_CORR_DOWN", + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_corr_hi": { + "baseline": { + "addit_output_folder" : "JES_CORR_UP", + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JES_UNCORR_DOWN", + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JES_UNCORR_UP", + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // adding regrouped JECs (legacy/full run2 -- https://tinyurl.com/r976rmc) + "scale_j_relbal_lo": { + "baseline": { + "addit_output_folder" : "JESRBAL_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "RelativeBal" + } + }, + "scale_j_relbal_hi": { + "baseline": { + "addit_output_folder" : "JESRBAL_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "RelativeBal" + } + }, + "scale_j_abs_lo": { + "baseline": { + "addit_output_folder" : "JESABS_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "Absolute" + } + }, + "scale_j_abs_hi": { + "baseline": { + "addit_output_folder" : "JESABS_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "Absolute" + } + }, + "scale_j_abs_year_lo": { + "baseline": { + "addit_output_folder" : "JESABS_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "Absolute_2018" + } + }, + "scale_j_abs_year_hi": { + "baseline": { + "addit_output_folder" : "JESABS_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "Absolute_2018" + } + }, + "scale_j_flav_lo": { + "baseline": { + "addit_output_folder" : "JESFLAV_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "FlavorQCD" + } + }, + "scale_j_flav_hi": { + "baseline": { + "addit_output_folder" : "JESFLAV_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "FlavorQCD" + } + }, + "scale_j_bbec1_lo": { + "baseline": { + "addit_output_folder" : "JESBBEC1_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "BBEC1" + } + }, + "scale_j_bbec1_hi": { + "baseline": { + "addit_output_folder" : "JESBBEC1_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "BBEC1" + } + }, + "scale_j_bbec1_year_lo": { + "baseline": { + "addit_output_folder" : "JESBBEC1_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "BBEC1_2018" + } + }, + "scale_j_bbec1_year_hi": { + "baseline": { + "addit_output_folder" : "JESBBEC1_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "BBEC1_2018" + } + }, + "scale_j_ec2_lo": { + "baseline": { + "addit_output_folder" : "JESEC2_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "EC2" + } + }, + "scale_j_ec2_hi": { + "baseline": { + "addit_output_folder" : "JESEC2_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "EC2" + } + }, + "scale_j_ec2_year_lo": { + "baseline": { + "addit_output_folder" : "JESEC2_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "EC2_2018" + } + }, + "scale_j_ec2_year_hi": { + "baseline": { + "addit_output_folder" : "JESEC2_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "EC2_2018" + } + }, + "scale_j_hf_lo": { + "baseline": { + "addit_output_folder" : "JESHF_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "HF" + } + }, + "scale_j_hf_hi": { + "baseline": { + "addit_output_folder" : "JESHF_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "HF" + } + }, + "scale_j_hf_year_lo": { + "baseline": { + "addit_output_folder" : "JESHF_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "HF_2018" + } + }, + "scale_j_hf_year_hi": { + "baseline": { + "addit_output_folder" : "JESHF_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "HF_2018" + } + }, + "scale_j_relsamp_year_lo": { + "baseline": { + "addit_output_folder" : "JESRELSAMP_YEAR_DOWN", + "jes_mode" : 1, + "split_by_source" : false, + "jes_input_set" : "RelativeSample_2018" + } + }, + "scale_j_relsamp_year_hi": { + "baseline": { + "addit_output_folder" : "JESRELSAMP_YEAR_UP", + "jes_mode" : 2, + "split_by_source" : false, + "jes_input_set" : "RelativeSample_2018" + } + }, + // + "scale_j_full_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1 + } + }, + "scale_j_full_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2 + } + }, + // adding correlations splitting for regional sources + // jes full detector + "scale_j_full_corr_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_full_corr_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_full_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESFULL_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_full_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESFULL_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 0, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // + "scale_j_cent_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1 + } + }, + "scale_j_cent_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2 + } + }, + // adding correlations splitting for regional sources + // jes central detector + "scale_j_cent_corr_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_cent_corr_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_cent_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESCENT_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_cent_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESCENT_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 1, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + // + //"scale_j_hf_lo": { + // "baseline": { + // "addit_output_folder" : "JESHF_DOWN", + // "split_by_source" : false, + // "split_by_region" : true, + // "jec_region" : 2, + // "jes_mode" : 1 + // } + // }, + // "scale_j_hf_hi": { + // "baseline": { + // "addit_output_folder" : "JESHF_UP", + // "split_by_source" : false, + // "split_by_region" : true, + // "jec_region" : 2, + // "jes_mode" : 2 + // } + // }, + // adding correlations splitting for regional sources + // jes HF detector + "scale_j_hf_corr_lo": { + "baseline": { + "addit_output_folder" : "JESHF_CORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 1, + "jes_corr_mode" : 1 + } + }, + "scale_j_hf_corr_hi": { + "baseline": { + "addit_output_folder" : "JESHF_CORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 2, + "jes_corr_mode" : 1 + } + }, + "scale_j_hf_uncorr_lo": { + "baseline": { + "addit_output_folder" : "JESHF_UNCORR_DOWN", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 1, + "jes_corr_mode" : 2 + } + }, + "scale_j_hf_uncorr_hi": { + "baseline": { + "addit_output_folder" : "JESHF_UNCORR_UP", + "split_by_source" : false, + "split_by_region" : true, + "jec_region" : 2, + "jes_mode" : 2, + "jes_corr_mode" : 2 + } + }, + "scale_embed_met_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_DOWN", + "embed_metscale_mode" : 1 + } + }, + "scale_embed_met_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_UP", + "embed_metscale_mode" : 2 + } + }, + "scale_met_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_DOWN", + "metscale_mode" : 1 + } + }, + "scale_met_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_UP", + "metscale_mode" : 2 + } + }, + "res_met_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_DOWN", + "metres_mode" : 1 + } + }, + "res_met_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_UP", + "metres_mode" : 2 + } + }, + + "scale_met_njets0_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS0_DOWN", + "metscale_mode" : 1, + "njets_mode" : 1 + } + }, + "scale_met_njets0_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS0_UP", + "metscale_mode" : 2, + "njets_mode" : 1 + } + }, + "res_met_njets0_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS0_DOWN", + "metres_mode" : 1, + "njets_mode" : 1 + } + }, + "res_met_njets0_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS0_UP", + "metres_mode" : 2, + "njets_mode" : 1 + } + }, + + "scale_met_njets1_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS1_DOWN", + "metscale_mode" : 1, + "njets_mode" : 2 + } + }, + "scale_met_njets1_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS1_UP", + "metscale_mode" : 2, + "njets_mode" : 2 + } + }, + "res_met_njets1_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS1_DOWN", + "metres_mode" : 1, + "njets_mode" : 2 + } + }, + "res_met_njets1_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS1_UP", + "metres_mode" : 2, + "njets_mode" : 2 + } + }, + "scale_met_njets2_lo": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS2_DOWN", + "metscale_mode" : 1, + "njets_mode" : 3 + } + }, + "scale_met_njets2_hi": { + "baseline": { + "addit_output_folder" : "MET_SCALE_NJETS2_UP", + "metscale_mode" : 2, + "njets_mode" : 3 + } + }, + "res_met_njets2_lo": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS2_DOWN", + "metres_mode" : 1, + "njets_mode" : 3 + } + }, + "res_met_njets2_hi": { + "baseline": { + "addit_output_folder" : "MET_RES_NJETS2_UP", + "metres_mode" : 2, + "njets_mode" : 3 + } + }, + "met_cl_lo": { + "baseline": { + "addit_output_folder" : "METCL_DOWN", + "metcl_mode" : 1 + } + }, + "met_cl_hi": { + "baseline": { + "addit_output_folder" : "METCL_UP", + "metcl_mode" : 2 + } + }, + "met_uncl_lo": { + "baseline": { + "addit_output_folder" : "METUNCL_DOWN", + "metuncl_mode" : 1 + } + }, + "met_uncl_hi": { + "baseline": { + "addit_output_folder" : "METUNCL_UP", + "metuncl_mode" : 2 + } + }, + "scale_b_lo": { + "baseline": { + "addit_output_folder" : "BTAG_DOWN", + "btag_mode" : 1 + } + }, + "scale_b_hi": { + "baseline": { + "addit_output_folder" : "BTAG_UP", + "btag_mode" : 2 + } + }, + "scale_bfake_lo": { + "baseline": { + "addit_output_folder" : "BFAKE_DOWN", + "bfake_mode" : 1 + } + }, + "scale_bfake_hi": { + "baseline": { + "addit_output_folder" : "BFAKE_UP", + "bfake_mode" : 2 + } + }, + "scale_lf_lo": { + "baseline": { + "addit_output_folder" : "LF_DOWN", + "btag_mode" : 5 + } + }, + "scale_lf_hi": { + "baseline": { + "addit_output_folder" : "LF_UP", + "btag_mode" : 6 + } + }, + "scale_hf_lo": { + "baseline": { + "addit_output_folder" : "HF_DOWN", + "btag_mode" : 7 + } + }, + "scale_hf_hi": { + "baseline": { + "addit_output_folder" : "HF_UP", + "btag_mode" : 8 + } + }, + "scale_hfstats1_lo": { + "baseline": { + "addit_output_folder" : "HFSTATS1_DOWN", + "btag_mode" :9 + } + }, + "scale_hfstats1_hi": { + "baseline": { + "addit_output_folder" : "HFSTATS1_UP", + "btag_mode" : 10 + } + }, + "scale_hfstats2_lo": { + "baseline": { + "addit_output_folder" : "HFSTATS2_DOWN", + "btag_mode" :11 + } + }, + "scale_hfstats2_hi": { + "baseline": { + "addit_output_folder" : "HFSTATS2_UP", + "btag_mode" : 12 + } + }, + "scale_lfstats1_lo": { + "baseline": { + "addit_output_folder" : "LFSTATS1_DOWN", + "btag_mode" :13 + } + }, + "scale_lfstats1_hi": { + "baseline": { + "addit_output_folder" : "LFSTATS1_UP", + "btag_mode" : 14 + } + }, + "scale_lfstats2_lo": { + "baseline": { + "addit_output_folder" : "LFSTATS2_DOWN", + "btag_mode" :15 + } + }, + "scale_lfstats2_hi": { + "baseline": { + "addit_output_folder" : "LFSTATS2_UP", + "btag_mode" : 16 + } + }, + "scale_cferr1_lo": { + "baseline": { + "addit_output_folder" : "CFERR1_DOWN", + "btag_mode" :17 + } + }, + "scale_cferr1_hi": { + "baseline": { + "addit_output_folder" : "CFERR1_UP", + "btag_mode" : 18 + } + }, + "scale_cferr2_lo": { + "baseline": { + "addit_output_folder" : "CFERR2_DOWN", + "btag_mode" :19 + } + }, + "scale_cferr2_hi": { + "baseline": { + "addit_output_folder" : "CFERR2_UP", + "btag_mode" : 20 + } + }, + "default": {} + }, + "samples": { + + } +} diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py new file mode 100755 index 000000000..ac8533e9e --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -0,0 +1,434 @@ +#!/usr/bin/env python + +# python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs + + +# python scripts/htt_UL_2018.py --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs + + +# importing libraries +import sys +from optparse import OptionParser +import os +import math +import json + +# setting up job stuff and condor template +#----------------------------------------- +os.system("voms-proxy-init --voms cms --valid 192:00 --out ~/cms.proxy") + +JOBWRAPPER = './scripts/generate_job.sh' +JOBSUBMIT = 'true' +if "JOBWRAPPER" in os.environ: JOBWRAPPER = os.environ["JOBWRAPPER"] +if "JOBSUBMIT" in os.environ: JOBSUBMIT = os.environ["JOBSUBMIT"] +print "Using job-wrapper: " + JOBWRAPPER +print "Using job-submission: " + JOBSUBMIT + +CONDOR_TEMPLATE = """executable = ./jobs/%(EXE)s +Proxy_path =/afs/cern.ch/user/a/adow/private/x509up +arguments = $(ProcId) $(Proxy_path) +output = ./jobs/%(TASK)s.$(ClusterId).$(ProcId).out +error = ./jobs/%(TASK)s.$(ClusterId).$(ProcId).err +log = ./jobs/%(TASK)s.$(ClusterId).log +requirements = (OpSysAndVer =?= "SLCern6") ++JobFlavour = "longlunch" +queue +""" +#----------------------------------------- + +# parsing options +#----------------------------------------- +def split_callback(option, opt, value, parser): + setattr(parser.values, option.dest, value.split(',')) + +parser = OptionParser() +parser.add_option("--wrapper", dest="wrapper", + help="Specify the job-wrapper script. The current wrapper is '%(JOBWRAPPER)s'." + " Using the --wrapper option overrides both the default and the environment variable. " % vars()) + +parser.add_option("--submit", dest="submit", + help="Specify the job-submission method. The current method is '%(JOBSUBMIT)s'" + " Using the --submit option overrides both the default and the environment variable. " % vars()) + +parser.add_option("--data", dest="proc_data", action='store_true', default=False, + help="Process data samples") + +parser.add_option("--calc_lumi", dest="calc_lumi", action='store_true', default=False, + help="Run on data and only write out lumi mask jsons") + +parser.add_option("--bkg", dest="proc_bkg", action='store_true', default=False, + help="Process background mc samples") + +parser.add_option("--all", dest="proc_all", action='store_true', default=False, + help="Process all samples") + +parser.add_option("--no_json", dest="no_json", action='store_true', default=False, + help="Do not read the channels to process from the json to decide which datasets to run on") + +parser.add_option("--scales", dest="scales", type='string', default='default', + help="List of systematic shifts to process") + +parser.add_option("--parajobs", dest="parajobs", action='store_true', default=False, + help="Submit jobs parametrically") + +parser.add_option("--config", dest="config", type='string', default='scripts/config_2022.json', + help="Config file") + +parser.add_option("--list_backup", dest="slbackupname", type='string', default='prevlist', + help="Name you want to give to the previous files_per_samples file, in case you're resubmitting a subset of jobs") + +parser.add_option("--condor", action='store_true', default=False, + help="Submit jobs to condor (for lxplus)") + +parser.add_option("--effective_events", action='store_true', default=False, + help="Generating effective event numbers for processing all samples") + +parser.add_option("--jetmetuncerts", dest="jetmetuncerts", action='store_true', default=False, + help="Do JES, JER, and MET uncertainties") +#----------------------------------------- +(options, args) = parser.parse_args() +if options.wrapper: JOBWRAPPER=options.wrapper +if options.submit: JOBSUBMIT=options.submit +if options.condor: JOBWRAPPER = "./scripts/generate_condor_job.sh" + +jetuncert_string='' +if options.jetmetuncerts: + jetuncert_string='\\"do_jetmet_uncerts\\":true' +else: + jetuncert_string='\\"do_jetmet_uncerts\\":false' + +def getParaJobSubmit(N): + if not options.submit: return 'true' + sub_opts=JOBSUBMIT.split(' ',1)[1] + if '\"' in sub_opts: sub_opts = sub_opts.replace('\"','') + sub_opts = '%s \"%s -t 1-%i:1\"' %(JOBSUBMIT.split(' ',1)[0], sub_opts, N) + return sub_opts + +BACKUPNAME = options.slbackupname +scales = options.scales +no_json = options.no_json +parajobs = options.parajobs + +scale_list = scales.split(',') +flatjsonlist = [] +flatjsonlistdysig = [] +flatjsonlist.append("job:sequences:all:") +n_scales=0 +for scale in scale_list: + n_scales+=1 + if scale == "default": + flatjsonlist.append("^%(scale)s"%vars()) + flatjsonlistdysig.append("^%(scale)s"%vars()) + else: + n_scales+=1 + flatjsonlist.append("^%(scale)s_hi^%(scale)s_lo"%vars()) + flatjsonlistdysig.append("^%(scale)s_hi^%(scale)s_lo"%vars()) + +CONFIG='scripts/config_2022.json' +if options.config != '': CONFIG = options.config + +n_channels=1 +output_folder = "" +svfit_folder = "" +svfit_mode = 0 +with open(CONFIG,"r") as input: + with open ("config_for_python_channels.json","w") as output: + for line in input: + if not '//' in line: + output.write(line) + output.close() + input.close() + +n_channels=4 +with open("config_for_python_channels.json") as config_file: + cfg = json.load(config_file) + n_channels=len(cfg["job"]["channels"]) + output_folder = cfg["sequence"]["output_folder"] + svfit_mode = cfg["sequence"]["new_svfit_mode"] + svfit_folder = cfg["sequence"]["svfit_folder"] + +# makes sure output folder(s) (and svfit folder(s) if needed) is always created +os.system("bash scripts/make_output_folder.sh {}".format(output_folder)) +if svfit_mode == 1: + os.system("bash scripts/make_output_folder.sh {}".format(svfit_folder)) + + +scale = int(math.ceil(float(n_scales*n_channels)/30)) +#scale = int(math.ceil(float(n_scales*n_channels)/8)) # change back later! +if scale < 1: scale = 1 + +total = float(len(flatjsonlistdysig)) +flatjsons = [] +if options.jetmetuncerts: +# when we do the jet met uncertainties we do not want to run additional systematics in the same job + for i in flatjsonlistdysig: + if 'default' in i: + flatjsons.append('job:sequences:all:'+i) + flatjsonlistdysig.remove(i) +# split into seperate jobs if number of scales is over a value +for i in range(0,scale): + first = i*int(math.ceil(total/scale)) + last = (i+1)*int(math.ceil(total/scale)) + temp=''.join(flatjsonlistdysig[first:last]) + if temp == '': continue + temp='job:sequences:all:'+temp + flatjsons.append(temp) + +FILELIST='filelists/Mar31_2018_MC_124X' + +signal_mc = [ ] +signal_vh = [ ] +signal_mc_ww = [ ] + +if os.path.isfile("./jobs/files_per_sample_2018.txt"): + os.system("mv ./jobs/files_per_sample_2018.txt ./jobs/files_per_sample_2018-%(BACKUPNAME)s.txt"%vars()) + +file_persamp = open("./jobs/files_per_sample_2018.txt", "w") + + +if options.proc_data or options.proc_all or options.calc_lumi: + if not no_json: + with open(CONFIG,"r") as input: + with open ("config_for_python.json","w") as output: + for line in input: + if not '//' in line: + output.write(line) + output.close() + input.close() + + with open("config_for_python.json") as config_file: + cfg = json.load(config_file) + + channels=cfg["job"]["channels"] + else: + channels=['mt','et','tt','em','zmm','zee'] + +if options.proc_data or options.proc_all or options.calc_lumi: + + data_samples = [] + data_eras = ['E','E_rereco','F','G'] + + for chn in channels: + for era in data_eras: + if 'mt' in chn or 'zmm' in chn: + if 'SingleMuon'+era not in data_samples: data_samples+=['SingleMuon'+era] + if 'et' in chn or 'zee' in chn: + if 'EGamma'+era not in data_samples: data_samples+=['EGamma'+era] + if 'em' in chn: + data_samples+=['MuonEG'+era] + if 'tt' in chn: + data_samples+=['Tau'+era] + + if ('mt' in channels or 'et' in channels) and 'tt' not in channels: + for era in data_eras: + data_samples+=['Tau'+era] + + if options.effective_events: # this is just used for the effective events case + for era in data_eras: + if 'SingleMuon'+era not in data_samples: data_samples+=['SingleMuon'+era] + if 'EGamma'+era not in data_samples: data_samples+=['EGamma'+era] + if 'Tau'+era not in data_samples: data_samples+=['Tau'+era] + if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] + if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] + + DATAFILELIST="./filelists/May0223_2022-postEE_Data_102X" + + if options.calc_lumi: + for sa in data_samples: + JOB='%s_postEE_2022' % (sa) + user='irandreo' + prefix='May0223_Data_124X_2022-postEE' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); + nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) + nperjob = 500 + if "TauC" in sa: nperjob = 252 + elif "TauD" in sa: nperjob = 271 + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))): + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(i)d.log" jobs/%(JOB)s-%(i)s.sh' %vars()) + if not parajobs: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(i)d.sh' % vars()) + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(int(math.ceil(float(nfiles)/float(nperjob)))) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + + else: + for sa in data_samples: + JOB='%s_postEE_2022' % (sa) + user='irandreo' + prefix='May0223_Data_124X_2022-postEE' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); + nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) + nperjob = 30 + + if "EGammaD" in sa: nperjob = 50 + # elif "TauD" in sa: nperjob = 45 + + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))) : + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(i)d.log" jobs/%(JOB)s-%(i)s.sh' %vars()) + if not parajobs and not options.condor: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(i)d.sh' % vars()) + elif not parajobs and options.condor: + outscriptname = '{}-{}.sh'.format(JOB, i) + subfilename = '{}_{}.sub'.format(JOB, i) + subfile = open("jobs/{}".format(subfilename), "w") + condor_settings = CONDOR_TEMPLATE % { + 'EXE': outscriptname, + 'TASK': "{}-{}".format(JOB, i) + } + subfile.write(condor_settings) + subfile.close() + os.system('condor_submit jobs/{}'.format(subfilename)) + + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(int(math.ceil(float(nfiles)/float(nperjob)))) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + + +if options.proc_bkg or options.proc_all: + central_samples = [ + # Drell-Yan LO + 'DY1JetsToLL-LO', + 'DY2JetsToLL-LO', + 'DY3JetsToLL-LO', + 'DY4JetsToLL-LO', + 'DYJetsToLL-LO', + 'DYJetsToLL-LO-ext1', + + # Low mass Drell Yan LO + 'DYJetsToLL_M-10to50-LO', + + # Drell-Yan NLO + 'DYJetsToLL-NLO', + 'DYJetsToLL_0J-NLO', + 'DYJetsToLL_1J-NLO', + 'DYJetsToLL_2J-NLO', + + # Electroweak W and Z + 'EWKWMinus2Jets_WToLNu', + 'EWKWPlus2Jets_WToLNu', + 'EWKZ2Jets_ZToLL', + + # W + Jets L0 + 'WJetsToLNu-LO', + 'W1JetsToLNu-LO', + 'W2JetsToLNu-LO', + 'W3JetsToLNu-LO', + 'W4JetsToLNu-LO', + +# # W + Jets NLO +# 'WJetsToLNu_0J-NLO', +# 'WJetsToLNu_1J-NLO', +# 'WJetsToLNu_2J-NLO', +# #'WJetsToLNu-NLO', + + # ttbar + 'TTTo2L2Nu', + 'TTToHadronic', + 'TTToSemiLeptonic', + + # Split diboson (Missing Files: WZTo1L3Nu, WZTo2L2Q) + 'WZTo1L1Nu2Q', + 'WZTo3LNu', + 'WWTo1L1Nu2Q', + 'WWTo2L2Nu', + 'WZTo1L3Nu', + 'WZTo2Q2L', + 'ZZTo2L2Nu', + 'ZZTo4L', + +# # Triboson +# 'WWZ', +# 'WWZ-ext1', +# 'WZZ', +# 'WZZ-ext1', +# 'WWW', +# 'WWW-ext1', +# 'ZZZ', +# 'ZZZ-ext1', + + # Other backgrounds + 'WGToLNuG', + 'Tbar-t', + 'Tbar-tW', + 'T-t', + 'T-tW', + +# # SM Higgs +# 'GluGluHToTauTau_M125', +# 'VBFHToTauTau_M125', +# 'WminusHToTauTau_M125', +# 'WplusHToTauTau_M125', +# 'ZHToTauTau_M125', +# 'ZHToTauTau_M125-ext1', +# 'ttHToTauTau_M125' + ] + + if options.effective_events: # this is just used for the effective events case + central_samples += [ + 'VBF_HToZZTo4L_M125', + 'GluGlu_HToZZTo4L_M125', + 'GluGluToContinToZZTo2e2mu', + 'GluGluToContinToZZTo2e2tau', + 'GluGluToContinToZZTo2mu2tau', + 'GluGluToContinToZZTo4e', + 'GluGluToContinToZZTo4mu', + 'GluGluToContinToZZTo4tau', + ] + + + for sa in central_samples: + JOB='%s_2018' % (sa) + user='dwinterb' + PREFIX='Mar31_MC_124X_2018' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); + + job_num=0 + for FLATJSONPATCH in flatjsons: + #nperjob = 40 + nperjob=20 + if 'DY' not in sa and 'EWKZ' not in sa: + FLATJSONPATCH = FLATJSONPATCH.replace('^scale_efake_0pi_hi^scale_efake_0pi_lo','').replace('^scale_efake_1pi_hi^scale_efake_1pi_lo','').replace('^scale_mufake_0pi_hi^scale_mufake_0pi_lo','').replace('^scale_mufake_1pi_hi^scale_mufake_1pi_lo','') + if 'DY' not in sa and 'JetsToLNu' not in sa and 'WG' not in sa and 'EWKZ' not in sa and 'EWKW' not in sa: + FLATJSONPATCH = FLATJSONPATCH.replace('^scale_met_hi^scale_met_lo','').replace('^res_met_hi^res_met_lo','').replace('^scale_met_njets0_hi^scale_met_njets0_lo','').replace('^res_met_njets0_hi^res_met_njets0_lo','').replace('^scale_met_njets1_hi^scale_met_njets1_lo','').replace('^res_met_njets1_hi^res_met_njets1_lo','').replace('^scale_met_njets2_hi^scale_met_njets2_lo','').replace('^res_met_njets2_hi^res_met_njets2_lo','') + #else: + # FLATJSONPATCH = FLATJSONPATCH.replace('^met_uncl_hi^met_uncl_lo','') + if FLATJSONPATCH == 'job:sequences:all:^^' or FLATJSONPATCH == 'job:sequences:all:': continue + n_scales = FLATJSONPATCH.count('_lo')*2 + FLATJSONPATCH.count('default') + if n_scales*n_channels>=24: nperjob = 10 + if n_scales*n_channels>=48: nperjob=5 + + if options.jetmetuncerts and 'default' in FLATJSONPATCH: nperjob = int(math.ceil(float(nperjob)/2)) + + #if 'TTTo' in sa: nperjob = int(math.ceil(float(nperjob)/2)) + if 'TTTo' in sa: nperjob = int(math.ceil(float(nperjob)/2)) + if sa == 'TTTo2L2Nu': nperjob = int(math.ceil(float(nperjob)/2)) + #nperjob = int(math.ceil(float(nperjob)/max(1.,float(n_scales)*float(n_channels)/10.))) + nfiles = sum(1 for line in open('%(FILELIST)s_%(sa)s.dat' % vars())) + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))) : + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --flatjson=%(FLATJSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(job_num)d.log" jobs/%(JOB)s-%(job_num)s.sh' %vars()) + if not parajobs and not options.condor: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(job_num)d.sh' % vars()) + elif not parajobs and options.condor: + outscriptname = '{}-{}.sh'.format(JOB, job_num) + subfilename = '{}_{}.sub'.format(JOB, job_num) + subfile = open("jobs/{}".format(subfilename), "w") + condor_settings = CONDOR_TEMPLATE % { + 'EXE': outscriptname, + 'TASK': "{}-{}".format(JOB, job_num) + } + subfile.write(condor_settings) + subfile.close() + os.system('condor_submit jobs/{}'.format(subfilename)) + + job_num+=1 + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(job_num) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + + diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py new file mode 100755 index 000000000..9b7e16f7c --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -0,0 +1,434 @@ +#!/usr/bin/env python + +# python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs + + +# python scripts/htt_UL_2018.py --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs + + +# importing libraries +import sys +from optparse import OptionParser +import os +import math +import json + +# setting up job stuff and condor template +#----------------------------------------- +os.system("voms-proxy-init --voms cms --valid 192:00 --out ~/cms.proxy") + +JOBWRAPPER = './scripts/generate_job.sh' +JOBSUBMIT = 'true' +if "JOBWRAPPER" in os.environ: JOBWRAPPER = os.environ["JOBWRAPPER"] +if "JOBSUBMIT" in os.environ: JOBSUBMIT = os.environ["JOBSUBMIT"] +print "Using job-wrapper: " + JOBWRAPPER +print "Using job-submission: " + JOBSUBMIT + +CONDOR_TEMPLATE = """executable = ./jobs/%(EXE)s +Proxy_path =/afs/cern.ch/user/a/adow/private/x509up +arguments = $(ProcId) $(Proxy_path) +output = ./jobs/%(TASK)s.$(ClusterId).$(ProcId).out +error = ./jobs/%(TASK)s.$(ClusterId).$(ProcId).err +log = ./jobs/%(TASK)s.$(ClusterId).log +requirements = (OpSysAndVer =?= "SLCern6") ++JobFlavour = "longlunch" +queue +""" +#----------------------------------------- + +# parsing options +#----------------------------------------- +def split_callback(option, opt, value, parser): + setattr(parser.values, option.dest, value.split(',')) + +parser = OptionParser() +parser.add_option("--wrapper", dest="wrapper", + help="Specify the job-wrapper script. The current wrapper is '%(JOBWRAPPER)s'." + " Using the --wrapper option overrides both the default and the environment variable. " % vars()) + +parser.add_option("--submit", dest="submit", + help="Specify the job-submission method. The current method is '%(JOBSUBMIT)s'" + " Using the --submit option overrides both the default and the environment variable. " % vars()) + +parser.add_option("--data", dest="proc_data", action='store_true', default=False, + help="Process data samples") + +parser.add_option("--calc_lumi", dest="calc_lumi", action='store_true', default=False, + help="Run on data and only write out lumi mask jsons") + +parser.add_option("--bkg", dest="proc_bkg", action='store_true', default=False, + help="Process background mc samples") + +parser.add_option("--all", dest="proc_all", action='store_true', default=False, + help="Process all samples") + +parser.add_option("--no_json", dest="no_json", action='store_true', default=False, + help="Do not read the channels to process from the json to decide which datasets to run on") + +parser.add_option("--scales", dest="scales", type='string', default='default', + help="List of systematic shifts to process") + +parser.add_option("--parajobs", dest="parajobs", action='store_true', default=False, + help="Submit jobs parametrically") + +parser.add_option("--config", dest="config", type='string', default='scripts/config_2022.json', + help="Config file") + +parser.add_option("--list_backup", dest="slbackupname", type='string', default='prevlist', + help="Name you want to give to the previous files_per_samples file, in case you're resubmitting a subset of jobs") + +parser.add_option("--condor", action='store_true', default=False, + help="Submit jobs to condor (for lxplus)") + +parser.add_option("--effective_events", action='store_true', default=False, + help="Generating effective event numbers for processing all samples") + +parser.add_option("--jetmetuncerts", dest="jetmetuncerts", action='store_true', default=False, + help="Do JES, JER, and MET uncertainties") +#----------------------------------------- +(options, args) = parser.parse_args() +if options.wrapper: JOBWRAPPER=options.wrapper +if options.submit: JOBSUBMIT=options.submit +if options.condor: JOBWRAPPER = "./scripts/generate_condor_job.sh" + +jetuncert_string='' +if options.jetmetuncerts: + jetuncert_string='\\"do_jetmet_uncerts\\":true' +else: + jetuncert_string='\\"do_jetmet_uncerts\\":false' + +def getParaJobSubmit(N): + if not options.submit: return 'true' + sub_opts=JOBSUBMIT.split(' ',1)[1] + if '\"' in sub_opts: sub_opts = sub_opts.replace('\"','') + sub_opts = '%s \"%s -t 1-%i:1\"' %(JOBSUBMIT.split(' ',1)[0], sub_opts, N) + return sub_opts + +BACKUPNAME = options.slbackupname +scales = options.scales +no_json = options.no_json +parajobs = options.parajobs + +scale_list = scales.split(',') +flatjsonlist = [] +flatjsonlistdysig = [] +flatjsonlist.append("job:sequences:all:") +n_scales=0 +for scale in scale_list: + n_scales+=1 + if scale == "default": + flatjsonlist.append("^%(scale)s"%vars()) + flatjsonlistdysig.append("^%(scale)s"%vars()) + else: + n_scales+=1 + flatjsonlist.append("^%(scale)s_hi^%(scale)s_lo"%vars()) + flatjsonlistdysig.append("^%(scale)s_hi^%(scale)s_lo"%vars()) + +CONFIG='scripts/config_2022.json' +if options.config != '': CONFIG = options.config + +n_channels=1 +output_folder = "" +svfit_folder = "" +svfit_mode = 0 +with open(CONFIG,"r") as input: + with open ("config_for_python_channels.json","w") as output: + for line in input: + if not '//' in line: + output.write(line) + output.close() + input.close() + +n_channels=4 +with open("config_for_python_channels.json") as config_file: + cfg = json.load(config_file) + n_channels=len(cfg["job"]["channels"]) + output_folder = cfg["sequence"]["output_folder"] + svfit_mode = cfg["sequence"]["new_svfit_mode"] + svfit_folder = cfg["sequence"]["svfit_folder"] + +# makes sure output folder(s) (and svfit folder(s) if needed) is always created +os.system("bash scripts/make_output_folder.sh {}".format(output_folder)) +if svfit_mode == 1: + os.system("bash scripts/make_output_folder.sh {}".format(svfit_folder)) + + +scale = int(math.ceil(float(n_scales*n_channels)/30)) +#scale = int(math.ceil(float(n_scales*n_channels)/8)) # change back later! +if scale < 1: scale = 1 + +total = float(len(flatjsonlistdysig)) +flatjsons = [] +if options.jetmetuncerts: +# when we do the jet met uncertainties we do not want to run additional systematics in the same job + for i in flatjsonlistdysig: + if 'default' in i: + flatjsons.append('job:sequences:all:'+i) + flatjsonlistdysig.remove(i) +# split into seperate jobs if number of scales is over a value +for i in range(0,scale): + first = i*int(math.ceil(total/scale)) + last = (i+1)*int(math.ceil(total/scale)) + temp=''.join(flatjsonlistdysig[first:last]) + if temp == '': continue + temp='job:sequences:all:'+temp + flatjsons.append(temp) + +FILELIST='filelists/Mar31_2018_MC_124X' + +signal_mc = [ ] +signal_vh = [ ] +signal_mc_ww = [ ] + +if os.path.isfile("./jobs/files_per_sample_2018.txt"): + os.system("mv ./jobs/files_per_sample_2018.txt ./jobs/files_per_sample_2018-%(BACKUPNAME)s.txt"%vars()) + +file_persamp = open("./jobs/files_per_sample_2018.txt", "w") + + +if options.proc_data or options.proc_all or options.calc_lumi: + if not no_json: + with open(CONFIG,"r") as input: + with open ("config_for_python.json","w") as output: + for line in input: + if not '//' in line: + output.write(line) + output.close() + input.close() + + with open("config_for_python.json") as config_file: + cfg = json.load(config_file) + + channels=cfg["job"]["channels"] + else: + channels=['mt','et','tt','em','zmm','zee'] + +if options.proc_data or options.proc_all or options.calc_lumi: + + data_samples = [] + data_eras = ['A','B','B_rereco','C','C_rereco','D','D_rereco'] + + for chn in channels: + for era in data_eras: + if 'mt' in chn or 'zmm' in chn: + if 'SingleMuon'+era not in data_samples: data_samples+=['SingleMuon'+era] + if 'et' in chn or 'zee' in chn: + if 'EGamma'+era not in data_samples: data_samples+=['EGamma'+era] + if 'em' in chn: + data_samples+=['MuonEG'+era] + if 'tt' in chn: + data_samples+=['Tau'+era] + + if ('mt' in channels or 'et' in channels) and 'tt' not in channels: + for era in data_eras: + data_samples+=['Tau'+era] + + if options.effective_events: # this is just used for the effective events case + for era in data_eras: + if 'SingleMuon'+era not in data_samples: data_samples+=['SingleMuon'+era] + if 'EGamma'+era not in data_samples: data_samples+=['EGamma'+era] + if 'Tau'+era not in data_samples: data_samples+=['Tau'+era] + if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] + if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] + + DATAFILELIST="./filelists/May0223_2022-preEE_Data_102X" + + if options.calc_lumi: + for sa in data_samples: + JOB='%s_preEE_2022' % (sa) + user='irandreo' + prefix='May0223_Data_124X_2022-preEE' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); + nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) + nperjob = 500 + if "TauC" in sa: nperjob = 252 + elif "TauD" in sa: nperjob = 271 + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))): + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(i)d.log" jobs/%(JOB)s-%(i)s.sh' %vars()) + if not parajobs: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(i)d.sh' % vars()) + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(int(math.ceil(float(nfiles)/float(nperjob)))) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + + else: + for sa in data_samples: + JOB='%s_preEE_2022' % (sa) + user='irandreo' + prefix='May0223_Data_124X_2022-preEE' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); + nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) + nperjob = 30 + + if "EGammaD" in sa: nperjob = 50 + # elif "TauD" in sa: nperjob = 45 + + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))) : + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(i)d.log" jobs/%(JOB)s-%(i)s.sh' %vars()) + if not parajobs and not options.condor: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(i)d.sh' % vars()) + elif not parajobs and options.condor: + outscriptname = '{}-{}.sh'.format(JOB, i) + subfilename = '{}_{}.sub'.format(JOB, i) + subfile = open("jobs/{}".format(subfilename), "w") + condor_settings = CONDOR_TEMPLATE % { + 'EXE': outscriptname, + 'TASK': "{}-{}".format(JOB, i) + } + subfile.write(condor_settings) + subfile.close() + os.system('condor_submit jobs/{}'.format(subfilename)) + + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(int(math.ceil(float(nfiles)/float(nperjob)))) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + + +if options.proc_bkg or options.proc_all: + central_samples = [ + # Drell-Yan LO + 'DY1JetsToLL-LO', + 'DY2JetsToLL-LO', + 'DY3JetsToLL-LO', + 'DY4JetsToLL-LO', + 'DYJetsToLL-LO', + 'DYJetsToLL-LO-ext1', + + # Low mass Drell Yan LO + 'DYJetsToLL_M-10to50-LO', + + # Drell-Yan NLO + 'DYJetsToLL-NLO', + 'DYJetsToLL_0J-NLO', + 'DYJetsToLL_1J-NLO', + 'DYJetsToLL_2J-NLO', + + # Electroweak W and Z + 'EWKWMinus2Jets_WToLNu', + 'EWKWPlus2Jets_WToLNu', + 'EWKZ2Jets_ZToLL', + + # W + Jets L0 + 'WJetsToLNu-LO', + 'W1JetsToLNu-LO', + 'W2JetsToLNu-LO', + 'W3JetsToLNu-LO', + 'W4JetsToLNu-LO', + +# # W + Jets NLO +# 'WJetsToLNu_0J-NLO', +# 'WJetsToLNu_1J-NLO', +# 'WJetsToLNu_2J-NLO', +# #'WJetsToLNu-NLO', + + # ttbar + 'TTTo2L2Nu', + 'TTToHadronic', + 'TTToSemiLeptonic', + + # Split diboson (Missing Files: WZTo1L3Nu, WZTo2L2Q) + 'WZTo1L1Nu2Q', + 'WZTo3LNu', + 'WWTo1L1Nu2Q', + 'WWTo2L2Nu', + 'WZTo1L3Nu', + 'WZTo2Q2L', + 'ZZTo2L2Nu', + 'ZZTo4L', + +# # Triboson +# 'WWZ', +# 'WWZ-ext1', +# 'WZZ', +# 'WZZ-ext1', +# 'WWW', +# 'WWW-ext1', +# 'ZZZ', +# 'ZZZ-ext1', + + # Other backgrounds + 'WGToLNuG', + 'Tbar-t', + 'Tbar-tW', + 'T-t', + 'T-tW', + +# # SM Higgs +# 'GluGluHToTauTau_M125', +# 'VBFHToTauTau_M125', +# 'WminusHToTauTau_M125', +# 'WplusHToTauTau_M125', +# 'ZHToTauTau_M125', +# 'ZHToTauTau_M125-ext1', +# 'ttHToTauTau_M125' + ] + + if options.effective_events: # this is just used for the effective events case + central_samples += [ + 'VBF_HToZZTo4L_M125', + 'GluGlu_HToZZTo4L_M125', + 'GluGluToContinToZZTo2e2mu', + 'GluGluToContinToZZTo2e2tau', + 'GluGluToContinToZZTo2mu2tau', + 'GluGluToContinToZZTo4e', + 'GluGluToContinToZZTo4mu', + 'GluGluToContinToZZTo4tau', + ] + + + for sa in central_samples: + JOB='%s_2018' % (sa) + user='dwinterb' + PREFIX='Mar31_MC_124X_2018' + JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); + + job_num=0 + for FLATJSONPATCH in flatjsons: + #nperjob = 40 + nperjob=20 + if 'DY' not in sa and 'EWKZ' not in sa: + FLATJSONPATCH = FLATJSONPATCH.replace('^scale_efake_0pi_hi^scale_efake_0pi_lo','').replace('^scale_efake_1pi_hi^scale_efake_1pi_lo','').replace('^scale_mufake_0pi_hi^scale_mufake_0pi_lo','').replace('^scale_mufake_1pi_hi^scale_mufake_1pi_lo','') + if 'DY' not in sa and 'JetsToLNu' not in sa and 'WG' not in sa and 'EWKZ' not in sa and 'EWKW' not in sa: + FLATJSONPATCH = FLATJSONPATCH.replace('^scale_met_hi^scale_met_lo','').replace('^res_met_hi^res_met_lo','').replace('^scale_met_njets0_hi^scale_met_njets0_lo','').replace('^res_met_njets0_hi^res_met_njets0_lo','').replace('^scale_met_njets1_hi^scale_met_njets1_lo','').replace('^res_met_njets1_hi^res_met_njets1_lo','').replace('^scale_met_njets2_hi^scale_met_njets2_lo','').replace('^res_met_njets2_hi^res_met_njets2_lo','') + #else: + # FLATJSONPATCH = FLATJSONPATCH.replace('^met_uncl_hi^met_uncl_lo','') + if FLATJSONPATCH == 'job:sequences:all:^^' or FLATJSONPATCH == 'job:sequences:all:': continue + n_scales = FLATJSONPATCH.count('_lo')*2 + FLATJSONPATCH.count('default') + if n_scales*n_channels>=24: nperjob = 10 + if n_scales*n_channels>=48: nperjob=5 + + if options.jetmetuncerts and 'default' in FLATJSONPATCH: nperjob = int(math.ceil(float(nperjob)/2)) + + #if 'TTTo' in sa: nperjob = int(math.ceil(float(nperjob)/2)) + if 'TTTo' in sa: nperjob = int(math.ceil(float(nperjob)/2)) + if sa == 'TTTo2L2Nu': nperjob = int(math.ceil(float(nperjob)/2)) + #nperjob = int(math.ceil(float(nperjob)/max(1.,float(n_scales)*float(n_channels)/10.))) + nfiles = sum(1 for line in open('%(FILELIST)s_%(sa)s.dat' % vars())) + for i in range (0,int(math.ceil(float(nfiles)/float(nperjob)))) : + os.system('%(JOBWRAPPER)s "./bin/HTT --cfg=%(CONFIG)s --json=%(JSONPATCH)s --flatjson=%(FLATJSONPATCH)s --offset=%(i)d --nlines=%(nperjob)d &> jobs/%(JOB)s-%(job_num)d.log" jobs/%(JOB)s-%(job_num)s.sh' %vars()) + if not parajobs and not options.condor: + os.system('%(JOBSUBMIT)s jobs/%(JOB)s-%(job_num)d.sh' % vars()) + elif not parajobs and options.condor: + outscriptname = '{}-{}.sh'.format(JOB, job_num) + subfilename = '{}_{}.sub'.format(JOB, job_num) + subfile = open("jobs/{}".format(subfilename), "w") + condor_settings = CONDOR_TEMPLATE % { + 'EXE': outscriptname, + 'TASK': "{}-{}".format(JOB, job_num) + } + subfile.write(condor_settings) + subfile.close() + os.system('condor_submit jobs/{}'.format(subfilename)) + + job_num+=1 + file_persamp.write("%s %d\n" %(JOB, int(math.ceil(float(nfiles)/float(nperjob))))) + if parajobs: + os.system('%(JOBWRAPPER)s ./jobs/%(JOB)s-\$\(\(SGE_TASK_ID-1\)\).sh jobs/parajob_%(JOB)s.sh' %vars()) + PARAJOBSUBMIT = getParaJobSubmit(job_num) + os.system('%(PARAJOBSUBMIT)s jobs/parajob_%(JOB)s.sh' % vars()) + + From 0cf2f2073a62c208503c7f3c985db466e3815db2 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 10:26:19 +0200 Subject: [PATCH 02/50] Add 2022 eras enum type and add 2022 golden json --- ...t_Collisions2022_355100_362760_Golden.json | 453 ++++++++++++++++++ .../HiggsTauTauRun2/interface/HTTConfig.h | 12 +- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 2 + 3 files changed, 464 insertions(+), 3 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden.json diff --git a/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden.json b/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden.json new file mode 100644 index 000000000..81cabfa78 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden.json @@ -0,0 +1,453 @@ +{ + "355374": [[59, 84]], + "355381": [[1, 358]], + "355418": [[1, 41]], + "355419": [[1, 98]], + "355429": [[42, 89]], + "355435": [[42, 84]], + "355442": [[1, 22]], + "355443": [[1, 240]], + "355444": [[1, 153]], + "355445": [[1, 242]], + "355454": [[38, 118]], + "355455": [[1, 40]], + "355456": [[1, 501]], + "355558": [[122, 409]], + "355559": [[1, 162]], + "355679": [[27, 85]], + "355680": [[1, 1651]], + "355768": [[82, 126]], + "355769": [[1, 541]], + "355862": [[121, 133]], + "355863": [[1, 14]], + "355870": [[31, 67]], + "355871": [[1, 5]], + "355872": [ + [1, 738], + [758, 995], + [997, 1217] + ], + "355892": [[14, 197]], + "355912": [[43, 200]], + "355913": [[1, 106]], + "355921": [[38, 442]], + "355933": [[75, 448]], + "355942": [[24, 189], [193, 213]], + "355988": [[43, 80], [85, 90]], + "355989": [[1, 24]], + "355998": [[1, 35]], + "355999": [[1, 9]], + "356004": [[1, 19]], + "356005": [[1, 187]], + "356043": [[1, 65]], + "356071": [[37, 191]], + "356074": [[1, 26]], + "356075": [[1, 125]], + "356076": [[1, 153]], + "356077": [[1, 472]], + "356135": [[46, 71]], + "356309": [[61, 184]], + "356316": [[45, 185]], + "356322": [[1, 19]], + "356323": [[1, 67], [69, 650]], + "356371": [[41, 50], [67, 72]], + "356375": [[35, 77], [101, 125]], + "356378": [ + [8, 208], + [210, 219], + [221, 304] + ], + "356381": [[1, 1193]], + "356383": [[1, 33]], + "356385": [[1, 30]], + "356386": [[1, 122]], + "356426": [[39, 60]], + "356428": [[1, 300]], + "356433": [[1, 310]], + "356434": [[1, 13]], + "356435": [[1, 3], [8, 8]], + "356446": [[10, 623]], + "356523": [[32, 410], [412, 898]], + "356531": [[1, 56]], + "356563": [ + [36, 113], + [117, 164], + [168, 177], + [181, 191], + [193, 194], + [199, 343] + ], + "356568": [[42, 64]], + "356569": [[1, 251]], + "356570": [[1, 98]], + "356576": [[58, 240]], + "356578": [[1, 865]], + "356580": [[1, 51]], + "356582": [[7, 104]], + "356614": [[1, 10], [16, 19], [27, 62]], + "356615": [[1, 1297]], + "356619": [[1, 173]], + "356810": [[44, 163]], + "356811": [[1, 44]], + "356812": [[1, 107]], + "356813": [[1, 54]], + "356814": [ + [1, 305], + [307, 309], + [311, 366], + [368, 672] + ], + "356815": [[1, 54], [176, 219]], + "356824": [[1, 66]], + "356908": [[1, 26]], + "356919": [[29, 116]], + "356937": [[20, 138]], + "356946": [[1, 129]], + "356947": [[1, 350]], + "356948": [[1, 88]], + "356949": [[1, 94]], + "356951": [[1, 274]], + "356954": [[1, 364]], + "356955": [[1, 380]], + "356956": [[1, 109]], + "356968": [[81, 252]], + "356969": [[1, 236]], + "356970": [[1, 366]], + "356998": [[1, 5]], + "356999": [[1, 58]], + "357000": [[1, 50]], + "357001": [[1, 183]], + "357079": [[1, 22]], + "357080": [[1, 616]], + "357081": [[1, 759]], + "357101": [[54, 103]], + "357102": [[1, 13], [43, 134]], + "357104": [[1, 4]], + "357106": [[1, 60]], + "357112": [[1, 519]], + "357268": [[70, 143]], + "357271": [[1, 20], [22, 1570]], + "357328": [[44, 105]], + "357329": [[1, 668]], + "357330": [[1, 157]], + "357331": [[1, 23]], + "357332": [[1, 430]], + "357333": [[1, 207]], + "357401": [[48, 664]], + "357406": [[50, 174]], + "357438": [[35, 230]], + "357440": [[1, 354]], + "357441": [[1, 83]], + "357442": [[1, 1373]], + "357447": [[40, 50]], + "357472": [[34, 60]], + "357478": [[43, 50]], + "357479": [[1, 1046]], + "357482": [[1, 5], [21, 220]], + "357538": [[39, 63]], + "357542": [[1, 11], [13, 252]], + "357550": [[1, 36]], + "357610": [[63, 253]], + "357611": [[1, 412]], + "357612": [[1, 736]], + "357613": [[1, 256]], + "357688": [[1, 380]], + "357696": [[31, 319], [341, 410]], + "357697": [[1, 39]], + "357698": [[1, 63]], + "357699": [[1, 30]], + "357700": [[1, 757]], + "357701": [[1, 310]], + "357705": [[1, 202]], + "357706": [[1, 161]], + "357720": [[32, 92]], + "357732": [[30, 157]], + "357734": [[1, 300]], + "357735": [ + [1, 387], + [389, 821], + [823, 947], + [949, 1126] + ], + "357754": [[29, 145]], + "357756": [[1, 425]], + "357757": [[1, 9]], + "357758": [[1, 85]], + "357759": [[1, 70]], + "357766": [[10, 124]], + "357777": [[1, 85]], + "357778": [[1, 359]], + "357779": [[1, 74]], + "357781": [[1, 10]], + "357802": [[43, 206]], + "357803": [[1, 153]], + "357804": [[1, 23]], + "357805": [[1, 88]], + "357806": [[1, 56]], + "357807": [[1, 244]], + "357808": [[1, 17]], + "357809": [[1, 41]], + "357812": [[1, 50]], + "357813": [[1, 293]], + "357814": [[1, 212]], + "357815": [[1, 944]], + "357898": [[1, 313]], + "357899": [[1, 637]], + "357900": [[1, 516]], + "359569": [[1, 83]], + "359571": [ + [1, 4], + [7, 28], + [30, 39], + [41, 50], + [52, 61], + [63, 72], + [74, 83], + [85, 94], + [96, 105], + [107, 116], + [118, 127], + [129, 138], + [140, 149], + [151, 160], + [162, 169] + ], + "359575": [ + [1, 13], + [15, 24], + [26, 35], + [37, 46], + [48, 57], + [59, 68], + [70, 89] + ], + "359595": [[17, 289]], + "359597": [[1, 94]], + "359602": [[1, 74]], + "359609": [[1, 25]], + "359612": [[1, 12]], + "359661": [[42, 233]], + "359685": [[1, 132]], + "359686": [[1, 934]], + "359691": [[19, 139]], + "359693": [[1, 604]], + "359694": [[1, 1080]], + "359699": [[28, 1883]], + "359718": [[1, 199], [202, 368]], + "359750": [[52, 186]], + "359751": [[15, 1007]], + "359762": [[44, 266]], + "359763": [[1, 410], [412, 459]], + "359764": [[28, 1111]], + "359776": [[104, 432]], + "359806": [[42, 410]], + "359808": [[1, 46]], + "359809": [[1, 43]], + "359810": [[1, 183]], + "359812": [[1, 227]], + "359814": [[1, 366]], + "359870": [[2, 7]], + "359871": [[1, 228]], + "359887": [[30, 502]], + "359899": [[19, 305]], + "359903": [[1, 12]], + "359998": [ + [24, 757], + [759, 759], + [761, 785], + [787, 1918] + ], + "360017": [[42, 81]], + "360019": [[1, 153], [155, 1489]], + "360075": [[20, 429], [462, 809]], + "360090": [[1, 794]], + "360116": [[77, 432]], + "360125": [ + [132, 195], + [200, 262], + [264, 324] + ], + "360126": [[1, 35], [37, 370]], + "360127": [[1, 201]], + "360128": [[1, 163]], + "360130": [[87, 91]], + "360131": [[1, 378]], + "360141": [[25, 775]], + "360224": [[43, 259]], + "360225": [[1, 169], [171, 356]], + "360295": [[35, 771], [774, 1475]], + "360296": [[1, 519]], + "360327": [[32, 383]], + "360390": [[5, 36], [38, 76]], + "360391": [[1, 4]], + "360392": [[1, 61]], + "360393": [[1, 124]], + "360400": [[40, 119]], + "360413": [[37, 126]], + "360428": [[50, 123]], + "360432": [[1, 28]], + "360435": [[1, 37], [43, 53]], + "360437": [[1, 40]], + "360438": [[1, 6]], + "360458": [[45, 215], [234, 246]], + "360459": [[1, 1332]], + "360460": [[1, 1077]], + "360486": [[45, 322]], + "360490": [[8, 936], [940, 1187]], + "360491": [[3, 157], [159, 179]], + "360737": [[10, 27]], + "360761": [[34, 190]], + "360794": [[37, 713]], + "360795": [[1, 395]], + "360797": [[1, 5]], + "360820": [[1, 885]], + "360825": [[1, 358]], + "360826": [[1, 91], [93, 119]], + "360856": [[42, 97]], + "360874": [[31, 82]], + "360876": [[1, 341]], + "360887": [[12, 134]], + "360888": [[1, 289]], + "360889": [[1, 36]], + "360890": [[1, 216], [219, 506]], + "360892": [[1, 296]], + "360895": [[1, 700]], + "360919": [[39, 836]], + "360920": [[1, 4]], + "360921": [[1, 218]], + "360927": [ + [37, 331], + [333, 581], + [583, 1930] + ], + "360941": [[1, 72]], + "360942": [[1, 344]], + "360945": [[1, 91]], + "360946": [[1, 364]], + "360948": [[1, 119]], + "360950": [ + [1, 179], + [181, 468], + [470, 718] + ], + "360951": [[1, 190]], + "360991": [[41, 270]], + "360992": [[1, 99]], + "361020": [[41, 439]], + "361044": [[42, 166]], + "361045": [[1, 322], [325, 947]], + "361050": [[1, 10]], + "361052": [[1, 65]], + "361054": [[1, 461]], + "361083": [[6, 59]], + "361091": [[38, 418]], + "361105": [[41, 448]], + "361106": [[1, 31]], + "361107": [[1, 156]], + "361108": [[1, 7]], + "361110": [[1, 197]], + "361188": [[46, 186]], + "361193": [[1, 29]], + "361195": [[1, 20]], + "361197": [[1, 960], [991, 2177]], + "361223": [[36, 730]], + "361239": [[35, 1090]], + "361240": [[1, 1015]], + "361272": [[1, 125]], + "361280": [[1, 267]], + "361283": [[1, 26]], + "361284": [[1, 36]], + "361297": [[38, 970]], + "361303": [[36, 2275]], + "361318": [[34, 490]], + "361319": [[1, 162]], + "361320": [[1, 382]], + "361333": [[36, 337]], + "361361": [[60, 105]], + "361362": [[1, 31]], + "361363": [[1, 27]], + "361365": [[1, 489]], + "361366": [[1, 201]], + "361400": [[41, 496]], + "361417": [[38, 1659]], + "361443": [[40, 2313]], + "361468": [[3, 1883]], + "361475": [ + [37, 614], + [617, 836], + [838, 838], + [840, 1121], + [1124, 1273] + ], + "361512": [[36, 849], [851, 1573]], + "361569": [[35, 598]], + "361573": [[1, 305]], + "361579": [[43, 905]], + "361580": [[1, 422]], + "361957": [[1, 1163]], + "361971": [[38, 731], [733, 2381]], + "361989": [[37, 112], [114, 151]], + "361990": [[1, 204]], + "361994": [[1, 116]], + "362058": [[39, 209]], + "362059": [[1, 63]], + "362060": [[1, 83], [85, 85]], + "362061": [[1, 314]], + "362062": [[1, 207]], + "362063": [[1, 70], [77, 92]], + "362064": [ + [93, 218], + [220, 508], + [510, 1067] + ], + "362087": [[1, 13], [15, 146]], + "362091": [[1, 1418]], + "362104": [[33, 147]], + "362105": [[1, 179]], + "362106": [[1, 78]], + "362107": [[1, 785]], + "362148": [[39, 758]], + "362153": [[1, 140]], + "362154": [[1, 784]], + "362159": [[29, 35]], + "362161": [[1, 120]], + "362163": [[1, 65]], + "362166": [[1, 331]], + "362167": [[1, 646]], + "362437": [[1, 11], [73, 92]], + "362439": [[8, 34], [249, 1595]], + "362597": [[1, 139]], + "362614": [[1, 153]], + "362615": [[1, 149]], + "362616": [[1, 351]], + "362617": [[1, 244]], + "362618": [[1, 274]], + "362653": [[40, 305]], + "362654": [[1, 26]], + "362655": [ + [1, 140], + [143, 144], + [148, 338] + ], + "362657": [[1, 198]], + "362695": [[39, 372]], + "362696": [ + [1, 1112], + [1114, 1120], + [1122, 1124], + [1126, 1128], + [1130, 1132], + [1134, 1140], + [1142, 1144], + [1146, 1148], + [1150, 1152], + [1154, 1720] + ], + "362698": [[1, 374]], + "362720": [[52, 949]], + "362727": [[4, 7]], + "362728": [[1, 388]], + "362757": [[32, 93]], + "362758": [[1, 205]], + "362760": [[1, 728]] +} diff --git a/Analysis/HiggsTauTauRun2/interface/HTTConfig.h b/Analysis/HiggsTauTauRun2/interface/HTTConfig.h index b11f1ec5d..a9e52e9f1 100644 --- a/Analysis/HiggsTauTauRun2/interface/HTTConfig.h +++ b/Analysis/HiggsTauTauRun2/interface/HTTConfig.h @@ -122,7 +122,9 @@ struct era_def { data_2017, data_2017UL, data_2018, - data_2018UL + data_2018UL, + data_2022_preEE, + data_2022_postEE }; }; typedef safe_enum era; @@ -138,7 +140,9 @@ inline std::string Era2String(era const& in) { (era::data_2017, "data_2017") (era::data_2017UL, "data_2017UL") (era::data_2018, "data_2018") - (era::data_2018UL, "data_2018UL"); + (era::data_2018UL, "data_2018UL") + (era::data_2022_preEE, "data_2022_preEE") + (era::data_2022_postEE, "data_2022_postEE"); if (conv.find(in) != conv.end()) { return (conv[in]); } else { @@ -158,7 +162,9 @@ inline era String2Era(std::string const& in) { ("data_2017", era::data_2017) ("data_2017UL", era::data_2017UL) ("data_2018", era::data_2018) - ("data_2018UL", era::data_2018UL); + ("data_2018UL", era::data_2018UL) + ("data_2022_preEE", era::data_2022_preEE) + ("data_2022_postEE", era::data_2022_postEE); if (conv.find(in) != conv.end()) { return (conv.find(in)->second); } else { diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index 13fc4e186..b1bb4e0cd 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -376,6 +376,8 @@ void HTTSequence::BuildSequence(){ data_json = "input/json/Cert_294927-306462_13TeV_UL2017_Collisions17_GoldenJSON.txt"; if ((era_type == era::data_2018 || era_type == era::data_2018UL)) data_json = "input/json/Cert_314472-325175_13TeV_Legacy2018_Collisions18_JSON.txt"; + if ((era_type == era::data_2022_preEE || era_type == era::data_2022_postEE)) + data_json = "input/json/Cert_Collisions2022_355100_362760_Golden.json"; if(js["get_effective"].asBool() && js["make_sync_ntuple"].asBool()){ std::cerr<< "Error: cannot run effective number of event module in make_syncntuple mode"< Date: Wed, 5 Jul 2023 10:27:09 +0200 Subject: [PATCH 03/50] Change channel to tt --- Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json index 5fe080021..12fe6d16b 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json @@ -6,7 +6,7 @@ "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], // "channels": ["mt","zmm","tt","et"], - "channels": ["mt","zmm"], + "channels": ["tt"], // "channels": ["tt","mt","et","em","zmm","zee"], "sequences": { "all": ["default"] @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_v2/", + "output_folder" : "/eos/user/e/ebokor/output", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", From 0c3430a55cca186c88b9bba0078ce4238d991e7d Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 12:06:56 +0100 Subject: [PATCH 04/50] Change output folder --- Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json index 12fe6d16b..df71ff498 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/eos/user/e/ebokor/output", + "output_folder" : "/vols/cms/eb921/output/tt_UL_2018", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", From 0714962b2494b78ad9a01e01606234f761800ff4 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 13:18:17 +0100 Subject: [PATCH 05/50] Fix 2022 py and change output folder --- Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json | 2 +- Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json | 2 +- Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py | 2 +- Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json index 7f382cf7e..1f19a3ac2 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/eos/user/e/ebokor/output", + "output_folder" : "/vols/cms/eb921/output/tt_2022 ", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json index 80e58a249..bffd05e06 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/eos/user/e/ebokor/output", + "output_folder" : "/vols/cms/eb921/output/tt_2022 ", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index ac8533e9e..6556c8546 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -71,7 +71,7 @@ def split_callback(option, opt, value, parser): parser.add_option("--parajobs", dest="parajobs", action='store_true', default=False, help="Submit jobs parametrically") -parser.add_option("--config", dest="config", type='string', default='scripts/config_2022.json', +parser.add_option("--config", dest="config", type='string', default='scripts/config_2022_postEE.json', help="Config file") parser.add_option("--list_backup", dest="slbackupname", type='string', default='prevlist', diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index 9b7e16f7c..666b20780 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -71,7 +71,7 @@ def split_callback(option, opt, value, parser): parser.add_option("--parajobs", dest="parajobs", action='store_true', default=False, help="Submit jobs parametrically") -parser.add_option("--config", dest="config", type='string', default='scripts/config_2022.json', +parser.add_option("--config", dest="config", type='string', default='scripts/config_2022_preEE.json', help="Config file") parser.add_option("--list_backup", dest="slbackupname", type='string', default='prevlist', From 084d6b7d4da5285dfbe68961ff61eec293cacc19 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 13:26:09 +0100 Subject: [PATCH 06/50] Other fix in 2022 py files --- Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py | 2 +- Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index 6556c8546..3216344f4 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -124,7 +124,7 @@ def getParaJobSubmit(N): flatjsonlist.append("^%(scale)s_hi^%(scale)s_lo"%vars()) flatjsonlistdysig.append("^%(scale)s_hi^%(scale)s_lo"%vars()) -CONFIG='scripts/config_2022.json' +CONFIG='scripts/config_2022_postEE.json' if options.config != '': CONFIG = options.config n_channels=1 diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index 666b20780..22a294e59 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -124,7 +124,7 @@ def getParaJobSubmit(N): flatjsonlist.append("^%(scale)s_hi^%(scale)s_lo"%vars()) flatjsonlistdysig.append("^%(scale)s_hi^%(scale)s_lo"%vars()) -CONFIG='scripts/config_2022.json' +CONFIG='scripts/config_2022_preEE.json' if options.config != '': CONFIG = options.config n_channels=1 From 2dc6fda9c7f0d0a8fa5e3899d0cb70563bc7b351 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 5 Jul 2023 16:22:48 +0100 Subject: [PATCH 07/50] Fix accidental space --- Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json | 2 +- Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json index 1f19a3ac2..37a15d61b 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/eb921/output/tt_2022 ", + "output_folder" : "/vols/cms/eb921/output/tt_2022", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json index bffd05e06..9a29def70 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/eb921/output/tt_2022 ", + "output_folder" : "/vols/cms/eb921/output/tt_2022", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", From 43e3260a2056ca1db5a16c581991041a976c6934 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 6 Jul 2023 11:29:08 +0100 Subject: [PATCH 08/50] Introduce era::data_2022 in files part 1 --- Analysis/HiggsTauTauRun2/src/BTagCheck.cc | 30 ++++++++++++------- .../src/BTagWeightLegacyRun2.cc | 9 +++++- .../HiggsTauTauRun2/src/BTagWeightRun2.cc | 24 +++++++++------ 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc index 4d9a792ec..78311e46b 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc @@ -92,8 +92,10 @@ namespace ic { else if(era_ == era::data_2017UL && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL17_v3.csv"; else if(era_ == era::data_2017 && !use_deep_csv_) csv_file_path = "./input/btag_sf/CSVv2_94XSF_V2_B_F.csv"; else if((era_ == era::data_2018 || era_ == era::data_2018UL) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; + else if((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; else if(era_ == era::data_2018 && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepJet_102XSF_V1.csv"; else if(era_ == era::data_2018UL && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL18_v2.csv"; + else if((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)&& use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL18_v2.csv"; /* calib = new const BTagCalibration("csvv2",csv_file_path); */ if (!use_deep_csv_) calib = new const BTagCalibration("csvv2",csv_file_path); else if (use_deep_csv_) calib = new const BTagCalibration("deepcsv",csv_file_path); @@ -108,7 +110,7 @@ namespace ic { reader_mujets->load(*calib, BTagEntry::FLAV_B,"mujets"); reader_mujets->load(*calib, BTagEntry::FLAV_C,"mujets"); reader_mujets->load(*calib, BTagEntry::FLAV_UDSG,"mujets"); - if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ reader_comb->load(*calib, BTagEntry::FLAV_B,"comb"); reader_comb->load(*calib, BTagEntry::FLAV_C,"comb"); reader_comb->load(*calib, BTagEntry::FLAV_UDSG,"comb"); @@ -138,7 +140,7 @@ namespace ic { iso_1 = PF03EAIsolationVal(elec, eventInfo->jet_rho()); else iso_1 = PF03IsolationVal(elec, 0.5, 0); - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL )){ + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ iso_2 = tau->GetTauID("byTightIsolationMVArun2v1DBoldDMwLT"); } else if (strategy_ == strategy::cpsummer17 || strategy_ == strategy::cpdecays17 || strategy_ == strategy::cpdecays18) { iso_1 = PF03EAIsolationVal(elec, eventInfo->jet_rho()); //lepton_rho @@ -165,7 +167,7 @@ namespace ic { if(event->Exists("extra_muon_veto")) extramuon_veto_ = event->Get("extra_muon_veto"); Muon const* muon = dynamic_cast(lep1); Tau const* tau = dynamic_cast(lep2); - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL )){ + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ iso_1 = PF03IsolationVal(muon, 0.5, 0); iso_2 = tau->GetTauID("byTightIsolationMVArun2v1DBoldDMwLT"); } else if (strategy_ == strategy::cpsummer17 || strategy_ == strategy::cpdecays17 || strategy_ == strategy::cpdecays18) { @@ -197,19 +199,19 @@ namespace ic { iso_1 = PF03EAIsolationVal(elec, eventInfo->jet_rho()); else iso_1 = PF03IsolationVal(elec, 0.5, 0); - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) iso_1 = PF03EAIsolationVal(elec, eventInfo->jet_rho()); //lepton_rho - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL)){ + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) iso_1 = PF03EAIsolationVal(elec, eventInfo->jet_rho()); //lepton_rho + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ iso_2 = PF03IsolationVal(muon, 0.5, 0); } else iso_2 = PF04IsolationVal(muon, 0.5, 0); if(era_ == era::data_2015 && iso_1<0.15&&iso_2<0.15&&os>0) pass_presel=true; - if((era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) && iso_1<0.2&&iso_2<0.15&&os>0) pass_presel=true; + if((era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && iso_1<0.2&&iso_2<0.15&&os>0) pass_presel=true; } if(channel_ == channel::tt) { if(event->Exists("extra_elec_veto")) extraelec_veto_ = event->Get("extra_elec_veto"); if(event->Exists("extra_muon_veto")) extramuon_veto_ = event->Get("extra_muon_veto"); Tau const* tau1 = dynamic_cast(lep1); Tau const* tau2 = dynamic_cast(lep2); - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL)){ + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ iso_1 = tau1->GetTauID("byVTightIsolationMVArun2v1DBoldDMwLT"); iso_2 = tau2->GetTauID("byVTightIsolationMVArun2v1DBoldDMwLT"); } else if (strategy_ == strategy::cpsummer17 || strategy_ == strategy::cpdecays17 || strategy_ == strategy::cpdecays18) { @@ -242,7 +244,7 @@ namespace ic { wt = eventInfo->total_weight(); std::vector embed_jets = event->GetPtrVec(jet_label_); double eta_cut = 2.4; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) eta_cut = 2.5; + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) eta_cut = 2.5; ic::erase_if(embed_jets,!boost::bind(MinPtMaxEta, _1, 20.0, eta_cut)); std::vector gen_jets; if(!do_legacy_){ @@ -297,6 +299,10 @@ namespace ic { if (wp_to_check_ == "tight") tight_wp = 0.4184; // medium deepCSV wp else if (wp_to_check_ == "loose") tight_wp = 0.1241; // loose deepCSV wp } + else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_csv_){ + if (wp_to_check_ == "tight") tight_wp = 0.4184; // medium deepCSV wp + else if (wp_to_check_ == "loose") tight_wp = 0.1241; // loose deepCSV wp + } else if (era_ == era::data_2018 && use_deep_jet_) tight_wp = 0.2770; //medium deepJet wp @@ -316,8 +322,12 @@ namespace ic { if (wp_to_check_ == "tight") tight_wp = 0.2783; // medium deepJet wp else if (wp_to_check_ == "loose") tight_wp = 0.0490; // loose deepJet wp } + else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_jet_) { + if (wp_to_check_ == "tight") tight_wp = 0.2783; // medium deepJet wp + else if (wp_to_check_ == "loose") tight_wp = 0.0490; // loose deepJet wp + } if(jet_flavour == 5){ - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL)){ + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ sf = reader_mujets->eval_auto_bounds("central",BTagEntry::FLAV_B, eta, pt); } else sf = reader_comb->eval_auto_bounds("central",BTagEntry::FLAV_B, eta, pt); // std::cout << "sf for b tag jet: " << sf << std::endl; @@ -329,7 +339,7 @@ namespace ic { } } else if(jet_flavour == 4){ hists_->Fill("NTot_cflav",pt,eta,wt); - if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL)){ + if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ sf = reader_mujets->eval_auto_bounds("central",BTagEntry::FLAV_C, eta, pt); } else sf = reader_comb->eval_auto_bounds("central",BTagEntry::FLAV_C, eta, pt); if(gen_match) hists_->Fill("NTot_cflav_genmatch",pt,fabs(eta),wt); diff --git a/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc b/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc index 87e3fc50f..2acded7fd 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc @@ -45,11 +45,13 @@ namespace ic { // not properly set up yet //else if (era_==era::data_2017UL && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepCSV_94XSF_V4_B_F.csv"; else if (era_==era::data_2018 && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; + else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE ) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; else if (era_ == era::data_2016UL_preVFP && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL16preVFP_v2.csv"; else if (era_ == era::data_2016UL_postVFP && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL16postVFP_v3.csv"; else if (era_ == era::data_2017UL && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL17_v3.csv"; else if (era_ == era::data_2018UL && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL18_v2.csv"; + else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE ) && use_deep_jet_) csv_file_path = "./input/btag_sf/wp_deepJet_106XUL18_v2.csv"; if (!use_deep_csv_) calib = new const BTagCalibration("csvv2",csv_file_path); else if (use_deep_csv_) calib = new const BTagCalibration("deepcsv",csv_file_path); @@ -75,7 +77,8 @@ namespace ic { int BTagWeightLegacyRun2::Execute(TreeEvent *event) { std::vector embed_jets = event->GetPtrVec(jet_label_); double eta_cut = 2.4; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) eta_cut = 2.5; + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL + || era_==era::data_2022_preEE || era_== era::data_2022_postEE) eta_cut = 2.5; ic::erase_if(embed_jets,!boost::bind(MinPtMaxEta, _1, 20.0, eta_cut)); std::vector btag_evt_weight = EventReweighting(embed_jets); event->ForceAdd("btag_evt_weight"+add_name_, btag_evt_weight[0]); @@ -215,6 +218,10 @@ namespace ic { tight_wp = 0.2783; // medium deepJet wp loose_wp = 0.0490; // loose deepJet wp } + else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE )&& use_deep_jet_){ + tight_wp = 0.2783; // medium deepJet wp + loose_wp = 0.0490; // loose deepJet wp + } for (unsigned j = 0; j < sf_tight.size(); j++) { double p_mc = 1.; double p_data = 1.; diff --git a/Analysis/HiggsTauTauRun2/src/BTagWeightRun2.cc b/Analysis/HiggsTauTauRun2/src/BTagWeightRun2.cc index a13b87ff3..bd1adac5b 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagWeightRun2.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagWeightRun2.cc @@ -22,7 +22,7 @@ namespace ic { int BTagWeightRun2::PreAnalysis() { - if(era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { + if(era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { std::string name = "btag_calib_promotedemote"; if(ProductExists(name) && ProductExists(name+"_reader_incl") && ProductExists(name+"_reader_comb")){ @@ -38,8 +38,10 @@ namespace ic { else if ((era_==era::data_2017 || era_ == era::data_2017UL) && !use_deep_csv_ && !use_deep_jet_) csv_file_path = "./input/btag_sf/CSVv2_94XSF_V2_B_F.csv"; else if ((era_==era::data_2018 || era_ == era::data_2018UL) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; else if ((era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepJet_2016LegacySF_V1.csv"; + else if ((era_==era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; else if ((era_==era::data_2017 || era_ == era::data_2017UL) && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepFlavour_94XSF_V4_B_F.csv"; else if ((era_==era::data_2018 || era_ == era::data_2018UL) && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepJet_102XSF_V2.csv"; + else if ((era_==era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_jet_) csv_file_path = "./input/btag_sf/DeepJet_102XSF_V2.csv"; if (!use_deep_csv_) calib = new const BTagCalibration("csvv2",csv_file_path); else if (use_deep_csv_) calib = new const BTagCalibration("deepcsv",csv_file_path); @@ -69,12 +71,14 @@ namespace ic { else if ((era_==era::data_2017 || era_ == era::data_2017UL) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_94XSF_V4_B_F.csv"; else if ((era_==era::data_2017 || era_ == era::data_2017UL) && !use_deep_csv_) csv_file_path = "./input/btag_sf/CSVv2_94XSF_V2_B_F.csv"; else if ((era_==era::data_2018 || era_ == era::data_2018UL) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; + else if ((era_==era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_csv_) csv_file_path = "./input/btag_sf/DeepCSV_102XSF_V1.csv"; + if (!use_deep_csv_) calib = new const BTagCalibration("csvv2",csv_file_path); else if (use_deep_csv_) calib = new const BTagCalibration("deepcsv",csv_file_path); - if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ reader_comb = new BTagCalibrationReader(BTagEntry::OP_MEDIUM, "central",{"up","down"}); } - if(channel_ != channel::tt || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + if(channel_ != channel::tt || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ reader_incl = new BTagCalibrationReader(BTagEntry::OP_MEDIUM, "central",{"up","down"}); reader_mujets = new BTagCalibrationReader(BTagEntry::OP_MEDIUM, "central",{"up","down"}); } else { @@ -88,7 +92,7 @@ namespace ic { reader_mujets->load(*calib,BTagEntry::FLAV_B,"mujets"); reader_mujets->load(*calib,BTagEntry::FLAV_C,"mujets"); reader_mujets->load(*calib,BTagEntry::FLAV_UDSG,"mujets"); - if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ reader_comb->load(*calib,BTagEntry::FLAV_B,"comb"); reader_comb->load(*calib,BTagEntry::FLAV_C,"comb"); reader_comb->load(*calib,BTagEntry::FLAV_UDSG,"comb"); @@ -105,7 +109,7 @@ namespace ic { int BTagWeightRun2::Execute(TreeEvent *event) { std::vector embed_jets = event->GetPtrVec(jet_label_); double eta_cut = 2.4; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) eta_cut = 2.5; + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) eta_cut = 2.5; ic::erase_if(embed_jets,!boost::bind(MinPtMaxEta, _1, 20.0, eta_cut)); if (!do_reshape_){ std::map retag_result = ReTag(embed_jets, btag_mode_, bfake_mode_); @@ -257,7 +261,7 @@ namespace ic { } else { sf = reader_mujets->eval_auto_bounds("central",BTagEntry::FLAV_B, eta, pt); } - } else if(jet_flavour == 5 && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)){ + } else if(jet_flavour == 5 && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)){ if(btag_mode == 2){ sf = reader_comb->eval_auto_bounds("up",BTagEntry::FLAV_B, eta, pt); } else if(btag_mode == 1){ @@ -273,7 +277,7 @@ namespace ic { } else { sf = reader_mujets->eval_auto_bounds("central",BTagEntry::FLAV_C, eta, pt); } - } else if(jet_flavour == 4 && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)){ + } else if(jet_flavour == 4 && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)){ if(btag_mode == 2){ sf = reader_comb->eval_auto_bounds("up",BTagEntry::FLAV_C, eta, pt); } else if(btag_mode == 1){ @@ -307,14 +311,16 @@ namespace ic { std::cout << "-- scale factor: " << sf << std::endl; } bool passtag; - if(channel_ != channel::tt || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + if(channel_ != channel::tt || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ double tight_wp = 0.8; if((era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) && !use_deep_csv_ && !use_deep_jet_) tight_wp = 0.8484; else if((era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) && use_deep_csv_) tight_wp = 0.6321; else if((era_==era::data_2017 || era_ == era::data_2017UL) && use_deep_csv_) tight_wp = 0.4941; else if((era_==era::data_2017 || era_ == era::data_2017UL) && !use_deep_csv_ && !use_deep_jet_) tight_wp = 0.8838; else if((era_==era::data_2018 || era_ == era::data_2018UL)&& use_deep_csv_) tight_wp = 0.4184; - else if((era_==era::data_2018 || era_ == era::data_2018UL) && use_deep_jet_) tight_wp = 0.2770; + else if((era_==era::data_2022_preEE || era_ == era::data_2022_postEE)&& use_deep_csv_) tight_wp = 0.4184; + else if((era_==era::data_2018 || era_ == era::data_2018UL) && use_deep_jet_) tight_wp = 0.2770; + else if((era_==era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_jet_) tight_wp = 0.2770; else if((era_==era::data_2017 || era_ == era::data_2017UL) && use_deep_jet_) tight_wp = 0.3033; else if((era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) && use_deep_jet_) tight_wp = 0.3093; if (!use_deep_csv_ && !use_deep_jet_) { From 58998c515107fbc6485df9bc5140a77aaf43ba05 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 6 Jul 2023 11:54:28 +0100 Subject: [PATCH 09/50] Introduce era::data_2022 in files part 2 --- Analysis/HiggsTauTauRun2/src/HTTCategories.cc | 17 ++++++++-- .../HiggsTauTauRun2/src/HTTEventClassifier.cc | 6 ++++ .../src/HTTFakeFactorWeights.cc | 32 +++++++++++++++++-- .../HiggsTauTauRun2/src/HTTGenAnalysis.cc | 1 + 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc index dd699b226..d3d9b620a 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc @@ -73,7 +73,8 @@ namespace ic { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -1798,7 +1799,8 @@ namespace ic { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -2653,7 +2655,8 @@ namespace ic { std::vector prebjets = lowpt_jets; double eta_cut = 2.4; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) eta_cut = 2.5; + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) eta_cut = 2.5; ic::erase_if(prebjets,!boost::bind(MinPtMaxEta, _1, 20.0, eta_cut)); n_prebjets_ = prebjets.size(); std::vector bjets = prebjets; @@ -2692,6 +2695,14 @@ namespace ic { deepjet_wp = 0.2783; } + if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + btag_wp = 0.4184; + loose_btag_wp = 0.1241; + btag_label = "pfDeepCSVJetTags:probb"; + btag_label_extra = "pfDeepCSVJetTags:probbb"; + + deepjet_wp = 0.2783; + } if (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) { btag_wp = 0.6321; loose_btag_wp = 0.2217; diff --git a/Analysis/HiggsTauTauRun2/src/HTTEventClassifier.cc b/Analysis/HiggsTauTauRun2/src/HTTEventClassifier.cc index bc3feb301..909ea5ef4 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTEventClassifier.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTEventClassifier.cc @@ -72,6 +72,12 @@ namespace ic { filename_odd = (std::string)getenv("CMSSW_BASE") + "/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/input/MVA/multi_fold0_sm_tt_tauspinner_2018_xgb.xml"; // apply to odd } + else if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + filename_even = (std::string)getenv("CMSSW_BASE") + + "/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/input/MVA/multi_fold1_sm_tt_tauspinner_2018_xgb.xml"; // apply to even here + filename_odd = (std::string)getenv("CMSSW_BASE") + + "/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/input/MVA/multi_fold0_sm_tt_tauspinner_2018_xgb.xml"; // apply to odd + } reader_even_->AddVariable( "jdeta", & var0_ ); reader_even_->AddVariable( "jpt_1", & var1_ ); diff --git a/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc b/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc index c14008c3c..e37460ae7 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc @@ -34,7 +34,8 @@ namespace ic { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -107,6 +108,10 @@ namespace ic { if(era_ == era::data_2018) mssm_file_ = "input/fake_factors/fakefactors_ws_tt_mssm_2018_v3.root"; if(era_ == era::data_2018UL) mssm_file_ = "input/fake_factors/fakefactors_ws_tt_UL_PFMET_2018.root"; } + if(strategy_==strategy::cpdecays18) { //temporary + if(era_ == era::data_2022_preEE) mssm_file_ = "input/fake_factors/fakefactors_ws_tt_mssm_2018_v3.root"; + if(era_ == era::data_2022_postEE) mssm_file_ = "input/fake_factors/fakefactors_ws_tt_UL_PFMET_2018.root"; + } TFile f_mssm((baseDir+"UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/"+mssm_file_).c_str()); ff_ws_mssm_ = std::shared_ptr((RooWorkspace*)gDirectory->Get("w")); @@ -221,6 +226,10 @@ namespace ic { if(era_ == era::data_2018) mssm_file_ = "input/fake_factors/fakefactors_ws_mt_mssm_2018_v6.root"; if(era_ == era::data_2018UL) mssm_file_ = "input/fake_factors/fakefactors_ws_mt_UL_2018.root"; } + if(strategy_==strategy::cpdecays18) { //temporary + if(era_ == era::data_2022_preEE) mssm_file_ = "input/fake_factors/fakefactors_ws_mt_mssm_2018_v6.root"; + if(era_ == era::data_2022_postEE) mssm_file_ = "input/fake_factors/fakefactors_ws_mt_UL_2018.root"; + } TFile f_mssm((baseDir+"UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/"+mssm_file_).c_str()); @@ -350,6 +359,10 @@ namespace ic { if(era_ == era::data_2018) mssm_file_ = "input/fake_factors/fakefactors_ws_et_mssm_2018_v6.root"; if(era_ == era::data_2018UL) mssm_file_ = "input/fake_factors/fakefactors_ws_et_UL_2018.root"; } + if(strategy_==strategy::cpdecays18) { //temporary + if(era_ == era::data_2022_preEE) mssm_file_ = "input/fake_factors/fakefactors_ws_et_mssm_2018_v6.root"; + if(era_ == era::data_2022_postEE) mssm_file_ = "input/fake_factors/fakefactors_ws_et_UL_2018.root"; + } TFile f_mssm((baseDir+"UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/"+mssm_file_).c_str()); ff_ws_mssm_ = std::shared_ptr((RooWorkspace*)gDirectory->Get("w")); @@ -524,7 +537,8 @@ namespace ic { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -554,11 +568,17 @@ namespace ic { btag_label = "pfDeepCSVJetTags:probb"; btag_label_extra = "pfDeepCSVJetTags:probbb"; } + if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + btag_wp = 0.4184; + btag_label = "pfDeepCSVJetTags:probb"; + btag_label_extra = "pfDeepCSVJetTags:probbb"; + } auto filterBTagSumTight = [btag_label, btag_label_extra, btag_wp] (PFJet* s1) -> bool { return s1->GetBDiscriminator(btag_label) + s1->GetBDiscriminator(btag_label_extra) > btag_wp; }; - if (era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { + if (era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL + || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { if (event->Exists("retag_result")) { auto const& retag_result = event->Get>("retag_result"); ic::erase_if(bjets, !boost::bind(IsReBTagged, _1, retag_result)); @@ -585,6 +605,9 @@ namespace ic { if (era_ == era::data_2018 || era_ == era::data_2018UL) { deepjet_wp = 0.2770; } + if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + deepjet_wp = 0.2770; + } if (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) { deepjet_wp = 0.3093; } @@ -875,6 +898,9 @@ namespace ic { } else if(era_ == era::data_2018 || era_ == era::data_2018UL) { if(pt_1_<33) pass_single=0.; } + else if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + if(pt_1_<33) pass_single=0.; + } if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) pass_single=1.; } diff --git a/Analysis/HiggsTauTauRun2/src/HTTGenAnalysis.cc b/Analysis/HiggsTauTauRun2/src/HTTGenAnalysis.cc index 83ce4eb1e..0ea0c52bf 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTGenAnalysis.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTGenAnalysis.cc @@ -391,6 +391,7 @@ namespace ic { if (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) csv_file_path = "./input/btag_sf/DeepJet_2016LegacySF_V1.csv"; else if (era_==era::data_2017 || era_ == era::data_2017UL) csv_file_path = "./input/btag_sf/DeepFlavour_94XSF_V4_B_F.csv"; else if (era_==era::data_2018 || era_ == era::data_2018UL) csv_file_path = "./input/btag_sf/DeepJet_102XSF_V2.csv"; + else if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) csv_file_path = "./input/btag_sf/DeepJet_102XSF_V2.csv"; //calib = new const BTagCalibration("deepjet",csv_file_path); From 01c111ad41119152464cca4c455ac2695fcbb3e0 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 6 Jul 2023 13:43:12 +0100 Subject: [PATCH 10/50] Introduce era::data_2022 in files part 3 --- .../HiggsTauTauRun2/src/HTTPairGenInfo.cc | 10 +++- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 60 ++++++++++++++++++- Analysis/HiggsTauTauRun2/src/HTTStitching.cc | 18 +++--- Analysis/HiggsTauTauRun2/src/HTTWeights.cc | 10 ++-- 4 files changed, 79 insertions(+), 19 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc b/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc index cdc3a9762..f7f3db469 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc @@ -55,7 +55,7 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { } } - if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { // Retrieve file with TGraphs of corrections std::string file = "input/recoilfits/embed_fake_met_corrections.root"; @@ -75,6 +75,8 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { if(era_ == era::data_2016UL_postVFP) graph_name+="_2016UL_postVFP"; if(era_ == era::data_2017UL) graph_name+="_2017UL"; if(era_ == era::data_2018UL) graph_name+="_2018UL"; + if(era_ == era::data_2022_preEE) graph_name+="_2022_preEE"; + if(era_ == era::data_2022_postEE) graph_name+="_2022_postEE"; @@ -119,18 +121,22 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) scale_str = "(x-y)*0.929 + y*(1.+0.005)"; if(era_ == era::data_2017 || era_ == era::data_2017UL) scale_str = "(x-y)*0.935 + y*(1.+-0.002)"; if(era_ == era::data_2018 || era_ == era::data_2018UL) scale_str = "(x-y)*0.885 + y*(1.+-0.004)"; + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) scale_str = "(x-y)*0.885 + y*(1.+-0.004)"; } else if (channel_==channel::et){ if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) scale_str = "(x-y)*0.966 + y*(1.+-0.003)"; if(era_ == era::data_2017 || era_ == era::data_2017UL) scale_str = "(x-y)*0.984 + y*(1.+-0.002)"; if(era_ == era::data_2018 || era_ == era::data_2018UL) scale_str = "(x-y)*0.954 + y*(1.+-0.007)"; + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) scale_str = "(x-y)*0.954 + y*(1.+-0.007)"; } else if (channel_==channel::mt){ if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) scale_str = "(x-y)*0.967 + y*(1.+-0.007)"; if(era_ == era::data_2017 || era_ == era::data_2017UL) scale_str = "(x-y)*0.979 + y*(1.+-0.000)"; if(era_ == era::data_2018 || era_ == era::data_2018UL) scale_str = "(x-y)*0.952 + y*(1.+0.001)"; + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) scale_str = "(x-y)*0.952 + y*(1.+0.001)"; } else if (channel_==channel::em){ if(era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) scale_str = "(x-y)*1.000 + y*(1.+0.000)"; if(era_ == era::data_2017 || era_ == era::data_2017UL) scale_str = "(x-y)*1.000 + y*(1.+0.000)"; if(era_ == era::data_2018 || era_ == era::data_2018UL) scale_str = "(x-y)*1.000 + y*(1.+0.000)"; + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) scale_str = "(x-y)*1.000 + y*(1.+0.000)"; } } //else { //no njets bins version @@ -218,7 +224,7 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { event->Add("gen_met_vec",neutrinos); - if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { Met *old_met = new Met(*mets); // up uncertainty is uncorrected met so first copy this and add to the event event->Add("pfMET_up", old_met); diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index b1bb4e0cd..db46d9aa8 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -178,11 +178,13 @@ HTTSequence::HTTSequence(std::string& chan, std::string postf, Json::Value const if(channel_str == "zee"){ if(era_type == era::data_2017 || era_type == era::data_2017UL) elec_pt = 28.; if(era_type == era::data_2018 || era_type == era::data_2018UL) elec_pt = 33.; + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) elec_pt = 33.; else elec_pt = 25.; elec_eta = 2.1; } if(channel_str == "zmm"){ if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL) muon_pt = 25.; + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) muon_pt = 25.; else muon_pt = 23.; muon_eta = 2.1; } @@ -400,7 +402,7 @@ void HTTSequence::BuildSequence(){ HTTPrint httPrint("HTTPrint"); if(era_type==era::data_2015 || era_type==era::data_2016 - || era_type == era::data_2017 || era_type == era::data_2018 || era_type == era::data_2016UL_preVFP || era_type == era::data_2016UL_postVFP || era_type == era::data_2017UL || era_type == era::data_2018UL){ + || era_type == era::data_2017 || era_type == era::data_2018 || era_type == era::data_2016UL_preVFP || era_type == era::data_2016UL_postVFP || era_type == era::data_2017UL || era_type == era::data_2018UL || era_type == era::data_2022_preEE || era_type == era::data_2022_postEE){ httPrint.set_muon_label(js["muons"].asString()); httPrint.set_jet_label(jets_label); } @@ -460,6 +462,10 @@ if(!is_data && js["do_gen_analysis"].asBool()){ httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); } + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive + httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); + } } @@ -648,6 +654,18 @@ if(do_met_filters){ //met_filters.push_back("Flag_BadPFMuonDzFilter"); met_filters.push_back("Flag_ecalBadCalibFilter"); } + if (era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) + { + met_filters.push_back("Flag_goodVertices"); + met_filters.push_back("Flag_globalSuperTightHalo2016Filter"); + met_filters.push_back("Flag_HBHENoiseFilter"); + met_filters.push_back("Flag_HBHENoiseIsoFilter"); + met_filters.push_back("Flag_EcalDeadCellTriggerPrimitiveFilter"); + met_filters.push_back("Flag_BadPFMuonFilter"); + //disabled (missing filter) + //met_filters.push_back("Flag_BadPFMuonDzFilter"); + met_filters.push_back("Flag_ecalBadCalibFilter"); + } bool pass_filters = true; for(unsigned i=0;ifilter_result(met_filters.at(i)); @@ -679,6 +697,9 @@ if (era_type == era::data_2016 || era_type == era::data_2016UL_preVFP || era_typ } else if (era_type == era::data_2018 || era_type == era::data_2018UL) { jetIDFilter.set_predicate(bind(PFJetID2018, _1)); } +else if (era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + jetIDFilter.set_predicate(bind(PFJetID2018, _1)); +} BuildModule(jetIDFilter); // Apply loose PUJID universally @@ -762,6 +783,11 @@ if(era_type == era::data_2018UL) { scalefactor_file_ggh = "input/ggh_weights/htt_scalefactors_2017_MGggh.root"; scalefactor_file_UL = "input/scale_factors/htt_scalefactors_UL_2018.root"; } +if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + scalefactor_file = "input/scale_factors/htt_scalefactors_legacy_2018.root"; + scalefactor_file_ggh = "input/ggh_weights/htt_scalefactors_2017_MGggh.root"; + scalefactor_file_UL = "input/scale_factors/htt_scalefactors_UL_2018.root"; +} TH2F embed_pt_weights_ic; @@ -769,6 +795,7 @@ TH2F embed_pt_weights_ic; if(era_type == era::data_2016 || era_type == era::data_2016UL_preVFP || era_type == era::data_2016UL_postVFP) embed_pt_weights_ic = GetFromTFile("input/scale_factors/embed_zmm_shifts_v2.root","/","shifts_2016"); if(era_type == era::data_2017 || era_type == era::data_2017UL) embed_pt_weights_ic = GetFromTFile("input/scale_factors/embed_zmm_shifts_v2.root","/","shifts_2017"); if(era_type == era::data_2018 || era_type == era::data_2018UL) embed_pt_weights_ic = GetFromTFile("input/scale_factors/embed_zmm_shifts_v2.root","/","shifts_2018"); +if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) embed_pt_weights_ic = GetFromTFile("input/scale_factors/embed_zmm_shifts_v2.root","/","shifts_2018"); HTTWeights httWeights = HTTWeights("HTTWeights") .set_channel(channel) @@ -856,6 +883,10 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetWInputCrossSections(1.0,0.1522,0.0515,0.0184,0.0103); httStitching.SetWInputYields(82360950, 47850048, 27411802, 18297679, 9130068); } + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE){ + httStitching.SetWInputCrossSections(1.0,0.1522,0.0515,0.0184,0.0103); + httStitching.SetWInputYields(82360950, 47850048, 27411802, 18297679, 9130068); + } } if ((output_name.find("DY") != output_name.npos && output_name.find("JetsToLL-LO") != output_name.npos && !(output_name.find("JetsToLL-LO-10-50") != output_name.npos))){ httStitching.set_do_dy_soup(true); @@ -887,6 +918,10 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); } + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive + httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); + } } if ((output_name.find("DYJetsToLL-NLO") != output_name.npos || output_name.find("DYJetstoLL-NLO") != output_name.npos || output_name.find("DYJetsToLL_0J-NLO") != output_name.npos|| output_name.find("DYJetsToLL_1J-NLO") != output_name.npos || output_name.find("DYJetsToLL_2J-NLO") != output_name.npos )){ @@ -907,6 +942,10 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetDYInputCrossSections_NLO(6404.0,5129.0,951.5,361.4); httStitching.SetDYInputYields_NLO(132321936, 69493624, 43156627, 13793541); } + if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + httStitching.SetDYInputCrossSections_NLO(6404.0,5129.0,951.5,361.4); + httStitching.SetDYInputYields_NLO(132321936, 69493624, 43156627, 13793541); + } } BuildModule(httStitching); } @@ -1050,6 +1089,10 @@ for (unsigned i=0; i("input/btag_sf/tagging_efficiencies_deepJet_2018UL_loose.root","/","btag_eff_c"); othbtag_eff_alt = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_loose.root","/","btag_eff_oth"); + } else if (era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { + bbtag_eff = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_medium.root","/","btag_eff_b"); + cbtag_eff = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_medium.root","/","btag_eff_c"); + othbtag_eff = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_medium.root","/","btag_eff_oth"); + + bbtag_eff_alt = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_loose.root","/","btag_eff_b"); + cbtag_eff_alt = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_loose.root","/","btag_eff_c"); + othbtag_eff_alt = GetFromTFile("input/btag_sf/tagging_efficiencies_deepJet_2018UL_loose.root","/","btag_eff_oth"); + } BTagWeightLegacyRun2 BTagWeight = BTagWeightLegacyRun2("BTagWeightLegacyRun2") @@ -1340,7 +1392,8 @@ for (unsigned i=0; i muon_probe_id; - if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL){ + if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL + || era_type == era::data_2022_preEE || era_type == era::data_2022_postEE){ muon_probe_id = [](Muon const* m) {return MuonMedium(m); }; std::function MuonLooseID = [](Muon const* m) { return MuonLoose(m) && m->is_global(); }; @@ -1596,7 +1649,8 @@ for (unsigned i=0; i elec_probe_id = [](Electron const* e) { return ElectronHTTIdFall17V2(e, true); }; std::function elec_tag_id = [](Electron const* e) { return ElectronHTTIdFall17V2(e, false); }; diff --git a/Analysis/HiggsTauTauRun2/src/HTTStitching.cc b/Analysis/HiggsTauTauRun2/src/HTTStitching.cc index 2e65b8ec8..6986bcbb8 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTStitching.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTStitching.cc @@ -40,7 +40,7 @@ namespace ic { throw; } - if (do_w_soup_ && era_!=era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL) { + if (do_w_soup_ && era_!=era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE) { std::cout << boost::format(param_fmt()) % "make_w_soup" % true; std::cout << "nInc = " << n_inc_ << std::endl; w1_ = (n_inc_*f1_) / ( (n_inc_*f1_) + n1_ ); @@ -52,7 +52,7 @@ namespace ic { std::cout << boost::format("f3=%-9.2f n3=%-9i w3=%-9.2f \n") % f3_ % n3_ % w3_; std::cout << boost::format("f4=%-9.2f n4=%-9i w4=%-9.2f \n") % f4_ % n4_ % w4_; } - if (do_w_soup_ && (era_ == era::data_2015 || era_ ==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + if (do_w_soup_ && (era_ == era::data_2015 || era_ ==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { std::cout << boost::format(param_fmt()) % "make_w_soup" % true; std::cout << "nInc = " << n_inc_ << std::endl; f1_ = wxs1_/wxs0_; @@ -76,7 +76,7 @@ namespace ic { t_gen_info_->Branch("wt", &t_wt_); } } - if (do_dy_soup_ && era_!=era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL) { + if (do_dy_soup_ && era_!=era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE) { std::cout << boost::format(param_fmt()) % "make_dy_soup" % true; std::cout << "nInc = " << zn_inc_ << std::endl; zw1_ = (zn_inc_*zf1_) / ( (zn_inc_*zf1_) + zn1_ ); @@ -88,7 +88,7 @@ namespace ic { std::cout << boost::format("f3=%-9.2f n3=%-9i w3=%-9.2f \n") % zf3_ % zn3_ % zw3_; std::cout << boost::format("f4=%-9.2f n4=%-9i w4=%-9.2f \n") % zf4_ % zn4_ % zw4_; } - if (do_dy_soup_ && (era_==era::data_2015 || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + if (do_dy_soup_ && (era_==era::data_2015 || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { std::cout << boost::format(param_fmt()) % "make_dy_soup" % true; std::cout << "nInc = " << zn_inc_ << std::endl; zf1_ = zxs1_/zxs0_; @@ -112,7 +112,7 @@ namespace ic { t_gen_info_->Branch("wt", &t_wt_); } } - if (do_dy_soup_NLO_ && (era_==era::data_2015 || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + if (do_dy_soup_NLO_ && (era_==era::data_2015 || era_==era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { std::cout << boost::format(param_fmt()) % "make_dy_soup_NLO" % true; std::cout << "nInc = " << zn_inc_NLO_ << std::endl; zf0_ = zxs_0J_/zxs_inc_; @@ -213,7 +213,7 @@ namespace ic { if (do_w_soup_) { unsigned partons = 0; double gen_mll = 0; - if((era_ != era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL) || !(event->ExistsInTree("lheParticles"))){ + if((era_ != era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE) || !(event->ExistsInTree("lheParticles"))){ std::vector const& parts = event->GetPtrVec("genParticles"); bool count_jets = true; for (unsigned i = 0; i < parts.size(); ++i) { @@ -229,7 +229,7 @@ namespace ic { } if (id == 24) count_jets = true; } - } else if(era_ == era::data_2015 || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { + } else if(era_ == era::data_2015 || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { std::vector const& lhe_parts = event->GetPtrVec("lheParticles"); std::vector zll_cands; t_ht_=0; @@ -261,7 +261,7 @@ namespace ic { if (do_dy_soup_) { unsigned partons = 0; double gen_mll = 0; - if((era_ != era::data_2015&&era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL) || !(event->ExistsInTree("lheParticles"))){ + if((era_ != era::data_2015 && era_!=era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018 && era_ != era::data_2016UL_preVFP && era_ != era::data_2016UL_postVFP && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE) || !(event->ExistsInTree("lheParticles"))){ std::vector const& parts = event->GetPtrVec("genParticles"); bool count_jets = true; @@ -278,7 +278,7 @@ namespace ic { } if (id == 23) count_jets = true; } - } else if(era_ == era::data_2015 || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL){ + } else if(era_ == era::data_2015 || era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ t_ht_=0; std::vector const& lhe_parts = event->GetPtrVec("lheParticles"); std::vector zll_cands; diff --git a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc index 7dd5372f0..c5bc4e83c 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc @@ -84,7 +84,7 @@ int HTTWeights::PreAnalysis() { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -956,7 +956,7 @@ int HTTWeights::PreAnalysis() { w_ggh_->function("ggH_mg_ue_down")->functor(w_ggh_->argSet("ngenjets"))); } // UL Scale Factors - if(scalefactor_file_UL_!="" && (era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL)){ + if(scalefactor_file_UL_!="" && (era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)){ @@ -1190,7 +1190,7 @@ int HTTWeights::Execute(TreeEvent *event) { if(era_ == era::data_2016 || era_ == era::data_2017 || era_ == era::data_2018){ MVADM2017 = "MVADM2017v1"; - } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL){ + } else if(era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ MVADM2017 = "MVADM2017v2"; } else { MVADM2017 = " "; @@ -2190,7 +2190,7 @@ int HTTWeights::Execute(TreeEvent *event) { double xtrg_et_sf_mvadm=1.; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { ele_xtrg = fns_["e_crosstrg_data"]->eval(args_1.data()); if(is_embedded_) ele_xtrg_mc = fns_["e_crosstrg_embed"]->eval(args_1.data()); @@ -2329,7 +2329,7 @@ int HTTWeights::Execute(TreeEvent *event) { double tau_trg_mvadm11_down=1; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { if(e_pt Date: Mon, 10 Jul 2023 10:35:00 +0100 Subject: [PATCH 11/50] Add correct Run2 filelists tar file --- .../filelists/July0623_2022_filelists.tgz | Bin 0 -> 2048000 bytes .../filelists/May0223_2022_filelists.tgz | Bin 2048000 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/filelists/July0623_2022_filelists.tgz delete mode 100644 Analysis/HiggsTauTauRun2/filelists/May0223_2022_filelists.tgz diff --git a/Analysis/HiggsTauTauRun2/filelists/July0623_2022_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/July0623_2022_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fc59c1fdb3365079844465233a44055ef8e6905e GIT binary patch literal 2048000 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
KMj$kRLh@W@l386J7s9*0Ms{wx_DdD;?( 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 E073^;vH$=8 From 5b4ace8ea3b6e76ca6586afe4af6918d4de3d1c0 Mon Sep 17 00:00:00 2001 From: Endre Date: Mon, 10 Jul 2023 14:18:49 +0100 Subject: [PATCH 12/50] Add no qcd background remove option --- .../scripts/HiggsTauTauPlot.py | 31 ++++++++++++++----- python/analysis.py | 18 ++++++++--- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py index bc37c06f9..a1602b37f 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py @@ -63,7 +63,8 @@ "ff_ss_closure":False, "threePads":False,"auto_blind":False, "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, - "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False + "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, + "no_qcd_subtract": False } @@ -397,7 +398,9 @@ parser.add_argument("--plot_from_dc", default="", type=str, help="If not empty will draw plot straight from datacard") parser.add_argument("--v2p5", dest="v2p5", action='store_true', - help="Get version of DeepTau v2p5") + help="Get version of DeepTau v2p5"), +parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', + help="Do not subtract background when estimating qcd events") options = parser.parse_args(remaining_argv) print 'do_unrolling = %s' % options.do_unrolling @@ -3367,22 +3370,30 @@ def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', s if method == 8: qcd_sdb_cat = cats[options.cat]+' && '+cats['tt_qcd_norm'] qcd_sdb_cat_data = cats_unmodified[options.cat]+' && '+cats_unmodified['tt_qcd_norm'] - - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + if options.no_qcd_subtract: + subtract_node =None + else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) num_selection = BuildCutString(wt, sel, cat_data, '!os') num_node = SubtractNode('ratio_num', ana.SummedFactory('data', data, plot_unmodified, num_selection), subtract_node) if options.analysis == 'mssmsummer16': tau_id_wt = 'wt_tau2_id_loose' else: tau_id_wt = '1' - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) + if options.no_qcd_subtract: + subtract_node =None + else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) den_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, '!os') den_node = SubtractNode('ratio_den', ana.SummedFactory('data', data, plot_unmodified, den_selection), subtract_node) shape_node = None full_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, OSSS) - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) + if options.no_qcd_subtract: + subtract_node = None + else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, ana.SummedFactory('data', data, plot_unmodified, full_selection), @@ -4871,8 +4882,12 @@ def RawFFFromString(string): # output_name = options.outputfolder+'/datacard_'+options.extra_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' datacard_name+='_'+options.extra_name #else: -output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' -outfile = ROOT.TFile(output_name, 'RECREATE') +if options.do_ss: + output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'_ss.root' + outfile = ROOT.TFile(output_name, 'RECREATE') +else: + output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' + outfile = ROOT.TFile(output_name, 'RECREATE') cats['cat'] = '('+cats[options.cat]+')*('+cats['baseline']+')' if options.channel=="em": cats['em_shape_cat'] = '('+cats[options.cat]+')*('+cats['loose_baseline']+')' diff --git a/python/analysis.py b/python/analysis.py index 52944350e..0af5d5270 100644 --- a/python/analysis.py +++ b/python/analysis.py @@ -318,7 +318,9 @@ def __init__(self, name, initial, subtract): self.subtract_node = subtract def RunSelf(self): - self.shape = self.initial_node.shape - self.subtract_node.shape + if self.subtract_node is not None: + self.shape = self.initial_node.shape - self.subtract_node.shape + else: self.shape = self.initial_node.shape def Objects(self): return {self.name: self.shape.hist} @@ -327,7 +329,10 @@ def OutputPrefix(self, node=None): return self.name + '.subnodes' def SubNodes(self): - return [self.initial_node, self.subtract_node] + subnodes = [self.initial_node] + if self.subtract_node is not None: + subnodes.append(self.subtract_node) + return subnodes def AddRequests(self, manifest): for node in self.SubNodes(): @@ -345,7 +350,10 @@ def __init__(self, name, data, subtract, factor, qcd_shape=None, ratio_num_node= self.qcd_shape = qcd_shape def RunSelf(self): - self.shape = self.factor * (self.data_node.shape - self.subtract_node.shape) + if self.subtract_node is not None: + self.shape = self.factor * (self.data_node.shape - self.subtract_node.shape) + else: + self.shape = self.factor * self.data_node.shape if self.ratio_num_node is not None and self.ratio_den_node is not None: self.shape *= self.ratio_num_node.shape.rate / self.ratio_den_node.shape.rate if self.qcd_shape is not None: @@ -358,7 +366,9 @@ def OutputPrefix(self, node=None): return self.name + '.subnodes' def SubNodes(self): - subnodes = [self.data_node, self.subtract_node] + subnodes = [self.data_node] + if self.subtract_node is not None: + subnodes.append(self.subtract_node) if self.ratio_num_node is not None and self.ratio_den_node is not None: subnodes.append(self.ratio_num_node) subnodes.append(self.ratio_den_node) From 97a2a9cd0c263345d2bb59f8c6414a4d5b6564e7 Mon Sep 17 00:00:00 2001 From: Endre Date: Mon, 10 Jul 2023 14:35:04 +0100 Subject: [PATCH 13/50] Run3 filelists --- .../filelists/July0623_2022_filelists.tgz | Bin 2048000 -> 2048000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/filelists/July0623_2022_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/July0623_2022_filelists.tgz index fc59c1fdb3365079844465233a44055ef8e6905e..1ffa62ff971040db564f021f3a498db518be17a8 100644 GIT binary patch delta 2281 zcmaKu&1+Rh6u_O=R~G&dq9cS*LX_Z*#k>7)ODDSvZ%anWP?1@f zt|}ezu7v9gTzyKs>xWtA?JlFYyKKDNY!&vrJ!K{KRN$uLmn+CGR}3#TpTw)Y689^x z*Rj$&?mD(wqqsF4H;T*|A{Ms>TO2z{ z?4)I5WV0-0=iOd|8;-qA>}|%%Fn4KJ;!X{2Id-Ow>`dL9fl8ERDa+fwx)S@=!z;&6 zdUOuY@Tuk#cE9Z&%ng~+$H`A|7{^l=E}mH$+Snam^k%vXi)7+y^iDEyJ1KF=gK~k{ zCbMl#+Ed1o?fJV0r2_LBnb)jI-IU3cW$n5Ld4YM4%zMnl!?K$H>A~It^F5jGjVY-E zGMOZ+Rqcom9Xu{w;_$FoMwrMoctQgVbfRBL+v57#sz^z}_*6_Ks0w>pCQn>#L5K8dYLyGralO z?hY+iumgey`a#3^A6KK*_*5OOJ4Wu{=iF&>r>#qK zBEx~ST1_RsYrw(6eJ_)HnYl8FTqh{;O9PG;x(~^Hs9hP_E@J)ncjHr4vbkCzcg4Ci zSMa^CeP1_V+P&w%$M+ogR1=Afg(Eso**+~F`W(BJ*sVPlpLgWCM~QEJC^>e5*a^$( z(VydEu%lmzZ9W8!oh5d*$I{qfaS!-x4xT0UtYxVO^PJCub3UARai0+T#Io3L6j%1n z@YIJz$IdsAoo|{vP>*B@XMbq2yB#C;*cvuv`Tdcz$B8{|S^b^KC7balnk>Jkh&^Rk z{q4w--s@E2bd%lf0kIDli|J+g{i_MTy1UH<$j$}&Zu&ceaor42;!psgW3Li>)v~4^ zB+J=v0n9u05wVXnn`d-4ne!R>Pr!2anApdL&GmON&RL)R7qC1$BlekP^>;Dp{R1fR zJbyCsN8d3Cq@1_lgV3>ruf4JMcn2%gXn04P`^+QfL_ z#P`6&z2F@#h-eTKykX+07`Q^l=b7Evna0DUm*31j^Pgv?rP5NVv{XAfvtSlilT)j+ zomt0s{o*;(a(&M|*J7?&TdAjS2q_an0zwk>Z>ZOj$BC)6+2cew!+{yTU9|a(GC4`W zI1i&HASbnSm{03Z!nFQmIL&1ra(yvvAQ_N>6n)S6W(xRbD&$_sEzSe7m7;ezRTQ9# zg48ojRuKF|TL?&6p?5hQLpl~wi>+#Vf<92_Cr*_#u9^;44TEvwZNjQ)+QMlE(vFDQ zxT-<{PFIkwM3e>QI?{=~RjJ46 z2GR|Q`j#mL_E{B&dy4clqAUez)iOC#VO)Sw4y$vwEw*gbJJs*3+ zvf{0lNnZnu%P_9MxC-N1K>DuJ?|gcFBTTPvWYc|YE!P!IP$t>NfMlDf&Usf8@UEti zW3ceG_%fAAcT+&Ro5f8sG~k97^8XXdYa-lMq^(udj&DyuZfLZI7g0c3h$wbrb-3*k z?LpcjQP`f;Gq*H)pRc-zbTOjr)>~Fl^!N*nKH_u-=}tt$BXcGCRTF_#kX9rLwMyGM z(r6D~)zE<&dKeZy2%ZDI8{hK0E)r-%+7?kb^rC6n61}O5Tnk7Gf?A#{cVfFv4PL-7 z(qTp&d}d%(@$LoWo-Q7QIizzD#Xj(${Y0(Lbo!jHx{q{UP+T=`nSlJ%={%?7IiTY? zOu#W&yI3-Pm=oKYKspgo_99u1bOetjI*D{LqIj@SYkWfj@+2p6oklt>QP*;%TxW7( zTiZytBZ@r$xk{b&B}ZTKZH*W}M~rY=?4`F{sen;~nw%~pU6yF|X}vP&IH$WvcNw)^ zEC4c-a{XqAu=bGdNz|))<9-+-fdixm5oJwSbqjtO;^jO Date: Mon, 10 Jul 2023 15:30:30 +0100 Subject: [PATCH 14/50] Adding trigger and process Run3 data --- .../scripts/config_2022_postEE.json | 4 +- .../scripts/config_2022_preEE.json | 4 +- .../scripts/htt_2022_postEE.py | 8 +-- .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 8 +-- .../HiggsTauTauRun2/src/HTTTriggerFilter.cc | 55 ++++++++++++++++++- 5 files changed, 64 insertions(+), 15 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json index 37a15d61b..c8c467b11 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -1,7 +1,7 @@ { "job": { "filelist" : "filelists/Mar31_2018_MC_124X_DYJetsToLL.dat", - "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/May0223_Data_124X_2022-postEE/", + "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/July0623_Data_124X_2022-postEE/", "max_events": -1, "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], @@ -44,7 +44,7 @@ "filter_trg" : false, "do_leptonplustau" : false, "do_singlelepton" :true, - "do_singletau" : true, + "do_singletau" : false, "store_trigobjpt" :true, "tt_trg_iso_mode" : 0, "moriond_tau_scale" : true, diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json index 9a29def70..7ca091520 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json @@ -1,7 +1,7 @@ { "job": { "filelist" : "filelists/Mar31_2018_MC_124X_DYJetsToLL.dat", - "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/May0223_Data_124X_2022-preEE/", + "file_prefix" : "root://gfe02.grid.hep.ph.ic.ac.uk:1097/store/user/irandreo/July0623_Data_124X_2022-preEE/", "max_events": -1, "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], @@ -44,7 +44,7 @@ "filter_trg" : false, "do_leptonplustau" : false, "do_singlelepton" :true, - "do_singletau" : true, + "do_singletau" : false, "store_trigobjpt" :true, "tt_trg_iso_mode" : 0, "moriond_tau_scale" : true, diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index 3216344f4..9eb6998c3 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -174,7 +174,7 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/Mar31_2018_MC_124X' +FILELIST='filelists/July0623_2022-preEE_MC_124X' signal_mc = [ ] signal_vh = [ ] @@ -231,13 +231,13 @@ def getParaJobSubmit(N): if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] - DATAFILELIST="./filelists/May0223_2022-postEE_Data_102X" + DATAFILELIST="./filelists/July0623_2022-postEE_Data_102X" if options.calc_lumi: for sa in data_samples: JOB='%s_postEE_2022' % (sa) user='irandreo' - prefix='May0223_Data_124X_2022-postEE' + prefix='July0623_Data_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 500 @@ -257,7 +257,7 @@ def getParaJobSubmit(N): for sa in data_samples: JOB='%s_postEE_2022' % (sa) user='irandreo' - prefix='May0223_Data_124X_2022-postEE' + prefix='July0623_Data_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 30 diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index 22a294e59..f5c2d2116 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -174,7 +174,7 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/Mar31_2018_MC_124X' +FILELIST='filelists/July0623_2022-preEE_MC_124X' signal_mc = [ ] signal_vh = [ ] @@ -231,13 +231,13 @@ def getParaJobSubmit(N): if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] - DATAFILELIST="./filelists/May0223_2022-preEE_Data_102X" + DATAFILELIST="./filelists/July0623_2022-preEE_Data_102X" if options.calc_lumi: for sa in data_samples: JOB='%s_preEE_2022' % (sa) user='irandreo' - prefix='May0223_Data_124X_2022-preEE' + prefix='July0623_Data_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 500 @@ -257,7 +257,7 @@ def getParaJobSubmit(N): for sa in data_samples: JOB='%s_preEE_2022' % (sa) user='irandreo' - prefix='May0223_Data_124X_2022-preEE' + prefix='July0623_Data_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 30 diff --git a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc index 38e23c8c8..eda0ecf5e 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc @@ -383,7 +383,7 @@ namespace ic { //subleading from following (but contains leading as well) alt_jetleg2_filter = "hltMatchedVBFTwoPFJets2CrossCleanedFromDoubleLooseChargedIsoPFTau20"; } - if (run >= 317509) { + if (run >= 317509 && run < 355100) { trig_obj_label = "triggerObjectsDoubleMediumIsoTauHPS35"; leg1_filter = "hltHpsDoublePFTau35TrackPt1MediumChargedIsolationDz02Reg"; leg2_filter = "hltHpsDoublePFTau35TrackPt1MediumChargedIsolationDz02Reg"; @@ -394,6 +394,17 @@ namespace ic { //subleading from following (but contains leading as well) alt_jetleg2_filter = "hltMatchedVBFTwoPFJets2CrossCleanedFromDoubleLooseChargedIsoPFTauHPS20"; } + if (run >= 355100) { + trig_obj_label = "triggerObjectsDoubleMediumDeepPFTauHPS35"; + leg1_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; + leg2_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; + alt_trig_obj_label_3 = "triggerObjectsDoubleMediumDeepPFTauHPS35"; + alt_leg1_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + alt_leg2_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + alt_jetleg1_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; // leading + //subleading from following (but contains leading as well) + alt_jetleg2_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; + } } //single tau trigger @@ -556,7 +567,7 @@ namespace ic { alt_monitoring_17_leg1_filter_2 = "hltL3crIsoL1sBigOrMuXXerIsoTauYYerL1f0L2f10QL3f24QL3trkIsoFiltered0p07"; alt_monitoring_17_leg2_filter_2 = "hltSelectedPFTau35TrackPt1TightChargedIsolationL1HLTMatchedReg"; - } else if (era_ == era::data_2018 || era_ == era::data_2018UL) { + } else if (era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { alt_trig_obj_label = "triggerObjectsIsoMu24"; alt_leg1_filter = "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07"; alt_trk_trig_obj_label = "triggerObjectsIsoMu27"; @@ -632,7 +643,7 @@ namespace ic { alt_leg1_filter_2=leg1_filter; alt_leg2_filter_2=leg1_filter; } - } else if (era_ == era::data_2018 || era_ == era::data_2018UL) { + } else if (era_ == era::data_2018 || era_ == era::data_2018UL ) { trig_obj_label = "triggerObjectsDoubleMediumIsoTauHPS35"; //HPS only leg1_filter = "hltHpsDoublePFTau35TrackPt1MediumChargedIsolationDz02Reg"; leg2_filter = "hltHpsDoublePFTau35TrackPt1MediumChargedIsolationDz02Reg"; @@ -650,6 +661,16 @@ namespace ic { alt_leg1_filter_2=leg1_filter; alt_leg2_filter_2=leg1_filter; } + } else if ( era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + trig_obj_label = "triggerObjectsDoubleMediumDeepPFTauHPS35"; + leg1_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; + leg2_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; + alt_trig_obj_label_3 = "triggerObjectsDoubleMediumDeepPFTauHPS35"; + alt_leg1_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + alt_leg2_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + alt_jetleg1_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; // leading + //subleading from following (but contains leading as well) + alt_jetleg2_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; } } } @@ -1074,6 +1095,34 @@ namespace ic { else passed_vbfdoubletau = false; } } + if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && passed_vbfdoubletau && alt_trig_obj_label_3 != "") { + std::vector alt_objs_3 = event->GetPtrVec(alt_trig_obj_label_3); + std::vector jets = event->GetPtrVec("ak4PFJetsCHS"); + // first need to find jets with maximum mjj and cross clean from taus? + if (jets.size() >= 2) { + unsigned int i1 = 0; + unsigned int j1 = 0; + double mjj_max = 0; + + for (unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + for (unsigned int jjet = ijet+1; jjet < jets.size(); ++jjet){ + double mjj_test = (jets[ijet]->vector()+jets[jjet]->vector()).M(); + + if (mjj_test > mjj_max){ + mjj_max = mjj_test; + i1 = ijet; + j1 = jjet; + } + } + } + + // add VBF trig here, need to do jet matching + jetleg1_match = IsFilterMatchedWithIndex(jets[i1], alt_objs_3, alt_jetleg1_filter, 0.5).first; + jetleg2_match = IsFilterMatchedWithIndex(jets[j1], alt_objs_3, alt_jetleg2_filter, 0.5).first; + if (jetleg1_match && jetleg2_match) passed_vbfdoubletau = true; + else passed_vbfdoubletau = false; + } + } } event->Add("trg_doubletau", passed_doubletau); event->Add("trg_doubletau_mssm", (passed_doubletau&&passed_doubletau_extra)); From 843e2278970f5437c37d8193f394d186421525f1 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 11 Jul 2023 09:16:18 +0100 Subject: [PATCH 15/50] My plot compare --- .../scripts/compare_qcdmethods.py | 29 +++++++++++++++++++ python/plotting.py | 11 ++++--- 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py new file mode 100644 index 000000000..0a68e97bf --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py @@ -0,0 +1,29 @@ +import ROOT as R +from UserCode.ICHiggsTauTau.plotting import CompareHists + +file_w_qcdsub_name = "../output/datacard_m_vis_inclusive_tt_2018_ss.root" +file_wo_qcdsub_name = "../output_nosubqcd/datacard_m_vis_inclusive_nosubqcd_tt_2018_ss.root" + +output_folder_name = "." +output_plotname = "QCD_ss_compare" + + +file_w_qcdsub= R.TFile.Open(file_w_qcdsub_name, "READ") +file_w_qcdsub_dir = file_w_qcdsub.Get("tt_inclusive") +(file_w_qcdsub_dir).cd() +# if(file_w_qcdsub.IsZombie()): +# print("Error") +hist_w_qcdsub = file_w_qcdsub_dir.Get("QCD") + +file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_name, "READ") +(file_wo_qcdsub_name, "READ") +file_wo_qcdsub_dir = file_wo_qcdsub.Get("tt_inclusive") +(file_wo_qcdsub_dir).cd() +hist_wo_qcdsub = file_wo_qcdsub_dir.Get("QCD") + + +output_file = R.TFile(output_folder_name+"/"+output_plotname+".root","RECREATE") +c1 = R.TCanvas() +CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], + legend_titles = ["Background Subtracted (SS)","Data Only (SS)"],title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", + x_title = "m_{#tau#tau} (GeV)", y_title = "Events/GeV",plot_name = output_plotname, output_file = output_file) \ No newline at end of file diff --git a/python/plotting.py b/python/plotting.py index 91b0e14b2..594fbcd20 100644 --- a/python/plotting.py +++ b/python/plotting.py @@ -3362,7 +3362,8 @@ def CompareHists(hists=[], norm_bins=True, uncert_hist=None, uncert_title='', - ReweightPlot=False): + ReweightPlot=False, + output_file = None): objects=[] R.gROOT.SetBatch(R.kTRUE) @@ -3519,9 +3520,9 @@ def CompareHists(hists=[], tot = len(hists) if isinstance(uncert_hist,list): tot+=len(uncert_hist) if tot > 4: legend = PositionedLegend(0.35,0.3,3,0.03) - else: legend = PositionedLegend(0.35,0.2,3,0.03) + else: legend = PositionedLegend(0.3,0.15,3,0.03) legend.SetTextFont(42) - legend.SetTextSize(0.040) + legend.SetTextSize(0.025) legend.SetFillColor(0) @@ -3606,7 +3607,9 @@ def CompareHists(hists=[], pads[0].RedrawAxis() c1.SaveAs(plot_name+'.pdf') - #c1.SaveAs(plot_name+'.png') + c1.SaveAs(plot_name+'.png') + if output_file is not None: + output_file.WriteObject(c1, plot_name) for o in objects: o.IsA().Destructor(o) From 6aec8674b5176362f9098e58bfa4376b4a48a98c Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 11 Jul 2023 09:18:13 +0100 Subject: [PATCH 16/50] Add config files and filelist --- .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 8 ++++--- .../scripts/plot_UL_2018_nosubqcd.cfg | 22 ++++++++++++++++++ test/July0623_2022_filelists.tgz | Bin 0 -> 2048000 bytes 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg create mode 100644 test/July0623_2022_filelists.tgz diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index 9224ed74e..a3af959ce 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -1,17 +1,19 @@ [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json -folder=/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_v2/ +folder=/vols/cms/eb921/output/tt_UL_2018/ era=UL_18 sm_masses="" draw_signal_mass="" #ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 #bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 year=2018 norm_bins=True ratio=True lumi=59.7 fb^{-1} (13 TeV) vbf_background=False wp = medium +channel = tt +method = 8 diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg new file mode 100644 index 000000000..c864791bb --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg @@ -0,0 +1,22 @@ +[Defaults] +analysis=mssmrun2 +paramfile=scripts/params_UL_2018.json +folder=/vols/cms/eb921/output/tt_UL_2018/ +era=UL_18 +sm_masses="" +draw_signal_mass="" +#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 +#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +year=2018 +norm_bins=True +ratio=True +lumi=59.7 fb^{-1} (13 TeV) +vbf_background=False +wp = medium +channel = tt +method = 8 +outputfolder=output_nosubqcd +extra_name = nosubqcd +no_qcd_subtract= True diff --git a/test/July0623_2022_filelists.tgz b/test/July0623_2022_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1ffa62ff971040db564f021f3a498db518be17a8 GIT binary patch literal 2048000 zcmdSi&5m5ldA4bebrd=Qi?!b0c;_Yr80eV>o)OeGXWrTdMG5fPce(BA{xZ7rC+??h z;M)@$5HcgOxGFO9z9Lrr)8GE}-`~potG${1!@vFZ*Pma$eEr97Kfisw-t3>he);3K zUw{4f6j>E`0G__~OI=oQ5wx!xx|N z+2V`O@Wp5N;xl~l8NT=oUwnoyKKzg3_~LVX@j1TuoWD+d@j1Tu9AA8nFFwZ?pW}-U z|7ZhWe1R{%z!zWOi!b<32w!}GFTTJRU*L-`@WqFJK#4ED#1~)Ui!brTm-ymK{KSFFyW2 zeDMvw_y%8mgD<|p7vJEEZ}7!8_~ILU@eRF(=)WeeeD+2!T6?1x?K=~~25)clqO~`A z(b^lmXzh(&wDv|XT6?1x?Yq>`e-(ToU>PwiBX;4756g&Q88Iv)hGoRCj2M;?!!m-c z!T6eqWyFNp;*}4}h+!EqEF*?x#ITGQmJ!4MC|E`e%gFn78M?q@88OFiyI4jH%ZOna zF)Sm7WrY7;V;M0lBZg(fu#6a%5exj856g&Q88Iv)hGm4mHDDPrEF*?x#ITGQmJ!1; zVu`PwiBZg&!f4aajVpv8D%ZOnaF)Sm7WyG+ISmAHGSVj!X2>*bJWyG+I7?u&k zGGbUp-ZyX4PpDW%49kc$PAynQ_;(yEBZg(fu#6a%5yLWKSVj!Xh+!EqEF-pX=i?8= zkr~T~VHq(jBZg(fu#6a%5yLWKSVj!X2rVr*v^bU#$1>trMjXqCV;ONQBaUU{{a6wF zh~QX89Lor9b&h4kv5YvD5yvv(SVkPnh+`RXEF+F(#IcOv-0N6I9LtDf8F3up9T!x` z`O9&;aQwy7@wW!YGJ?gx`5QK0ZTYW?@H(lCIF=E|GU8Z99LtDf8Nuk}SVkPnh+`RX zEF+F(#IcMxmJ!D?;#fu;%LxDN#4_SoMjXqCV;ONQBaUUnv5YvD5yvv(SVs5)k7dNM zjJ)5-gMOF8GU8Z99LtDf8F4Hlj%CELjPTD0SVkPnh+`RXEF+F(#IcMxmJ!D?;#fu; z%LxCNiDksGj5wAN$1>trMjXqCV;ONQBaUUnv5fFON4BY|Zku#5zjk-##7qitXr2`nRl zWhAhS1kU$?+iT!(7Pxu@{>mEo`v&g*!9OkXw|c%#^ItOICqy@|29}Y)G7?xu0?P=d zqrfr}SVrD&B@N?rU>ON4BY|Zku#5zjk-#z%SVs8o7?zR1G7?xu0?SBX83`;Sfn_AH zj0BdEz%s&@X)GgwWhAhS1eTG&G7?xu0?SBX83`;Sfn|ih(_ON4BY|Zku#5zjk-#!SzmVat8;NBkv5X{^ zk;F2RSVj`dNMadDEF+0!B(aR(Z>;Zs_y~SuO)MjcWhAkTB$koHGLl$E63a+p8A&W7 zIC>mXX3TQdmX`%Sd4v!QVRz%Sd4v zDJ&y}Wu&l-6qb>~GE!JZ3ZEG%EF(Bw6qb>~GE!JZ3d=}g87V9yg=M6$j1-oU!ZL#E zS78|`EF*mXX3TQdmX`%Sd4vDJ&y6pca;q!ZK1=MheSFVHqhbBZbMJaPKV~ z>k5|^+~A9UPv&28_$O5U@q)iM@Lz1~ zGE!JZ3d=}g8R6GEmXX3TQdmX`%Sd4vDJ&y}Wu&l-6qb>~GQyWkEF*mXX3T zQdmX`%Sd4vDJ&y}WrTi2z;C*ZWu&o;G?tOZGSXN^8p}vy8EGsdjb)^-q_K=NmXXFX(pW|s%SdAxX)Gg+Wu&o;-~iEBMjFdVV;N~IBaLOGv5Yj9k;XF8 zSVkJl2yR%7Wu&o;G?tOZGSXN^8p}vy8EGsdjb)^JWMLUuSVk6>k%eVsVHsIiMi!P4{MNa!j4Ui83(LsDGP1CYEG#1n%gDkqvapOS zEF<{S*TOQgu#7A$BMZyO!ZNb3j4Ui83(LsDGP1CY;1BQ%%gDkqvapOSEF%lc$igzR zu#7A$BMZyO!ZL!t11>Bh3(LsDGP1CYEG#1n%gDkqvapOSEF%lc2+jx#%gDkqvapOS zEF%lc$igzRu#7A$BMZyO!ZLzO)WR~du#7A$BMZyO!ZNb3j4Ui83(LsDGP1CY;F!6v zj4Ui83(LsDGP1CYEG#1n%gDkqvM^ID+?a6>U%U|Vyu-hn^DkEXQ!)QY!{3kiVj^4# z18-S}No8RfSy)CEmXU>JWMLUuSVk6>k%eVsVHsIiM(9P0FTKGsGFV0i%gA6E87w1% zWn{3743?3>GBQ|3@ai>KMh45sU>O-KBZFmRu#60rk-;)DSVjiR2z~<`EF*(uWU!13 zmXX0SGFV0i%gA6E87w1%WdwhQ8Z0A&Wn{3743?3>GBQ|32Fu7`85t}igJlGN3?D2b zgJoo}j0~2M!7?&fMh45sU>O-KBZFlGf0G+5BZFmRu#60rk-;)DSVjiR$Y2>6EF*(u z1jm5EGBQ|32Fu7`85t}igJoo}j0~2M!7?&fMsQCWEF*(uWU!13mXX0SGFV0i%gA6E z87w1%WdtY5!7?&fMh45sU>O-KBZFmRu#60rk-;)D7&v&<=6Ra8MIMIuw|f4SjDMcy zABOll8DEBuuA%Gmm%o4i%g;ak`2PLt^>!o`+e5Dd4BQ@S{Glg*8h9Hu_^2m;t7{we z4+e< zQTf$$WC^#U9$~`vP`)-Dal$q#Uz?6VVH=gNO-H1#jmp=iBUHE@^#}*Hhw`=QhzGV& z`Py^@1ly>5Z8{=?ZB)KC9U;LsDqow9YX9x1N4bA{C|{e7g8w!uUz?7S|28ULn~tLY zHY#76j-8`!mp#9_}i%Xo$fl?i@%ME z-|4QS-T2$6_?_-L+K+!bDsSNzZ{gR`&iZY_d~G_~TfdFU*QTT0_1ma?Z93Xtzm3Y* zCf>rYqn+}%6Xq@aI@&A0jmp=iquuh`sC;cY+AqJ2%Gai&9rL%N@)mya7JeP=ecvX` z*QTT0@7t(+Z93ZjzKzP)rlTG3+o*hP;w}6-+RJ`BVcx>8quuP=sC;cY+Rwg?%Gai& z9qrqwd~G_~(|$WDZ{Zhj;n&gb^lid?Z93YYzKzP)rlTF|+o*hPI@+VYjmp<1-ome= z-R8Fw<}Lg>+Hby%%Gai&9p~Gqd~G_~bH0tr*QTRg=eMKs7Jl&-ejV)}-zLo0rlTF? z+o*hPI@&|Njmp=iqg~|NsC;eWE&Mv#4}Lpg-ome=9pT%kd~G_~6TXeg*QTRg;oGQu zZQ}dFjkj>)E!=nux1*cb-28-%w{SbUjm%3HYc7H+(S z8*kyp_k|m8;l}rc8*kyp_k|m8;l^9I@fL2pg&W@&ZoGvX-xqGYg&W@&ZoGvX-xqGY zg&S|-##^}Y7H)iBxbYTld|$Zn7H)iBxbYTlyoDQY;l^9I@qOXOTe$Ik;l^9I@qOXO zTe$Ik;l^9I@fL2pg&S|-#`lFAZ{f!Gg&S|-#`lFAZ{fyUxbYTlyoDRz7jC?T8{Zdh zyoDRz7jC?T8{ZdhyoDQY;l^9I@fL1;U%2rWZhT+3@fL1;U%2rWZoGvXZ{fyUxbc1A z##^}Yec{Gixbc1A##^}Yec{GixbYTlyoDQY;l}rc8*kyp_k|m8;l}rc8*kyxTe$NU z?!1LNZ{f~cxbqh7d|$Zp7Vdmsxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96 zTe$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LN zZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7 zyoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ z^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI z&Re+i7Vf--J8$8^TX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX z2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm z9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjP zc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE z;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7t zg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x z7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}& zTX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8 zZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sW zyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg z@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;l*2c@fKdZg%@w( z#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC z7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn zUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvT zc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU z;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZ zg%@w(&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$ z7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1 zTX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3 zZ{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzC zyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok z^A_H`g*R{E&0Bc$7T&ytH*evKxA4VV_~I>m@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf z7QT23U%Z7c-oh7e;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>= zg)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e z;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB|Eqw77 zzIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fJS3g%5Ax z!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX% z4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6 zKD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR z`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M z;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2 zg%5Ax!&~?qwQ&3Vt+#8C_1 z9?Gw#qZYo6%CDxQ7QT(juco6GzKzPSrlS^qJL*vj-yX`>rlS_Vjmp=iqZYo6%Gai& z7QT(j*QTQuzKzP)rlS^qJL*vj-yX`>rlS_Vjmp=iqZYo6%Gai&7QT(j*QTQuemm+> z3*R2f*QTQuzKzP)rlS_Vjmp=iqZYo6%Gai&7QT(j*QTQuemm+>3*R2f*QTQuzKzP) zrlS_Vjmp=iqZYo6%Gai&7JfVGQ48N5%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZYo6 z%Gai&7JfVGQ48N5%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZWQU>QM{d9?I9IqZYo6 z%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZWQU>QM{d9?I9IqZYo6%Gai&7QT(j*QTQu zzKzP)Cf>p?-ome=ec?B+^*Y)YzC9GLP1n)B@NHDQHeE;i!naZJ+H@W53*Sb?YtzMB z_{CfJb+j-1_OM&(x%Z{gR`zVO=#^A>&`?F-*V z#qV_2(Z29)RQyhN9qkL>M#b-R*U`T4+fjK7zjzD3j`oFb6Xx%9NBhFJQTf_*v@d)c zm9I@l`@*+T`P#%=_;s`|{C2{;gfUoO-K8}w^8}pbhI!0c2wTN zFW$nhqkZAqg!$TZv@d)cm9I@l`@*+T`Py`}FMJ!7uT8v#Uq}1GZzs%K_;s`|d>fUo zO-K8}w^8}pbhIyg8a+7P464S=_X*~E!=nux1)Qc-29k~w{SbU zN6I!TUYqRb9x2H{QaH?+Z8H!j10>H{QaH zw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3x7YUgqJnm!i~3Z)`@)U4aO3;Jjkj>)`@)U4aN{l9cnde)!j10>H{QaH?+Z8H!j10>H{QaHw{YVv z+;|H&zAxN(3pc(m+;|H&zAxN(3pc(m+<6Ok-ol-?aOW-Dc?);m!kzC6f4|QR%{R{X zg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i z7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96 zTe$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LN zZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7 zyoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqesyoCpE;lW#Y z@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp z!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX z2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm z9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjP zc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE z;lW#Y@D`rDg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-F zg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x z7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}& zTX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8 zZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sW zyoD!k;mKQg@)n-Fg(q*}$y<2x7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c z@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w( z#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC z7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn zUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvT zc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn-n@l3Z{f{bc=HzCyoEP! z;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H` zg*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$ z7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1 zTX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3 zZ{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=Hy% zcne>=g)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c z-oh7e;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNN< zxA4VV_~I>m@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB| zEqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fN;# z3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB|Eqw77zIY2?yoE2` z!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNOiTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_ z@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax z!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX% z4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6 zKD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR z`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>p`Q49CaU;h66FF*hE z^|Z8~b<+o*hPI%?tDsC;cYYT?_cd~G^v;oGQuZ8~b^|Z8~b<+o*hPI%?tDsC;cYYT?_cd~G^v;kTn6weansd~G^v;oGQuZ8~b<+o*hP zI%?tDsC;cYYT?_cd~G^v;kTn6weansd~G^v;oGQuZ8~b<+o*hPI%?tDsC;cYYT>t| z9<}i8p?qyRYT?_cd~G^v;oGQuZ8~b<+o*hPI%?tDsC;cYYT>t|9<}i8p?qyRYT?_c zd~G^v;oGQuZ8~b<+o*hPI%?s!qaL;J?V)^aI%?tDsC;cYYT?_cd~G^v;oGQuZ8~b< z+o*hPI%?s!qaL;J?V)^aI%?tDsC;cYYT?_cd~G^v;oGQuZQ?Eb;w}6-+82KFTCbyh z;oC#;+H@W53*Sb?YtwbKFMJynuT9s{zVK~Syf$6Dg-$vzE)6u^0ZB%|W@fLm^?F+x1FmK`4(Z29)RQyhN9qkL>M#b-R*U`T4ZB+bD zcOC5uza5pg@Qb(b>u6v2HevowceF2j8fUoO-K8}Z%5@V{NgSAI@%Y$O_;AuNBhFJQTf_* zv@d)cm9I@l`@*+T`P#%=_;s`|{C2{;gfUoO-K8}w^8}pbhI!0 zc2wTNFW$nhqkZAqg!$TZv@d)cm9I@l`@*+T`Py`}FMJ!7uT8v#Uq}1GZzs%K_;s`| zd>fUoO-K8}w^8}pbhIyg8`&NFsFWh(w zH{QaHw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3pd`vjkj>)E!_CNaN{l9_`Y!CE!_CN zaN{lf{iG6J)_4my-olOV3pd`vjqeLL-olOV3pd`vjqeLL-olNyaN{l9cndeaFWh(w zH@+|2cndeaFWh(wH{QaHw{YVv-1xq5<1O6yzHs9$-1xq5<1O6yzHs9$+;|H&-olNy zaO3;Jjkj>)`@)U4aO3;Jjkj>)E!=nuH{QaH?+Z8H!j10>H{QaH?+Z8H!j10>w~rS7 z>A(NKfBM_M{`*^*e|^tQ_7DH|+h2cv`SSH2zy197^?fhqKY!f9;Omd?KfeF++aLbr z+fOj1_d6cERm7)!|7+6kLw$OCdlzQ6_y7BU{SO|UpRR~}zdYWzo#v;v>;3O!$EV-F zfw7Js^0&YK{PyGbzyI|8&+qpPeemdCe*NqJ$b245;lJa5`v16J#ee-{|F5^L$m>6D zTk-b4+$`h%@q^bMe*b&si;tI|Kz;@HH@?6467DDe7oXrhBfajrfx0F?$ki{-KwXm`r0W-Fpsva4zv6=o z{@N>e5W`=50`-^iK^T8=2I`vpAdbH}kl z$nh`EK>clgkmg^Ufx0F?$n-DHKwXm`B>NX8)LYw`noPoL^JphsyXP~ah z53uC58K@KZAQ#-j9~?q>@fE07@`D2jFU~-{k{=vScyR{mmHgnK!izJIFC=wMmLIRm z$b$nAul)=k9D{iA3Di#)4~|5u8;>8(=SE9I{sWti0sg0L@ z0FTaYy!Zt2k3jrIcyyZM#g`!dBG`kw9KARL@fX1!-0|qe8K}Pq;@7oDCq`a-1rN@R zy!Zs_m8=rsqmv{rz6AA3esHSf#Tlqq@`Dp5FU~-{lGV#VUeq6)S$XY8pc3Ju^D8gT zK>V2f=q$^NGY~&!KRVa);ta%(*^kb+yfy>%omC}5Q;G1=shJml1oF>7y^>WTd~}-T z#h-z?COfP>Jx-S)JE@1S%0eI=A!U4CEi8`sqR?!bj(MUi=xTYx0A$ zJ+I9`{TZr6_~@L_i?2ZafTR-Pqmx4~z6AMSLH%^065*p0MKAsg)HPZC5vWA?=#0{9 zKLV8qADvfvaR%y|{NU`;i!+e_8P!i0DiJ<9)AZWUKz#)&5k5K}_2Mf~*JPClADx(b z@g=Bh@`KY;FU~-|4%AN{}x3bs%6;&d%2YZc3&@gfnLN`$5op*{H9A+P--s6=QF{*K6tGf+QWJouX;FU~++ zlOOzjk(Xv51}L?`z5m7UySKY}ZT=5#@Al#oh#yY;!L8n2oPqc;+aKKa?Zp|0zX_o%(B)r7^%S8$xXIp&{|M@u{NRRrFU~;ybfFTVtEUL%e*~2X{lV@0Ui(K-iO?V1 z+V8~~sB7|r+x)#a19eS)aLd0JXP~ahDiNw123#dVS5Fc8gBuFI_K%YDuErh_leK#Xwm+mcFz{@^x-ul)#ABJ>BhG<YA()p{u6|{lTpc zU;G)UYx0BJ9=P}gLY2wgoz=nrnT_~Oq% zU6a*cCG`}ct3>E35xPo*t`ecErwCmoLRU`_x=Mup;7=dD_N$=&COr59N-s`8E!rv( zx=Mtu5}~U^=;|p#SBcQoQ-rP(q4)_;Ef=8@VW>nH5B?6+OTUVt5@9^}n@}&#K>TnL z>M6odi7?btgrO3ln$SWe!cd7YR3Z%Z6k(`D80w8iLnXpci7-?m43!AgmK!P&hDwB? z5@D!B80w8iLnXpcZ!{Vz5r(>@GgKl}Q6W?!43!8&CBjgNFjSoi6$L_Vv7z2*G*luC zl?c^)WQP1fTmF0_zpco>&H4{f{hX|xA`F!XL%q>xs6?nTYp6sRDiOZ_B@}HxW2i(J zDiMZyqtQ@_Fw|3op%P)JHyV|HnN=bTl?X#6!cd7Y)EkY4N`#>jVW>nH>M6odiBNu5 zQHd~AA`F!XLp?C>9 zA`F!XLnXpciBSHWtrB6VrwBtO!cd7YR3Z$O2ty^pP>C>9A`F!X#kV!}`(CO?|*(({8vVcRU%B4 z2va4(REbb6V5t&eszjJ75x)P4Wbv0#CBjsRFjXRa|C7+_&p_PLnJN*gDK=FiOqB>z zCBjsRFjXQ!$;*NMub{5UDiNkigsBpts-&qBVX8!!DiNkigsBo?szjJ7 z5vEFnsS;tTL@56*szjJ75vEFnsS;tTM3^cOrb>jV5@D)Dm?{yjV5@D)D zm?{ybN`$ErVX8!!DiNkigz~2ol?YQM!c>VcRU%B42va4(REaQEB21MCQzb(2n}Yf& zxl|%7l?Y2E!cvK_R3a>u2umfxQi-rsA}o~%)vs%%5@D%CSSk^gN`$2nVW~t|DiM}S zgryQ;sYIxDgHnmGR3a>u2umfxQi-rsA}o~%OC`cmPZ5?%glfPll?Y2E!cvK_R3a>u z2umfxQi-rsA}o~%OC>_Jq?SsAr4nJOL|7^jmP&-B5@D%CSSk^gN`$2np_=qdCBjmP zuv8)}l?Y2E!cvK_R39sqB}%QqrA9c_mP(Ev@^?=8qrUtJOMYXM*AxApQQS&bDiM}S zger2DN`$2nVW~t|DiM}SgryQ;sYF;R5td4Xr4ph1tE3WPsYF;R5td4Xr4nJOL|7^j zmP&-B5@D%CD6i=%5td4Xr4nJOL|7^jmP&-B5@D%CSSk^gN`&IaBlWXIt3=o;5w=Q% ztrB6YMA#}3wn~Jp5@D-E*eVgKA97nI!d8i}RU&Ma2wNq>R*A4xB5aiiTP4C)iBSEv z)hZFTN`$QvVXH*gDiO9ygsl=`t3=o;5w=Q%>ev2OiLg~7Y?TOGCBjyTuvH>#l?YoU z!d8i}RU%aTQ>#SSDiO9ygsl=`t3=o;5w=Q%trB6YMA#}3sv)#hB5aiiTP4C)iLg~7 zY?TOGCBjyTuvH>#l?c@$-zpKdN`$QvVXH*gDiO9ygsl=`tH9Q(YqXk^RT^qJ#l?YoU!d8h; z{!LJcuvH>#l?YoU!d8i}RU&Ma2wNq>R*A4xA{5^f)D?NDM7UHUTq+SRl?azggi9sD zr4r#%iEybzxKtukKN>8R2$xEPOC`dk65&#baH&MNR3cm|5iXSomr8`{XVj$<;Zlik zsYJL`B3vpFE|mzEN`y-#!le@7Qi)Lgvb0npTq+SRl?azggi9sDr4r#%iEybzxKtus zDiNyR+Lua%OC`dk65&#baH&MNR3cm|5iXSomr8_7B| zM7UHUTq+SRl?azgglflJDiJP~2$xEPOC`dk65&#baH&MNR3cm|5iXSo)u6sqB3vpF zE|mzEN`y-#!le@7Qi*V>M7UI;TPlpGva{qMEq6dUzsTQuRbJ8b3u&~! zj-e9cQi*V>M7UHUTq+SRl?azggi9sDr4r#%iEybzDE=a-*YT)CI4Tj2N`#{l;iyD7 zDiMxKgrgGSs6;p_5vmL7s6;p_5spfPqY~k$L^vuDj!J~165*&sI4TjU@9d)z;iyD7 zDiMxKgrgGSs6;p_5spfPqY~k$M5unm9F+)1CBjjOa8x23l?X>A!cmEER3aRe2uCGC z^}EifL^vuDj!J~165*&sI4Tj2N`#{l;iyD7DiNw*x<@6#QHgL=A{>U;h66FF*hE+_pV~d`%K?+vXr&lZ4#1Imp)}LAPxV z@-<1=ZJUF9O%gb}odc1x?HS~ClGxcc2YH<&dbZ6$UMGp4ZF7*m-4&Z4UA}NhoZagS<`>%(|Te(X8zmm&iA zZ4UA}NyuoMgS<`>^tqh_QJ?J@wmHbxr0h5sIX89tDrCpG$jPZ~4(faNMb1ubb5P&AFLHWn zn}hn^eUbB1w{wsk=aL=gB1fRMS0S&H^K)WmbASJd7UH&leRg? z>m)gvw9P?YC&}TYZ4UA}DLc+Z&KKRj3fXZka>8hvgS<|XGe+AS+2$axljP*jHV1i~Bxiqa=O8=IB|FYVj_+)*LS84y0iJCR@;XV5@N9FC z*GY1SXPbk(PRfpRk#jh=uR?a5i=4#S<{+<=-+IG1+lU zb{r%3&Aa)xFxhd8+&OQXgL+LGxp&?+2lbjXa`(L3ImnJ(uQb{vz> zOyE9FrZ#WXCc2JdVkZWAb?%lO4z8^Ef6uj>+e7Om-ZT9mizHG1+lU zK96Iv^LT$$1&M)Og@ievg4TS zI3_!e$&O?4c^s1+$K>-kCOeMF=W$GS9FrZ#WXCbtaZEmsW3uCzd>+SS$1(Xlj>(Q= z@_8JS9mizHG1+lUb{vz>Oxhk7KgqnCv(vJC4bYWAb?%lO4z8^Ef6u zj>+e7Om-ZT&*PZvI3_!e$&O>P-PNU9G4x(Wyf*Zaa?vBmmSAt$8p(l zTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$I zaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v-- z$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU z9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Z zaa?wskR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv z#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x z9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q% zcAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7 z*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$S zWXB2FaYA;SkR2yv#|hbSLUx>#9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}i zlpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7 zQg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbS zN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(Q zCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^K zoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycASzOr)0+|*>OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoR%G@ zWyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkq zmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$Jd zT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f- zY1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHS zoR%G@WyfjRaawkqB|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6 zmh3o7cAO^MtyoFzNXk{xHsjRTaI7@b% zB|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-9v zvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-8^*>Og8oRJ-8WXBoV zaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b z#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$ z9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10 zcASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42 z*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8 zh~wDjFMt33m!E(7@%{T(dn1msJ;U{fAHV(f^LJnV`0dwUzkUAY$G1O!{m=jZ%hw;@ ze|-Ptx6kHp?>7zmdfD6iH=@t)V{Xr2@-w*n3?V;5%Fj^pGqn5+OMZq?pMf~e?G;5F zXL|$%jm+fUZ4UA}NgQXJgS<`>$Jyo}uam@aZs$N8XL|;Dog|L4%|Tu#iQ{Z@ zkk?7#INKcLb&@#F?Hq{XY|kLClf-ehImqiIahz=q@;XTzXPbk(P7=r2<{+<=#Bpxt zKpba#26>$%jm+fUZ4UA} zNgQXJgS<`>$Jyo}uam@aZs$N8XL|;Dog|L4%|Tu#iQ{Z@kk?7#INKcLby9YmOLm-# zoX5HOIb7sC&h`xII(d=vINKc5b@C$Take?A>*Phw<7{(K*U3wEoJ)3`i=4-~{W-{v zbCL5n+Z^O;lAOoc<{)2_^K)WkF(7|eeb@=d7Nzy>U;M^ z&f{!zP~W>RavtY)4zlB1vg2IjJkIti89p@tFac*CQ>^K)WkF(7|UMI!j>B7dek}`zmC| zxyX5(Z4UA}NzUVJbCB0bavo=!gS<|X^EkJ2kR9ie9p@tFakf_>uao3F&Nc^moh0XR zwmHb_Bsq_>%|Tr!-w))7rzcEy9FrZ#$bHprev&3Tj*^LT$$1&M)Og@ievg4TSI3_!e$&O?4c^s1+$K>-k zCOeMF=W$GSocB|%>Pjm+j>(Q=@_8JS9mnMJI3_!e$>(uQb{vz>OyE9FrZ#^LSnj>(Q=vg4S19>-+IG5I`>$&O?4c^s1+ z$K>-kCOeMFj$^XpnCv(vpT{xTaZEmsW3uCzd>+SS$1&M)Om-ZT9mnMJI3_!e$>(uQ zb{vz>PNU9G4x(Wyf*Zaa?vBm(Sz8-@Z;PdoG{HaoKTPb{v--$7RQH z*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x( zWyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vB zmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(l zTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$I zaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmMc$#|hbSLUx>x9VcYR3E6Q%cAStM zCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4 zoRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2F zaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv z#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x z9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcbSN!f8y zcAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS; z*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3W zWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}i zlpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7 zQg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbS zN!f8ycAS(Qr)0+|*>OsCoRS@OsCoRS@OsC zoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@M$7$JdT6Ub49j9f-Y1wgF zcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@ zWyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkq zmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$Jd zT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK|rwjRTa zI7@b%B|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgo zvt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-9vvg0h-ahB{j zOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNX zk{xHsjOg8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwN zXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8 zoRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoV zaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b z#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$ z9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoeIR5#|-@pIm=bwIj|NhnAh~sR}aQ)%O zZ@>Ng-IqUp`}NmvpMUxB?ayET^Z)Cahz=q@;XTzXPbk(P7=r2<{+<=#BsJc$m=9=oZC4N$Jw4iUMGp; zY;%y;N#Z!$9OQM9ILm+fUZ4UA}NgQXJgS<`>$Jyo}uam@a zwmHb_BypVEIS|L$oCahz=q z@;XTzXPbk(P7=r2<{+<=#BsJc$m=9=oZC4N$Jw4iUMGp;Y;%y;N#Z!$9OQM9ILm+fUZ4UA}NgQXJgS<`>$Jyo}uam@awmHb_BypVEIS|L$od6Dxt+Z@z&@{%3rk{#zF=W%X-4zlB1^PU~I2SpOv%L!W zy_=lJ+2$axljJ^K)Wk8}GfWXHM4d7Nzy@;XV*<7{(~*GY07 zXPbk(PLlIDw{wsk=aL=gBIj|oS0S&H^K)WkF&iBd7UKZake?g z>m)gkv&}(XC&_u7Z4UA}DLc+Z&g0y^3fXZkavo=!gS<|X^Elfa%|Tu#$$6Y@4)Qul&f{!zP}fP59mizHG1+m9+*j@9 zCuy?d7`d<7HV1W`G;&|HZ4T->`F`d~Jdb0t^LT$ z$1&M)Og@ievg4S19>-+IG1+lUb{vx($K>-kCOeMF=W$GS9Fx!EnCv(vJC4bYW3uCz zd>+SS$1(Xlj>(Q=@_8JS9mnMJI3_!e$&O>POxhk7Kgqn0y|`WXCbt zaZGj``*563|NH;zVBTA=l{BA%^&~p zFW-Lh*ZO{Mo41Pil%4)Q)Tg(%_ZIJN~Et_YI2v`2XCQ==~Ci|F|>J z+y8QRq`L=)o;~jF_rRwQ1^-H!_!CJRj{Xzyekb)A9=UtK7Hg}S$O)$ zyY=?zBkxw*XOF}e!u`zqbVxoXzWDCv+^4g}7vKGS`*civ@!ik0PshX;-~BxMY)t&m zdB5jA9TH!B_xtVBG4aZGzt=t;6R&*t`|Q&(@yd6<$37hsuYC9)<$kz*Hre~Z_UR+> zugd*E`*cja^4$-zPshY7-~9mlbWFVR-4CwM#>79``-S%Dka*?0Uu2(-iGRuN7ucs` z;+5}yaeX=_Uit19)~93Ql@I@b?x)yilf9o{pFR?=eD{;<(=qX{=l#U`bWFVR-A}4d z$HXh&{e=2#O#CwMH`k{_;+5}yV|_X%Uit1f)u&_PU+nu0_34;+<-6ZZpN@%FK0Mj` zarN0`??=_AkHjnA{hJy+9TTs7_itkKbWFS?+`nnj(=qYNcmF0u&&I?<-ro)XbV$7N z-QWHGbWFVR-M?$m(=qYNcmFO$PshZI$^E+$JslITeEfkpGT-0s{_JJm-{$`Gk@(`f zzpef0nE2wmzm5IrnE2wmzis{LnDiQ=?_;>~J=hoj#1|iykp~;xpUxIveD^oBKOGZa zeD^o7KOGZaeE6S}ubKCExIcTDSVkV~Xn#5;{i5<<2m8}8=@*p;JJz3$NxwBb*rEPx zO#F6)WyG+IJlMki^kwqbi7!4ZBM-KyKYg8e<-5Nn{ppx^<-9}=*PJlKT(bhi9wi{Ey! zj6B$6{`7U?l@Gs6EF%wgp+9?>SVkV~I)6GQUit3tGJiTI|5w3pyI4jZ>>_{mI`L$& zj6B$G{&cc<<-;;!_iqpMbhdcqyMH^Nr(^PePyDuvWd!g3GAtu@|NcPFezaId?Ed|L zo{ouEzWew8c{(Ou`R?EE=joXE;=6x;pJ!v@_v`yN1bR9oZi`q(?EW8ccsg5r@!kJ} z4Nu3!7vKFq(C~CjeDU4?gA7l`qy++pmiIs5eebRV&!&3+PC-u}N#Cyh{+)rIj!7?C zzkes7r(@EK_Wci@<9`);(fa*6{XBb}boFw4X2h|K`2AY}J$;$@xAXq3f1Zv>KPx(x z5yxjn9LtE~Gb8u!Sn}*gi)F;Ij5wANzkjcvr>_&QeE09|^K?wS^4-6e&(ksS%6I?X zJ@{Oc;&l)cb=zX;*}4}2zE=yGUE8mh~K|m&$AybmJz>yd!DCb z;+60I?RcJ!iC4b+x8Hd>CM_*|fyXl9_wUd1>}6sZ@%#7Vc{(Ou`LK*QJ~QI?@3-^x zb>fxp{{3~HjfsC#u#7l9GvXgN;5oi~iDMaYEF+H3j5wAN$7e?T{vSqodI{l`4`1(C zMjXqCV;ONQBaY9EIF=E|XGR>$h~qOOj%9>@Q^7Lg_{@l78F4Hlj?auZmJ!EiMjXqC z<1-_UWrTj9!QXWQ%Sd1uiTi&$;mKP{U>S+~e=FhXnDmQE;4>qEWhC&Kk-##7b4g$s z2`nRlWhC&Kk-#z%_-ON4BY|Zku#5!0n^s^M34AxLz%mke zKUH8E!O=Fbj0BdEz%mk8Mgr&i!0k0~I179?t-vx8`1=OFS5)v%i~OyguhaaOO!x`m z&wTjINMIQWd^fGYGJ@$Su#5zjk@s6k!;MCPWhAhS1iqVAU>ON~W+bqT1iqUV{~g0J z5?Dq8%Sd1u34AxLz%ufF+jja(hGiu1nUTOU!k1|*BY|Zku#5zjk-#z%SVjWNNMIQW zEF*!>jPQ4QEF*zsB(RJGmXW|R5?Dq8%Sd1u2`nRlWrTlN#4-|CMgq%7U>ON4BY|Zk zu#5zjk-#z%SVrgNTv5X{^k;F2RSVj`dNa8aiiDe|Qj3kzk#4>`vvA+M|BluxD zv5X{^k;F2RSVj`dNMadDEF+0!B(aR(=#f}P63a+p8F~NHVf0r8%Sd7wNh~Ape+~`5 zPP(5ev5equmRLp-%Sd7wNh~9YWhAkTy#Kj9dI@0}Nh~9YWdx_!#4?gtMiR?NVi`#+ zBZif4{~ul2}F(%Sd7wNh~9YWhAkTB$koH zGLl$E=qFqJiLbDX6qb>~GE!JZ3d=}g87V9yg=M6$j1-m;{H39=j1-oU!ZK1=MheSF zVHqhbBZXz8u#6Oz5&XTgu#6Ozk-{=kSVjuVNMRW%EF*MPV5!EF*mXX3TQdmX`%Sd4vDJ&zneifFH!ZK1=MheSFVHqhbBZXz8u#6Ozk-{>918QLz zDJ&y}Wu&l-6qb>~GE$ff3isZ^v954w!41Cn_hkMhhkrulA20ZO1OLSq{#EF1n8Gqr zSVl186qb>~GE!JZ3d=}g87V9yg=M6$j1-oU!ZO0IcPt}?Wu&l-6qb>~GE!JZ3d=}g z87V9yg=K^~GE!JZ3d;!nh=AX88_P&z8EGsdjb)^< zj5L;!#xl}aMjFdVV;RAp+ZxMAV;N~IBaLOGv5Yj9k;XF8SVkJlNMjknAN?E4NMjjk zEF+C&q_K=NmXXFX(pW|s%SdAx!QUPm%SdAxX)Gg+Wu&o;G?tOZGSXN^8p}vy8NmUf zv5Yj9k;XF8SVkJlNMjjkEF+C&q_K=NmJ!^r8p}vy8EGsdjb)^})&WMLUuSVk6>k%eVsVHsIiMi!Qlg=J)6 z8Nnam7nYHQWn^I)Sy)CEmXU>JWMLUuSVk6>k%eUhe+OJxMi!Qlg=J)68Ch6H7M78P zWn^I)Sy)CEmJys07M78PWn^I)Sy)CEmXU>JWMLUuSVk6>k%eUhm#BqhWMLUuSVk6> zk%eVsVHsIiMi!Qlg=J)68No4gVHsIiMi!Qlg=J)68Ch6H7M78PWn^KdShz9c9=>=X zGBQ|32Fu7`85t}igJoo}jNsL4u#60rk-;)DSVjiR$Y2>6 zEF*(uWU!13mJ$30I9Nso%gA6E87w1%Wn{3743?3>GBQ|32FnQk3^iCr2Fu7`85t}i zgJoo}j0~2M!7?&fMh43W{un-3Mh45sU>O-KBZFmRu#60rk-;)DSVjiR2>vEFSVjiR z$Y2>6EF*(uWU!13mXX0SGFV0i%LtAEgJoo}j0~2M!7?&fMh45sU>O-KBZFmRu#DiI zG+0Ik%gA6E87w1%Wn{3743?3>GBQ|32FnOel7nSru#60rk-;)DSVjiR$Y2>6EF*(u zWH4~>s?GB>Z;Lz(@o)9~D;fVh%|8tBcQU>V9bH4$=P!T%{+FMB`tkky*X!*_Dz=AS z2N<|L)c8YB{xtA5YVc7{{#MsE>d7B-*&cdwx3le`C&z)dhn{%Z?L&{~VS6aQnvU>c z8BtgpM?J!X?V)^aI^u+FRK7MHfx5Z8}1NZB)KC9o7EZQIB%} z_E5ey9R>ewRK7MHCI4+yzBV02|7}#hHXUXE+fk45{q|74HXQ~0ZB)KC9VPs2RK7MH zMf`14zBV0Y{B2aeHXZf&+fk2#{Ps}3HXSATZB)KC9Yy(VRK7MHW%+GXzBV0&`P)&C z0{iw*zBU~t_H9(YHXTLwZB)KC9cA`yRK7MHh4yV!zBU~d^V?C6lKJ*fzBV02^KDeV zHXUX2ZB)KC9fk94RK7MHrSscSj}rLyP`)-DMeuD@zBV0Y@NHDSHXViVZB)KC9i{MX zRJ=C5$8g$*ucK}IHxs^&_U&&E#aGjHv~zzO6<eH)dpO}vF)N4w2$C(K*;b+q4n8fUoO-H-Pw^8}p#9R1vv>*I-!n}oF zM?1o|QTf_*v?qKUm9I@lyTZ3o`P#(yg&S|-##^}Y7H&s3vAOvP8*kxubQ_y(RD3nr z(T!}jQSsGeN4K)M9hJ9m<1O5H3pd`vjqeLL-olOV3pd`vjqeLL-olNyaN{l9cndea zFWh(wH@+|2cndeaFWh(wH@+|2cnde)!i~3Z<1O6yzHs9$-1xq5<1O6yzHs9$+;|H& z-olNyaO3;Jjkj>)`@)U4aO3;Jjkj>)`@)U4aN{l9cnde)!j10>H{QaH?+Z8H!j10> zH{QaHw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3pc(m+;|H&-olNyaN{l9_`Y!CE!_CN zaN{l9_`Y!CE!=nuH{QaHw{YY8!i~3Zxcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>x zcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T) z;4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAH zgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAHgSYVDEj)M& z58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lF)xA5dG zJb4RG-olf&@Z>E#c?(b8!jre~E#c?(b8!jre~E#c?(b8 z!jre~E#c?(b8!jre~E#c?(b8!jre~E#c?(b8!jre~2Lq~?{Dv>@b&%AE89Q(+i!pU`Q^*kfBg3I+t=&O{`u?w@weap^5u_T{_ro~ ze)3`8-v4{=d!OF7^1R>V)IYtwUGF>k?fw7$$A9m4TQ&Q1z2Dv8{m&s?Z*TqS?RqCO z`}F%aKIH3<{M%oDe*5wJ-+%i4=dtU-!+!boum2Ab%vEtl`-@ ze&m1s-Fon&O+4m*{he_zX5%sc>#vN1F^7(cFNBW|Sm%@d_@~y&d0?6oFAXZz>xTY|M)Zp#>6Y%$7eAxCSLhIK8b-b@yhqH zCjpF!S3dlY^0AfSe6k-q8Neg)ugb?h1~4XG`95|rfHCpP_pyfojEPsij~xu>W8xp} z$Ib^ZBwqPG_C0_x@h{oOt_LtCUim)uJb*Fr%J;G30gQ=PKKujv*eG#6*^hk^;E{Oc z``9G`#>Bs#AA2Ogn0V#;*dYPN#4F#&{)qE2@yqAH`Ivafk6jyJNWAiW?AZWg;+5}X#|9V^uY4c-HNcp7G5Of70mj5DAAcZ@%pZF^ z&R^!o77y@9eDQs3@Bm}ti|=E52N)Ayd>@-Tz?k$JqVHq4^4Z5;lH(U?A6rSlBl*ju z7p;BlBLTCe7p;BlA^~I4i`G8&kbp7qMN8j04a>+oD?-MxkBukiKOih4_Oa~*jEOJ4 zk4-0FOnmWuY&ijA;)@TjC49~N*r;;;GO>)<$2Ju(CjFvfADdLbnDmQ^eQZ$yW72O8 z_HkJAd`$dygk{9AjJ$7`p=&0V5&Jmc34XMA<@-3^3C6@L-^bxjFeYC4@b5L25&Jk2 zdj2x8jM&G4P%tL{3E_(m%ZPm(1_iGZuY4azLC?p;KOih4hGoP)4v>PEiC6fKQ~OTXUTd+z5(>N zDj%l;FG~ z`TXVc_dnn^06(oDKVSc!!gFWJ-TMFf{0rE>uK)jg+%pIL<=dP6%WVL1o!>NLck;!E-sBnF?a3Eg8BCtR-JX20vBBgS-0jI1+Z;@u!QGyG_g%aQZs)Gx zBEX&e2kw3tF9O}kGq~H6F9P1lGq~H6F9P4mGq~H6F9P7XGr0RETm-_CCvdkXUj)RH zXK?q^d=VH=p26Lod=Vf|p26Lod=V&5p26LoeD^iH2%6`v;39CI{0Hv##y0-3ymyC2585#iMa zA(NMIwd`xtHK>M0mB$$mAK^ei859$#)~d zt1U<-UxT|n`C{$q+!@?`4ev&TSG$x%xcJ4K}dj)qR z!f-bt3>Rx@CtrfQzZEXl)=r+m-JX20)^_d;?mipbY^XQifxAD}?v8U_Y|AtC^56ZX zcCks%T>YE(-`$^ScLzD|{z$t!#(DFb?CvkLi_Lwe-u}D4&n~w5nX7;I^}Bid-u-QM zu?^7N_22BicYm1OeEIJFEW10nd9h*8)XRVOH`(2vWOs))FE$gJyZ)QcfEQZ}&DFp8 z@Nn}f{_bzFi*1LdF8}T?v5QTJ=IY<+a95y91hce|+5?&%FE7>+W!7y?OiI9nHL1{_bGr#fC^zpZ>dJnHSq5&DFozeJ?gk znyY{F+w)@Uq`CTc@1L6w4|fm0IgNRD81wEd=EYu1Q*YnhNz99#m*(o;6CgYxe*7?JqX|dH%tz z>5YFz$DKC9;emeS>EPwC=4p;QJo1#Phew`%(+`h41)AZJr|ofg!ogCKWkLP(JIjqT@?|dqBSd%;7`BpKbntYk(Y2&aY zcfRw4aafZ(-}weG!*UUNzN%|flV2cCMlN>N7@jP5K2An1HqjWK zt-rSXwadxK#YP#!>*UVIm&wV<#by|z%j9I_V*86>P40Z>E3Jk#{axX&T~0e6`f@Y`OEDuaFwn^!Jm$b~zd0>94@aNH|~pG5V>~yk;bF zG7@>sNaSQB@|qEUX*n5*=lkQ0-cC+N;`yF}BDyXSk>4Quk(F8{9LWF(&NO*gtsPDbMS zessf{-1#^eiM(bcp6@$1yiV?X=X=eKYVs$Alaa`4M&kLNa>L8yXIoB2BCi>VoQyo%iJXi?UNaIo8Hv1RByutmdCf@VWW;}|bVg=QMj|I8 zk&}_g$w=g6B=VY($jM0LH6xLe5q+TH-@1vDk;KVJ;$$RoGLqi>rPUuQiIb7U$w=a4 zBylprT#`5$Nt}!%PDT; z-lzRTcHR!#T1#7k<7_R z=46Bepv=ig=42#uGLktN$()R2PDU~(Bbk$t%*jaRWW+xyoQz~nMlvTOnUj&s$w=m8 zBy%#7IT^{EjATwmyxDRxk~ta4oQz~nMlvTOnUj&s$w=m8By%#7IT`WqYfeToCnK4Y zk<7_R=42#uGLktN$()R2PDU~(Bl={^Pke=wk;2JH;bf$6GEz7hDV&THPDTnRBZZTZ z!pR8#XegYF6i!A8CnJTEk;2JH;bf$6GEz7hDV&THPDc25XW?X|a57Rj87Z8M6i!A8 zCnJTEk;2JH;bf$6GQxCGI2kFNj1*2r3MV6llaa#7Na19pa57Rj87Z8MuznRzMhYh* zg_DuO$w=X3q;N7)I2kFNj1*2r3MV5BsD+b}!pTVCWTbF1QaBkYoQxEX3<`U1VXP}G zEo|_`e<%Bo9DhRf#|!^%@DKKlcSSd-Dx8cIPDVJ!DV&THPDTnRBZZTZ!pTVCWTbF1 zQaBkYoQxDsM*M!~WTbF1QaBkYoQxDsMhYh*g_DuO$w=X3q;N9gEt8Xx!pTVCWTbF1 zQaBkYoQxDsMhYh*g_DuO$%sB8@Rx4oWTbL3QaKr^oQzaXMk*&Gm6MUm$w=j7q;fLC z&ux{Hk;=(P z(8|e37cBaQ#U_Mb=oZ0ipu{;lFI;l}%^ zfAphrGQwd@woygBiRn$A~e1L6GQF|-5R_?6l z!)v2UT=+ zYNJ!tJMMf|ZB$Y3IDKu-2h|2=dOoK%I#BPp^C`7aMZM$BXVgX&^;`9PLTyx0zg5rY z(*_mw63?g8Mg{f9^7(AqsG@$Wo=>KYD(dI>d@gNNQG49^RNAPb_BcJ$^O3Z{nVwIi zjSkcvcRr6cs;E8gd>U<3Q5(SdEZV4|_PFzzoJf{tQG5_(L3wh+{pNIQ( z{^Rd)Z#>`NzYc%=^iKa`g5xc{olJhL9P#bDW9bk%=G()~Qk`#4(o4sD`+`|I=G*i0 z(lOt@R+f(W_SC#|%(pL-rDMK5x-K2_?JH#E7Oj|l zmwF5HR!(ip@s^H(+j^UdSgHeEXUpuC>Oj}oc9>YI16^m^Rbr(Mylh)4w^RnY&bE8R zQXTjxY&%9Q)q$?F_CssmkTOUzd4z~yW?*-{zkI$JunR0q1wmWeIZfsfplge}#9uCwJ|OLd^@z^QG4 z*UG7FS=Z7r&~>(iYpD)&oh{c|sskU>EzMf016^m!uvY3onJu|mDg#|-%d3{^K-bw) zs--&6b+&A3sSbR!w?t~G4s;zk1W0g8pH?ns3!avafm>&bo0jUpt+RzpOLgGZ*`lST zI_vkr`ga1TPT2M>Sh$$5?O3pMj9kw8%@($uo0raQ{bmc>Zp}+|)^E13?a;hb2X40Y zubu$@9JZa9S1xDUgL&x~xOKLDmzV0mt+Va5yi^Bnoo#>Rr8;oyz$aTe)wcX(<#NEE z!?x&Tsm}U?b=a1gEY(?munyY-lchTAPrPAUR&&B1?6k>%hwf{v5UiAuE>y{v5VtAWL=RHGnTH@aM4YPrP(J&~>&w ziC5~tO91{Hz@Njm_wdr?K-by!8(yj-uN!<}fj@_BU*VDnfv&Ud6TDPMUTgTm0)GzMe!wf&1E&W59KfH$w(sxK5w zyg%@T1^x`vAOZY2Y}-PvylmjlVcQIHsSb3VZ41byI?#2tjUSilz^$`w_qb9AzT>t{ z9+%31AAvuIZCA&obAwxF+skpO4%|B14vtH8;MUppZCt3c-rwP;c?5rs;LmZ}D|h7u z*#3Ut(lP5dTipI;;8LCSo9(&H;WBAN@aMSwZNQc5S??ba{5gU@NATwe^Uo3dIl}yN z1b>b&{~W=eBg{Vo)J5>;2>u+wpCkBlg!$(P{v2WcIf6e&c;b!V&oD0>b&|GfRF!j_;ZB$=eYf?yrtI-o^`;VBg{WX z@Mrn-fImm@=Lr5BVg5OSKS!8a|C~mF#jC4Kk&A4yMaH; zBNg~_1b>d;&k_7N!u)dte~vK!9KoL>%s)r)XL+&)e~vK!9KoL>_;ZB$=Lr5BVg5OS zKS!8-&k5$A6Zmrie@@`f@H0DsKPT|#1pb`B zpA-0V0)I~6&k6iFfj=kkXV8`e{+z&{6Zmrie@@`f3H&*MKPT|#1pb`Bp8?$x_;Uh( zPTheKWFe~_{p5X zpELOL^UoSA|D4a@&l&tVgFk2R=M4Uw!JjkuGssB>f6m~~8T>heKWFgg4E~(KpELM# z27k`r&j4r{{5gX^XYl6?{+z*|GvI3mb<4ml8GdJH_<;qEn&r`2o~h)^RJy2qeCTys zADz$O&l&tVgFgeOXYl6?{+z*|Gx&1`f6m~~8T>heKWFgg4E`*4HTZJ|f6m~~8T>he zKWFgg4E~(KpELM#27i|32L7DEpELM#27k`r&l&tVgFk2R=M4Uw!Jp+j4*WTTKWFgg z4E~(KpELM#27k`r&l&tVgFml7xxtf80e>#w&jtLsfIk=T=K}s*z@H2Fa{+%Y;Lq^D zTfm#w z&jtJ$e*PBl=K}s*z@H2Fa{+%Y;Lip8xqv?x@aF>l3<^@fp9}bN0e>#w&(FUxzMQTV z@aF>lT)>|T_;Ue&1`I3U&jtLsfIk=TXRtk>J&-+sz4cA)fb~H20QJE1fb>B00QA7~ zfb&4})_2bY%LB>-$pgp(#{^&z?d|a#Y75W*`TXzk_8i5n?;h#7)U7^8I3Lgd z_eXsz<=uC0R&MR6KmYjk)0gkQd-wSdJv=TB{r-@CKH4mN z^3bCnv6F`$jp$DvdX%nA9(weHWAf0WXV1w)j~+wj4)r_YQ1~Z{-l*#L;UW7^p0MAC zhatdZRlg4pBZ0}PejgqN1anpWZ9R+&CX4!gco-f`R`q^(7$r|Cae0# z^>A>1va0vP!-40?s@@L|2Oj6D`lTKYzD*YOet0O8--m}m>SR^EoA_JK^)MW+j+na8aJWcf^3WTX$~SO0Tsbj$!h8dV!*vvs zRrv-EhpQ?ktNIPhU#-tz@?g?)?tBkdTudJ7_n`+d;cywo|?H~e^+@B z6Fi7{&hT&-_8=x4E)bb~fxRCdE*F`s>izI=@yKLV?}z?D_aG)5E-ab5R1adp;WCrS zsyALHzYjf#35QEiCa=}|;o*XmxvKsuc@PskhzW;_RVFXhd;j6qNt0D?yu$vy>_JR8 z+<9d3TD>3orFsw(4p*ShU8)B$;cx}&WL58nhbzz~tKN8X{CnAhm~gnFYwlY8d_9N> z9>j#h6izI=1=wU&?}vvg!X~TUcwhZ{*@GCLQVSl$gu@kNb1$$5G2w7U*<@Ak zhleZ7CaZcsJX~=$S=H~u!xd z@o<-`xohQ?7CnfG9>m1M9k3=Z)jzEs#6({a6FrEDz9J@i5EFexjC*qQASQYc6FrED z9>hdn5feR#iM}ExdJq%+w?_0J#>0tt<15{Rn0VuZbLU$9d)ZgSL=R%3uZW2r#6({a z<4ITaASQYc6FrED9>hdn5fcx0|C)P{@E|675EFexO!Oe;#;4VTnCL-F^dKhsikRp@ zO!O5o@$gST%-zBs#6%BbqOXX#(fU1zi5|o}cRS%9f*!;~Ul9{Mh>5-;CLV63H+Ktr z5EDI!x$zv~K}_@@CVCJPeML<4ASU{XnCL-F^c6AjaI3z#TiAn`8xN%(#6%Bbq6ab2 zgP70G=-1vp#K}_@&G0}sV=s`^M6*19+nCL5Fq6ab2SHwgQ zV%Q`6*K+b8CV3E(Jcvmi#3Wx4lRSt?z9J@h5R*KJNgl*Fy(AA}k_R!#gP7ziVv+|j z$%B~WK}_->CV3E(Jcx0}OCH1|4`PxBG0B6NgRMVjP8&2QkTm znB+lB@*pO8PLP~-lWSaZKuP|aH~G&LPZ-jTN6Q;e12-D@jnCYjmx(8DlLs-$gP7z& zO!6Sc@Rc=8}7c@UF4h)EvABoAVe2QkTmm>VBC4`PxBG0B6NgRMVv+|jH~O~+G0B6NgRMVv+|j$%B|14+9>= zBoAVe2QkTmnB+lB@*pO85R*KJNgl)`4`OaSS$YtYJcvmi#3T=5k_R!#gP7z&O!6Qm zc@UF4h~Xb|{wpPW5R*NKdH(Gp{ehD`h{+zrWDjDp2Qk@$nCwAJ_8`W8@;?8B72gpa z#AFX*vIjBQgP80=O!goqdk~X7h{+zrxSwPXVzLJ@*@KwppM>KNjt4Q>gP80=%=1s( z`L*&A*X%)zV_fziCVLQ*J&4I3#AFX*vIjBGKdQ(#lLs-`gP80=jLUBJASQbdlRb#Z z9>io1VzNgJ*;P0@_3-1CdfB_;@o&Dz40J%qxawVxZZh%y&rlIlRb#Z9>jR& zls$;a9>io1VzLJ@*@KwuK}_}_CVLQ*J&4I3#N7DYco364h{+zrWDjDp2QkmToy`w< z9>io1VzLJ@*@KuHP1u8&>_JTSASQbdlRb#Z9>io1VzLJ@*@KwuLClSBbPr;(2Qk@$ znCwAJ_8=yE5R*NK$sWXH4`Q+hG5jR#Plv^WnBqZv zKZ>%f`h%!Hhx%ivKZW{3s6T`HBd9-t`U9vxf3nT{)2Bat`m?7$dis;6KY03cr$2W3 zQ>Q<4@^-lX$mvg<{=n(aoBp`zPn-U*>Cc+}sJT69zWepR|9`v!|N7_u_^-DT;>Yk7 z!ax4!4?lkW@ZsaXeERz7&19`{#R0Z_cW~Mj!5y{+uP$A z_J`;HeEt{9b7PzE?vb8rMe1{S=JEW$Kk_rJd-vVjt*Vm;|M|zSpT2ze-Mi0!=;3j3 z%=dr%@$Ygz7pL&I_&@z}x9i`&56`WO-^#~Fcs&1m|I^#^{=;8B|LN=RzkL4u@nDnS z(GdruP{Tvy7&*0r!M)+R9ZaYUk2%4tUS);SuT8`Xig=V(}NSO#vLqw%<5 z9q2ko198JT&~=VR;D&Xe>m2PqFsuVz2VUx<`L@xi9Syb(kAd6zXq0VO2fEJD@Y=8r zbe*GdwP79TI!6O)qdM@i9gU<7%RtvT8bTY^fsew`*x9fSbe*F?vtb?RI!B{r!#dD) z;3YVkA{(9B(fHW#80b1j17pKF@bNhs5gXQlu5&cpGOPn#=O{ED)q%@7iuQ(Opz9n3 zYr{Iwb&kTcVIBC$9R+B^I?#2FLbG8V=sIv}M-kcR)Q-Zj;W5y4jsme^9q2koA=t1E zd`ypmuVEeNI!9sGs1B4l3b=-4pz9okTEjZfb&i6pVIAl?N8#154t%ta0;^#i=sI!; zkl;};HM*RmNNRWt+&V`w)UXcRI!DpdunychM{(1z&iZ|@{+$4-6ON{r1{V{K#+HW1 z$mOixY~g6B`0(7;Z?IDA-V{bmbC%fW|r;AUI@>IvY_&!FYMk9ChO=V-0>@EEvt zj#hUM>%gsZw4Qrd2X39C72Lx*aO=P)TRPRzD(%tbfIo+$b=ku@>kro9XeIWr&iaFO zI9hu>th4^a8;(|6kLtju6#O}WKR*Ne^-cx;9FEpd4_`LuI!CLfhjpOq9IcZc)`6}A zpE&U6aI_YBbUEP9;b`^qu#UV2aO;3ShocqF!|Q>rbF`*;R0m!H@aF*j9FEp44=)G0 z=+R2$VI6th;0p`!xt9# zb2wVAF}fZ&HSp&E{v3{$WehI|y3Wy3jA0$F;LqV`X~pPe z1Ah)j%PEF+pz9nhp%~VIu5+|(Vps=mouj1^qdM>%ceFfWSO#1N{5c#gh8Uh3+&V`K zAcl3|);U`AFsuW&&bH8DVg7l&zr#=S2>u+wpX1TSrGpnb9_?5_;ZB$=Lr5BVg5OSKS!8ga|C~mF#jCEpXJj7{v5%dBlvTK`R54!9AW-B z9&H#oy4}E^BlvTK`DbaO;Lj2K`MK12{nrKfbAu*l{y83P9W=V#z@H=dvwW9= zKR;KuuipmX&k^RIBlvTK`R54!9AW-B9&PzEy4}E^<&g^fIf6e&@aG8r9AW-BfoRc zr36pOV6RD@kK~I{I--0O=rvd$CrjYZ3H&*MKPT{KAov9SoWP%-n<6gjQ38KX;Li#C zIe|YX@aF{noWP&ulK}plz@HQNa{_-(;Li#CIe|YX@aF{noWP%@A%Z_A@aF{noWP$G z_;Uh(PT$d^;a|VCT;LiYP&p&dq z{t|#cXYl6?{+z*|GvI3mb<4ml8GdJH_<;qEn&r`2o~h)^RJy2qeCTz9t^@v@!Jjku zGjMtaf6m~~8T>heKWFgg4E~(KpELM#27k`r&vI9TKWFgg4E~(KpELOL^N*OVe`$k1 zXYl6?{+z*|rMZDWXYl6?{+z*|Gx&1`f6m~~8T>heKWFe~`HlmB&fw1({5gX^AO6+* z!77ErKX*So2A*}mpAY}C{qWq@_hDJT8hFw<{Ok3Di#hzW^}}P<2RjP*a{+%Y;Lip8 zxqv?x@aF>l3=g~o{JDTX7x3o-{#?MH3;1&Ze=gw91^l^yKf~{y0{&dUp9}c&^Dp); zKkydt=K}s*z@H2FbAkEi0{#p?e+&3?0e>#w&jtLsfIk=T=K}ux{8QEI9|iE|0{#pN zQox@J_;Ue&F5u74zcIf4_JBVZ@aF>lT)>|T_%mQw0e>#w&jtLsfIk=T=K}s*0Bj3L zT>+vg@Y@_rw8*bAc^sGLF!=(O&MO}|dadCL3;el&KLd>y@aF>lT)>|T_;Ue&F5u4v z{JDTX7x3o-{w#MW_;Ue&F5u4v{JDTX7x3o-{#?MH3;1&Zf0jlC{#?MH3;1&Ze=acp zTwwmW!2ELoe=acpTwwlr{i_tdt}4twSD1gUF#lY^pDXxt1%IyK&lUW+f24|@3}Cy(&*>?U8@(yirVO7GA5GQkS|49s1@pDXxt1%IyK z&lUW+fGxq&}7@aG2p+`yk3_;Uk) zh9{5){@lQy8~Aere{SH<4g9%*KR58_2L9Z@pW#8Yfj>9!=LY`Vz@HoVa|3^F;Li>G zxq&}7@Mriv(!ie^_;Uk)Zs5-i{JDWYH}K~M{@lQy8~8K)EN$S=4g9%*KR58_2L9Z@ zpBwmd1AlJd&kg(;bfSSjH}K~M{@lQy8~Aere{SH<4g9%*KR57aK&l4*+`yk3_;Uk) zZs5-i{JDWYH}K~MFx)@{!77_rkRX8k`jf|gdES#Rdg<`;(WduweG>&B>jwVZz@HoV za|3^F;Li>Gxq&}7@aG2p+`ymLZ#KAbI{0%3f9~MV9sIe2KX>rw4*uN1pF8+-2Y-hC z(ZQcP_;Uw;?%>ZI{JDcackt&9{@lTzJNPqvjdbwm4*uN1pF8+-2Y>G1&mH`^gFkoh z=MMf1PZJ&dxr0A<@aGQx+`*qa_;Uw;?%>ZI{JDca!$V~Uf9~MV9sIe2KX>rw4*uN1 zpF8+-2Y>G1&+yx#gFkoh=MMhd!Jj+$a|eI!;LjcWxr0A<@Mrjm*}ZI z{JDcackt&9{@lTzJNPq5LkEBE;LjcWxr0A<@aGQx+`*qa_;Uw;?%>Y=P96NYgFkoh z=MMhd!Jj+$a|eI!;LjcWxdSGPI|?I;9|;`DFGl&PAkT>Ma3J3b(her?gU9<1fBF2U zufPBD`SZue+oTQe4th*&3b;FHZg=M0L310W?hcyUvv7CN+}|MB9W=Lr_U@p$T~Brg z&5f$>4w}msUJsfi-`zoSM@*vcu9DmllkB^zBzMFl{O&5r9WhD2yGn9LOiJ!+rAf-& z9V9(s5_5Nzq(@A0?yi#bh)K}hRgxYtNxH9U?kd3@@tB-z-Bpr1 zLd^0pIj8!1dSaH3$w}2+CHU5OOwOwAD#5qLV{%$`R|&o~9+UH`ua(3sA7Yk|$@$aW z=}C{6oIu@Gk{&TRgSx9EJz{bSbyrDxgqY=Ha;o(8^u#P5lXIoJO41`HCrfvgq(@B7 zmhLJ^kC>b;eXS&B`4F>wOiqjLPEUHoN zrzd9ln4ALLRgxYtIS0C{Bt2qs5_DHddc@=`=xZf0%ZHfdV{*20cY4wzCZ{`hm83^Z z&UfxANspME@Z43B9wBD=n4H*rJv}kY$K=fBu9EbK$*Ij zSw6%pACr@qyVH{%F*%F5t0X;QavF12NqWTOJm#*F^awG_$K-tF>*{(Sq7Q23}Ti+%rb~s1~JPZbCyBOGRT}|5VH(2 zXBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZbCyBOGRT}| z5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZbCyBO zGRT}|5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZ zbCyBOGRT}|5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Tj1%rc5u zMls7MW*NmSqnKrsIm;+!8D-8gidjZ6%P3|U#Vn(kWfZfFVwO?NGKyJ7G0P}s8O1E4 zm}L~RjAE8i%rc5uMls7MW*NmSqnKqBvy5VvQOq)mSw=C-C}tVOETfoZ6tj$CmQldBxae!ER&dJ60=NVmPyPqiCHEw%Oqx* z#4MATWfHSYVwOqFGKpCxG0P-onZzuUm}L^POk$Qv%rc2tCNaw-W|_n+lbB@^vrJ-^ zNz5{dStc>dBxae!ER&dJ60=NVmPyPqiCHEw%Oqx*#4MATWfHSYVwOqFGKpCxG0P-o znZzuUm}L^POk$Qv%rc2tCNaw-W|_n+lbB@^vrJ-^Nz5{dStc>dBxae!ER&dJ60=NV zmRZa)i&V%rc8vW--ew zW|_q-vzTQTv&>?aSV%rc8vW--ewW|_q-vzTQTv&>?aSV%rc8vW--ewW|_q-vzTQTv&>?aSOEMk^L%(94C7BR~rW?956iOEMk^L%(94C7BR~rW?956iOEMk^L%(94C z7BR~rW?956i|&N(%(9DFb}`E? zX4%CoyO?Dcv+QD)UCgqJS#~kYE@s)qEW4Ox7qjeQmR-!Ui&=It%PwZw#Vos+Wf!yT zVwPRZvWr=EG0QGy*~Kiom}M8U>|&N(%(9DFb}`E?X4%CoyO?Dcv+QD)UCgqJS#~kY zE@s)qEW4Ox7qjeQmR-!Ui&=It%PwZw#Vos+Wf!yTVwPRZvWr=EG0QGy*~Kiom}M8U z>|&N(%(9DFb}`F7X_n#rhrfLO)7RgB`TY4~c$+lK-9eAveEH#rumAA-Pk(;@{g+RF z`1t%^e)~Sex94K%kB{(p{`da*FYgWta!{0mk{p!fpdtrVIjG4&9S)i_%hxw|(kyoe z$sI9imb*%FM@*XKu9DmllV-WABzMH5S-w`9G|SyV(jz9#a#u-u#H3m7DoKx+G|OEj z=@FA=xvL~SV$v*MD@~f^?jY$AlV-WABt2r%EO(WpM@*XKu9EbKNwa*dG-;N*gQQ1H zn&qyN^oU8b+*OhuF=>{&O41`H&2m>sdc>qzzE+wv%iTfJBPPvqS4n!rq*?ANNspK` z%Uvbu5tC;5T4~ZOcLzz2m^8~>CFv29X1S{*Jz~-IX_mW# zq(@Ae<*t(Sh)J{DRgxYtX_mW6(jz9#^0m^WS?&&!9x-W_yGqg{Ce3nJNqWSjS?(%H zkC-&eT_x!elV@+=PX}e2r^-`Iwxu+?}5Eh{-w2T_x!elXI54 zO41`H=PY-Xq(_KZJ|^cZUr$fW@-aDQxvL~SVsg%MS4n!r}WSw1G`EO)0TJz{dsa#u-u#N?diu9EbK$vMkiCFl{) zLCbYo2x68&%rZ=_4S#tdf|zBPTpPZt1U({5t_|N+f*uhj*M`4V60>}c*1~NhW*NjR zgP3KIIm;ks8D!2fh*<`ivkYRELCi9USq3r7AZ8iFEQ8Eh1~JPZbCyBO@;OltA9pd! zAZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8%OG=>LCi9U zSq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8%OG=> zLCi9USq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8 z%OG=>LCi9USq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gJW*NmSqnKqBvy5VvQOq*R zoaJ)`{rV67D07xk%rc5uMls7MW*NmSqnKqBvy5VvQOq)mSw=C-C}tVOETfoZ6tj$C zmQl!1JQzuroS&t2t0 z_{abJ;m5BZK79O_PhUTMe6FMXx1aWi``vH;{nJ!*j>} zi$dT3@yEZ*`COdB-{SxD%iREf_siV?L-}bpz_(xQJ9sd~G&4%|9N$~8PU zxOI+b!k%kTHK-W34uwfnOI!6*V ztOH#KUg{${8=cyboDGkG+xp1OhIOFp9I4r`4s@L(GaJ@{u5%=2qdM@i9U0rO40N3% zVH?(gkHV3!4eLPHInuRZ9q2kowl=H-T?bx*Ba9oJ+L6T#kAbdpByqz!@bNivxM3aW zI!6jOtOH%=$lykG;Bt=CZdeAo&XL&->p<5z61!m?_{bf3-LMXHog=Lq)`6}Ar*_19 zqfb!k?alYz{hlRy%nK38butQ8{9h3+>T}!N2hi)x;Q)rZk?mS z#bF(|b&kdshjrlAIT~6V){*xVZXG!UNbqRJar6=#jW`aEfiJA10moq-_`*6GZyeTv zZ-t}b#$lcH`(XWp4XSgv=6i54hfBVP$H?WZ-)x8Ly@%(vezS$6$;n}z^_wjm%}oyL zz|FS)z#G7y57&l|F6U^>a(E2fI!8m6!#Z&59F15G>%gsZG+;Tb1Gf%*vZYfU4P=fk z2mJYP3Hh+j`qRSLT>rY3Ai^oTG;8P0z9KfFs7n=_+N3I8M9q{MF zh33QSfv$5jvN@~+T?bw^@aMy2>7&a5e?DB4KCC0J0eoSBKOZhgA6^f1oukptQ5|>* zz@HD-uMbZRzD&WN4;QZw&rM!8_`(8zK3upyydLN}a5>=5hYQ_DmjnKMxXgW62fEJD z!051!yw>oA1^#@vz{P5hM>l_W14(rJK17BE2E8$1y z24%pX50}mlPYrGz@aMyI^TTt4Tjyxi{ICw(I!9~fhjri!OAcB0=fgGjqssw*K3rix ztOH+IN9*f{b>Iu@Xm$Ot4zz=#we^EK>%V2;r}^Rf{n3dXE#Ds=v)-o;7w-@2tlw;h zOZSI$)^E1Mh5N%g>o?osvi(t=b$>ow=szqYb>P;4`RBt${=@58|B5?Y;yl|$dFsuVz=V&v4VIAl?M_U05>p<5z+6Z7&2fpLv zOAh?`aN~gC<;eBGtpomixM{%fdZ6ooKOgQGFgiDQ*}$I{FFSw21B&xd;vj9!AHtq6w4K-W3ih+tR;Zk?lT2!?f_>l|%DFsuX5 zI`I7q{(QJ;!RT_ppAWYz7}kNV1O9xtU%~L);MM_uKHRKebZ&5J;LnG<8w^hkzOcZb z54ScLo*Q%>_#RpB1?wLJc>Xxr;b`!RLHZ33AF%f7XlJ9*wXFBsqg{%VA@c1;>pS?|aYY{R-LSXKq8_WDf; znKmq`I@$|<@J>RYeY6k!sLJ~N0%>AMF-DDzcsrL5zL0PyFb_ z*1wM+!-gePkYK|Csx801yC>Lg|F|X^ADXo zw*BAUN_p-N_sBKA{ks3#-S>9p_`klx@4x@@=?@>jz1u(U0{3`s)OWTE-1>3fhG^Cg z{MLci5B!EG>j!>&+F3vFTTfa)@Y^@p`hnkml&l~4?df#=z;BN!>j!@OzFIy|-^MM| zUN5M3+_t)Ey`tW6+dg0G74?qWcKlkdsF$dpDZN1bMCk`gKTqF2PBTsZ;{VUo_y5N) zpTB(m{s(;w7<~V~$|MD>)hLg=;_3-na zK2`m^mrNag-cqIxKkqD4hkt7@|I^;WTmR6^=l`Gdga7T!u0Q|JzufYuzxe#;|MC2v z!mpqITW{>-!T%KZBWA_PkYnw$kVnoJo2<7 z4Uas1+8G{s`n)qd^7M&kc;x9%h|!UJBW!zmtbb0nzn}(3^3AtRSwl^}`L-RWp(fva z+wRj)lW)FlC+hW@{C1xIf*sxO+uk5>vVOMQ`ObgE4zH6t-}&#@VNLFQ+b-7du5jn$ zH)WgaUO(Awx*Lwd%Y&VwA*ABl;p4aZB7en z@`r4j+Jc(g`L^kCsL7pg+esU0a_8e0XdCldKiO^C3y$Q@x6OV*P5yXplVDJjJKr`J z1~s|!ZBt_FHTg2PnK3BIoo|~UgPPp=wq3iSCV#NE=`yIvoo}0Fhnn2^_++;MwDptS z=Fs3s?tI(CJJjUPx9$E7HMu2h6KhbDJKr|HwqBDwE)Q>TzjoWSz z%Qp^ZjoZ!;>lOLM(H_S+Zo5jXU!wN$ZHI~Viu|f- zkK=5S142Dhjt94mC6?a}4hOeQCe|xztJ*f4Sg*)$hdz#REVyk%v3!ksrkn|KB)Dx* zv3`l#s-xXH$6a>t5&Q3pSRZfm>wo`g?(p-5J9+%=f8acG zpFD%}3}EsfIDcB5{0GjTAtwKU^QYIzf8e~sPyPevPqUN%z z3d6}0xP1n9@8pYRhm)6Z_fEc8ggAKyckkqjC5e+~aQ9BWSfDs}26u0Ri!p%76S#XP zUkn9Ip26Lod@&+0c?NfT^2Nf&$uqdylP{JzPM*Qto_zORyoey@uHYhyocsswei$#J z$;mUg+mkP%%E>dh+mkP%%gHmi+mkP%%(*kT`zBmOo0BJSwz+J=yLa-%n%BuQxO*pWe^i1KzAY2if8gdf^Ic88T8}&R7KFE( zE&XbB?&KNV{2*Md)tx+pn;(R$mAjK?aPxz3wT^f43~sjMi$#ueCvZ0+3>RyBC(q#S zhxu+q7%mq6PF}*@JNaT6@Z=fXy^}8%1y7#A-8=d2ZE(A(-~KG!jR>!n56`^`cO$~9 z#l(|maPtS_)zae0Gr0MC?P{U%+!@^cX1yB`UadZ!yn?$Q#=8;W)sp1NOSs#UFIF{9 zp26Loe6h-L@(k|wqzu$1W3C-L~a5o|h7po%Y&fxBSc(``(?dxL9vK_3^tqTXC`ae5(GZPR|ILSo zyAu`p=EK9?d5W8te|MVVVqyH$+kbbK;$oTnT>YEhUKfkz=jz{m|873}-kqYjSWrK8 z{Wnkl?g+)*35tuw_H&niv-@5wy`QUpv-@5w#Gk8w_x-=weeX_A+$?{0ZsKCe{?yBV zcWUBd0smb6o89+fIsaV!o89+fasOQXyZ6scdANJ{&0&eVvl4elB`$UYn0ou}4oY0? z4KP>#=Iwj2Q@~vPo44;aBk}iGs{J>qF|+>vpLOB?w==$4|NnS~2#@gg|NZ^n`u0Em z{%?%GuK)j=yy3fl^uG`H{PQpV{_o>4|M!1K$DMZC;emeSX)rOYd77;ak34-I9v*r6 zC^0qj;D?L42B8J6Um?|eRHSd%;7`9#dHCU?H`W%9$C-1*KI#t&<9 z=i@i!Jd_=s?0FnJJd!^u=Mn6%CU?H`1@6O|-1*L<)?rQVeCP4%s3yO(=aK5LBzL~^ z798huzVo!+8ov7%RG-Whb6i5oky6%n%w!$7l03I@(25T$@j1(cfRv@a#)i) zAD`@b7&$uG^B8h?BzL~^rQ5@r-1*KIYY%I3OE_PiJ*>%{?>tr<)#Q@rQR1*9cfRxZ za9EQ&-}y4@VNLFQ=L@TcHMyCbFQp#VfTPPi5C4Wo^38W1_zi3F&3C>Q zdRUWhzVp@3!z>Gv2b-^B{&!9`vyZ5|%!m#H`H#VY3E+3HPuv2J--Q*YXfmCD1K zeADVz=fz(f9-Zv@YUJUOeDiTKaJOERMZ&|H`a|VnS@5u?{%W{b2t2CEUq_sbT&(#Wo-BVf%xrj3uMm?N(liJXkY2j6_0jKuRTSx2`J zuNjG)j6_~D5;+-(yk_KlN3zjN%gIROWF&Gj5(9TWUNaH{cRpS-5(9TW{?!lzcRqeo z{0rN=t$$QF8Hwi`_KiNCyk;bFG7@>sNaSQB@|qEUX*n5ru0YpkAx=i(`KEiLTZq?; z#Pf~zhBf(_kCTzeYepg`BmU{+WF&Gj5;+-(yk;bFG7@>sNX&fmaWWD)8Hv1R#2Y*( zBaxGl$jM0LWF+#Mk;utNo% ziJXi?PDUcH8Ht>XL|!uzIT=yD=ij=Claa*9NaAE9aWazL{H0YNOmF%_C2=y6I2lQt zj4+oZPDTL^y`WF&Jkk~taS04Q@Z zk~ta4oQz~nMlvTOnUj&s$w=m8By%#7IT`U!3MV6(lab8HNakcDb25@S8OfZCWKKph zCnK4Y5pTAfjATwmGAARMlab8HNakcDb25@S8OfZCWKKr>`hj6IT@*(j8slWDkmeAlab2FNabXtaxzjm8L6C%@N-+`WTbL3 zQaKr^oQzaXMk*&Gm6MUm$w=j7q;fLCkN%aDk;=(PPX|iu>I$eKim3)iGQnjOStiV>fafuoQ!Z7 zQ#l!_oQzaXMk*&Gm6MUm$w=j7q;fJ+IT@*(jQCy4$w=j7q;fJ+IT@*(j8slWDkmeA zlab2FNabWidoB09#>q(IWTbI2(l{AuoQyP1Mj9t0jgyha$w=d5gugl)CnJrMk;chL z<7A|9GSWC1X`GBSPDUChBaM?0e)?*hj5JP08Yd%-laa>BNaJLraWc|48EKr1G)_kN z0lslE(l{AuoQyP1Mj9t0jgyha$w=d5q;WFRI2qyJfQ^%p#>q(IWTbI2(l{AuoQyP1 zMj9t0jgyha$p|w-<7A|9GSWC1X`GBSPDUChBaM@h#>q(IWTbI2!V=Xu8EKr1G)_hu zCnJrMk;chL<7A|9GSWC1X`GBOW;RYn8Yd%-laa>BNaJLraWc|48EKr1G>$168#8-& zb0Kuz@!#hD!^)qE{gKAMkGz@OxDz`5pBNaJLraWc|48EKr1G)_hu zCnJrM5xr^o*6W;%bWTP(CnKGck70yoPDZ$UbxuY)CnKGck70yoPDVN>Bm4!}IT`7kjC4*$IwvEYlabEJNatjvb28F78R?vi@H15B zWTbO4(m5IFoQ!l%Mmi@Wos*Hy$w=p9q;oRDkKvt@k70yoPDVN> zBb}3x&dCV>lIxs|bWTP(CnKGck70yoPDU65IwvEYlabEJNatjv zb28F78R?vibWTP(CnKGc5%#3c$w=p9q;oRTIT`7kjC4*$IwvEYlabEJNatjPNwRY? z(m5IFoQ!l%Mmi@Wos*Hy$w=p9q;oRTIpA>BcAj=ybQtnq_5PF0pQrs{$iKG`s!L(Q z?ojVdOL4-ks`sX)Kw($ad(%>+u&e65X(?2At-2Hr><;zbv=k5Qs(No)3J7*py*DjI z1iPxX0{>lA?@deOzpLuKX$k#zRlPSYvHxq;CBEMs z>b+?R@OM?cH!TtVuB!K@CB)xV_1?6^_`9m!o0dHOwdxYc?+*3ev_$f|s@|KHP<~g{ zd(#rj@2YxlT7vo4s!PDWJJfsA60z^9dT&}n_FYx)O-szatLnXJ3EFp6y*Dk1`D@iB zGT$BQy=e)}cU8SNEwTBos`sWPINw$E-n2yLuT_@_e0Qk#rX>X5RrTJq#NfNC-kX*n zd{@UWb{_+x1f|Mi63!XHbM_`9n7P4`%u#otxsZ@S0QH2$tCf73md=J8*vx`jX7!XHbM z^}7@H-n2AZzpLuKX=%ECSJivd(tQ1{s`nN<#$!RH!V%e@2Yxl zTAG*NRrTJqG%^2L)h+zt7XDb8eczq1_ok)k_gz)*O-u9dyQN z*tLnYUE&Q=GZT@<~ZsCumdGlRW?@db+=ew%jo0ewIcU8SNElr)j zR&@)1xP?EK=Erv@?7eAef_zuid(+Yk`L3$>rll$JT~+T*ZsCumdGOa0b_;(jO@!~N zdT&~q3Ex%q-n29ozN_lJ$>+j@TX=8_4{qUMX%m~5S2(zZhox<7c2)Uq3QHT=?5gtJ z6qdHKd9CUe9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe z;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+q~ zN4N0k79QQgqg!}%3y(e*9^JyD&xJ>~@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyD zTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KT zx`ju#@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQg zqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytSoZsE}_ zJi3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK` z!joHgatlvx;mIvLxrHaU@Z=Vr+`^MvcybF*ZsEx-Jh_D@xA5c^p4`HdTX=E{Pj2DK zEj+n}C%5qA7M|R~lUsOl3r}w0$t^s&g(tW0=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B z@az_z-NK7ocyS9aZsEl(ytsuIxA5W?UfjZqTX=B`FK*$*Exfpe7q{@@7GB)Ki(7bc z3omZr#Vx$Jg%`K*;uc=q!i!sYaSJbQ;l(YyxP=$D@ZuI;+`@}ncyS9aZsEl(ytsuI zxA5W?UfjZqTX=B`FK*$*Exfpe7q{@@7GB)Ki(7bc3omZr#Vx$Jg%`K*;uc=q!i!sY zaSJbQ;l(YyxP=$D@ZuI;+`@}ncyS9aZsEl(ytsuIxA5W?UfjZqTX=B`FK*$*Exfpe z7q{@@7GB)Ki(7bc3omZr#Vx$Jg%`K*;uc=q!i!sYaSJbQ;l(YyxP=$D@ZuI;+`@}n zcyS9aZsEl(yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cb zg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0 zTX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj? zx`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-L zt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA} zyt;)~xA5u~Ufsf*TX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E z!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*Jku zExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY z+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W z%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i` z-rT~QTX=H|Z*JkuExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s z;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F z7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ zZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2` z?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1 z?{4AUExfyhcen8F7T%XEJiPz#m(PFt`ui`RKYt8wOBTL6^zoZ7Km73ZA3pr<(;xr% z>HYU#KK<$fnX!JvqADaEp;)hm0wE3Z(4_&hG z*IQ!A!gq)I-Lz!kyQ+RSEm`=ks^3jZ7QUsCRrTJqWZ}E2-kX*zd{@XvhZD1?@dbb+@cE__$j zd(+Zf_^zt=rlq;?*Q##e54Z5g(p>oNguOQ{&4ur(dT&~q3*S}s-n29qzN_lJ$u0b` zG#CDQ!fxS@rMd83RqstpbK$$H-kX-@!gp1@H!aPDzgBe%f4GG|mgd5DC+xjxX)b(M z)qB&@T==f4_ok(}@Lg5!O>W_jrMd9e6Lt%KEX{@Qs(No)nhW1m_1?5J7rv|Ny=iGK z{I#lE_`@yyu{0OHJ7MolOLO77s@|KH=E8SXy*Dk*h3~3*Z*mKNEX{?#p0Hc^V`(mY zSJivd(p>nis`sX)x$s?8?@dc{;jdNQ!XIwokEOZr-3fbdTAB;rRrTJqG#9?B>b+@c zE__#&d((3;TtPdyg$K9r;1(X1_DFeog@apoSlT0HSC#Lku(U_YuBzWnZsEZ#Jh+7i zp9>Fe;lby^gIjp;x$xi?9(*o5xP=F|@Zc66+`@y;g$K9r;B(=@Ej;*KcyJ4Uu2kZ0 zI=ArP79M;qJh+7ip9>Fe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@ zEj+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r z;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y; zg$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$x)~9^JyDTX=K}k8a`7 zEj+q~KlhnYzKL$((dWXWTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW z=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K} zk8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju# z@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQgqg!}% z3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytR-ZsEx-Jh_D@ zxA5c^p4`HdTX=E{Pj2DKEj+n}C%5qA7M|R~lUsOl3r}w0$t^s&g(tW0=vHg!n0d=b_>sL;n^)b zyM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg z!n0d=b_>sL;n^)byM<@B@az_z-NLh5cyK0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y} zZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m z>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~ zuWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_ z@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+= z3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!p zxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%o za|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsf zH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k% zcykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpS zg*UhG?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5x zTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~ zyM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$ zyIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6 zyt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN z!n<2|U$XG{{=;8B|LN=RzkL4uF}^KX`0mihZ@&ES!`FZK@Vifc{Ntzh-+%e^hmU{# z-~ai2h;Pr$K|VenZ;wZP|E#h*H29&>4^4h(_Ct#wTK&-Ghju=6$--Z6i6sl)9qM<} zl7;W8`rWi-;k&ASH!WHCuBzWnOBViGb;-hahk9>XvhZD1?@db?CR6I#=464 z23q7<-)k%v1bD20X9QK|%%w8e)dKqN9fsV4vw=4p=l{S447evPpgZHNOa@mbpWohD zk6QTssgGLt@uB)|dep*?r|P@uQ42qws_&*pE&O<@zMCGk@Z+iaZhF+h?@xWy!jBKt zchjR5emqs*O^;gm@l<^`J!;{{Q}x~SsDbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxC zJXPOKk6QTgRDCx+YT?II_1&bm@JnyuugtAB)9cZ>@Y|Q^dUP)Q_)z)XbUiv3emqrv zH(ig;g&$9q-%Zz}bK&==>Mi`zTln?pT=+4t{GIN4bT0gOs{EbqdUP)Qc&hxJ?s{}C z{CKMTo$k_G`1R;q_Cw6H?dUP)Qc&fge9-Rw6o~rLAy@g+o&V}Cx)?4`X=v?^mRDCx+ zIv0LCRo_jI&V?UO)pygQbK&==>Mi`zTln?pT=+4tzMCGM3qPK!@1{rR!jGrwyXn!n z@Z+iaZqi%$_2^vqePF$XUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6d zkIsc31M9o#(Yf&BsrqhubT0gOs=k{ZoeMvns_!PfgCw6H zF2^tZ{en&3pc%m zziuk2bZdGGH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1r zKNoI#3pf2-xalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0* zw{X+Xg`3{OO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@Kp zy@i|J!cA}Crnhj@&xM=b!c9LHZh8wh{am=|E!^}LZh8why@i{8F5L7MZu+@!(_6Ud z=fX{I;ijJpfBljawGg=8!d-9SuD5X4Te#~j-1Qdz`aLuHACByFuAd8cy@k8p!d-9S zuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7 z>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1Qdj zdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX z-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8 zw{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ois~;i0$i&|7%u zEj;uV9(oH8y@iL~!b3k79(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`s zxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%u zEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^ z3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~ z!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0 z@X%X$=q)_-79M&F550wl-ojIF;iMcC=7M^+w zPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;in*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#> z-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Q zt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&eDoGR zdJ7-Dg^%9CM{nVyxA4(h_~MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfN zeDxN-dJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85 zU%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-dJA8@g|FVi zS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85U%iE|-ojUJ;j6ds z)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-dJA8@g|FViS8w5~xA4_l_&#dk z@#U9){rKk}fB*U8$G7u^y1rgle|bIS_)yb7)b$Sy{XbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxCJXPOK zk6QTgRDCx+YT?II_1*NSh2Nk0sD&RNs_&*pE&O<@zMCGk@Z+iaZhF+hkEiOp=}`+m zo~rMrM=kvR)JHA+_)vW}J!;{{Q}x~SsD&R-)pygQ7JfWc-%XEN`2DGmTKMsy`fhsE z!jGrwyXjF2Kc1@ZrbjLOc&fge9<}h}srqhu)WYviebmB_57l?mqZWQVRo_jITKMr) zeK$R7;m1?;-K4khOK;(?%&j)l>(ROJ+n4EjbT0h(Q2E_-JvtYDJXL--U60O%A5WFv zP1mDy;rFNNE&S43`1R;q_%X2jo$h*cF8p|^{GIN4bT0gOs{EbqdUP)Qc&hxJ?$TTM z_2^vqePF$XUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6dkIsc31M9o# z(Yf&BsrqhubT0gOs=k{ZoeMvns_!PfgCw6H?(p&iT z=v?@HV7-N3kIsc3Pt|wRqjTZMQ}x~S=v?^mRDCx+Iv0L_s@}pcy@g+o&V?TX>$~aE zx$xtu`fhr3F8p|^zMCGM3qPK!?>rr!cA}Crnhj@&xM=b!c9LH zZh8wh{am=|E!^~T;ik86(_6UdE!^}LZu+@!(_6Ud=fX{I;ijJpH@$_wZYrsCYkCVe zy@i{8F5L7MZu+@!(_6Ud=fX{I;ijJpH@$_M-oj09;ik86)6a#Q-oi~k7jAkBH~n0= z=`Gy!7H)bAH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1r zKNoI#3pf2-xalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0* zw{X+Xg`3{OO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@LU zy@k8p!d-9SuD5X4Te#~j-1Qdz`aLshzHz;UyM8X*^%m}W3wOPRyWYZGZ{e=DaMxS7 z>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1Qdj zdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX z-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8 zw{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE*IT&j zE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJBL3!f-XWhTg(MZ{eZ0@X%X$=q)_- z79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M| zg@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~ z;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$g zc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV z9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8 zhu*?NZ{eZ0@YGv)>McC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew z-ojIF;iMcC=7M^+wFTI7A-oi_7;ib3m(pz}x zExhy=UU~~Jy@i+F!b@-ArMK|XTX^X$yz~}cdJ8YTg_qvKOK;(&xA4+ic-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_q zTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu z)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mf zy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*lky@ik7!bfl6qqp$U zTlnZLeDoGRdJ7-Dg^%9CM{nVyxA4(h_~MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwM ztGDpgTlnfNeDxN-dJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R z>MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN- zdJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85U%iE| z-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-k6L(s`Q=|f{`tq> zfByLK?e(9|{Q8%lzyJQnpMUw=_uqc|{^i%7-~aLL-~aosU(CP0e#6JN>-u_K{pI!l z_4v?B|4`FE)b$Sy{XbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxCJXPOKk6QTgRDCx+ zYT?II_1*NSh2Nk0sD&RNs_&*pE&O<@zMCGk@Z+iaZhF+hkEiOp=}`+mo~rMrM=kvR z)JHA+_)vW}J!;{{Q}x~SsD&R-)pygQ7JfWc-%XEN`2DGmTKMsy`fhsE!jGrwyXjF2 zKc1@ZrbjLOc&fge9<}h}srqhu)WYviebmB_57l?mqZWQVRo_jITKMr)eK$R7;m1?; z-K4khOK;(?LasK`>(ROJ+n4EjbT0h(Q2E_-JvtYDJXL--U60O%A5WFvP1mDy;rFNN zE&S43`1R;q_%X2jo$h*cF8p|^{GIN4bT0gOs{EbqdUP)Qc&hxJ?$TTM_2^vqePF$X zUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6dkIsc31M9o#(Yf&Bsrqhu zbT0gOs=k{ZoeMvns_!PfgCw6H?(p&iT=v?@HV7-N3 zkIsc3Pt|wRqjTZMQ}x~S=v?^mRDCx+Iv0L_s@}pcy@g+o&V?TX>$~aEx$xtu`fhr3 zF8p|^zMCGM3qPK!?>rr!cA}Crnhj@&xM=b!c9LHZh8wh{am=| zE!^~T;ik86(_6UdE!^}LZu+@!(_6Ud=fX{I;ijJpH@$_wE;*@mYkCVey@i{8F5L7M zZu+@!(_6Ud=fX{I;ijJpH@$_M-oj09;ik86)6a#Q-oi~k7jAkBH~n0==`Gy!7H)bA zH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1rKNoI#3pf2- zxalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0*w{X+Xg`3{O zO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@LUy@k8p!d-9S zuD5X4Te#~j-1Qdz`V}>5zHz;UyM8X*^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7Vdfr zcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIu zU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE z*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8w{X{6xa%$4 z^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M% zy@k8p!d-9SuD5X4Te#~j-1QdjdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?N zZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kR zTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_- z79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M| zg@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~ z;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA510 zJX1Y-oO%mSy@jXV!c%YIskiXdTX^a%JoOfydJ9jzg{R)aQ*Ys^xA4?kcMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+w zPrZew-ojIF;in*(X z7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8 zg}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN z;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|m zcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#> z-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qM{nVyxA4(h_~`!E0d&mX`1^6h{6{>S%k*H`;rzWwsI@4x-_{jcAC{`mRh*Wds0zkdHi`Q*O7 z{?F_D=bv6zJzxJ3EdSHjuh;80zS!&ke*Lf4f1mB@>rdC~xBuEJ+q}-~{ORlUYRmSg z|M;pr?CHn+xBvRb_n-gqAAkDskG1Q~2mkupfBk=Do;M@>Kk@(c??2%$zyAFGkK<4K zi@pBy%3tf-b-n(O?92c8hxO%`fBpF9AAkS(Jp^U!dp<{OA7x?+@PxLnm1H0`z_K=Es`Pz65W6xcTq}=sWq%4>})C zK;Ox4e(3pd0{Tw=A3p%e3-!&BfDb5f0Nu%N4taby0bK`g4t#t#0o}=O4u5<&0o}=O4uX6( z0sRuZIZpE70CXq6Ia>1J1av3AIcDn`1X0PC$1u{&*@QZw~T&_9b|8oae(Apzq{2M|(b; zfWDL89P{~b0{TvVbL8j43E(>serKjN+1{K!`sfQ_Z_Xfn_yYJ#0RJM`n^Q?2ehTm} zg1tGR^x*{XFM_=}t@Pmp^e+PZ(ZDDX8YMz|a|-ISuOTHudvhY{!wKj+`OWF54=14S zWJ-kg=I-!kp8{QIc&Sq&v^TerKl~EVolJ?)-rP_A@Kb>QV6-=Pl|P&S{(H^d+*|%^ z0{W*&iO?t!zE04wlPgAv(B9mN{_qch?&LQ&q(7X1?&LSOr9Yg2{&WHRlTjkHH}|hU z`w~zhv^RILKb!!65$QXb5~01hqy6F6fbQfs_q9KpfPM`r5gH{zdvgQ)!!H5-zVzlc z_=gkVKLz^J1tmgzb4&cguL0f3^h-dA(B9lT|LjXZiO}BMLH}?9x|84BNB?jF{KrUt zx}Zd8Z||1@BhP3fxeU9{0@K*C!p`-H@^?y!wKj+`OWVJ_-F$7jg>Yyr$p$K2w(SHS;X@< zzp~)7KLSdG{^r*gd^iF8i}1RqO23HkFM_}MwFaMk4d6m`N`y{{&?yl*B|@h}==2t$ zQzCSFi_j?%IweA?5>AQGDG@p)LVxpXi$B{2ln9*?q0?K0PKnUzzt@}+A>}d0Kb}w` zbo`f*e+}S|*-mc}IweADG@roMd*|Wo!%mJN`$Z<(Q*-#2!j$~P$CRUgh7cgC=mv|MHrL_gWe(x zN`y3_1tr3uL>QC^gA!p-A`D7|L5VOZ5e6l~phQSpZcri&N`yg)FeniQCBmRY7?cQu z5@Apx3`&F)6@n6BP$CRUgh7cgs7?h%fuJomXaWmb9)kXZkLp(7AGGn$H~8BM{@cvI zi13_$P$CRUgh7cgC=pU-4N8PTiSYGbLSe8Hln8?oVNfCrN`yg)FeniQB|`j{nG#`8 zA`D7|L5VOZ5e6l~phOsy2!j$~P$IrL z;|(RkphOsy2!j$~P$CRUgh7cgC=muF!k|Qmf6k^v7?cQu5@Apx3`&GSi7+S;1|`Cv zL>QC^;Xj(`zxR?7VNxPYN`y&?FewoxCBoN#I+XpRIVlk)CBmdcNW()?B7FU~T;U%A zCBmdcn3M>U5@AvzOiF}Fi7+V<(gK#02$K?FQX+i)Cz9dcB}#-zi7+Vu(hL$v4P@GEqPe%NcI{pC(e_z7ufd47bolJ=^DG??mLaL-mi7+VU5+VMkK#4FZ z5hf+Vq(qpM2$K?FQX))Bgh`1oDG}nIPACy3CBmdcn3M>U5@AvzOiF}Fi7+VluqY80CBmXaSd<8h5@Asy zEJ}n$iLfXU(r!?c2#XS7Q6el#ghh$4C=nJV!lFc2^cG=JBBTMUC=nJV!lFc2ln9Fw zVNoJ1N`ys;uqY80B|=(KixOc`A}mUTMTxK|5f&xFqC{Af2#XS7Q6i*CzbFwFCBmXa zSd<8h5@AsyEb3!LS)ynSE*jyeEftO*_}`rPM}7Pg7XHSD_X+=Fgh%O$5@Asyq{vy6 z2#XS7Q6el#ghh$4C=nJV!lFc2ln9FwA^xjGiLfXU7A3->L|BvvixOc`A}mUTMTxK| z5#pUriLfXU7A3->L|BvvixOc`A}mUTMTxK|5yBsj=+72SiLfaVHYLKQMA(!Fn-XDD zB5X>8O^L865z-%Wn-XDDB5X>8O^L865jG{lrbO732%8dNQzE4Q+G8O^L865jG{lrbO5j*qXXV)0|9csBy-_^#uQ;75`fS|A>aaGvbBB-v{vb z#xx~DYLrchuqhEXCBmje*pvvH5@Ay!Y)XVpiLfaV;=c)$2%8dNQzC3igiVRCDG@d$ z!lp#nln9#=A^e^|H}X&-97=>kiEt8282!|5kP$C>kghPpNC=t?sEDa^X zp+q>82!|5kP$C>kghPpNC=m`N!l6V+|J6Q}2!|5kP$C>kghPpNC=m`N!l6Vsln93s zAx1ln93s;ZPzRN`ym+a3~QDCBmUZ zIFty75+M!hLy2%G5e_B7p+q>82!|5kP$C>kghPdHD2!0q862c>2gLaW|Em}OV*~$; zhrhMrjmF z65&!JTuOvXiEt?qE+xXHM7Wd)mlEMpBBVcJE+xXHM7Wd)mlEMpB3w#@ONnqP5iTXd zr9?>ot+SK}mlEMpB3w#@ONnqP5iTXdr9`-t2$vEe{YUpwB3w#@ONnqP5iTXdr9`-t z2$vG!QX*VRgtY!FCBmgdxReN&65&!JTuOvXiEt?qE+xXHL`XB_QX*VRgiDEVDG@Fu z!lgvGln9p+;Zh=8N`$nBFD1gIM7Wd)mlEMpB3w#@ONnqP5iTXdrNoC}2Ga^I+BhWQ zeuMwnjQ_QQe@MjNoAF9i-igMeorcJcAr6!v*Q);o>c7Ym;vueMbC~I@Sars?3e-XNk!1^GbjXhyaL{n3W6Oo z;614@*f9g%lL~|#GvGa`P}ng8-jfPu-DglV>v#pcCl${+X25$=5v^keyeAdYI%dFo zQccgenwz_>5mvY_ecm?{Nyp#)9#|-p6c_~+}jv45C z@=`8c9W&tfBzBxjxi@wHEU@ET%FU@`2Kv4GQtnP2GtlqdmvVdRn1O!pzLfh@_ZhI` zT-b3gQdXT!K1gzX-rVN$fb6a+m4;SzyPxl-o?l40ul} z_nD3v@Sap|G#xYGJ*nJjy3c?e=faM2Dc6#Y&jRmB0^Z&jLHnrQ9$&X25$=xnp$9fcKOadlEa&rQG?se-_wrF6GwGF$3O{%Dtas2D~Sgn?J`4 zcuy*Kf9^A2$GNcMT*~#G_ZK;~2h=W7u&F-^VfRIEEd^u;UnZ9K-i< z3_FhD`#6Rj$MAg|!;WM4K8|6>G3+>o9mlZa7`~5V*l`Ts$1&_UhVSDTb{xZwW7u&F zJC5P|IEEd^@O>P^j$`;fj$y|!d>_ZK;}~`v!;WLvaSY$bG3+>o@8cMD9K-i<3_Fft z$1&_Uh8@T7eH_D%WB5LfVaG9iAIGrc7`~5V*l`Ryj$y|!>^O$+;}~`v!}oCvJC5P| zIEEd^u;UnZ9K()d_&$zd$1!{#$FSoVzK>(raSY$bG3+>o9mlZa7?j$_Ah>^P1c$Fbu$b{xl!? zj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!fgLBX;{X8xaRNI|V8;pUIDs7} zu;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5% z0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlP zC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8x zaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t5 z9Vf8k1a_RjjuY5%0y|D($4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck z*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trs zi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhH zlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7B zIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{ zj+5AN5<5;}$4Trsi5(}g;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF> z>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB z!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8 zDeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbV zoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0= z$0_VMg&n7`;}mwB!j4neaSA(5W5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNS zcAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^L zW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5 zGt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*= zPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4 z<1}`h#*Wk2aT+^LW5;RiIE@{rvEvMOoWYJW*l`9s&S1wG>^OrRXRzZ8cAUYEGuUwk zJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC z20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrR zXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7 zaRxiiV8^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA z9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkI zv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXBEe>FTecj$3Or0`_CUgzS&pBagJBG{_^wp z-~agYFMs>~+i%~${QC3zKfe9@fB*H{&mTX3{QCPB^RKU88usnFzFux$Ue7#U!SE|M zeucoVkoXk}ze3|z82k!LUqNx4`#VZ;oZ}Vnds10 zIQJP8$2ndB?@7gRjv4TtR2=7+0q;r0agG`Ao>Uy?K7-;o$1C7HsW{Ft1KyL0;~X>K zJ*ha(F$3O{isKwJ;6150&V2^OagJBOds10IL8clPb!Xc%z*c#;yA|)cuy*hbDu$RoZ}Vno>Uy?m;vue#c_@q z@Sap0=a>QSN$fZmcAS^Zz;1sj_i=7t$xFG9bG!n5PhQG>oMQ(1p1hR%IL8e1J$Whj zaqcr<$GNcMT*`f%cDR95diOsocjoX25$=xsP+70Xxox9p`l}gMRnNj&mvZagMJf-jm9G zoMQ&OCzbm+#|(H+V#m3Z`#AT{0z1y7+{Za)zQSN##DyeFp3} z7j~RWxsP*v7Wn5$0dM&jLHnrQF9kX25$= zxsP+qfcK?@8r8&V2^#I2U%DOSzA8d=_|5D)(`Y8StJ|?&BOY;616_$2n%e zdlEa&rQFB4e-_wrF6BPXF$3O{%6*(;2D~Sg`#8r8cuy+#aqcr<$GNcMT*`f%^O!U$MAg|!;WM4K8|6>F?=7#u;UoMk7L+z3_Fft$1&_UhVSDT zb{xa^aSS_-;rlp-9p`n+m45HWj$_zy3_Fft$1!{#$FSoVzK>(raSY$bG3+>o9mlZa z7^O$+;}~`v z!;WLvaSS_-;rlp-9mnu}9K()d_&$zd$1&_Uh8@SS;~2h=W7u&F-^VfRIEL@z7^O!U$MAg|!;WM4K8|6>F?=7#u;UnZ9K()d*l`Ts$1&_UhVSDTb{xa^ zaSS_-;rlp_9mlcbICdPzj^o&I96OF<$9etwI#~7`JC5V~IF231vEw*)9LJ91*l`>? zj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlP zC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8x zaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t5 z9Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~ z*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8> zfgLBX;{X8xaRNI|V#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhH zlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7B zIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{ zj+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN z>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R z#Ez5LaS}UDV#i7BIEfu6vEvkWoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8 zDeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbV zoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0= z$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG` zcAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5 zVaF-#IE5Xju;UbVoWhP%*l`LwPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5 zGt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*= zPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4 z<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7Wtu zJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{r zvEwv$oW_pR*l`*=PGiSu>^O}br?KM^OrR zXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7 zaRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN z9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkI zv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5 zj^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cLBC@h`vp>&HL;`1{WvKfd`_#c_^Txc>6< z_uv2c^Dlq<{@ZWgzx?|1`#-+@`+xuS+s_|AfBgFU7xS;LUmEu9y1rg+UtZ5VUcvAy zIDUn|uaNi^3co_*R~Y;XOJ6~8oclXUah&57@Ox5moMQ(3o>Uy?m;t{h6~{Sd!0$=L zaqcrHj&r;M-jj;s95diOsW{Ft1KyL0;~X>KJ*ha(F$3O{isRg8P#ouY1-vH}$2n%e zds10IL8clPb!Xc%z*c# z;yCvi6vsJU0q;r0agG`Ao>Uy?m;vue#c_@q@Sap0=RSktIL9mCJ*ha(F$3O{isKwJ z;6150&M^btlZxXUGvGa`IL>_r#c_^TzQSNyTxF z8StJ|9Osw;?@8=97j~SN&A@JdDfe-1U&%|kk8`{NeNSG>eVk(k`kuU$`#8r8^gVeg z_i^qsV8^+z<6O#poa3{g-@7m6KF%=%{oZ{k_i>IH==bhRxsP+qK)-ii*l{l9KFae%_i>IH@Sare;~X>KJ*nKsIcC6nQn`J|B;J$C zeVk(kyeF0WIL8clPh!Wpl>0dM&jLHnrQF9kX25$=xsP+qfcK?@8r8&V2^# zI2U%DOSzA8d=~iUN##DyF$3O{%6*(;2D~Sg`#8r8cu!)-xs>}j_s;@5&ZXSPIcC6n zQn`^K*8oJ+Znb9@$fPb&9ujv4TtRPN&(GvGa`+{Za) zz}ey`dw1AR}L z@_W^e8Sr}&JC0$;G3+>o@8cMD9K-i<3_FhD`#6Rj$MAg|!;WLvaSS_-VaG9iAIGrc z7`~5V*l`Ts$1&_UuUoFrPz*bcVaGA-IEEd^@O>P^j$`;fj$y|!d>_ZK;}~`v!;WLv zaSY$bG3+>o@8cMD9K-i<3_Fft$1&_Uh8@T7eH_D%WB5LfVaG9iAIGrc7`~5V*l`Ry zj$y|!>^O$+;}~`v!}oCvJC5P|IEEd^u;UnZ9K()d_&$zd$1!{#$FSoVzK>(raSY$b zG3+>o9mlZa7^O$+?j$_Ah z>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH7 z3G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=F zoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D% z#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrL zcAUVD6WDPAJ5FH73G6t59VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UD zV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBl zBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j& zPGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g z<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<* zJ5FN9N$fa@9VfBlBzBy{j+5AN3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xj zu;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi z3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxT zr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4ne zaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f z9jCD46n31#j#Joi3Oi0=$0_VMg&n7{<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR z*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1 zjUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ z)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;Ri zIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3 z!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo z8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR z#~JK6gB@qE;|zA3!HzT7aRxiiV8^O@ZXR+ff zcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQ zEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5jQSNyTxF8StJ|9Osw;?@7gR?lUNkbG!oHlZxXU zGvGa`ILUy?K7-;o$1C7HsW{Ft1KyL0;~X>KJ*ha(F$3O{isRg8 zP#ouY1-vH}$2n%eds10 zIL8clPb!Xc%z*bKcAN`4&dX+Cx4)G8IJd9lrQF9kUV*+RFXcYYF#~;1Udnx(V+Q)3 zyp;Pm_ZhI`T-b3g}j#|(H+D)(`Y8StJ|?&BOY;616_$GOjd9p}Q1^E#J7zx!jyxs>}j$5#^X zN##DyF$3O{%6*(;2D~S+<6O#pocm{i9p_T+;~X>KJ*nKsIcC6nQn`?@8r8&M^btlgfRZV+On@vEy9IeVqGefgR^k?&BOY z;616_$2n%eds4ZNbIgGEq;enUJ_B}~3p>uG+{ZaS3%ncDR z95diOi5=%s?&I7)3+yQdX+{Za)zG3+>o9mlZa7`~5V z*l`Ts$1&_UhVSDTcAVEOS7<1P9mlZa7_ZK;~2h=W7u&FJC0$; zG3+>o@8cMD9K-i<3_FhD`#6Rj$FSoVb{xZwWB5LfVaG9iAIGrc7`~5V*l`Ts$1&_U zh8@SS;}~`v!}oCvJC5P|IEEd^@O>P^j$_zy3_Fft$1!{#$FSoVzK>(raSY$bG3+>o z@8cMD9K()d*l`Ryj^X<_h8@T7eH_D%WB5LfVaGA-IEEd^u;UoMk7L+z4By8w>^O$+ z;}~`v!}oC?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$ zb{xl!?j$_Ah>^P1c$Fbu$b{xl!^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_Rj zjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g z>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH7 z3G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=F zoWPC~*l_|oPGH9g>^OlPC$QrrcAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;} z$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$Zxs zcAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UD zV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBl zBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j& zPGZMN>^O-XC$ZxscAUhHlh|<*J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7` z;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6| zJ5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xj zu;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi z3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxT zr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD4Gt28aqy7$7$?1jUA`4<1}`h#*Wk2 zaT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S z9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR z*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1 zjUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ z)7WtuJ5FQAY3w+S9jCG5Gt28avKl#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEs zjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3 z!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo z8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE<1BWZ#g4PsaTYtyV#itRIEx);vEwXu zoW+i_*l`v+&SJ+|>^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ff zcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQ zEOwm5jn}fl|NW0Y|MIu*zy0?8%dbDb|Kr=g|My?N{rvIs$FIMCG5`AdrD5N$>+9wA<@L_r#c_^TzQSNyTxF8StJ|9Osw;?@7gR?lUNkbG!oHlZxXUGvGa` zIL0IQJP8$2ndB?@7gRjv4Tt zR2=7+0q;r0agG`Ap2UuGVaIvd4D9xoav$gRmAsVuIL9l{_vEGA$2n%8@5xKKk8{jG z-;4@7^PTlALp0>?@8r8&M^btlgfRZV+On@mHRmN8L;DA*l}LxGU#`I>^PTlALsZ= z;ytO{$2n%eds4ZNbIgGEBzBxjxsP-IEU@ET%6*(;2D~Sg`#8r8cuy+#agG`Ao>cDR z+-Ja!b79B1l>0cxXMum7RPN&(GvGa`+{Za)zIH@Sare}j$7g}}q;enUm;vue9`aSS_-VaGA-IHvqwwcDSCVaGA$_o^K; z(D$S%zgO*;0lz1);}~`v!;WM4K8|6>F?=7#u;UoMk7L+z4By8w>^O!U$FSoVb{xa^ zaSS_-;rlp-9mnu}9K(+Dy5$ND#jxWTb{xZwW7u&F-^VfRIEL@z7^O!U$MAg|!;WM4K8|6>F?=7#u;UnZ9K()d*l`Ts$1&_UhVSDTb{xa^aSS_-;rlp- z9mlZa7_ZK;~2h=W7u&FJC0$;G3+>o@8cMD9K-i<3_FhD`#6Rj z$MAg|!;WLvaSS_-VaG9iAIGrc7`~5V*l`Ts$1&_Uh8@SS;}~`v!}oCvJC5P|IEEd^ z@O>P^j$`;fj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$ zb{xl!fgLBX;{X8xaRNI| zV8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k z1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|o zPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX z;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPA zJ5FH73G6t59Vf8k1a_Rjj+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6 zvEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN z5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-X zC$ZxscAUhHlh|<*J5FN9N$fa@9q0dO?`?MN$c?mJjeQk$18uFv-^`)w2MsjPID_Ls z&jeMqaBzUOtD#aE=(|75_RekXEGGH#eJFK*eYOTJRLNunxq?AvJP~BZ94BLrlQGB1 znB!#3aWdvO8FQSBIZnnLCu5G2F~`Z6<7CWnGUhlLbDWGhPR1N3V~&$C$H|!EWXy3g z<~SL1oQye6#vCVOj*~IR$(ZA0%yBa2I2m)Cj5$um94BLrlQGB1nB!#3aWdvO8FQS1 zIZnYGr(lj#FvlsF;}pzs3g$QkbDV-XPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVx zj#DtlDVXCF%yA0lI0bW@f;mpX9H(H8Q!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvlsF z;}pzs3g$QkbDV-XPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVxj#DtlDVXCF%yA0l zI0bW@f;mpX9H(H8Q!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvlsF;}pzs3g$QkbDV-X zPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVxj#DtlDVXCF%yA0lI0bW@f;mpX9H(H8 zQ!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvqEw<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld( zRLpTI<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G z6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgS4 z#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5IZnkKr(%v% zF~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgS4#T=(%j#DwmshHzb z%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLX>cMf| zy#D#0Fa!Vc>wo;$?UAznF5E)+r~mx;;fEjIegFQ``*-(S__udI{PX)i{ptPpzyJ65 zpMbKr$Dc>8=9@?5?c>%1wX$<NG$M-)TzxLY@Zx6io z?tZ`BQ+fN>AL;E6fBEp|Pk;RQ;lsQ8??3+h^QYg-yXEe-v<=}JuYNyRC)ZeY*wQw>Ym7RSX&c`)HXX{ejqe(h4rSWLca23yGVP!9 znxhUy+6I5kO@}gV&v(s9hca!?cg;nIGHuUy%|VAUZO>=_DA&Mrr0g{)9k#TW$~71r z%CtS-H3%Kbv_0Q7_#Dc#J>NCx9Lcn&_L__iMcSV4nuHEz+KcR(d=6#Wp6{A;4rSV& z@0x55W!j$4o}g<4I#Tu;eGXgNp6?oU4rSWQ^BQdqW!j$a8f6Y;+Me$kU5;eh!@Opl zLy@-UyJnk1nYQP2o_QJkqmqVGh=euT=Lz%Ycvz5Junj>YeVdk)q4`k zwzlzI7nTiW+QxTXNH&yd8{c)|*ifcze6}y~eWq{lHW>-mm1Lu-waG}ht{fZ6bU#$W zb*0!)ru)?pt}DYvGHs7wlaXMPkw?0WiN1qPM#6Qe*l=oX&v#uKHk4_5zUxx3p-kKJ zxdDh^laX*;D>fRYO-90XZP-wzKSQ?h*<>VK*M1GhX?wowTCb5zdxC5-5^OROu8YBj z!?Zp8b@A6wra!m#wri7-a9!Lr9H;I1>|xquBwSa2jfQEHk#Jq@HI!+4zU%6)p-lf* zvA12DjD+jztxBwW{T4Q1M%@48-VDAV?Q*Y#OLnYQs=*JF)j+WYl&0oPEZi{*k%M#6QW z)=*p9_^u1HhB9sAyDr2U%CwEoCL``{WCvQJO-7#ELclaXlGj6|D^M7w4r+GHf!H6zg`BhjuI zvBSO5CL_@%Bhe-!(Iz9&CL_@%BhjuIi8dLD_E$r+$%su1qQ7C=WF-1a1&q_)cI}#x zXp@m>*NjA)j6}O;#D-4MCL_@%Bhe-!(Iz9&t{I8fx8#k^LN*zRHW`U_%}BJ#h`%~* zG7@bv5^XXP?V6EjlaXlGjKu3}@J429laXkXk!aV9_zvDCBhe-!kBdCqZ#kQcM7w4r z+GHf!H6!u*p1YCR+GHf!WW+xs*kmNyWF*>TB-%A2(Iz9&t{I6o8HskyNW8wtZe+GL z8S#&qHW`UF8HqL-i8dLDcFjn%$w;(oMxsqdqFpl*Z8GA2sn}#B+BGB5CL_@%BhjuI zi8dLDcFjn%$w;(oMxsqd+&F^$t($Bzl58@PY%-E;GLr0?kz|vRWY>%&n~Wrzj3k?k z*x{07laXYTkz|vRWRsC(laXYTkz|vRWRsC(laXYT5j*0RY%-E;GLmdEl58@PY%-E; zGLmdEl58@PY%-E;GGYg9lTAjFO-7PUMv_fNk{!NJcI-9TfwN>sJ(B&&n(XflJMN$S z)1trC`+nMAWMGEe-gCL_frBgG~o#U>-gCL_frBgG~o#jY7C zHW{%)7sVzc#U>-gCL_frBgG~o#U>-gCL_frBgG~o#U>+m^sCrpq}XJn*kq*GWTe<+ zq}XJn*kq*GWTe<+q}XJ{4xkpBj1-%U6q}3`n~W5jj1-%U6dM^7JKkIDU|q2zEp`mP z_}|I?M~;6&^^X_+-rz56@T<7lFvTV##U>**#wj)#DK;4?HW?{487VdyDK;4?HW?{4 z87VdyDK;7L?cF9L#U>-gCL_frBgG~o#U>-gCL_frBgG~o#U>-Z%e2WzvB^lW$w;xu zNU_OCvB^lW$w;xuNU_OCvB`*gM6fsAYLk&_laXqZk!q8XYLk&_laXqZk!q8XYLk&_ zlM(yeR&6p;Z8B1AGE!|aQf)F)Z8B1AGE!|aQf)F)Z8BmX{i{tzs!c|!O-8CsMygFl zs!c|!O-8CsMygFls!c}hug7YWk!q8XYLk&_laXqZk!q8XYLk&_laXqZk!q6>I{;B_ zGE!|aQf)F)Z8B1AGE!|aQf)F)Z8B1AGE!|aV#lzmO-8CsMygFls!c|!O-8CsMygFl zs!c|!O-8CsM(i+XwaG}e$w;-yNVUmGwaG}e$w;-yNVQ=@wIjvV4)fWO^y&v`{4Z?( z^T*Vo#9Z?nnBW|NW4CL^0oMmC#_ zY&IF$Y%;RhWMs3+$Yzrfd+Xe6GP2oZWV6Z0W|NW4CL^0oMmC#_Y&IF$Y%;RhWW+vw zZ8jO%Y%;RhWMs3+$Yzs~%_bw8O-44GjBGX;*=#amAK*8ejBGX;*=#bh*<@t1$;f7t zk^2$MZ8EakWMsF=i0!?0n~dx>8QEzElabvfBfCvTcAJdsHW{%uz}+SzyG=%Rn~dx>8QEzElabvf zBfCvT>@(DElabvfBfCvTcAJdsHW}G%GP2ubWVgx4Zj+JSCL{JSe7DKSZj+JSCL_B| zMs}Nw>^2$MZ8EakWMsF=$ZnGn`%7-O$;fV#k=-UEyG=%Rn~dx>8QEzE zlMy=@u-jy0x5>zElabvfBfCvTcAJdsHW}G%GP2ubWVgwP9Z%YAGP2ubWVgx4Zj+JS zCL_B|Ms}Nw>^2$MZ8EakWW)|h?lu|OZ8EakWMsF=$ZnI7-6kWuO-6Q`jO;cU*=@k# zN45R%v>#ja14I5-z5hw(pQru9kiV1pZfMGe?r(qi%ZERI`s2qBAKu+>Q>5b5^gaOt zPfdg0bmnQ`lhm1~x=u}J-l{(}oq5dV)O6;yvs2TVa-dVw8D93X=@fc6HTA7&3O<~q z`qngsA5KzzYnlQOC#k+QO(BSrRNtDWSi(!GQ!wGw)b~wOIN>DK_f1nk;Uv}fO;bqW zB-Qs#Q&8ch)G0V{YU=x@DLinJ>iecCKyZ@k`=%*GaFXi#rYT5plIr`Wsc8R8sZ-(p zQ&ZnJO$Gciedti1|yYQz7$HQ{OjD z1H^D+B@BSDjWYK)!ymuQ~CHWrTVe(yB`a` zPi5Ah6!v}7RBruAs_&bovg=P$ecv>dUw@M7`zAjYexJ&ef2pt^3%^h0%AchAzG*63 z{v_4+O;h>uC#k+~n#!1eDbiedt4EU2& z-#7WO@cUFQ`%8uWSonP^oBbr!_f1pz>?f(dZ<@+zKS}j{(^O9TOR0V={O-rX?^D_7 zCxw0AG?kxzlIr`WsSNd#RNpsE<*1*e`o77Jh2N*L&0i|)$HMPZ`Q|67zHge!I6q1C zebZFV`AMqpo2IhPUrP03;deh4exJ%8KPl|{rl}0_lT_a~P34fEr24*TDvSIi)%Q() zEc`x|5B^eNKNfzU$_PJ6^?lP+PWVZx@0+Hw!cS6t-{j|o2R{}b{8)JKW8q=y5}Ow@ z9Q;^#n7YR1B-OU2Fm;j5Nvds4Vd^TIms0&$c<^K4!H!h;_R z4}M;F@MGb@&kGNJEIjym;lYoE2R{}b{8)JKW8vY*3xD(a=YQ!8{L8QZ@n5$R;=9N3 zI{edre*Eym5AVKz|LOgs`ZN67yC44f{h$8y{`+?yKYaY~)6c*E_xGQiX?WC;-bzYu z^5Z?=hp0EV+dV&g+~c2*Ke0TX#jbDeDdq5Z-T3iuZ*Gss)V;j<=H>{SZS(6dpWc7` z=9@PketcXq*J=FIpMLo&`gBzI5`XpgU-<1$AK(9Y`nBIaHotl+@9qyvxZU6W^|$)G zIQTLf>d9CJ&9Aem#P+y@>l8mxgX^?Wv4iV?nb^T~phN87I(Q~_aQ&Goc5od?6Fa#6 zWEDHO4ytJ#P&?{;{)!4<4X7n|K8VF3P)qK79E%!IOYVFqiyBZ%?tC2XHV(bJ0L=C7< z?gRxy4X97<1PDY8s88+$3p5SrkI)G@hzd}j+zCI38qn3;Ny`&8pgy^iq9JSNsbgXpgy^iD5+^c73ic}iV9Gl+)2F@HK0DZlZGj3Kz(v2B~#RZdbCb@ zrld>%L@8sxeQ$P`6FJD*G0Dds`a(6`y;0I$bk5|+H zey{a%dNmEGKca}Rmme&SfG$Rg2zwdB;t;4$?qm;(8c?6y$s`svpgx(p6N(6XxyjlT zP(=8gr|f1k28swn=Pqk;4yaG=+-ogrKz(xOj%!T=>J2C&3=|QD&P^fW6wrOCbAz_1 z0sa-JB~wHgIyY;Jb3lDEodSvoL+5@HZ3-wN44r$sMGff2*15x5)ByjC^mIWHVd&iL zt<3=)0Y!v?BErzQAw`@5>XSP+hl?6epWL}cT+{&D0X$h483T zW!0#WBEs0Y{zjVv=ujg?gt2p#jyM8p$+U_vQbZVO72%_59U3C7B8(IfMp{MKxw}NO zBZ>$kMTC(e!q~aeN1OxdlRMY@h#F8!?p*aFY5)%>v2*Q@rU5;j;NuCcB8+%3QbZU# zmkNnL0t|gbiU=dEB8(IfMp{LPe*}sMW9RxJ%?v0ajK@_*E+UK+5k`s#BdsEg6cI*R zMHnd}q&3BnBEm=!VWfyK(kjA85n-fNgt7DBuI3IXB8(IfMp{LPw5KRuM*u2qUc`d|ZD$kMTC(e!bqzKBSnOfRuM*u2qUc`jGae^ zwOxTCLVQrCh%iz_7%3u*6cI*RMHnd}jI@d{QbZVO6=9@^5PvaJL>OrmVWfyKQbZVO z6=9@^Fw!c*ND*PARfLfuLKq39k&8qTVWNmIb>6*@w#7sdVd}hrA!-1Fc!^dKCW;6X zMTChWLK;F#6cHwh2otR$OcW6&iU<=$goz@;$7R{}B1{w!;$4Lz!bA~aqKGh2 zM3^WdOcW6&iU<=$goz@;L=hoA-cUrCC?ZT05hjWV6GeoHBEm!wVWNmIQAC(1BE;ux ziU<=$goz@;L=j=4h%iw^m?$Dl6cHwh2optw@S~Z2?`4VzGev}%BEn1&VWx;M(<;Kp z)1mC6Ia5TKDI&}i5z@dzrid_8M3^Ze%oGu3iU>1Bgqb43Oc7zGh%i$`NF!jGBEn1& zVWx=i@kBCoXcQ41BgpVho=^Vi9=u8nI4aH`P2s1^5nIghW5n-l?FjGYMc(@!I zB1MFmBEn1&A!P!YBEn1&VWx;MQ$(04BFq$TWl9w?4d!MVL(4RDLE%)!pN#mVjt@w9 zU&8Ky{|eM6Q$(04BFq#KQc9XBBFq#KW{L1Bgqb43Oc7zGh!AfI6cJ{M2s1^5nIghW5n-l?FjGXBDI&}i z5oU@A@#%yj!b}lirid_8M3^Ze%oGu3iU>1Bgqb43Oc5dcQlO{gLJ?u1h_FyZSSTVa z6cHAR2n$7og(AX25n-W-kbbTeiUK{(2m3J!kYZ%%yF$0sbjv0;D0e@2)}S12MZ6cJL$Stueb z6cHAR2n$7og(AX25n-W-uuw!;C?YHr5#psp5n-W-uuw!;C?YHr5f+LF3q^#5BEmuu zVWEf+`*ey33q^#5BEmuuVWEhyP()ZLA}kaU7K#W9MTGEpM9&tLBEm`$VWo($QbbrO zBCHe*u32rET|l_J7Q5n-i>uu?==DI%;C5mt%_D@BC#YpYU3 zSScc`6cJX62rET|l_J7Q5n-i>uu?==DI%nw{gooZN)chDh_F&bSScc`6cJX62rET| zl_J7Q5h0B~Rf-5JMTC_i!b%ZgrHHUnL|7>ztP~MeiU=!3gftLZDI%;C5mt%_D@BBr zBEm`$VWo($QbbrOBCHe<(ujPeh_F&bSScc`6cJX62rET|l_J7Q0b8Y9qtb9PMMD*b z@o@A6f3)In1$;!qJ0o^T+z#NqF_j`h$|x&Egq0$~N)chDh_F&bSScc`6cJX62rET| zl_EmC5-1|96cJX62rET|l_J7Q5n-i>uu?==DI%;C5yCxzdgP5F!i^%rjUvL0BEpR# z!i^%rjUvL0BEpR#!i^$AdNkN5BHSn<+$bX4C?eb_BHSn<+$bX4C?eb_BHSn1iU>D~2serdH;M>1iU>D~2serdH;M>1iU?`=XrqX5qlj>$ zh;XBbaHEKDqlj>$h;XBbaHEKDqll2kF*k|`H;M>1iU>D~2serdH;M>1iU>D~2serd zH;M>pKz*Z#aHEKDqlj>$h;XBbaHEKDqlj>$h;XBXZlhp?lAR3)q;VV&hhOklFaFrT zXFR;MVvoiRX=krvP{g=VM7U8zxKTv7QAD^=M7U8zxKTv7QAD^=M7U8z2p0mi_!kr?*og%`WBEp>_!kr?*ogzZ&PhSAX6zCj zOT54R;V&Ql{OOM$KYVz1zd4ZZ)WdxqxSx6mxQB>)NVtcLdoZ4cJk6wWbL^=HqpQQxDiC9pHA-0o$a5+)g@Rn{=StNe66`4t6`~fNjzNXD@Yd$l0j}>?a*| zcG3a+Nr#@DbijVn;b$iuu%C1Y+DjcA1a|5H`$-3aopiu{(!pRS9k8EtK-ftK>?a)* zcG3a+Ne5=V)WM-yryj7Mba>WD2ka*uqIJ>%`$>msopiu{(xF-}b#SoMsR!&Q9WZs$ z0sBb@O`UYWe$s(cCmpb#bnw(k2ka*u!1PiFhcKObz<$zUOeY<%pL8hGNeApF9nN&p z0sBdZG`-ZpK}Dw?u%C2b(MbpFCmmdL(gFKP2N<1nz<$y}MkgJxpLC$lOC22QbLs*6 zNr(HKbijVnAwMS_u%C3;&q)XDCms6pQU?d$oO-~1(g8Rp9k8Et5Y9;l>?a+FbJ79( zNeAPcbfA9n0dgRHxI5KWFGg{9%B@a4P@B9v1y?5>s7>CTlB<&r)F$sv(bY)@Y?GMd z+?~3qm!rTO=k8Qaophjk_uZ+TI_W_7?z>Yxb<%ZJ~tXFxjQ9Lr%_-( z=@dbobijVnDT6xcfc>OX2zAl{`$^1k?oKV!%TZvCb9btlPC8&e>C`iwbijVnsc1Us zfc>OX)AUjY%yI6R69j&bijVnDNZ`+fc+%qICrPM=;bId z$GJNdMkgJxpLA-BPC8&e=~Nk=bijVnsWW=11Lin)%yI5csnBT@*iSmeLMI)tpLEKF zPC8&e=@bl|bijTRbDXD2zb)B$sx zJLWidr+nu$3hXDH0-lo&*iSkoJSQEnpLB|NPC8&ei8;>Qsl$0W3e0itP9@Gs2ka-E zTAY&(*iSmuI42#jpTzYz0dt&yIZnVFCph=!z4$Ex<~YH*Iq#$cwaMVzop;iK+GKEU z&wHr@<~RX!oPaq_z#J#wdYphcPQdjz0dt&y>v00+I018v00+I04t=1k7;)uEznB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@Ij zVvbWW$Eld(RLpTI<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S> znB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI z<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5 zIZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgTlhB?lL zInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT z&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8 zhB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lL zInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT z&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8 zhB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8jycYbInItb&W<_GjycYb zInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb z&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYLaGW>)fBW+< zzy8O6-5ysyz6-Yy{^>tIe)!>sci+GN^#0xb7XIzszyA93pMUu0Km7jR-+uxVb9?-G z+;#TmadUlqhuhBn>Hy*d5ym|cfqpau6H#Z6fpfPe+9>@mGKUh2Q@4@%@j-ul+W}+oL@F-Ti(`xA69_ zztP(t{_^3^pZ@sq!-seG-+%o1=TE8j ze%bYZe>jKVuK(NX`agc7FZs{kuH$b%U;p>|oArOYGQ3g4OV2TCcHCcHw;@|ZVSVfmpj6+<>h8D zYMb<2x{?A=5U#18W*GZR0yI=DbY% z=RCNlA<{O!gL4`(ZO?abO+%(_LI;I3WZEWlP{(6afWZItZsPr;q+Mdr=_9zLPSN13cGg{i7?ZR4|jiSILydan6l+I%A%^;?Ea_d_Kd^;(8Z_d_MvWF#DQS%$W@ z@!1~1CL`e}+?pSzO-8~|sAb5sjn5_{;V8&5w6#6oagm-O(>6YPYHczSj+^%8hiQ|M zaNMkC$n-W)p*7@ZO>;9(SAImBj6}QgBidvn+La&CCL__V{IJ8l(Iz9&CL_@%BX(^1 zxI1iqRoiaQ-Ky=3eLE~|=j*$hi5-)+L(+Cc+73wDnfk}WF4LxJN2Bdvw4J4Ihoarp zXa}P0IJ6yxw)6AtAheyGf4tT*ZK`$z+73Y5nfb08x1-N?@Y#+%+o5MWC*KY{+Zp-C z6D-rFYDb;zptJkYV~3pWh_fAVwlneVaI>9+4pvc+0MPU1I%{jy&Yb5qsw-1+0MGRL(6t#*-p8)>-ss9m&KrOj*PnxCy{S`YYE209_k~`>F)Bw)`^~s&`A#n)QCwHK&r~$R) z4#d?opg%$f>WT_bOYT5kQ3Gnp9q21+Kz(ut0*e~Zb8-g?iyF{#GM&Q?EY?QQfyQD7 z^nlcX$f5?+9dw|wr~&oK9mp(dKz(utI%^uxDd<3GQ32|cJ5XBGfcoSPq!u-x{-gt~ zMGdG=?m%o&1L~9M2s&_E8$kzhiycs(+=1Sr2Gl2aAh@Ujbx0j3E^0u1atD%Y8c+o~ z&|Fl2`s5Bo7d4d`vTUDSa3WZa&Tkq(sCrl14o#SW+?cVNA! z0kz}~ycac~mfV5)q6W|s;m%B>$-R5^qzUL|F{dY5+eNdshUC8o=+hKoMc*GDmF$6cP4r5fn9`i?LI;DQZA1 znIgj8MT6oHs88M0zo9q+>XRuV44ryYaR~TVpr;Fp2zwVIigQ4HGMxg72z!?$YEwWFVejfh zQ3L9eJN2xh2KZ;BrwfV*dzUO~b3jKx5n=DT@*>=;@?WuPZ7* zBia-Z_HKw2hd?d4Q`akMKrOjb=PPPJE%~VXb!!bE-l8$M-UXA=4EFAs6gz+}J$7!L z6g7Ygp?3$Rr~zCEy&EY-4d6oP-A}1$03B-Ywn|X}tO2!TiU@l*S&DN2kJ-I@EkzCB zF}rumrKkZsT+qU$-qn}d2q+@#U4$uWK=(CTMHoBphKWOxN75v-nVn9t0o_MU%2^Dg4Vh4RT@6!XPxU`HTlr{Qg}wo z>pEA%YU79Aw{uafBp=G*^uBQQP*&Et zidGsvEvBQOjF!?-OhyaoC?un0bQF<6>!*N>me5f=*16?YT0XRXj%INqFCYH=>5m^je0X<>iAL=%%aVr;{g%G6moRIn?d8FD*z)p=ZP@ZM z)H7^(`IS9vdHI1eY4ZFsiRv(3(Rd9KmfHg}EP2Zm!? z+;t7-NTO?T*I0cd(Y3g1j6Ra+THG}@A4qi9|1~Bb33Q#@b&kqNqCG~};;t)XN2`asibiau)S9ssVn`ADL>9Ir|FNTTcGt}9GO5?vp6ed+8#qC3QE{yh@t`nYT2 zJ(B49xa&(~M-tt2d`-1S5?vp6T>(0h==wNU(`#fs(Da&Bj~co@?z*CLB+>P8*F1V8 z(RBdV1bQUV^>Nn~ngfZhz-!7p66pH4Ypy(!==!*8l01^=`nYR$Jd)^oj%!*xlIZ$4 zyPeA-u8Htqh}S51)X=rKYxp~o=vv%0?j1>VE$$ldjwC)=jz-u1=l{PX{`-_O;9}rD z{|zPF@@M?_{@}kg)Ytbvzl!lR_-`XaB;IultTn&(qhfp9!SxY9)ZqH?DRyw}pv4ZZ z52IoS*A83k;QDYXc5v;$#SX5|j$#MbM**z^YDXQyEGmFCpqAXh&f*ZLC3hgSr~$R) z4w4o%pqAVL)S3p=3_9pgRDfD?2PKLcP@jBVx%<7S0rkn(?|-TqP@jBVxvOeGeKP$O zJ4jOd6(hCe4x$t_z;i%-atB?CL!dsngEB=8s88;oO-%#(BXm%wr~tL(4*C=|pqAW0 zp`r%VCwI`Or~&oK9aJi6Kz%Zu!wy2#M$kd2Vh8kq)IqDF2GkvNP^+i`^~oLdDr!J| zatFm~8qg`|pjlA?>XSRDR@8v{(Zwi6yHf;*Tlm>a3`HzlMl_e zliaS!hvwT!b=TxW^X(+QYx3dYfi{Opn4P3}Y51Moc&$A&-%h5yCLfw_CvRSp56!oe zMX$+!vcIpA>HI3BH3R+p|Nr~{{qz6xA0PgjBmM_B`TrrbpZ|Zmhui(L{QvOC|1TxI z-v8G6xt9O8fBeF4fBN|T$9Mnu_dh(}19!_?yj>Ik{Nw*W+x}_quse8yK6d*j-*2~n z`f#+{Kly&U{nLk|-Tuk<+wGr@zIOXp-@kk@8y(92|7k;awt<2FzvUEP`u}hX_w;)I zr}1-6H|Z?j^AYZ`4Wxa38<4sgJ9DX-&Z1L?2- zd%2hT+4_%vJO4ed1pemsH74TMUp~G6_{}$OKK!_cdq?0;fBNOC=+jZ*OZ?UK`v3N` z^WT2U(+hvpet7;HcEEdh3ZMCtaJ;?>dKfyJ;XDjalEWT`XUSm?!_(xjhv9j0*u&F_ z(*G^6IUKc|Kn1SDa4#KATlUKrQje@$@yImUv`&+8R)Qa^!jX3edgf$n^9zz;i$? z`AGKkhd?d)NcZ$Lpq6|TrP>n*`M|Zj`UBz1A4kRic)}{Qhg1mPd<`BeGRBjK8jLp4d@gciJ-m$ z)F&UQpuPswCm+e2z6SVLpf2^u=k$j_T`C>Hk`q?+>QayVPG1A+QjZKzUjuqXJ90dI4X8&uvOIkas87c2 zDQY<~J?$wtQa$|+s3jlCp1uaul8=bLm^@^5oo_AsCS^R3p+c!Lr9S=Q0`>?LY6{+bXw8t-6Y zN8_&xv7_;hCU!Lb+7LS$?{H#A# z1xcSpKf92=psBNH+Yyo(G<{ah&!XKz$Z*icwP;xg`3{;si7CWfZZqTNEs%aHV0G(AF=hNjM<-9pIO(DYffTO8Ml({BqQ6GR)= zs^5LlZXu+HXyaP6TPzxukTW6;OGq8j`dPGF2#F+`K8tn>A+1EyXVJ0{l1wyx7VQ>7 z%88`UB6WlW6iuB)yM>UBqUp0}w-Az3G<_BwdWBRKO`k<>RY+XX^jWl9tmT=l4IP`THM6?T1cy*a7chc&-`hFg)lFdl)+HVGqN@ z{ji6jqaOA!JkSq&7&_-+55rUQu!rFRW7GpSsBw12PzA07HtO*W62nnoqaNQNG1LJY z_37JvE-laW27V5aTR@VGsEDG0q$q>VVzD zI9p(-1NPM841u8z*i(#F*d@d%&K0Oznp{U{5_J^+O%7iyG7Up$^znkBR(92du)F!Vguz zo_b8)hdN+SJ*MqL9k8b!6ZWAF*vXBl`cMb#sd)z&zKrSlXd1@ceAojv>M<)H>VS=U z%*Tg1V51&0@u3dXCh5M7qtxL>7scZxtlxk9`R7l+vrm$bs}pb!bWwyGJ-&n+T@>L) zk1ydy7e%5nWiANQOH$YD^>pCXxXY$$-s)`+7_y z!-7#@PmPIW7*}BrHvWK#WEfXo4|TwvdR%Qi(gFXNm`DapBm*XrA@X^^o*EO$5V5Dm zL^4Ed)R;(e|AL8RNci}HiDXFFs4kZBOe90bo*EO$kg=!6M3SGvFp&%edumK1L&2UJ6Ui{HJ|3MVF_8?INCr$KL&2UJ zZ#S4o223PF#hw}y$xyMU#zZny?5Q!43>AB7OeAskY`{b^Y}iv{A{jR9sWFiZ8$JqR zA{jR9y88}`(^0}NjyGuWS#_!x0n7h>2vxL^5I`88MNJm`LInbHqe4Vj>yu^h_Qxk&Ku~Moc6lCXx{o z$%u($#6%KfkBEt6#6&V;A{oa|RgXM1CI%4`$%tcN5fjOXzw#m`l9ywPl1VK#6&V;A{jA}jF?D9Oe7;Fk`WWhh>2vxM3Q?4 zOe7;Fk`WWhh>2vxL^5I`88MNJm`FxUBqJu0e8a*-GGZbbF_DazNJdN~BPNm&6Um5) zWW+==Vj{`UP?$(YOe7;Fk`WWhh>2vxL^5I`88MNJm`FxUB>Ax(6Um5)WW+==Vj>wa zk&Ku~Moc6lCXx{o$%u(0|I*wkk&Ku~Moc6lCXx{o$%u($#6&V;A{jA}jF?E$;0KO< zBupd|CXxvg$%Khy!bCD*BAGCeOqfU}Oe7N~k~kcfFp*4{NG41q6DE=g6Ul^$WWq!; zVIqm6vp6`5W3xCkizBl*FpJ}|I4n!^sBlmg$7FFx7Dr@pKo-YiaX1!7V{tGR$6{&b zHIBsMKrD{K;xH_Z!r~w-j=|y(ERMk904&Wb#o<>ReZ|379DBu~R~&i8fma-N#bH+* zb)}UkIOd8&t~la~1FksUio>lq+KPj%IM#|otu)Ub2U>BQ6^B`IlobbAaf}s*SaF0E z2Uw5zYUjbM|7CwAzyJ31qMh>$T>t&I`pDY3efIuaesgu7CaI)BBI# zeDmhRk9)Xx1pf4=U%rYy9TmRBUv(}TJilRh|LgDg_HY05!(Tr9`O_aie)#ZiTnDOk zGe%`%Kg&8=HnMT0h&Z%yIhokem;#9%jRRa_N8|W{*wOg&PV8uWx)wVcA8xdcR@tM# zDnx~rX|!sE2mnJI+Nu>I;0#ftRVze*8=^+5R)|o1rD?RvjD%7wQK3~UL@3M>HCnZY z2xVHLMyvJ^p=e9gXw@DflyHd}t=dCY{rW;(mo_q?yi4q8)#4Y5y+n;x?IA*Ohp5r2 zJw!-i7ByP6hX~1fnntUBG$Bz+RA|*6A|xe<8m;moLXv{0(W*T}NLmmzTD6A=NerS! ztM-spb1ft{Xd@Gn9K?=R?IA+agQ(FecO)c1h#IZhLxiLVQKMCRh>#?qX|!sJgro^k zp;dc`kVGMBv}z9#k}5=vR{1p{$wJg<)gB@wU5Fa3+Cx^2Oi0GiMkXX>h#jrkLxdy^ zQKMCRh>)})YP8Bh3P~KIMyvJ^A*n;tXq7@jl830!sy#$V`Vci*wTB2vAfiUA_7EW{ zMAT@NrxlV!M2%MMAEXRVzeDE)g|awL*ks6H%j8D?~^>5j9$5 z*^5pht7wSwI-)c|$|H$lN6V&Y(Lz&RP85f>XrU?ZD2f^_T4>6vilRoV7TThtQCNlM zl@}MaDH4hb#g1035TV3S)M(WT5eg1PjaID?;X+hVqg5+pm7`s@83~uAYE!fd%?IJ? zR8gZvAN@JNp?T$DNo|T&p?T$*Nl~L^lf7z%tU~k36O`f{t=dC` zdj>R(R?YP)G_Sl;DUNK_9mhwL(^* z`M9cTUU}nGoTF8Hi16a6sL`rDWEGlUg`JhxP_-#qRW%=%E&g?LwCa?#s%l<&H&y)A zR_!6H(7f`Psy4J$KiVoZue`7-j%?K)B3$V&YP4*!SDms}p?T#kR&kD2?IEks{4#H} z3e79ewQ6%MJP{yvv??khJQ*Nrv}%P2PY8$_t=dC`Cj~@}R(*%8I*6`9^UB+=+7zuq z^U6!GqDHIskX2}2c^+0A+Nu?@3e78T#%e=bHL_J`UU^7X9NDT<)+#iwye=yaZPgyK z3e77|&Wb}@b;??W=9hgKt*V+=UZvIMdR5iD@>MGw=<$|k_#HwP!MXPHS zk63ky@2WzT#H#yySJeov;t)rL;Fox-_e=EIfB*T9?|=P+^WyVMP5bXZ z-){95K70SUyt&OKJ{i)xEM=9W~yu06T;a)DDdY)+U z6b7GY@pLwxXz}!MIML$iygSk2=|g{_#nU&?M2n~6;Y5q4os(I{aQ%P#71n>Lzghn& zzP|s?ep#*c=l1sP=j%TPVf~L5N< z43RBAqRDKnbggB}t4J+vk+#H^bCOhT`6#Jj<3#kW)Uf5_q=qe5CpA2KJhoo`x3wPn z|L=g~f10em|1Y_u^bh}kzy0m|@A03$xqXev{`Hqn?>~O?&6^KD?&01M_|u<$`6~K! zRQM8q^|>?t?z8h>yea3uQHzGhA2xB?H1>y~oQ9howrP0iVVj0?9=2)tq7)Op_I!7kolx~LU+zrz?Qt_sAGfd}rmS#$hVLHao zb7aWPsCGOdGu6h?&G0(MMKe>n8Kx5quXEfKGo_p1b&mUAX5<)CeO$sfCC2bN$6YN` za-8uPUgx;pU`jW`bfV#Pj-tRR-3+f|OxsZ;GNam&Hb2$I@H$7X@01*84h*kzTsShN zn_)W1@H)qhAv3xeQ*h+cPKhzR&XFTKCCBhONAByC9B1APuXE(DPU&Wt&XJcoBgYud zk#9OB#xR{Dk910oVLHX|I!7+(ly1&k8(!zQcw$O7W5Y63J908-R6Fu7r`i}B)^YX2 zlpMo!s^N8x+{h{2oZrXrI>+S;GrAdKj=aSwF^1PU@)4)x7+&YdGn|rRn9h+uI3>q0 zog*)BN{-=moF+y{@W|tv8P1WjH`T^4og)`-N{(SVM~>Z;9K&>u+_@<^^L8-5Cm2zk z=U3_{2J`$N{Zt!gIP=E#{G$AnZu7?W{7(FooOxq=e*Jw)j$v%`ThH_J?K7&~9XW>S z81d(DJheVG9>a8u_;a`$renmP!%@pUGY7`c<9I3~{v3|i%BO~7cpW4D{QTVbly39i zWY3R?Psy1-@jgEdJ|oANY9s#q{I>U$YKB=K*Md*Ung1pWM*KM(Pi{}?W_TSV{v4vQ zVHwkA#GjuZy`Gu2<06ZxHpWso?vV;ZNyiY*dz2C*;h3kQkrl&rh+=D0W=!I@M<0Pd&e- zIwfb`*q&cVosu(eY|rnWPRW@!w&&MOXXMQLkLNc^r^GmN4AU{<&(H6PPK{^&boBg6 z=#-rK)9drwpHp(?_bVe&G#c^e=XW}1hGWE^Iw)p+WpMU=J zyQ%RQUdPCPHsZC&IQq3?OBmX%X@#lElVLUY+*IqvG6l4G28jFn)-pP%0XoEeT0e|~=9Z%U5gd5!q<^Amkjx*4Wp z#Gjwv*qhPKP|b)xKR=Q;rJAu}8S&@mSMH{CGrq8l`1A8KbyK<-8W;?K#*e@@36Yg6Mfj>*T{X)|(+k3S>+oQ(T7((%^W)NtnWC?{|$ua=y)9_L7bGb2j47 z`8L1B<=gz}DBql^p3j8HxA`MTzRmAF`8L1B8Q)6Th(BlJ{*7$JpR*Bv&c^*4*|`5X z8}a9C+`o~H`!}+2|Az6&oQ?Q%Hsa6Oh(Bi|{+x~Yb2j47*@!=9BmSI?_;WVm&qm}V z8}a9C#GfBeB2K4`8$lf-relP3jEIgA&@tjU^P8v<%`t*GMl8n&t&InoIcX{qMiM|5obl_WJ(Y@f&@~f4(3UzkN?J-j(-1ztbAFB70&>(6m+H zE=p~EafwY^kwUR)D_|%#ZN&}6rmZg@v1#iNEH-VOhs36>tx;?0TSPO$C<+BqeLHN1 z9YuwGJ8T9aMXA0WHbau4RNoGp0ZL7(|Fbs3m7-AJ4x7PCQL66`o1sims_ze*flX1W z?+=?{PEo4w5B=Y!8T-`qZH7R_rvAcdCgh4zeSg?Y&lRQm{;-*>D@yhKVKa4Clj=`! zGm%#m>iffHTCXV8UvteQUs0;>51WaOqEz1>HWPqFslGq-XQ`R+py}HL-eObVA2xxP zDAixCO~@ol_5EQJI*C$!f7pajnpA(NO(-P__5EQJQi)Q1f7papqEvsSHzAfN)%S-@ zs3l7E{h_aK6Lx9(Hldf;)c1!?2qsGP{b3V|iBf$h(S&58RNo&qp_wMt7utkqqEO!- zHldm*)%S-@$R09v_bMO6wBLdh_4OBy4`M>|f)r6<-yb%w zOA)2|{;+v@iYV3hhyFtMK}`E$No}Y;hzZSWRz#^_ntVI-K}`DzN^z{dKWtVUYf}AL z@ zHmit4so=-)_hlc%w4ch<#_H?qgP8XFnWDbFKlDLN`%z6%Vc#D%tCU2k;CJ=+Wgo=& zS!%%tG401VwF&k?OlVd)iBf%k*sOXIrTYG`Sp_9Z_3f}(6{Sh_cl2hJlql4XTKXWS z{m!STuy2RWYAR8xZ->q5Dp9I$hex&5d_{~Mw(+Aj?Po%zIf~8Oa>S6WRe#Ei*{;+xDk0{mmht2zcG^zfM4z_f^ zA|`@`0E$h0-|vH%_EWB+!v4POgP7R7j!jh9KOg!- z^+8Pg?N@E6K8R_*1S?AQw+$b}w4a9+754XKAH=lZjMWtO_4Pqa`yp9TUw>crK}`E~ zSy5qsU-m&v`^i~RVSiutK@2#Q`XHwLDy=q4K8R_*Q7cOI{h<$H+7H)?3j6-WuZU^C zW~(Xe@8~{=X+Lo*>g)T%<~4SrRNoGL5Yv7IS5(-yL%$-X{WPwmusy&2*K+&4Tuoaa z#I#?}6{XrAIH~!Tfhg79(AzKTic)O@ZojiDO10f#^Kn5zT8X9-M`zc2eBru`_fI9A^u`XHwHQn9A54`SNy7K>8-ec7*wX+LHxD(u@~^Bo*f zs_zed5Yv9|SX0eGrqH@9t;{`}+DI zrv0L_sIPB_K8R^Qvn(p?`$HeZwBKG9754XKAH?|glqMgIf{?M<8 zu_wv@N@+hFEzME;{b;eNZNTlGYAfooB!9RP1XcP&cw z?a+TCru_!CsIYH`K8W#yaqai9wW0bTru|yBDAl(^AH-xI#AN?!vh2SRlYJ25=gIpI zNBF^6KS|yX&H9f<*he%!F57(0Tv}>=db}T$^`DFIL$dy35zU9swYjyo2|pZbM@#%* ztp7|z^NDn6YW+xT^TBjYrhQED!?6AX5zWWcwQ<@JEZg4w2yFAAb!nJ>{MEmZ$bT5Z z55D@(Lim>v`H@%uDk9rz{jjV5AcTJnksovQUxV;d-~E8Ae*=-9_kKiMzvOG*zwLYY z{`>df;rAzT{rBHP4JEy~r}X$Je#8my_cynDjw!sp|Nh%wYyE%u{I;v_--gH4MYreh%14BIq9^}{xe z!``q>_goQ(`h}uK9pmaPV2Gt zp&Y|>TA}li9OLI{RV@s~7^c&Dxnn5D@H(x^grOY6>$F1PLpg@mX zK8;js1-6H646|-s?lhERc%4@8dML;6I<0W^P>$hsT925Im6+GZbTZofh30$}zl7i|7pH7)!22afWgXuhYt;AIdSjj-gtM z(~MMW5t?Be!|SxD%utTuby|;g59Jukv_)TratyE2%6cEkF~qbe%TSErby{R)D97+R zEt)cvV|bkwK^e+1mUfGp4CNSJ$7y1O1Y2}uG@KR}8MZM@r^P~satzaH@sFV#!*p8A zV<>0d4(9g+BdXJU;d(Hb=F`^0HqLP7jjj2L^-#BYV{5)!J(M$VY|WRdhjI*Ko8Nkx zk5Z3RYrRH2Y-5;?5r1wzJU!ISFr8LD_fU>uI<3d0hjI+lF@7G$Q?;_RN5e7V&&?;J zhjQi**3CzvhjQi**3D<3hjQjmyv>K8M{*1YZ^WOQZ$1xIGtAns0>gh8Heh%U!vf}g z$NcYa{QL%eXgx47Fc^b9w9@BCQs(WYl`cP$GH)-f^!SmKd3%{(UAnb*re3Icm9JHz@MpEYOrByF6k}_{E|2-8F>vQh^ zC-pe4|9Glr17#rn`j5xOJ+*vR{}CSbAEng#TL1Ai?BqrLN27ExRiz9>YuNI{VoT7p z1#(2Gt%#@Cv~_qCo3;)GV$;@PQf%6C`eM`8;Zkhc+62U=t)qa})VGLcg^4H>NcHWo ziTy-{eLHLxp@>p_J8YJuh*Et!Y!;|!QvIK`i3>%cz8yBiffHd5kF4_lM158Bwb551XYknpA&+ zn@~#>>ifecv{Hue2svxrEP>iffHNs%bkcM{D4BT=gF51Wuslj;j?LPJrg z?+=?0QIzWY!)9TUDAo6e%`zoXs_$Q#MN6Vo-yedOejK|ACAFb8;iTBqx5Fl^6s7uh z*sOUHrTTW*tbh`w+SX+6a(?u%T^%J2v|S`6HU&eq4Y*x7B`RziaJ!C5lxiDryQ)f* z>Km}VwYE#GG<};DS7KA&4t)^QF2fQP_U*7)lqE{_?XX#*B}(<}(EnM1D{YoyUIDoPuw4`M>IN=lUK z`@?3{lqePaIR3uugP72)s?x^l>+6G<;DeaQ&Hlgt`18-7em9?F9DEQHnpIfh1pEH5 zS(PP91;4AmFZ&?I&r%CMhzZRqE^UH+5EGhJU7}RqA2zGJM5(?%Y*u}VQhhsYJ-YL~ zCe`23ThH#OLj9IT1=cJ-wvDAW1>{w4x80vqEz1wkLt4d&B{Ky`%#;Cvq@sS z*#;bM_J$sBV3uqHjyHQlk2l+ZACKs`=bm`84LIIxcj)J0N53K_`XDCWeLM6)OuYMc z=vTx7J2=vTzV;QK@WTO+n! zJJ-&5KAebPO9x&UEF3ac-yixFG0_Jx(XWV!K8T5aMT}3nq7P!C4`Lp#HrfXtAH+nz zA|@u^ANn9B`XDCy6*18VF<`a&AO@^+f4lKd-}d3#cB1|g_gA>T!2R{@FK>T!`-|IO z+y2t_SGMi`{B`Z~RUfbVWo|xP^^4rH9eMD{st;EE0yle@K2`Ohs?St?r0SQp`9Re# zY%BJ*>(f*prrOH-DAgyaK1lUBs*h3qayB2L`o(P3KJ)nm)fVaVQy-uD^wfu^ei56G zPW=)#ADsFHY(6%%zf^o^>KCv1$kZpMe&w3aOZ~bvpO*SnYX>X+8aEWa%J`Bq(7ONg zU%z{IzlDE$_x=C%>yQ8O;a`9K`OklNf-v4Cp#A$lZ?}@e^ZlPC*T?;zwcPUS{hwd* zcR%|6{^#R2e*4qM_dhm%^S9x_vv1|y{eCOA+r@35w40~6G41AwsnKqpLUOd5r{D_h z=IJx}_{G-#v%CJEZQ~E#!hceAu>K#0b^FKqFSozm{~OBd`d|A)U-b4H$+!!2ku zgy9}E>R`ADjXD_aLZc3b+t8?k;XX9#V7L*DI(XWNY&$se|NIW9AsxAZz6R6|s3lWF zrutJerdCXi_`mHmCGP)UGX4|qkC@Lrr5tL${eAzhCB5$dUt{}!({VY!O}s8)pFaj@ z-HcBIT0i4Mf!5F1rEC3+9jn&Q*uiT3j2*4k&)DH={fr&2*3Z}hYyFH56H-5m%;%_T zpsQ3k;%LKKHLgX=Vo^7X7T2P+wPap=d0|Z|K|$P&VS#1!T8VPX=#mhV1~|D^f&+I#5d|-c+?wpFx<>W9SpahQ3u0~XVk%P z%Ncbr+-yc247Zt42g40!)WPt`Ht2ww!T69iQh-|WQHE+S=5YXOGz4nNM`5Zz1Zv4g zk*co&wdA8<)z*Oeqoa7$SAbgbQON3Rfaic(@=+}34}n_pQReDvKrQ(wd9^j5Kf+NP z=PN)h`KXlhHK3M!)Xn)C(9^|HMdxckPZvi`ov#5sUC=o^3hnF>9QAg72lRk+RNwg; zP_MU9o09cBn7VQ=S6V=AGXjuq^RMThCvJiNwq|c(COQ5HkI*XQtz*04R z7A*^btZMo!Iz$PaRnuqDAxfaGnm&sTQH!QoK(W%W1R|^Tv*>Ur@L5ftMeawSwVFPQ zb_;>sYWghNEd-J)>9c5h1g@*8vuL*vD6gi^qTNDZzM4LZ+?YUsHGLNC76K2}^jWl9 zEE<*oiKSr)tXS)3(QYA-V@;n$yM@4!HGLMjLxC!5`YhTl1ja1svq&9*IBV)G+AReB ztm(68w-9Kwrq80?LSWOHK8xI{K&mx;7VQ?Rx>>|61d1(9j{vi^eikhY0c~sgELs)< z=+^XEv@8Vdt?Bb*&tHQ*zRGx=f!7&$oq^XGc%6aQ8F-z6*BN-7f!7&$oq^XGc%6aQ e8F-z6*BN-7f!7&$oq^XGc%6aQ8Tc|Y@c#i*3=5S2 literal 0 HcmV?d00001 From 86391c82e9c5a74d0e28ba4a44631a43f33eebf3 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 13 Jul 2023 14:28:32 +0100 Subject: [PATCH 17/50] Adding My Plotters --- .../scripts/compare_qcdmethods.py | 138 +++++++++++++++--- .../scripts/control_plots_tt.py | 72 +++++---- 2 files changed, 151 insertions(+), 59 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py index 0a68e97bf..5c8fe936c 100644 --- a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py +++ b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py @@ -1,29 +1,127 @@ import ROOT as R from UserCode.ICHiggsTauTau.plotting import CompareHists +import numpy as np -file_w_qcdsub_name = "../output/datacard_m_vis_inclusive_tt_2018_ss.root" -file_wo_qcdsub_name = "../output_nosubqcd/datacard_m_vis_inclusive_nosubqcd_tt_2018_ss.root" +file_w_qcdsub_dirname = "../output/datacard_" +file_wo_qcdsub_dirname = "../output_nosubqcd/datacard_" -output_folder_name = "." -output_plotname = "QCD_ss_compare" +variables = [ + + ["n_jets","N_{jets}"], + ["pt_1","p_{T}^{#tau_{1}}"], + ["pt_2", "p_{T}^{#tau_{2}}"], + ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], + ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], + ["m_vis","m_{#tau#tau}"], + ["pt_tt", "p_{T}^{#tau#tau}"] + +] + +selnames = ["medium_vloose_medium", + "medium_vvvloose_medium", + "vloose_vvvloose_medium", + "medium_vloose_medium_vloose", + "medium_vvvloose_medium_vvvloose", + "vloose_vvvloose_vloose_vvvloose" + ] +types=["SS","OppS"] + +output_folder_name = "." -file_w_qcdsub= R.TFile.Open(file_w_qcdsub_name, "READ") -file_w_qcdsub_dir = file_w_qcdsub.Get("tt_inclusive") -(file_w_qcdsub_dir).cd() -# if(file_w_qcdsub.IsZombie()): -# print("Error") -hist_w_qcdsub = file_w_qcdsub_dir.Get("QCD") +chi2file = open('chi2test.txt','w') -file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_name, "READ") -(file_wo_qcdsub_name, "READ") -file_wo_qcdsub_dir = file_wo_qcdsub.Get("tt_inclusive") -(file_wo_qcdsub_dir).cd() -hist_wo_qcdsub = file_wo_qcdsub_dir.Get("QCD") +selnames_array = np.expand_dims(np.array(selnames,dtype = object),axis=1) +for var in variables: + chi2file.write("----------- %s ------------ \n"% var[0]) + ChiList = [] + ChiList_SS = [] + for sel in selnames: + for chargetype in types: +#-------------------------------------------------------------------- + filename = var[0]+"_inclusive_"+sel+"_tt_2018" + if chargetype == "SS": + file_w_qcdsub= R.TFile.Open(file_w_qcdsub_dirname+filename+"_ss.root", "READ") + else: + file_w_qcdsub= R.TFile.Open(file_w_qcdsub_dirname+filename+".root", "READ") + file_w_qcdsub_dir = file_w_qcdsub.Get("tt_inclusive") + (file_w_qcdsub_dir).cd() + hist_w_qcdsub = file_w_qcdsub_dir.Get("QCD") +#-------------------------------------------------------------------- + if chargetype == "SS": + file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_dirname+filename+"_ss.root", "READ") + else: + file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_dirname+filename+".root", "READ") + file_wo_qcdsub_dir = file_wo_qcdsub.Get("tt_inclusive") + (file_wo_qcdsub_dir).cd() + hist_wo_qcdsub = file_wo_qcdsub_dir.Get("QCD") +#-------------------------------------------------------------------- + sub_hist_w_qcdsub = file_w_qcdsub_dir.Get("data_obs") + tot_bkg_hist_w = file_w_qcdsub_dir.Get("total_bkg") + sub_hist_w_qcdsub.Add(tot_bkg_hist_w,-1) + sub_hist_w_qcdsub.Add(hist_w_qcdsub) +#-------------------------------------------------------------------- + p = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW") + chi2 = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2") + chi2NDF = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2/NDF") + p_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW") + chi2_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2") + chi2NDF_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2/NDF") + + if chargetype == "SS": + ChiList_SS.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) + else: + ChiList.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) +#-------------------------------------------------------------------- + output_file = R.TFile(output_folder_name+"/"+var[0]+"_"+sel+"_"+chargetype+".root","RECREATE") + if var[0] == "n_jets": + CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub,sub_hist_w_qcdsub], + legend_titles = ["#splitline{Background}{Subtracted} (%s)"%chargetype,"Data Only ("+chargetype+")","OBS - Non-QCD ("+chargetype+")"], + title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", + x_title = var[1], y_title = "Events",plot_name = var[0]+"_"+sel+"_"+chargetype, output_file = output_file) + else: + CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub,sub_hist_w_qcdsub], + legend_titles = ["#splitline{Background}{Subtracted} (%s)"%chargetype,"Data Only ("+chargetype+")","OBS - Non-QCD ("+chargetype+")"], + title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", + x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = var[0]+"_"+sel+"_"+chargetype, output_file = output_file) -output_file = R.TFile(output_folder_name+"/"+output_plotname+".root","RECREATE") -c1 = R.TCanvas() -CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], - legend_titles = ["Background Subtracted (SS)","Data Only (SS)"],title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", - x_title = "m_{#tau#tau} (GeV)", y_title = "Events/GeV",plot_name = output_plotname, output_file = output_file) \ No newline at end of file +#-------------------------------------------------------------------- + output_file.Close() + file_w_qcdsub.Close() + file_wo_qcdsub.Close() +#-------------------------------------------------------------------- + ChiList_SS = np.array(ChiList_SS,dtype = object) + ChiList = np.array(ChiList,dtype = object) + ChiList = np.concatenate((selnames_array,ChiList), axis=1) + ChiList_SS = np.concatenate((selnames_array,ChiList_SS), axis=1) + ChiList = ChiList[ChiList[:,3].argsort()] + ChiList_SS = ChiList_SS[ChiList_SS[:,3].argsort()] + chi2file.write("------------ OppS ------------ \n") + order = 1 + for ChiVar in ChiList: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], + ChiVar[2],ChiVar[3])) + order+=1 + chi2file.write("------------- SS ------------ \n") + order = 1 + for ChiVar in ChiList_SS: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], + ChiVar[2],ChiVar[3])) + order+=1 + + chi2file.write("------------ Compared to BKG------------ \n") + ChiList = ChiList[ChiList[:,-1].argsort()] + ChiList_SS = ChiList_SS[ChiList_SS[:,-1].argsort()] + chi2file.write("------------ OppS ------------ \n") + order = 1 + for ChiVar in ChiList: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], + ChiVar[5],ChiVar[6])) + order+=1 + chi2file.write("------------- SS ------------ \n") + order = 1 + for ChiVar in ChiList_SS: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], + ChiVar[5],ChiVar[6])) + order+=1 diff --git a/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py index 4545125c0..2e8a90b65 100644 --- a/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py +++ b/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py @@ -1,46 +1,40 @@ import os -years = ['2018','2017','2016'] -#years = ['2017'] - variables = [ - 'met[0,10,20,30,40,50,60,70,80,90,100,120,140,200,400]', - 'n_jets(4,0,4)', - 'pt_1[40,45,50,55,60,65,70,80,90,100,120,140,200,400]', - 'pt_2[40,45,50,55,60,65,70,80,90,100,120,140,200,400]', - 'mt_1(30,0,300)', - 'mt_2(30,0,300)', - 'mt_lep(30,0,300)', - 'm_vis(50,0,500)', - 'met_dphi_1(20,0,3.1415927)', - 'met_dphi_2(20,0,3.1415927)', - 'mt_tot[50,60,70,80,100,120,140,160,180,200,250,300,350,400,500,700,900,3900]', - 'dphi(20,0,3.1415927)', - 'n_deepbjets(4,0,4)', + #'n_jets(4,0,4)' + # 'pt_1(20,0,200)', + # 'pt_2(20,0,200)', + #'mt_1(30,0,300)' + # 'mt_2(30,0,300)', + # 'm_vis(20,0,200)', + # 'pt_tt(20,0,200)' ] - -for y in years: - for v in variables: - - yp = y - - v_tt = v - - - if y != '2018': - extra=' --norm_bins --extra_pad=0.4 --singletau --add_wt=\'wt_tau_trg_mssm*wt_tau_id_mssm*wt_prefire\' ' - else: - extra=' --norm_bins --extra_pad=0.4 --singletau --add_wt=\'wt_tau_trg_mssm*wt_tau_id_mssm\' ' - - if 'mt_tot' in v: extra='--log_y --log_x' - - extra+=' --ratio_range=\"0.6,1.4\" ' - - # add systematic bands - extra += ' --do_custom_uncerts --add_stat_to_syst --syst_tau_trg_diff="trg_syst_*" --syst_tau_id_diff="id_syst_*" --do_ff_systs --syst_tquark="syst_ttbar_pt" --syst_embedding_tt="syst_embed_tt" ' #--syst_tau_scale_grouped="tes_*group" ' - - os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_mssm_%(yp)s.cfg --method=17 --channel=tt --var=\"%(v_tt)s\" --outputfolder=mssm_control/ %(extra)s --embedding ' % vars()) - os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_mssm_%(yp)s.cfg --method=17 --channel=tt --var=\"%(v_tt)s\" --outputfolder=mssm_control/ %(extra)s --datacard=mc ' % vars()) +selnames = ["medium_vloose_medium", + "medium_vvvloose_medium", + "vloose_vvvloose_medium", + "medium_vloose_medium_vloose", + "medium_vvvloose_medium_vvvloose", + "vloose_vvvloose_vloose_vvvloose"] + +for v in variables: + v_tt = v + for sel in range(0,6): + extra=' --ratio_range=\"0.6,1.4\" ' + extra+= '--extra_name=%s'%selnames[sel] + extra += ' --tt_qcd_sel_num=%i'%sel + + #if 'mt_tot' in v: extra+='--log_y --log_x' + + + # add systematic bands + #extra += ' --do_custom_uncerts --add_stat_to_syst --syst_tau_trg_diff="trg_syst_*" --syst_tau_id_diff="id_syst_*" --do_ff_systs --syst_tquark="syst_ttbar_pt" --syst_embedding_tt="syst_embed_tt" ' #--syst_tau_scale_grouped="tes_*group" ' + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var=\"%(v_tt)s\"' % vars ()) + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_UL_2018.cfg --var=\"%(v_tt)s\"' % vars() ) + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var=\"%(v_tt) s\"' % vars()) + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_UL_2018.cfg --var=\"%(v_tt)s\"' % vars() ) + + #os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_UL_%(yp)s.cfg --var=\"%(v_tt)s\" --outputfolder=controlOutput/ %(extra)s --embedding ' % vars()) + #os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_UL_%(yp)s.cfg --var=\"%(v_tt)s\" --outputfolder=controlOutput/ %(extra)s --datacard=mc ' % vars()) From ecfdb524df60f50d50872abb14eb13f3ea7f54cd Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 13 Jul 2023 14:28:53 +0100 Subject: [PATCH 18/50] Hadders for 2022 --- .../scripts/hadd_22_postEE_output.py | 181 ++++++++++++++++++ .../scripts/hadd_22_preEE_output.py | 180 +++++++++++++++++ 2 files changed, 361 insertions(+) create mode 100755 Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py create mode 100755 Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py new file mode 100755 index 000000000..1d2e99446 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python + +import sys +import os +from optparse import OptionParser +import math +import fnmatch +import glob + +parser = OptionParser() + +parser.add_option("--folder", dest = "folder", + help="Specify folder that contains the output to be hadded") +parser.add_option("--ignore_nfiles", dest= "ignore", default=False, action='store_true', + help="Ignore number of files per sample") +parser.add_option("--sample_list", dest = "samplelist", default="./jobs/files_per_sample_2022_postEE.txt", + help="list of files per sample you want to use for hadding") +parser.add_option("--batch", dest= "batch", default=False, action='store_true', + help="Submit as batch jobs") + +def list_paths(path): + directories = [] + for item in os.listdir(path): + if os.path.isdir(os.path.join(path, item)): + directories.append(item) + return directories + +(options,args) = parser.parse_args() + +if not options.folder: + parser.error('No folder specified') + +outputf = options.folder +samplelist = options.samplelist +ignore = options.ignore +batch = options.batch + +JOBWRAPPER = './scripts/generate_job.sh' +JOBSUBMIT = './scripts/submit_ic_batch_job.sh "hep.q -l h_rt=3:0:0"' +#JOBSUBMIT = './scripts/submit_ic_batch_job.sh "hep.q -l h_rt=9:0:0"' + + +sample_list = [ + + # Tau + 'TauA_preEE', + 'TauB_preEE', + 'TauB_rereco_preEE', + 'TauC_preEE', + 'TauC_rereco_preEE', + 'TauD_preEE', + 'TauD_rereco_preEE', + 'TauE_postEE', + 'TauE_rereco_postEE', + 'TauF_postEE', + 'TauG_postEE', + + #MC postEE + + 'DYJetsToLL-LO_postEE_postEE', + 'GluGluHToTauTau_M125_postEE_v2_postEE', + 'GluGluHToTauTau_M125_postEE_v3_postEE', + 'TTTo2L2Nu_postEE', + 'VBFHToTauTau_M125_Poisson60KeepRAW_postEE', + 'VBFHToTauTau_M125_v2_Poisson70KeepRAW_postEE', + 'WW_postEE_postEE', + 'WZ_postEE_postEE', + 'ZZ_postEE_postEE', + + #MC preEE + + 'DYJetsToLL-LO_summer', + 'GluGluHToTauTau_M125', + 'TTTo2L2Nu', + 'VBFHToTauTau_M125', + 'WW', + 'WZ', + 'ZZ', + 'ZZZ' + + ] + + +sample_list = list(set(sample_list)) + +out='' +for s in sorted(sample_list): out+=' - %s\n' %s + +print out + +channel = ['tpzee','tpzmm','tt','mt','et','em','zmm','zee'] +with open("%(samplelist)s"%vars(),"r") as inf: + lines = inf.readlines() + +subdirs=[''] +subdirs+=list_paths(outputf) + +new_subdirs=[] +for d in subdirs: + infi=os.listdir('%(outputf)s/%(d)s' % vars()) + if infi: new_subdirs.append((d,infi)) +subdirs=new_subdirs + +print subdirs + + +nfiles={} + + +def FindMissingFiles(outf, d, samp, chan, infiles): + files=fnmatch.filter(infiles,'%(samp)s_2022_%(chan)s_*'%vars()) + nums = [int(x.split('_')[-1].replace('.root','')) for x in files] + nums.sort() + res = [ele for ele in range(max(nums)+1) if ele not in nums] + + if len(res) !=0: + print "Some files are missing for sample %(samp)s_2022_%(chan)s! in %(d)s:"%vars() + for x in res: print '%(samp)s_2022_%(chan)s_%(x)i.root' % vars() + return False + else: + return True + +for ind in range(0,len(lines)): + nfiles[lines[ind].split()[0]]=int(lines[ind].split()[1]) +for sa in sample_list: + remove=True + to_remove=[] + hadd_dirs=[] + command='' + if batch: + JOB='jobs/hadd_%s_2022.sh' % sa + os.system('%(JOBWRAPPER)s "" %(JOB)s' %vars()) + for ch in channel: + for jsdir in subdirs: + sdir = jsdir[0] + infiles=jsdir[1] + if os.path.isfile('%(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_0.root'%vars()): + if "%(sa)s_2022"%vars() in nfiles or ignore==True: +# files=glob.glob('%(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*.root'%vars()) + no_missing_files = FindMissingFiles(outputf, sdir, sa, ch,infiles) + if no_missing_files and (ignore ==True or len(fnmatch.filter(infiles,'%(sa)s_2022_%(ch)s_*'%vars())) == nfiles["%(sa)s_2022"%vars()]): + if not batch: + print "Hadding in subdir %(sdir)s"%vars() + print "Hadding %(sa)s_%(ch)s in %(sdir)s"%vars() + os.system('hadd -f %(outputf)s/%(sdir)s/%(sa)s_%(ch)s_2022.root %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_* &> ./haddout.txt'% vars()) + os.system("sed -i '/Warning in /d' ./haddout.txt") + filetext = open("./haddout.txt").read() + if 'Warning' in filetext or 'Error' in filetext: + print "Hadd had a problem:" + print filetext + remove=False + else : + to_remove.append('rm %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*' %vars()) + else: + haddout='haddout_%s_%s_%s.txt' % (sa,ch,sdir) + hadd_dirs.append((haddout, 'rm %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*' %vars())) + command+="echo \"Hadding %(sa)s_%(ch)s in %(sdir)s\"\necho \"Hadding %(sa)s_%(ch)s\"\nhadd -f %(outputf)s/%(sdir)s/%(sa)s_%(ch)s_2022.root %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_* &> ./%(haddout)s\nsed -i '/Warning in /d' ./%(haddout)s\n" % vars() + else : + print "Incorrect number of files for sample %(sa)s_2022_%(ch)s! in %(sdir)s"%vars() + remove=False + + if not batch and remove: + # if all channels and systematics were hadded sucsessfully then remove the input files + for x in to_remove: + os.system(x) + + if batch and command: + with open(JOB, "a") as file: + file.write("\n%s" % command) + rm_command = 'y=1\n' % vars() + for i in hadd_dirs: + hadd_file = i[0] + rm_command+='if [ \"$(cat %(hadd_file)s | grep -e Warning -e Error)\" != \"\" ]; then y=0; fi\n' % vars() + rm_command+='if [ $y == 1 ]; then\n' + for i in hadd_dirs: + input_file = i[1] + rm_command+=input_file+'\n' + rm_command+='fi' + if remove: file.write("\n%s" % rm_command) + file.write('\nEnd of job') + os.system('%(JOBSUBMIT)s %(JOB)s' % vars()) diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py new file mode 100755 index 000000000..aa4a492ae --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python + +import sys +import os +from optparse import OptionParser +import math +import fnmatch +import glob + +parser = OptionParser() + +parser.add_option("--folder", dest = "folder", + help="Specify folder that contains the output to be hadded") +parser.add_option("--ignore_nfiles", dest= "ignore", default=False, action='store_true', + help="Ignore number of files per sample") +parser.add_option("--sample_list", dest = "samplelist", default="./jobs/files_per_sample_2022_preEE.txt", + help="list of files per sample you want to use for hadding") +parser.add_option("--batch", dest= "batch", default=False, action='store_true', + help="Submit as batch jobs") + +def list_paths(path): + directories = [] + for item in os.listdir(path): + if os.path.isdir(os.path.join(path, item)): + directories.append(item) + return directories + +(options,args) = parser.parse_args() + +if not options.folder: + parser.error('No folder specified') + +outputf = options.folder +samplelist = options.samplelist +ignore = options.ignore +batch = options.batch + +JOBWRAPPER = './scripts/generate_job.sh' +JOBSUBMIT = './scripts/submit_ic_batch_job.sh "hep.q -l h_rt=3:0:0"' +#JOBSUBMIT = './scripts/submit_ic_batch_job.sh "hep.q -l h_rt=9:0:0"' + + +sample_list = [ + + # Tau + 'TauA_preEE', + 'TauB_preEE', + 'TauB_rereco_preEE', + 'TauC_preEE', + 'TauC_rereco_preEE', + 'TauD_preEE', + 'TauD_rereco_preEE', + 'TauE_postEE', + 'TauE_rereco_postEE', + 'TauF_postEE', + 'TauG_postEE', + + #MC postEE + + 'DYJetsToLL-LO_postEE_postEE', + 'GluGluHToTauTau_M125_postEE_v2_postEE', + 'GluGluHToTauTau_M125_postEE_v3_postEE', + 'TTTo2L2Nu_postEE', + 'VBFHToTauTau_M125_Poisson60KeepRAW_postEE', + 'VBFHToTauTau_M125_v2_Poisson70KeepRAW_postEE', + 'WW_postEE_postEE', + 'WZ_postEE_postEE', + 'ZZ_postEE_postEE', + + #MC preEE + + 'DYJetsToLL-LO_summer_preEE', + 'GluGluHToTauTau_M125_preEE', + 'TTTo2L2Nu_preEE', + 'VBFHToTauTau_M125_preEE', + 'WW_preEE', + 'WZ_preEE', + 'ZZ_preEE', + 'ZZZ_preEE' + ] + + +sample_list = list(set(sample_list)) + +out='' +for s in sorted(sample_list): out+=' - %s\n' %s + +print out + +channel = ['tpzee','tpzmm','tt','mt','et','em','zmm','zee'] +with open("%(samplelist)s"%vars(),"r") as inf: + lines = inf.readlines() + +subdirs=[''] +subdirs+=list_paths(outputf) + +new_subdirs=[] +for d in subdirs: + infi=os.listdir('%(outputf)s/%(d)s' % vars()) + if infi: new_subdirs.append((d,infi)) +subdirs=new_subdirs + +print subdirs + + +nfiles={} + + +def FindMissingFiles(outf, d, samp, chan, infiles): + files=fnmatch.filter(infiles,'%(samp)s_2022_%(chan)s_*'%vars()) + nums = [int(x.split('_')[-1].replace('.root','')) for x in files] + nums.sort() + res = [ele for ele in range(max(nums)+1) if ele not in nums] + + if len(res) !=0: + print "Some files are missing for sample %(samp)s_2022_%(chan)s! in %(d)s:"%vars() + for x in res: print '%(samp)s_2022_%(chan)s_%(x)i.root' % vars() + return False + else: + return True + +for ind in range(0,len(lines)): + nfiles[lines[ind].split()[0]]=int(lines[ind].split()[1]) +for sa in sample_list: + remove=True + to_remove=[] + hadd_dirs=[] + command='' + if batch: + JOB='jobs/hadd_%s_2022.sh' % sa + os.system('%(JOBWRAPPER)s "" %(JOB)s' %vars()) + for ch in channel: + for jsdir in subdirs: + sdir = jsdir[0] + infiles=jsdir[1] + if os.path.isfile('%(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_0.root'%vars()): + if "%(sa)s_2022"%vars() in nfiles or ignore==True: +# files=glob.glob('%(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*.root'%vars()) + no_missing_files = FindMissingFiles(outputf, sdir, sa, ch,infiles) + if no_missing_files and (ignore ==True or len(fnmatch.filter(infiles,'%(sa)s_2022_%(ch)s_*'%vars())) == nfiles["%(sa)s_2022"%vars()]): + if not batch: + print "Hadding in subdir %(sdir)s"%vars() + print "Hadding %(sa)s_%(ch)s in %(sdir)s"%vars() + os.system('hadd -f %(outputf)s/%(sdir)s/%(sa)s_%(ch)s_2022.root %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_* &> ./haddout.txt'% vars()) + os.system("sed -i '/Warning in /d' ./haddout.txt") + filetext = open("./haddout.txt").read() + if 'Warning' in filetext or 'Error' in filetext: + print "Hadd had a problem:" + print filetext + remove=False + else : + to_remove.append('rm %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*' %vars()) + else: + haddout='haddout_%s_%s_%s.txt' % (sa,ch,sdir) + hadd_dirs.append((haddout, 'rm %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_*' %vars())) + command+="echo \"Hadding %(sa)s_%(ch)s in %(sdir)s\"\necho \"Hadding %(sa)s_%(ch)s\"\nhadd -f %(outputf)s/%(sdir)s/%(sa)s_%(ch)s_2022.root %(outputf)s/%(sdir)s/%(sa)s_2022_%(ch)s_* &> ./%(haddout)s\nsed -i '/Warning in /d' ./%(haddout)s\n" % vars() + else : + print "Incorrect number of files for sample %(sa)s_2022_%(ch)s! in %(sdir)s"%vars() + remove=False + + if not batch and remove: + # if all channels and systematics were hadded sucsessfully then remove the input files + for x in to_remove: + os.system(x) + + if batch and command: + with open(JOB, "a") as file: + file.write("\n%s" % command) + rm_command = 'y=1\n' % vars() + for i in hadd_dirs: + hadd_file = i[0] + rm_command+='if [ \"$(cat %(hadd_file)s | grep -e Warning -e Error)\" != \"\" ]; then y=0; fi\n' % vars() + rm_command+='if [ $y == 1 ]; then\n' + for i in hadd_dirs: + input_file = i[1] + rm_command+=input_file+'\n' + rm_command+='fi' + if remove: file.write("\n%s" % rm_command) + file.write('\nEnd of job') + os.system('%(JOBSUBMIT)s %(JOB)s' % vars()) From 75468007e2177ac801dea59a6d88d4fc48565205 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 13 Jul 2023 14:29:57 +0100 Subject: [PATCH 19/50] Modifications for new dataset --- .../scripts/htt_2022_postEE.py | 99 ++++--------------- .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 98 +++--------------- 2 files changed, 34 insertions(+), 163 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index 9eb6998c3..f4ca853eb 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -174,16 +174,16 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/July0623_2022-preEE_MC_124X' +FILELIST='filelists/July0623_2022-postEE_MC_102X' signal_mc = [ ] signal_vh = [ ] signal_mc_ww = [ ] -if os.path.isfile("./jobs/files_per_sample_2018.txt"): - os.system("mv ./jobs/files_per_sample_2018.txt ./jobs/files_per_sample_2018-%(BACKUPNAME)s.txt"%vars()) +if os.path.isfile("./jobs/files_per_sample_2022_postEE.txt"): + os.system("mv ./jobs/files_per_sample_2022_postEE.txt ./jobs/files_per_sample_2022_postEE-%(BACKUPNAME)s.txt"%vars()) -file_persamp = open("./jobs/files_per_sample_2018.txt", "w") +file_persamp = open("./jobs/files_per_sample_2022_postEE.txt", "w") if options.proc_data or options.proc_all or options.calc_lumi: @@ -290,81 +290,18 @@ def getParaJobSubmit(N): if options.proc_bkg or options.proc_all: central_samples = [ - # Drell-Yan LO - 'DY1JetsToLL-LO', - 'DY2JetsToLL-LO', - 'DY3JetsToLL-LO', - 'DY4JetsToLL-LO', - 'DYJetsToLL-LO', - 'DYJetsToLL-LO-ext1', - - # Low mass Drell Yan LO - 'DYJetsToLL_M-10to50-LO', - - # Drell-Yan NLO - 'DYJetsToLL-NLO', - 'DYJetsToLL_0J-NLO', - 'DYJetsToLL_1J-NLO', - 'DYJetsToLL_2J-NLO', - - # Electroweak W and Z - 'EWKWMinus2Jets_WToLNu', - 'EWKWPlus2Jets_WToLNu', - 'EWKZ2Jets_ZToLL', - - # W + Jets L0 - 'WJetsToLNu-LO', - 'W1JetsToLNu-LO', - 'W2JetsToLNu-LO', - 'W3JetsToLNu-LO', - 'W4JetsToLNu-LO', - -# # W + Jets NLO -# 'WJetsToLNu_0J-NLO', -# 'WJetsToLNu_1J-NLO', -# 'WJetsToLNu_2J-NLO', -# #'WJetsToLNu-NLO', - - # ttbar + + 'DYJetsToLL-LO_postEE', + 'GluGluHToTauTau_M125_postEE_v2', + 'GluGluHToTauTau_M125_postEE_v3', 'TTTo2L2Nu', - 'TTToHadronic', - 'TTToSemiLeptonic', - - # Split diboson (Missing Files: WZTo1L3Nu, WZTo2L2Q) - 'WZTo1L1Nu2Q', - 'WZTo3LNu', - 'WWTo1L1Nu2Q', - 'WWTo2L2Nu', - 'WZTo1L3Nu', - 'WZTo2Q2L', - 'ZZTo2L2Nu', - 'ZZTo4L', - -# # Triboson -# 'WWZ', -# 'WWZ-ext1', -# 'WZZ', -# 'WZZ-ext1', -# 'WWW', -# 'WWW-ext1', -# 'ZZZ', -# 'ZZZ-ext1', - - # Other backgrounds - 'WGToLNuG', - 'Tbar-t', - 'Tbar-tW', - 'T-t', - 'T-tW', - -# # SM Higgs -# 'GluGluHToTauTau_M125', -# 'VBFHToTauTau_M125', -# 'WminusHToTauTau_M125', -# 'WplusHToTauTau_M125', -# 'ZHToTauTau_M125', -# 'ZHToTauTau_M125-ext1', -# 'ttHToTauTau_M125' + 'VBFHToTauTau_M125_Poisson60KeepRAW', + 'VBFHToTauTau_M125_v2_Poisson70KeepRAW', + 'WW_postEE', + 'WZ_postEE', + 'ZZ_postEE' + + ] if options.effective_events: # this is just used for the effective events case @@ -381,9 +318,9 @@ def getParaJobSubmit(N): for sa in central_samples: - JOB='%s_2018' % (sa) - user='dwinterb' - PREFIX='Mar31_MC_124X_2018' + JOB='%s_postEE_2022' % (sa) + user='irandreo' + PREFIX='July0623_MC_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); job_num=0 diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index f5c2d2116..3f79e4eb0 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -174,16 +174,16 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/July0623_2022-preEE_MC_124X' +FILELIST='filelists/July0623_2022-preEE_MC_102X' signal_mc = [ ] signal_vh = [ ] signal_mc_ww = [ ] -if os.path.isfile("./jobs/files_per_sample_2018.txt"): - os.system("mv ./jobs/files_per_sample_2018.txt ./jobs/files_per_sample_2018-%(BACKUPNAME)s.txt"%vars()) +if os.path.isfile("./jobs/files_per_sample_2022_preEE.txt"): + os.system("mv ./jobs/files_per_sample_2022_preEE.txt ./jobs/files_per_sample_2022_preEE-%(BACKUPNAME)s.txt"%vars()) -file_persamp = open("./jobs/files_per_sample_2018.txt", "w") +file_persamp = open("./jobs/files_per_sample_2022_preEE.txt", "w") if options.proc_data or options.proc_all or options.calc_lumi: @@ -290,81 +290,15 @@ def getParaJobSubmit(N): if options.proc_bkg or options.proc_all: central_samples = [ - # Drell-Yan LO - 'DY1JetsToLL-LO', - 'DY2JetsToLL-LO', - 'DY3JetsToLL-LO', - 'DY4JetsToLL-LO', - 'DYJetsToLL-LO', - 'DYJetsToLL-LO-ext1', - - # Low mass Drell Yan LO - 'DYJetsToLL_M-10to50-LO', - - # Drell-Yan NLO - 'DYJetsToLL-NLO', - 'DYJetsToLL_0J-NLO', - 'DYJetsToLL_1J-NLO', - 'DYJetsToLL_2J-NLO', - - # Electroweak W and Z - 'EWKWMinus2Jets_WToLNu', - 'EWKWPlus2Jets_WToLNu', - 'EWKZ2Jets_ZToLL', - - # W + Jets L0 - 'WJetsToLNu-LO', - 'W1JetsToLNu-LO', - 'W2JetsToLNu-LO', - 'W3JetsToLNu-LO', - 'W4JetsToLNu-LO', - -# # W + Jets NLO -# 'WJetsToLNu_0J-NLO', -# 'WJetsToLNu_1J-NLO', -# 'WJetsToLNu_2J-NLO', -# #'WJetsToLNu-NLO', - - # ttbar - 'TTTo2L2Nu', - 'TTToHadronic', - 'TTToSemiLeptonic', - - # Split diboson (Missing Files: WZTo1L3Nu, WZTo2L2Q) - 'WZTo1L1Nu2Q', - 'WZTo3LNu', - 'WWTo1L1Nu2Q', - 'WWTo2L2Nu', - 'WZTo1L3Nu', - 'WZTo2Q2L', - 'ZZTo2L2Nu', - 'ZZTo4L', - -# # Triboson -# 'WWZ', -# 'WWZ-ext1', -# 'WZZ', -# 'WZZ-ext1', -# 'WWW', -# 'WWW-ext1', -# 'ZZZ', -# 'ZZZ-ext1', - - # Other backgrounds - 'WGToLNuG', - 'Tbar-t', - 'Tbar-tW', - 'T-t', - 'T-tW', - -# # SM Higgs -# 'GluGluHToTauTau_M125', -# 'VBFHToTauTau_M125', -# 'WminusHToTauTau_M125', -# 'WplusHToTauTau_M125', -# 'ZHToTauTau_M125', -# 'ZHToTauTau_M125-ext1', -# 'ttHToTauTau_M125' + 'DYJetsToLL-LO_summer', + 'GluGluHToTauTau_M125', + 'TTTo2L2Nu', + 'VBFHToTauTau_M125', + 'WW', + 'WZ', + 'ZZ', + 'ZZZ' + ] if options.effective_events: # this is just used for the effective events case @@ -381,9 +315,9 @@ def getParaJobSubmit(N): for sa in central_samples: - JOB='%s_2018' % (sa) - user='dwinterb' - PREFIX='Mar31_MC_124X_2018' + JOB='%s_preEE_2022' % (sa) + user='irandreo' + PREFIX='July0623_MC_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); job_num=0 From 4d7e2375d18764237354cb846100a957d24c3097 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 13 Jul 2023 14:30:34 +0100 Subject: [PATCH 20/50] Modifications in the plotters for my specific use --- .../scripts/HiggsTauTauPlot.py | 176 +++++++++++++++--- python/plotting.py | 6 +- 2 files changed, 158 insertions(+), 24 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py index a1602b37f..27594edc1 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py @@ -64,7 +64,7 @@ "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, - "no_qcd_subtract": False + "no_qcd_subtract": False, "tt_qcd_sel_num": 0 } @@ -401,6 +401,8 @@ help="Get version of DeepTau v2p5"), parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', help="Do not subtract background when estimating qcd events") +parser.add_argument("--tt_qcd_sel_num", dest="tt_qcd_sel_num", type=int, + help="Change selection type for tt_qcd_norm") options = parser.parse_args(remaining_argv) print 'do_unrolling = %s' % options.do_unrolling @@ -546,6 +548,12 @@ t_highpt=180 t_lowpt_mt=32 t_lowpt_et=35 + if options.era in ['22']: + m_lowpt=25 + e_lowpt=33 + t_highpt=180 + t_lowpt_mt=32 + t_lowpt_et=35 if options.channel == 'mt': if options.singletau: @@ -588,6 +596,8 @@ cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && trg_doubletau && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' if options.era in ['cpsummer17','UL_17','cp18','UL_18']: cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + if options.era == '22': + cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' if options.analysis in ['mssmrun2','vlq']: wp = options.wp @@ -686,9 +696,20 @@ if options.era == 'mssmsummer16': cats['tt_qcd_norm'] = '(mva_olddm_medium_1>0.5 && mva_olddm_loose_2>0.5 &&mva_olddm_medium_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['tt_qcd_norm'] = '(pt_1>40 && ((mva_olddm_loose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_2>0.5) || (mva_olddm_loose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_1>0.5)) && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' # if options.era in ['cpsummer17','cp18']: cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' - -cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - +if options.tt_qcd_sel_num==0: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==1: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==2: + cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==3: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==4: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==5: + cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + +#medium vlose # CR categories cats['ztt_control'] = '(m_sv>60&&m_sv<100)' @@ -795,7 +816,7 @@ cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['vbf']) if options.channel == 'em': cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0)' % (cats['0jet'], cats['vbf']) -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] or options.analysis in ['cpprod']: +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] or options.analysis in ['cpprod']: cats['ttbar'] = 'n_jets>0' if options.channel in ['mt','et']: cats['0jet'] = '(n_jets==0 && n_bjets==0 &&n_loose_bjets<2)' @@ -1225,7 +1246,7 @@ top_sels['ttt_sel'] = '(gen_match_1==5 && gen_match_2==5)' top_sels['ttj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016']: +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016','22']: # define these selections to make them more compatible with the fake-factor method and embedded samples if options.channel =='em': z_sels['zll_sel'] = '(!(gen_match_2==4 && gen_match_1==3))' @@ -1561,6 +1582,38 @@ if options.channel == 'tt': data_samples = ['TauA','TauB','TauC','TauD'] +if options.era in ['22']: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO_postEE_postEE']#['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + #ztt_samples = ['DYJetsToLL-LO'] + else: + ztt_samples = ['DYJetsToLL-LO_postEE_postEE']#['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + + #ztt_samples = ['DYJetsToLL-NLO'] + #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] + top_samples = ['TTTo2L2Nu_postEE']#['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = ['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE']#['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] + # if options.analysis in ['mssmrun2','vlq']: + # vv_samples = [ + # 'T-tW', 'Tbar-tW','Tbar-t','T-t', + # 'WZTo3LNu','ZZTo4L'] + wjets_samples = []#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + wgam_samples = []#['WGToLNuG'] + ewkz_samples = []#['EWKZ2Jets_ZToLL'] + gghww_samples = [''] + qqhww_samples = [''] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'em': + data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'tt': + data_samples = ['TauE_rereco_postEE','TauF_postEE','TauG_postEE'] + if options.method==0: ztt_samples+=ewkz_samples @@ -1676,6 +1729,35 @@ 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', } + if options.era == '22': + sm_samples = { + #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', + 'ggh*_powheg' : 'GluGluHToTauTau_M-125', + # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', + # 'wplush*_powheg': 'WplusHToTauTau_M-125', + # 'wminush*_powheg': 'WminusHToTauTau_M-125', + # 'zh*_powheg': 'ZHToTauTau_M-125', + #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', + 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], + # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', + 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', + 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', + 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', + 'WH_ps_htt*' : 'WHiggs0MToTauTau', + 'WH_sm_htt*' : 'WHiggs0PMToTauTau', + 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', + 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', + 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', + } + @@ -1751,9 +1833,35 @@ "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", } + if options.era == '22': + sm_samples = { + # test CP in decay samples + 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', + 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', + "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + "ZH_ph_htt*": 'ZHToTauTau_M-125', + "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + } if options.analysis in ['mssmrun2','vlq']: + if options.era == '22': + sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', + 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + } if (options.era == 'cp18' or options.era == 'UL_18'): sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], @@ -2005,6 +2113,7 @@ if options.era in ["legacy16",'UL_16_preVFP','UL_16_postVFP']: replaceYear = "2016" elif (options.era == "cpsummer17" or options.era == 'UL_17'): replaceYear = "2017" elif (options.era == "cp18" or options.era == 'UL_18'): replaceYear = "2018" + elif options.era == "22": replaceYear = "2022" else: assert ValueError("Regrouped JES only works for full RunII analyses") @@ -2253,7 +2362,10 @@ #hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) #systematics['syst_tau_id_diff_highpt_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_mssm_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) #systematics['syst_tau_id_diff_highpt_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_mssm_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - + if options.year == "2022": + nom_40_plus = "1.00458784525" + up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" + down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" if options.year == "2018": nom_40_plus = "1.00458784525" up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" @@ -2755,10 +2867,10 @@ qcd_os_ss_ratio = 1.0 qcd_os_ss_ratio = 1.13 if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 0.97 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 0.97 else: qcd_os_ss_ratio = 1.0 elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.61 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.61 else: qcd_os_ss_ratio = 1.28 elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', @@ -2771,10 +2883,10 @@ #qcd_os_ss_ratio = 1.07 qcd_os_ss_ratio = 1.12 if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.15 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.15 else: qcd_os_ss_ratio = 1.07 elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.18 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.18 else: qcd_os_ss_ratio = 1.06 elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', @@ -2867,6 +2979,7 @@ def GetEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='' if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: wt_+='*1.106' if options.era in ['cpsummer17','UL_17']: wt_+='*1.080' if options.era in ['cp18','UL_18']: wt_+='*1.101' + if options.era in ['22']: wt_+='*1.101' full_selection = BuildCutString(wt_+'*(wt<2)', sel, cat, OSSS, z_sels['ztt_sel']) return ana.SummedFactory('EmbedZTT'+add_name, samples, plot, full_selection) @@ -3274,7 +3387,7 @@ def GetSubtractNode(ana,add_name,plot,plot_unmodified,wt,sel,cat,cat_data,method else: ztt_node = GetZTTNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) subtract_node.AddNode(ztt_node) - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.method!=0: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.method!=0: ewkz_node = GetEWKZNode(ana, "", ewkz_samples, plot, wt, sel, cat, z_sels, OSSS) subtract_node.AddNode(ewkz_node) if options.channel not in ["em"]: @@ -3435,18 +3548,18 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' # Select data from anti-isolated region if options.channel != "tt": if options.channel == 'mt': - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18']: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.15 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' elif options.channel == 'et': - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' ff_cat = cats[cat_name] +" && "+ anti_isolated_sel ff_cat_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18']: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: if ff_syst_weight is not None and 'sub_syst' not in add_name: fake_factor_wt_string = '('+ff_syst_weight+'_1)' else: if options.analysis in ['cpprod']: @@ -3506,7 +3619,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"mvadm2016"]: anti_isolated_sel_1 = cats['baseline'].replace('mva_olddm_tight_1>0.5','mva_olddm_tight_1<0.5 && mva_olddm_vloose_1>0.5') anti_isolated_sel_2 = cats['baseline'].replace('mva_olddm_tight_2>0.5','mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5') - if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP']: # need to do also for MVA cats for 2016! + if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP','22']: # need to do also for MVA cats for 2016! anti_isolated_sel_2 = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) anti_isolated_sel_1 = cats['baseline'].replace('deepTauVsJets_%(wp)s_1>0.5' % vars(),'deepTauVsJets_%(wp)s_1<0.5 && deepTauVsJets_vvvloose_1>0.5' % vars()) ff_cat_1 = cats[cat_name] +" && "+ anti_isolated_sel_1 @@ -3523,6 +3636,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' flat = 1.04 if (options.era=='cpsummer17' or options.era == 'UL_17'): flat=1.07 if (options.era=='cp18'or options.era == 'UL_18'): flat=1.06 + if (options.era=='22'): flat=1.06 if 'njets0' in add_name: @@ -3543,6 +3657,23 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpdecay'] and 'ff_tt_qcd_syst' in add_name: + if(options.era=='22'): + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + if(options.era=='cp18' or options.era == 'UL_18'): if 'njets0' in add_name: if 'Up' in add_name: @@ -3601,7 +3732,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpprod','cpdecay','mssmrun2','vlq']: fake_factor_wt_string_2='0' else: - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: # deep tau tight 2018 anti isolating the subleading tau if options.analysis == 'cpprod': fake_factor_wt_string_2='0' @@ -5075,6 +5206,8 @@ def RawFFFromString(string): do_data = False if options.scheme == "noTT": samples_to_skip.extend(["TTT","TTJ"]) + if options.scheme == "noWandEWKZ": + samples_to_skip.extend(['TTT','TTJ','W','EWKZ']) RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) #if options.era == "tauid2016" and options.channel in ['et','mt']: # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) @@ -5398,8 +5531,9 @@ def MergeXBins(hist): if not options.no_plot: - if options.extra_name != '': vname = options.extra_name - else: vname = var_name + #if options.extra_name != '': vname = options.extra_name + #else: vname = var_name + vname = var_name + '_' +options.extra_name if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year @@ -5429,7 +5563,7 @@ def MergeXBins(hist): scheme = options.channel if compare_w_shapes: scheme = 'w_shape' if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "": scheme = options.scheme + if options.scheme != "" and options.scheme != "noWandEWKZ": scheme = options.scheme FF = options.method in [17,18] if options.ml_ff: options.w_ff_closure = False @@ -5611,7 +5745,7 @@ def MergeXBins(hist): # for smsummer16 need to ad WplusH and WminusH templates into one -if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.channel != 'zmm' and options.analysis != "mssmrun2": +if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.channel != 'zmm' and options.analysis != "mssmrun2": outfile.cd(nodename) directory = outfile.Get(nodename) hists_to_add = [] diff --git a/python/plotting.py b/python/plotting.py index 594fbcd20..d0ed2cc29 100644 --- a/python/plotting.py +++ b/python/plotting.py @@ -2269,7 +2269,7 @@ def HTTPlot(nodename, } ModTDRStyle(r=0.04, l=0.14) - R.TGaxis.SetExponentOffset(-0.06, 0.01, "y"); + R.TGaxis.SetExponentOffset(-0.06, 0.01, "y") if ("sm" in signal_scheme and "mssm" not in signal_scheme) or True: background_schemes = { @@ -3610,9 +3610,9 @@ def CompareHists(hists=[], c1.SaveAs(plot_name+'.png') if output_file is not None: output_file.WriteObject(c1, plot_name) - for o in objects: - o.IsA().Destructor(o) + o.IsA().Destructor(o) + c1.Close() def HTTPlotSignal(nodename, infile=None, From ea6e559caad832eb0a13f57a0a88d35602b727ee Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 13 Jul 2023 14:31:51 +0100 Subject: [PATCH 21/50] Create and modify cfg files --- .../scripts/plot_2022_nosubqcd.cfg | 25 +++++++++++++++++++ .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 4 +++ .../scripts/plot_UL_2018_nosubqcd.cfg | 4 ++- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg new file mode 100644 index 000000000..4d3a7eb40 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg @@ -0,0 +1,25 @@ +#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_2022_nosubqcd.cfg --no_qcd_subtract --var "m_vis(20,0,200)" +[Defaults] +analysis=mssmrun2 +paramfile=scripts/params_2022.json +folder=/vols/cms/eb921/output/tt_2022/ +era=22 +sm_masses="" +draw_signal_mass="" +#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 +#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +year=2022 +norm_bins=True +ratio=True +lumi=38.48 fb^{-1} (13.6 TeV) +vbf_background=False +wp = medium +channel = tt +method = 8 +outputfolder=output_2022 +#extra_name = nosubqcd +no_qcd_subtract= True +#do_ss = True +scheme = noWandEWKZ diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index a3af959ce..3a4f8362d 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -1,3 +1,4 @@ +#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018.cfg --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json @@ -17,3 +18,6 @@ vbf_background=False wp = medium channel = tt method = 8 +outputfolder =output +#extra_name = vvvlose +#do_ss = True diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg index c864791bb..54168dd97 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg @@ -1,3 +1,4 @@ +#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json @@ -18,5 +19,6 @@ wp = medium channel = tt method = 8 outputfolder=output_nosubqcd -extra_name = nosubqcd +#extra_name = nosubqcd no_qcd_subtract= True +#do_ss = True From ac006cd6418fe492f4fe200a28895046c38bd8d0 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 20 Jul 2023 11:50:29 +0100 Subject: [PATCH 22/50] Modify HTT plotter python --- .../scripts/HiggsTauTauPlot.py | 205 +- .../scripts/HiggsTauTauPlot_Run3.py | 5817 +++++++++++++++++ .../{plot_2022_nosubqcd.cfg => plot_2022.cfg} | 6 +- .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 9 +- .../scripts/plot_UL_2018_nosubqcd.cfg | 24 - 5 files changed, 5855 insertions(+), 206 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py rename Analysis/HiggsTauTauRun2/scripts/{plot_2022_nosubqcd.cfg => plot_2022.cfg} (86%) delete mode 100644 Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py index 27594edc1..bc37c06f9 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py @@ -63,8 +63,7 @@ "ff_ss_closure":False, "threePads":False,"auto_blind":False, "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, - "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, - "no_qcd_subtract": False, "tt_qcd_sel_num": 0 + "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False } @@ -398,11 +397,7 @@ parser.add_argument("--plot_from_dc", default="", type=str, help="If not empty will draw plot straight from datacard") parser.add_argument("--v2p5", dest="v2p5", action='store_true', - help="Get version of DeepTau v2p5"), -parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', - help="Do not subtract background when estimating qcd events") -parser.add_argument("--tt_qcd_sel_num", dest="tt_qcd_sel_num", type=int, - help="Change selection type for tt_qcd_norm") + help="Get version of DeepTau v2p5") options = parser.parse_args(remaining_argv) print 'do_unrolling = %s' % options.do_unrolling @@ -548,12 +543,6 @@ t_highpt=180 t_lowpt_mt=32 t_lowpt_et=35 - if options.era in ['22']: - m_lowpt=25 - e_lowpt=33 - t_highpt=180 - t_lowpt_mt=32 - t_lowpt_et=35 if options.channel == 'mt': if options.singletau: @@ -596,8 +585,6 @@ cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && trg_doubletau && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' if options.era in ['cpsummer17','UL_17','cp18','UL_18']: cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - if options.era == '22': - cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' if options.analysis in ['mssmrun2','vlq']: wp = options.wp @@ -696,20 +683,9 @@ if options.era == 'mssmsummer16': cats['tt_qcd_norm'] = '(mva_olddm_medium_1>0.5 && mva_olddm_loose_2>0.5 &&mva_olddm_medium_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['tt_qcd_norm'] = '(pt_1>40 && ((mva_olddm_loose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_2>0.5) || (mva_olddm_loose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_1>0.5)) && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' # if options.era in ['cpsummer17','cp18']: cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' -if options.tt_qcd_sel_num==0: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==1: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==2: - cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==3: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==4: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==5: - cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - -#medium vlose + +cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + # CR categories cats['ztt_control'] = '(m_sv>60&&m_sv<100)' @@ -816,7 +792,7 @@ cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['vbf']) if options.channel == 'em': cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0)' % (cats['0jet'], cats['vbf']) -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] or options.analysis in ['cpprod']: +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] or options.analysis in ['cpprod']: cats['ttbar'] = 'n_jets>0' if options.channel in ['mt','et']: cats['0jet'] = '(n_jets==0 && n_bjets==0 &&n_loose_bjets<2)' @@ -1246,7 +1222,7 @@ top_sels['ttt_sel'] = '(gen_match_1==5 && gen_match_2==5)' top_sels['ttj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016','22']: +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016']: # define these selections to make them more compatible with the fake-factor method and embedded samples if options.channel =='em': z_sels['zll_sel'] = '(!(gen_match_2==4 && gen_match_1==3))' @@ -1582,38 +1558,6 @@ if options.channel == 'tt': data_samples = ['TauA','TauB','TauC','TauD'] -if options.era in ['22']: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO_postEE_postEE']#['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - #ztt_samples = ['DYJetsToLL-LO'] - else: - ztt_samples = ['DYJetsToLL-LO_postEE_postEE']#['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] - - #ztt_samples = ['DYJetsToLL-NLO'] - #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] - top_samples = ['TTTo2L2Nu_postEE']#['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = ['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE']#['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] - # if options.analysis in ['mssmrun2','vlq']: - # vv_samples = [ - # 'T-tW', 'Tbar-tW','Tbar-t','T-t', - # 'WZTo3LNu','ZZTo4L'] - wjets_samples = []#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - wgam_samples = []#['WGToLNuG'] - ewkz_samples = []#['EWKZ2Jets_ZToLL'] - gghww_samples = [''] - qqhww_samples = [''] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'em': - data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'tt': - data_samples = ['TauE_rereco_postEE','TauF_postEE','TauG_postEE'] - if options.method==0: ztt_samples+=ewkz_samples @@ -1729,35 +1673,6 @@ 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', } - if options.era == '22': - sm_samples = { - #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', - 'ggh*_powheg' : 'GluGluHToTauTau_M-125', - # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', - # 'wplush*_powheg': 'WplusHToTauTau_M-125', - # 'wminush*_powheg': 'WminusHToTauTau_M-125', - # 'zh*_powheg': 'ZHToTauTau_M-125', - #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', - 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], - # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', - 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', - 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', - 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', - 'WH_ps_htt*' : 'WHiggs0MToTauTau', - 'WH_sm_htt*' : 'WHiggs0PMToTauTau', - 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', - 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', - 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', - } - @@ -1833,35 +1748,9 @@ "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", } - if options.era == '22': - sm_samples = { - # test CP in decay samples - 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', - 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', - "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - "ZH_ph_htt*": 'ZHToTauTau_M-125', - "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - } if options.analysis in ['mssmrun2','vlq']: - if options.era == '22': - sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', - 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - } if (options.era == 'cp18' or options.era == 'UL_18'): sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], @@ -2113,7 +2002,6 @@ if options.era in ["legacy16",'UL_16_preVFP','UL_16_postVFP']: replaceYear = "2016" elif (options.era == "cpsummer17" or options.era == 'UL_17'): replaceYear = "2017" elif (options.era == "cp18" or options.era == 'UL_18'): replaceYear = "2018" - elif options.era == "22": replaceYear = "2022" else: assert ValueError("Regrouped JES only works for full RunII analyses") @@ -2362,10 +2250,7 @@ #hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) #systematics['syst_tau_id_diff_highpt_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_mssm_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) #systematics['syst_tau_id_diff_highpt_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_mssm_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - if options.year == "2022": - nom_40_plus = "1.00458784525" - up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" - down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" + if options.year == "2018": nom_40_plus = "1.00458784525" up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" @@ -2867,10 +2752,10 @@ qcd_os_ss_ratio = 1.0 qcd_os_ss_ratio = 1.13 if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 0.97 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 0.97 else: qcd_os_ss_ratio = 1.0 elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.61 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.61 else: qcd_os_ss_ratio = 1.28 elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', @@ -2883,10 +2768,10 @@ #qcd_os_ss_ratio = 1.07 qcd_os_ss_ratio = 1.12 if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.15 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.15 else: qcd_os_ss_ratio = 1.07 elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.18 + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016']: qcd_os_ss_ratio = 1.18 else: qcd_os_ss_ratio = 1.06 elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', @@ -2979,7 +2864,6 @@ def GetEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='' if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: wt_+='*1.106' if options.era in ['cpsummer17','UL_17']: wt_+='*1.080' if options.era in ['cp18','UL_18']: wt_+='*1.101' - if options.era in ['22']: wt_+='*1.101' full_selection = BuildCutString(wt_+'*(wt<2)', sel, cat, OSSS, z_sels['ztt_sel']) return ana.SummedFactory('EmbedZTT'+add_name, samples, plot, full_selection) @@ -3387,7 +3271,7 @@ def GetSubtractNode(ana,add_name,plot,plot_unmodified,wt,sel,cat,cat_data,method else: ztt_node = GetZTTNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) subtract_node.AddNode(ztt_node) - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.method!=0: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.method!=0: ewkz_node = GetEWKZNode(ana, "", ewkz_samples, plot, wt, sel, cat, z_sels, OSSS) subtract_node.AddNode(ewkz_node) if options.channel not in ["em"]: @@ -3483,30 +3367,22 @@ def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', s if method == 8: qcd_sdb_cat = cats[options.cat]+' && '+cats['tt_qcd_norm'] qcd_sdb_cat_data = cats_unmodified[options.cat]+' && '+cats_unmodified['tt_qcd_norm'] - if options.no_qcd_subtract: - subtract_node =None - else: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) num_selection = BuildCutString(wt, sel, cat_data, '!os') num_node = SubtractNode('ratio_num', ana.SummedFactory('data', data, plot_unmodified, num_selection), subtract_node) if options.analysis == 'mssmsummer16': tau_id_wt = 'wt_tau2_id_loose' else: tau_id_wt = '1' - if options.no_qcd_subtract: - subtract_node =None - else: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) den_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, '!os') den_node = SubtractNode('ratio_den', ana.SummedFactory('data', data, plot_unmodified, den_selection), subtract_node) shape_node = None full_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, OSSS) - if options.no_qcd_subtract: - subtract_node = None - else: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, ana.SummedFactory('data', data, plot_unmodified, full_selection), @@ -3548,18 +3424,18 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' # Select data from anti-isolated region if options.channel != "tt": if options.channel == 'mt': - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18']: anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.15 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' elif options.channel == 'et': - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' ff_cat = cats[cat_name] +" && "+ anti_isolated_sel ff_cat_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18']: if ff_syst_weight is not None and 'sub_syst' not in add_name: fake_factor_wt_string = '('+ff_syst_weight+'_1)' else: if options.analysis in ['cpprod']: @@ -3619,7 +3495,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"mvadm2016"]: anti_isolated_sel_1 = cats['baseline'].replace('mva_olddm_tight_1>0.5','mva_olddm_tight_1<0.5 && mva_olddm_vloose_1>0.5') anti_isolated_sel_2 = cats['baseline'].replace('mva_olddm_tight_2>0.5','mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5') - if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP','22']: # need to do also for MVA cats for 2016! + if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP']: # need to do also for MVA cats for 2016! anti_isolated_sel_2 = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) anti_isolated_sel_1 = cats['baseline'].replace('deepTauVsJets_%(wp)s_1>0.5' % vars(),'deepTauVsJets_%(wp)s_1<0.5 && deepTauVsJets_vvvloose_1>0.5' % vars()) ff_cat_1 = cats[cat_name] +" && "+ anti_isolated_sel_1 @@ -3636,7 +3512,6 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' flat = 1.04 if (options.era=='cpsummer17' or options.era == 'UL_17'): flat=1.07 if (options.era=='cp18'or options.era == 'UL_18'): flat=1.06 - if (options.era=='22'): flat=1.06 if 'njets0' in add_name: @@ -3657,23 +3532,6 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpdecay'] and 'ff_tt_qcd_syst' in add_name: - if(options.era=='22'): - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - else: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - if(options.era=='cp18' or options.era == 'UL_18'): if 'njets0' in add_name: if 'Up' in add_name: @@ -3732,7 +3590,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpprod','cpdecay','mssmrun2','vlq']: fake_factor_wt_string_2='0' else: - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: # deep tau tight 2018 anti isolating the subleading tau if options.analysis == 'cpprod': fake_factor_wt_string_2='0' @@ -5013,12 +4871,8 @@ def RawFFFromString(string): # output_name = options.outputfolder+'/datacard_'+options.extra_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' datacard_name+='_'+options.extra_name #else: -if options.do_ss: - output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'_ss.root' - outfile = ROOT.TFile(output_name, 'RECREATE') -else: - output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' - outfile = ROOT.TFile(output_name, 'RECREATE') +output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' +outfile = ROOT.TFile(output_name, 'RECREATE') cats['cat'] = '('+cats[options.cat]+')*('+cats['baseline']+')' if options.channel=="em": cats['em_shape_cat'] = '('+cats[options.cat]+')*('+cats['loose_baseline']+')' @@ -5206,8 +5060,6 @@ def RawFFFromString(string): do_data = False if options.scheme == "noTT": samples_to_skip.extend(["TTT","TTJ"]) - if options.scheme == "noWandEWKZ": - samples_to_skip.extend(['TTT','TTJ','W','EWKZ']) RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) #if options.era == "tauid2016" and options.channel in ['et','mt']: # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) @@ -5531,9 +5383,8 @@ def MergeXBins(hist): if not options.no_plot: - #if options.extra_name != '': vname = options.extra_name - #else: vname = var_name - vname = var_name + '_' +options.extra_name + if options.extra_name != '': vname = options.extra_name + else: vname = var_name if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year @@ -5563,7 +5414,7 @@ def MergeXBins(hist): scheme = options.channel if compare_w_shapes: scheme = 'w_shape' if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "" and options.scheme != "noWandEWKZ": scheme = options.scheme + if options.scheme != "": scheme = options.scheme FF = options.method in [17,18] if options.ml_ff: options.w_ff_closure = False @@ -5745,7 +5596,7 @@ def MergeXBins(hist): # for smsummer16 need to ad WplusH and WminusH templates into one -if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.channel != 'zmm' and options.analysis != "mssmrun2": +if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.channel != 'zmm' and options.analysis != "mssmrun2": outfile.cd(nodename) directory = outfile.Get(nodename) hists_to_add = [] diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py new file mode 100644 index 000000000..bf1b33f0f --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py @@ -0,0 +1,5817 @@ +import ROOT +import os +import glob +import json +from UserCode.ICHiggsTauTau.analysis import * +from UserCode.ICHiggsTauTau.uncertainties import ufloat +from optparse import OptionParser +import argparse +import ConfigParser +import UserCode.ICHiggsTauTau.plotting as plotting +from collections import OrderedDict +import copy + +CHANNELS= ['et', 'mt', 'em','tt','zmm','zee','mj'] +ANALYSIS= ['sm','mssm','Hhh'] +METHODS= [8 ,9, 10, 11, 12 , 13, 14, 15, 16, 17, 18, 19] + +conf_parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter, + add_help=False + ) +conf_parser.add_argument("--cfg", + help="Specify config file", metavar="FILE") +options, remaining_argv = conf_parser.parse_known_args() + +defaults = { + "channel":"mt" , "outputfolder":"output", + "folder":"/vols/cms/dw515/Offline/output/MSSM/Jan11/" , "signal_folder":"", "embed_folder":"", + "paramfile":"scripts/Params_2016_spring16.json", "cat":"inclusive", "year":"2016", + "era":"mssmsummer16", "sel":"(1)", "set_alias":[], "analysis":"mssm", "var":"m_vis(7,0,140)", + "method":8 , "do_ss":False, "do_aiso":False, "sm_masses":"125", "ggh_masses":"", "bbh_masses":"", + "bbh_nlo_masses":"", "nlo_qsh":False, "qcd_os_ss_ratio":-1, "add_sm_background":"", + "syst_e_scale":"", "syst_mu_scale":"", "syst_tau_scale":"", "syst_tau_scale_0pi":"", + "syst_e_res":"", "syst_mu_res":"", "syst_tau_res":"", + "syst_tau_scale_1pi":"", "syst_tau_scale_3prong":"", "syst_tau_scale_3prong1pi0":"", "syst_eff_t":"", "syst_tquark":"", + "syst_zwt":"", "syst_w_fake_rate":"", "syst_scale_j":"", "syst_res_j":"", "syst_scale_j_rbal":"", + "syst_scale_j_rsamp":"", "syst_scale_j_full":"", "syst_scale_j_cent":"", "syst_scale_j_hf":"", + "syst_scale_j_full_corr":"", "syst_scale_j_cent_corr":"", "syst_scale_j_hf_corr":"", + "syst_scale_j_full_uncorr":"", "syst_scale_j_cent_uncorr":"", "syst_scale_j_hf_uncorr":"", + "syst_scale_j_by_source":"","jes_sources":"1:27", "syst_eff_b":"", "syst_fake_b":"", "syst_eff_b_weights":"", + "norm_bins":False, "blind":False, "x_blind_min":100, "x_blind_max":4000, "ratio":False, + "y_title":"", "x_title":"", "custom_y_range":False, "y_axis_min":0.001, + "y_axis_max":100,"custom_x_range":False, "x_axis_min":0.001, "x_axis_max":100, "log_x":False, + "log_y":False, "extra_pad":0.0, "signal_scale":1, "draw_signal_mass":"", "draw_signal_tanb":10, + "signal_scheme":"run2_mssm", "lumi":"12.9 fb^{-1} (13 TeV)", "no_plot":False, + "ratio_range":"0.6,1.4", "datacard":"", "do_custom_uncerts":False, "uncert_title":"Background uncertainty", + "custom_uncerts_wt_up":"","custom_uncerts_wt_down":"", "add_flat_uncert":0, + "add_stat_to_syst":False, "add_wt":"", "custom_uncerts_up_name":"", "custom_uncerts_down_name":"", + "do_ff_systs":False, "syst_efake_0pi_scale":"", "syst_efake_1pi_scale":"", "syst_jfake_scale":"", + "syst_mufake_0pi_scale":"", "syst_mufake_1pi_scale":"", "scheme":"","scheme":"", "syst_zpt_es":"", + "syst_zpt_tt":"", "syst_zpt_statpt0":"", "syst_zpt_statpt40":"", "syst_zpt_statpt80":"", + "syst_jfake_m":"", "syst_jfake_e":"", "syst_z_mjj":"", "syst_qcd_scale":"", "syst_quarkmass":"", "syst_mssm_ggh":False, + "syst_ps":"", "syst_ue":"", "doNLOScales":False, "gen_signal":False, "doPDF":False, + "doMSSMReWeighting":False, "do_unrolling":1, "syst_tau_id_dm0":"", "syst_tau_id_dm1":"", + "syst_tau_id_dm10":"", "syst_lfake_dm0":"","syst_lfake_dm1":"","syst_qcd_shape_wsf":"", + "syst_scale_met_unclustered":"","syst_scale_met_clustered":"", + "extra_name":"", "no_default":False, "no_systs":False, "embedding":False,"syst_embedding_tt":"", "syst_embed_pt":"", + "vbf_background":False, "syst_em_qcd":"", "syst_prefire":"", + "syst_scale_met":"", "syst_res_met":"", "split_sm_scheme": False, + "ggh_scheme": "powheg", "symmetrise":False, "mergeXbins":False, 'em_qcd_weight':"", + "syst_scale_j_corr":"","syst_scale_j_uncorr":"", "syst_qcd_bkg":"", + "ff_ss_closure":False, "threePads":False,"auto_blind":False, + "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", + "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, + "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, + "no_qcd_subtract": False, "tt_qcd_sel_num": 0,"scale_by_bin":False + +} + +if options.cfg: + config = ConfigParser.SafeConfigParser() + config.read([options.cfg]) + defaults.update(dict(config.items("Defaults"))) + +parser = argparse.ArgumentParser( + parents=[conf_parser] + ) +parser.set_defaults(**defaults) +parser.add_argument("--channel", dest="channel", type=str, + help="Tau decay channel to process. Supported channels: %(CHANNELS)s" % vars()) +parser.add_argument("--outputfolder", dest="outputfolder", type=str, + help="Name of output folder") +parser.add_argument("--folder", dest="folder", type=str, + help="Name of input folder") +parser.add_argument("--signal_folder", dest="signal_folder", type=str, + help="If specified will use as input folder for signal samples, else will use same directroy specified by \"folder\" option.") +parser.add_argument("--embed_folder", dest="embed_folder", type=str, + help="If specified will use as input folder for embed samples, else will use same directroy specified by \"folder\" option.") +parser.add_argument("--paramfile", dest="paramfile", type=str, + help="Name of parameter file") +parser.add_argument("--cat", dest="cat", type=str, + help="Category") +parser.add_argument("--datacard", dest="datacard", type=str, + help="Datacard name") +parser.add_argument("--year", dest="year", type=str, + help="Year") +parser.add_argument("--era", dest="era", type=str, + help="Era") +parser.add_argument("--sel", dest="sel", type=str, + help="Selection") +parser.add_argument("--set_alias", action="append", dest="set_alias", type=str, + help="Overwrite alias selection using this options. Specify with the form --set_alias=nameofaliastoreset:newselection") +parser.add_argument("--analysis", dest="analysis", type=str, + help="Analysis. Supported options: %(CHANNELS)s" % vars()) +parser.add_argument("--var", dest="var", type=str, + help="Variable to plot") +parser.add_argument("--method", dest="method", type=int, + help="Method. Supported options: %(METHODS)s" % vars()) +parser.add_argument("--do_aiso", dest="do_aiso", action='store_true', + help="Anti-isolate electron / muon") +parser.add_argument("--do_ss", dest="do_ss", action='store_true', + help="Do same-sign.") +parser.add_argument("--sm_masses", dest="sm_masses", type=str, + help="Comma seperated list of SM signal masses.") +parser.add_argument("--ggh_masses", dest="ggh_masses", type=str, + help="Comma seperated list of SUSY ggH signal masses.") +parser.add_argument("--bbh_nlo_masses", dest="bbh_nlo_masses", type=str, + help="Comma seperated list of SUSY NLO bbH signal masses.") +parser.add_argument("--nlo_qsh", dest="nlo_qsh", action='store_true', + help="Do the Up/Down Qsh variations for NLO samples.") +parser.add_argument("--doNLOScales", dest="doNLOScales", action='store_true', + help="Do the Up/Down QCD scale variations for NLO samples and compute uncertainties.") +parser.add_argument("--doPDF", dest="doPDF", action='store_true', + help="Do PDF and alphaS variations for NLO samples and compute uncertainties.") +parser.add_argument("--doMSSMReWeighting", dest="doMSSMReWeighting", action='store_true', + help="Do mA-tanb dependent reweighting of MSSM ggH signal.") +parser.add_argument("--bbh_masses", dest="bbh_masses", type=str, + help="Comma seperated list of SUSY bbH signal masses.") +parser.add_argument("--qcd_os_ss_ratio", dest="qcd_os_ss_ratio", type=float, + help="QCD OS/SS ratio") +parser.add_argument("--add_sm_background", dest="add_sm_background", type=str, + help="Add SM Higgs background for MSSM") +parser.add_argument("--syst_tau_scale", dest="syst_tau_scale", type=str, + help="If this string is set then the systematic shift due to tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_e_scale", dest="syst_e_scale", type=str, + help="If this string is set then the systematic shift due to electron energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_mu_scale", dest="syst_mu_scale", type=str, + help="If this string is set then the systematic shift due to muon energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_scale_0pi", dest="syst_tau_scale_0pi", type=str, + help="If this string is set then the systematic shift due to the 1 prong 0 pi tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_scale_1pi", dest="syst_tau_scale_1pi", type=str, + help="If this string is set then the systematic shift due to the 1 prong 1 pi tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_scale_3prong", dest="syst_tau_scale_3prong", type=str, + help="If this string is set then the systematic shift due to 3 prong tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_scale_3prong1pi0", dest="syst_tau_scale_3prong1pi0", type=str, + help="If this string is set then the systematic shift due to 3 prong + 1 pi0 tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_scale_grouped", type=str, + help="If this string is set then the systematic shift due to tau energy scale is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_e_res", dest="syst_e_res", type=str, + help="If this string is set then the systematic shift due to electron energy resolution is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_mu_res", dest="syst_mu_res", type=str, + help="If this string is set then the systematic shift due to muon energy resolution is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_res", dest="syst_tau_res", type=str, + help="If this string is set then the systematic shift due to tau energy resolution is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_eff_t", dest="syst_eff_t", type=str, default='', + help="If this string is set then the systematic shift due to tau ID is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tquark", dest="syst_tquark", type=str, + help="If this string is set then the top-quark weight systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_zwt", dest="syst_zwt", type=str, + help="If this string is set then the z-reweighting systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_w_fake_rate", dest="syst_w_fake_rate", type=str, default='', + help="If this string is set then the W+jets fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j", dest="syst_scale_j", type=str, + help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_res_j", dest="syst_res_j", type=str, + help="If this string is set then the jER systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j_corr", dest="syst_scale_j_corr", type=str, + help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j_uncorr", dest="syst_scale_j_uncorr", type=str, + help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j_rbal", dest="syst_scale_j_rbal", type=str, + help="If this string is set then the RelativeBal jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j_rsamp", dest="syst_scale_j_rsamp", type=str, + help="If this string is set then the RelativeSample jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_j_full", dest="syst_scale_j_full", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5)") +parser.add_argument("--syst_scale_j_cent", dest="syst_scale_j_cent", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3)") +parser.add_argument("--syst_scale_j_hf", dest="syst_scale_j_hf", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3)") +parser.add_argument("--syst_scale_j_full_corr", dest="syst_scale_j_full_corr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_cent_corr", dest="syst_scale_j_cent_corr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_hf_corr", dest="syst_scale_j_hf_corr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_full_uncorr", dest="syst_scale_j_full_uncorr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_cent_uncorr", dest="syst_scale_j_cent_uncorr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_hf_uncorr", dest="syst_scale_j_hf_uncorr", type=str, + help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3). 2016/2017 correlated part.") +parser.add_argument("--syst_scale_j_by_source", dest="syst_scale_j_by_source", type=str, + help="If this string is set then the jet scale systematic is performed split by source with the set string appended to the resulting histogram name. The string should contrain the substring \'SOUCE\' which will be replaced by the JES source name") +parser.add_argument("--syst_scale_j_regrouped", dest="syst_scale_j_regrouped", type=str, + help="If this string is set then the set of regrouped jet scale systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--jes_sources", dest="jes_sources", type=str, + help="JES sources to process specified by integers seperated by commas. Values seperated by x\':\'y will process all integers from x to y. e.g using --jes_sources=1:3,10 will process sources: 1,2,3,10") +parser.add_argument("--syst_eff_b", dest="syst_eff_b", type=str, + help="If this string is set then the b-tag efficiency systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_eff_b_weights", dest="syst_eff_b_weights", type=str, + help="If this string is set then the b-tag efficiency systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_fake_b", dest="syst_fake_b", type=str, + help="If this string is set then the b-tag fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--norm_bins", dest="norm_bins", action='store_true', + help="Normalize bins by bin width.") +parser.add_argument("--blind", dest="blind", action='store_true', + help="Blind histogram.") +parser.add_argument("--x_blind_min", dest="x_blind_min", type=float, + help="Minimum x for blinding.") +parser.add_argument("--x_blind_max", dest="x_blind_max", type=float, + help="Maximum x for blinding.") +parser.add_argument("--ratio", dest="ratio", action='store_true', + help="Draw ratio.") +parser.add_argument("--y_title", dest="y_title", type=str, + help="Y-axis title.") +parser.add_argument("--x_title", dest="x_title", type=str, + help="X-axis title.") +parser.add_argument("--custom_y_range", dest="custom_y_range", action='store_true', + help="Use custom y-axis range") +parser.add_argument("--y_axis_min", dest="y_axis_min", type=float, + help="Minimum y-axis value.") +parser.add_argument("--y_axis_max", dest="y_axis_max", type=float, + help="Maximum y-axis value.") +parser.add_argument("--custom_x_range", dest="custom_x_range", action='store_true', + help="Use custom x-axis range") +parser.add_argument("--x_axis_min", dest="x_axis_min", type=float, + help="Minimum x-axis value.") +parser.add_argument("--x_axis_max", dest="x_axis_max", type=float, + help="Maximum x-axis value.") +parser.add_argument("--log_x", dest="log_x", action='store_true', + help="Set log scale on x-axis.") +parser.add_argument("--log_y", dest="log_y", action='store_true', + help="Set log scale on y-axis.") +parser.add_argument("--ratio_log_y", dest="ratio_log_y", action='store_true', + help="Set log scale on ratio y-axis.") +parser.add_argument("--extra_pad", dest="extra_pad", type=float, + help="Fraction of extra whitespace at top of plot.") +parser.add_argument("--signal_scale", dest="signal_scale", type=float, + help="Signal scale.") +parser.add_argument("--draw_signal_mass", dest="draw_signal_mass", type=str, + help="Signal mass.") +parser.add_argument("--draw_signal_tanb", dest="draw_signal_tanb", type=float, + help="Signal tanb.") +parser.add_argument("--signal_scheme", dest="signal_scheme", type=str, + help="Signal scale.") +parser.add_argument("--lumi", dest="lumi", type=str, + help="Lumi.") +parser.add_argument("--no_plot", dest="no_plot", action='store_true', + help="If option is set then no pdf or png plots will be created only the output root file will be produced.") +parser.add_argument("--ratio_range", dest="ratio_range", type=str, + help="y-axis range for ratio plot in format MIN,MAX") +parser.add_argument("--do_custom_uncerts", dest="do_custom_uncerts", action='store_true', + help="Do custom uncertainty band. Up and down weights for this uncertainty band should be set using \"custom_uncerts_wt_up\" and \"custom_uncerts_wt_down\" options") +parser.add_argument("--custom_uncerts_down_name", dest="custom_uncerts_down_name", type=str, + help="Name of histogram to use for uncertainty down band") +parser.add_argument("--custom_uncerts_up_name", dest="custom_uncerts_up_name", type=str, + help="Name of histogram to use for uncertainty up band") +parser.add_argument("--custom_uncerts_wt_up", dest="custom_uncerts_wt_up", type=str, + help="Up weight for custom uncertainty band") +parser.add_argument("--custom_uncerts_wt_down", dest="custom_uncerts_wt_down", type=str, + help="Down weight for custom uncertainty band") +parser.add_argument("--uncert_title", dest="uncert_title", type=str, + help="Custom uncertainty band legend label") +parser.add_argument("--add_stat_to_syst", dest="add_stat_to_syst", action='store_true', + help="Add custom uncertainty band to statistical uncertainty.") +parser.add_argument("--add_flat_uncert", dest="add_flat_uncert", type=float, + help="If set to non-zero will add a flat uncertainty band in quadrature to the uncertainty.") +parser.add_argument("--add_wt", dest="add_wt", type=str, + help="Name of additional weight to be applied to all templates.") +parser.add_argument("--do_ff_systs", dest="do_ff_systs", action='store_true', + help="Do fake-factor systamatic shifts.") +parser.add_argument("--syst_efake_0pi_scale", dest="syst_efake_0pi_scale", type=str, + help="If this string is set then the e->tau dm=0 fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_efake_1pi_scale", dest="syst_efake_1pi_scale", type=str, + help="If this string is set then the e->tau dm=1 fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_mufake_0pi_scale", dest="syst_mufake_0pi_scale", type=str, + help="If this string is set then the mu->tau dm=0 fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_mufake_1pi_scale", dest="syst_mufake_1pi_scale", type=str, + help="If this string is set then the mu->tau dm=1 fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_jfake_scale", dest="syst_jfake_scale", type=str, + help="If this string is set then the j->tau fake-rate systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--scheme", dest="scheme", type=str, + help="Set plotting scheme") +parser.add_argument("--syst_zpt_es", dest="syst_zpt_es", type=str, + help="If this string is set then the zpT muon ES systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_zpt_tt", dest="syst_zpt_tt", type=str, + help="If this string is set then the zpT tt X-section systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_zpt_statpt0", dest="syst_zpt_statpt0", type=str, + help="If this string is set then the zpT statistical pt0 systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_zpt_statpt40", dest="syst_zpt_statpt40", type=str, + help="If this string is set then the zpT statistical pt40 systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_zpt_statpt80", dest="syst_zpt_statpt80", type=str, + help="If this string is set then the zpT statistical pt80 systematic is performed with the set string appended to the resulting histogram name") +parser.add_argument("--syst_jfake_e", dest="syst_jfake_e", type=str, + help="If set, adds the e->jet fake rate uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_jfake_m", dest="syst_jfake_m", type=str, + help="If set, adds the e->jet fake rate uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_z_mjj", dest="syst_z_mjj", type=str, + help="If set then add the uncertainty on the Z mjj corrections") +parser.add_argument("--syst_qcd_scale", dest="syst_qcd_scale", type=str, + help="If set then add the qcd scale uncertainty for ggH") +parser.add_argument("--syst_quarkmass", dest="syst_quarkmass", type=str, + help="If set then add the finite quark mass uncertainty for ggH") +parser.add_argument("--syst_ps", dest="syst_ps", type=str, + help="If set then add the PS uncertainty for ggH") +parser.add_argument("--syst_ue", dest="syst_ue", type=str, + help="If set then add the UE uncertainty for ggH") +parser.add_argument("--syst_mssm_ggh", dest="syst_mssm_ggh", action='store_true', + help="If set then add the ggH uncertainties for the MSSM (scale and Hdamp uncerts)") +parser.add_argument("--syst_tau_id_dm0", dest="syst_tau_id_dm0", type=str, + help="If set, adds the tau dm = 0 id uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_id_dm1", dest="syst_tau_id_dm1", type=str, + help="If set, adds the tau dm = 1 id uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_tau_id_dm10", dest="syst_tau_id_dm10", type=str, + help="If set, adds the tau dm = 10 id uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_lfake_dm0", dest="syst_lfake_dm0", type=str, + help="If set, adds the e/mu->tau dm = 0 fake-rate uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_lfake_dm1", dest="syst_lfake_dm1", type=str, + help="If set, adds the e/mu->tau dm = 1 fake-rate uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_qcd_shape_wsf", dest="syst_qcd_shape_wsf", type=str, + help="If set, adds QCD shape uncertainty relating to W subtraction from SS data with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_met_unclustered", dest="syst_scale_met_unclustered", type=str, + help="If set, adds the unclustered energy MET uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_scale_met_clustered", dest="syst_scale_met_clustered", type=str, + help="If set, adds the clustered energy MET uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--gen_signal", dest="gen_signal", action='store_true', + help="If set then use generator-level tree for signal") +parser.add_argument("--do_unrolling", dest="do_unrolling", type=int, + help="If argument is set to true will unroll 2D histograms into 1D histogram.") +parser.add_argument("--no_default", dest="no_default", action='store_true', + help="If option is speficied then don't do nominal histograms.") +parser.add_argument("--no_systs", dest="no_systs", action='store_true', + help="If option is speficied then don't do systematics histograms.") +parser.add_argument("--extra_name", dest="extra_name", type=str, + help="If set, adds an additional string to the output datacard name") +parser.add_argument("--embedding", dest="embedding", action='store_true', + help="If option is speficied then use embedded samples for ZTT templates.") +parser.add_argument("--syst_embedding_tt", dest="syst_embedding_tt", type=str, + help="If set, adds systematic templates for embedding corresponding to TTbar shift of +/-10\% ") +parser.add_argument("--syst_embed_pt", dest="syst_embed_pt", type=str, + help="If set, adds systematic templates for embedding corresponding to Z->mumu non-closures ") +parser.add_argument("--vbf_background", dest="vbf_background", action='store_true', + help="Add VBF to total background template") +parser.add_argument("--syst_em_qcd", dest="syst_em_qcd", type=str, + help="If set, adds the QCD shape uncertainties for the em channel. You string should contain *BIN") +parser.add_argument("--syst_scale_met", dest="syst_scale_met", type=str, + help="If set, adds the recoil corrected MET response uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--syst_res_met", dest="syst_res_met", type=str, + help="If set, adds the recoil corrected MET resolution uncertainty with the set string appended to the resulting histogram name") +parser.add_argument("--split_sm_scheme", dest="split_sm_scheme", action='store_true', + help="If set, splits the SM signal scheme into ggH, qqH and VH") +parser.add_argument("--ggh_scheme", dest="ggh_scheme", type=str, + help="Decide which ggH scheme to plot with in split SM scheme mode (powheg or JHU)") +parser.add_argument("--symmetrise", dest="symmetrise", action='store_true', + help="Use this option to symmetrise dijet Delta_phi bins in 2D histogram around centre bin") +parser.add_argument("--mergeXbins", dest="mergeXbins", action='store_true', + help="Use this option to merge x bins to improve stats - to be used is the backgrounds are flat as a function of the X variable") +parser.add_argument("--em_qcd_weight", dest="em_qcd_weight", type=str, + help="Define custom em QCD OSSS weight/function") +parser.add_argument("--syst_qcd_bkg", dest="syst_qcd_bkg", type=str, + help="If set, adds systematic templates corresponding to shifting background subtraction in QCD method up/down by +/-10\% ") +parser.add_argument("--syst_prefire", dest="syst_prefire", type=str, + help="If set, adds systematic templates corresponding to uncertainty on pre-firing correction.") +parser.add_argument("--syst_tau_id_diff", dest="syst_tau_id_diff", type=str, + help="Do shape uncertainty corresponding to shifting the tau id SFs. The string you pass as the argument should contain either *DM, in which case the DM binned version will be used, or *PT in which base the pT binned version will be used.") +parser.add_argument("--syst_tau_trg_diff", dest="syst_tau_trg_diff", type=str, + help="Do shape uncertainty corresponding to shifting the tau trigger SFs. The string you pass as the argument should contain either *DM which will be replaced with DMi for i=0,1,10,11") +parser.add_argument("--syst_lep_trg_diff", dest="syst_lep_trg_diff", type=str, + help="Do shape uncertainty corresponding to shifting the lepton trigger SFs.") +parser.add_argument("--ff_ss_closure", dest="ff_ss_closure", action='store_true', + help="If set then applies a non-closure correction to fake factor yields based on differences in SS data.") +parser.add_argument("--threePads", dest="threePads", action='store_true', + help="If set then draws three pads (one ratio + additional).") +parser.add_argument("--wp", dest="wp", type=str, + help="Tau ID working point to use (only works for mssmrun2).") +parser.add_argument("--singletau", dest="singletau", action='store_true', + help="If set then use singletau baseline (only works for mssmrun2).") +parser.add_argument("--qcd_ff_closure", dest="qcd_ff_closure", action='store_true', + help="Will run closure plot for QCD DR (mssmrun2)") +parser.add_argument("--w_ff_closure", dest="w_ff_closure", action='store_true', + help="Will run closure plot for W DR (mssmrun2)") +parser.add_argument("--bbh_masses_powheg", dest="bbh_masses_powheg", type=str, + help="SUSY bbh masses to run more powheg samples") +parser.add_argument("--ggh_masses_powheg", dest="ggh_masses_powheg", type=str, + help="SUSY ggh masses to run more powheg samples") +parser.add_argument("--bkg_comp", dest="bkg_comp", action='store_true', + help="Will plot the background composition on the 2nd pad and ratio on 3rd. Needs to be run with threePads.") +parser.add_argument("--ml_ff", dest="ml_ff", action='store_true', + help="Use machine learning fake factors for mssmrun2.") +parser.add_argument("--vlq_sig", dest="vlq_sig", type=str, + help="Comma separated list of signal parameter names i.e. vlq_betaRd33_minus1_mU4_gU1,vlq_betaRd33_minus1_mU4_gU2,vlq_betaRd33_minus1_mU4_gU3") +parser.add_argument("--plot_signals", dest="plot_signals", type=str, + help="Comma separated list of what signals to plot") +parser.add_argument("--DY_NLO", dest="DY_NLO", action='store_true', + help="Use DY NLO samples") +parser.add_argument("--plot_from_dc", default="", type=str, + help="If not empty will draw plot straight from datacard") +parser.add_argument("--v2p5", dest="v2p5", action='store_true', + help="Get version of DeepTau v2p5"), +parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', + help="Do not subtract background when estimating qcd events") +parser.add_argument("--tt_qcd_sel_num", dest="tt_qcd_sel_num", type=int, + help="Change selection type for tt_qcd_norm") +parser.add_argument("--scale_by_bin", dest="scale_by_bin", action='store_true', + help="Scale QCD by bin") +options = parser.parse_args(remaining_argv) + +print 'do_unrolling = %s' % options.do_unrolling + +print '' +print '################### Options ###################' +print 'channel = ' + options.channel +print 'outputfolder = ' + options.outputfolder +print 'folder = ' + options.folder +print 'paramfile = ' + options.paramfile +print 'cat = ' + options.cat +print 'datacard = ' + options.datacard +print 'year = ' + options.year +print 'era = ' + options.era +print 'sel = ' + options.sel +print 'analysis = ' + options.analysis +print 'var = ' + options.var +print 'method =' , options.method +print 'do_ss =' , options.do_ss +print 'sm_masses = ' + options.sm_masses +print 'ggh_masses = ' + options.ggh_masses +print 'bbh_masses = ' + options.bbh_masses +print 'qcd_os_ss_ratio =' , options.qcd_os_ss_ratio +print 'add_sm_background =' , options.add_sm_background +print 'syst_tau_scale =' , options.syst_tau_scale +print 'syst_eff_t =' , options.syst_eff_t +print 'syst_tquark =' , options.syst_tquark +print 'syst_zwt =' , options.syst_zwt +print 'syst_w_fake_rate =' , options.syst_w_fake_rate +print 'syst_scale_j =' , options.syst_scale_j +print 'syst_eff_b =' , options.syst_eff_b +print 'syst_fake_b =' , options.syst_fake_b +print 'do_ff_systs =' , options.do_ff_systs +print 'singletau =' , options.singletau +print 'DY-NLO =' , options.DY_NLO +print '###############################################' +print '' + +# discrete x labels +discrete_x_axis = False +plot_var = options.var +discrete_x_labels=None +do_eq = False +do_geq = False +if '[' in plot_var and ']' in plot_var: + discrete_x_labels = plot_var.split('[')[1].split(']')[0].split(',') + for i in discrete_x_labels: + if ">=" in i: + discrete_x_axis = True + do_geq = True + elif "==" in i: + discrete_x_axis = True + do_eq = True + +if discrete_x_axis: + if do_geq: + run_bins = [] + for i in discrete_x_labels: + if ">=" in i: + run_bins.append(float(i.replace(">=",""))) + elif "==" in i: + run_bins.append(float(i.replace("==",""))) + else: + run_bins.append(float(i)) + elif do_eq: + run_bins = range(int(discrete_x_labels[0].replace("==","")),int(discrete_x_labels[-1].replace("==",""))+2) + options.var = plot_var.split('[')[0]+str(run_bins) +else: + discrete_x_labels = None + + +# vbf_background = False +vbf_background = options.vbf_background + +compare_w_shapes = False +compare_qcd_shapes = False +if options.scheme == "qcd_shape": compare_qcd_shapes = True +if options.scheme == "w_shape": compare_w_shapes = True +w_abs_shift=None # if not None then the QCD shape will be adjusted by shifting the W yield up and down by +/- w_abs_shift +if options.era in ["mssmsummer16","smsummer16","cpsummer16","cpdecay16","legacy16","tauid2016","mvadm2016"]: options.lumi = "35.9 fb^{-1} (13 TeV)" +if options.era in ['UL_16_preVFP']: options.lumi = "19.5 fb^{-1} (13 TeV)" +if options.era in ['UL_16_postVFP']: options.lumi = "16.8 fb^{-1} (13 TeV)" + + + + +# option to split the real tau events into rho, pi, a1, other +split_taus=False +if options.era == 'mvadm2016' and options.channel=='mt': split_taus=True + +cats = {} +if options.analysis in ['sm','cpprod','cpdecay']: + if options.channel == 'mt': + cats['baseline'] = '(iso_1<0.15 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>25&&pt_1<23)||(trg_singlemuon&&pt_1>23)))' + if options.era in ['tauid2017']: + cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && pt_1>25 && trg_singlemuon &&pt_2>20)' + if options.era in ['cpsummer17','UL_17','cp18','UL_18']: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>32&&pt_1<25)||(trg_singlemuon&&pt_1>25)) && wt<2)' + if options.era in ['tauid2016']: + cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon && pt_1>23)' + cats['baseline_loosemu'] = '(iso_1<0.15 && antiele_2 && antimu_loose_2 && !leptonveto && trg_singlemuon && pt_1>23)' + cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' + cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' + elif options.channel == 'et': + cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + if options.era in ['smsummer16']: + cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' + cats['baseline_aisotau'] = '(iso_1<0.1 && mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && leptonveto==0 && trg_singleelectron && pt_2>30)' + if options.era in ['tauid2016']: + cats['baseline'] = '(iso_1<0.1 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' + cats['baseline_loosemu'] = '(iso_1<0.1 && antiele_2 && antimu_loose_2 && !leptonveto && trg_singleelectron)' + cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' + cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP']: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && leptonveto==0 && trg_singleelectron && fabs(wt<2))' + if options.era in ['cpsummer17','UL_17']: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && leptonveto==0 && ((trg_etaucross&&pt_2>35&&pt_1<28&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>28)))' + if options.era in ['cp18', 'UL_18']: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && !leptonveto && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>33)))' + #cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1 && fabs(eta_1-eta_2)>0.2)||(trg_singleelectron&&pt_1>33)))&&wt<2' + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>33)))&&wt<2' + +elif options.analysis in ['mssmrun2','vlq']: + wp = options.wp + + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: + m_lowpt=23 + e_lowpt=26 + t_highpt=120 + t_lowpt_mt=25 + t_lowpt_et=25 + if options.era in ['cpsummer17','UL_17']: + m_lowpt=25 + e_lowpt=28 + t_highpt=180 + t_lowpt_mt=32 + t_lowpt_et=35 + if options.era in ['cp18','UL_18']: + m_lowpt=25 + e_lowpt=33 + t_highpt=180 + t_lowpt_mt=32 + t_lowpt_et=35 + if options.era in ['22']: + m_lowpt=25 + e_lowpt=33 + t_highpt=180 + t_lowpt_mt=32 + t_lowpt_et=35 + + if options.channel == 'mt': + if options.singletau: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && pt_2>30 && ((trg_mutaucross&&pt_2>%(t_lowpt_mt)s&&pt_2<%(t_highpt)s&&fabs(eta_2)<2.1&&pt_1<%(m_lowpt)s)||(trg_singlemuon&&pt_1>=%(m_lowpt)s)||(trg_singletau_2&&pt_2>=%(t_highpt)s&&fabs(eta_2)<2.1)))' % vars() + else: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && pt_2>30 && ((trg_mutaucross&&pt_2>%(t_lowpt_mt)s&&fabs(eta_2)<2.1&&pt_1<%(m_lowpt)s)||(trg_singlemuon&&pt_1>=%(m_lowpt)s)))' % vars() + + if options.channel == 'et': + if options.singletau: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && pt_2>30 && ((trg_etaucross&&pt_2>%(t_lowpt_et)s&&pt_2<%(t_highpt)s&&fabs(eta_2)<2.1&&pt_1<%(e_lowpt)s)||(trg_singleelectron&&pt_1>=%(e_lowpt)s)||(trg_singletau_2&&pt_2>=%(t_highpt)s&&fabs(eta_2)<2.1)))' % vars() + else: + cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && pt_2>30 && ((trg_etaucross&&pt_2>%(t_lowpt_et)s&&fabs(eta_2)<2.1&&pt_1<%(e_lowpt)s)||(trg_singleelectron&&pt_1>=%(e_lowpt)s)))' % vars() + +elif options.analysis == 'mssm': + if options.channel == 'mt': + cats['baseline'] = '(iso_1<0.15 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + elif options.channel == 'et': + cats['baseline'] = '(iso_1<0.1 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + if options.era == 'mssmsummer16': + if options.channel == 'mt': + cats['baseline'] = '(iso_1<0.15 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + cats['baseline_antiisotau'] = '(iso_1<0.15 && 1 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' + cats['ichep_baseline'] = '(iso_1<0.15 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' + elif options.channel == 'et': + cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' + cats['baseline_antiisotau'] = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' + cats['ichep_baseline'] = '(iso_1<0.1 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' + elif options.channel == 'mj': + cats['baseline'] = '(iso_1<0.15 && !leptonveto)' +if options.channel == 'tt': + cats['baseline'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' + if options.era == 'mssmsummer16': cats['baseline'] = '(mva_olddm_medium_1>0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','mvadm2016']: + cats['baseline'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau && pt_1>40)' + cats['baseline_aisotau1'] = '(pt_1>50 && mva_olddm_vloose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' + cats['baseline_aisotau2'] = '(pt_1>50 && mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_tight_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' + cats['baseline_aisotau2_sb'] = '(mva_olddm_vloose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && leptonveto==0 && trg_doubletau)' + cats['baseline_aisotau2_sb'] = '(mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && leptonveto==0 && trg_doubletau)' + if options.era in ['cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP']: + cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && trg_doubletau && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + if options.era in ['cpsummer17','UL_17','cp18','UL_18']: + cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + if options.era == '22': + cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + + if options.analysis in ['mssmrun2','vlq']: + wp = options.wp + if options.singletau: + if options.era in['legacy16','UL_16_preVFP','UL_16_postVFP']: + cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_%(wp)s_2>0.5 && leptonveto==0 && (trg_doubletau || (pt_1>120 && trg_singletau_1) || (pt_2>120 && trg_singletau_2)) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() + else: + cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_%(wp)s_2>0.5 && leptonveto==0 && (trg_doubletau || (pt_1>180 && trg_singletau_1) || (pt_2>180 && trg_singletau_2)) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() + else: + cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() + # cats['baseline'] = '(deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() + + +elif options.channel == 'em': + cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto)' + if options.era == 'mssmsummer16': + cats['loose_baseline'] = '(iso_1<0.5 && iso_2>0.2 && iso_2<0.5 && !leptonveto &&trg_muonelectron)' + elif options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: + cats['loose_baseline'] = '(wt<2 && iso_1<0.15 && iso_2<0.5 && !leptonveto &&trg_muonelectron)' + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto && trg_muonelectron && pt_1>15 && pt_2>15)' + if options.era in ['cpsummer17','UL_17','cp18','UL_18']: + cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto && trg_muonelectron && pt_1>15 && pt_2>15)' + cats['loose_baseline'] = '(wt<2 && iso_1<0.15 && iso_2<0.5 && !leptonveto && trg_muonelectron)' +elif options.channel == 'zmm': + cats['baseline'] = '(iso_1<0.15 && iso_2<0.15)' + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' + if options.era in ['cpsummer17','UL_17','cp18','UL_18']: cats['baseline'] = '(pt_1>25 && iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' +elif options.channel == 'zee': + cats['baseline'] = '(iso_1<0.1 && iso_2<0.1)' + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.1 && iso_2<0.1 && trg_singleelectron && fabs(wt)<2)' + + #if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(1)' + + if options.era in ['cpsummer17','UL_17']: cats['baseline'] = '(pt_1>28&&pt_2>13&&iso_1<0.15 && iso_2<0.15 && trg_singleelectron && fabs(wt)<2)' + + #if options.era in ['cpsummer17','UL_17']: cats['baseline'] = '(1)' + + if options.era in ['cp18','UL_18']: + cats['baseline'] = '(pt_1>33 && pt_2>13 && iso_1<0.15 && iso_2<0.15 && trg_singleelectron && fabs(wt)<2)' + +if options.analysis == 'cpdecay': + if options.channel in ['mt','et']: cats['baseline'] += ' && mva_dm_2>=0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && m_vis>40' + if options.channel in ['tt']: cats['baseline'] += ' && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5)' + + cats['tt_loose_baseline'] = '((deepTauVsJets_medium_1>0.5 && deepTauVsJets_vvvloose_2>0.5 && deepTauVsJets_medium_2<0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2) && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5))' + cats['tt_loose_baseline_2'] = '((deepTauVsJets_medium_1>0.5 && deepTauVsJets_vvvloose_2>0.5 && deepTauVsJets_vvloose_2<0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2) && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5))' + +if options.w_ff_closure: + cats['baseline'] = '(' + cats['baseline'] + ' && mt_1>70 && n_deepbjets==0)' +elif options.qcd_ff_closure: + if options.channel in ['et','mt']: + cats['baseline'] = '(' + cats['baseline'] + ' && mt_1<50 && iso_1>0.05)' + options.do_ss = True + elif options.channel == 'tt': + options.do_ss = True + +if options.analysis == 'cpprod': + if options.channel in ['mt','et']: cats['baseline'] += ' && pt_2>30' + if options.channel in ['tt']: cats['baseline'] += ' && pt_1>50' + cats['baseline'] = cats['baseline'].replace('deepTauVsEle_vvloose_2','deepTauVsEle_vvvloose_2').replace('deepTauVsEle_vvloose_1','deepTauVsEle_vvvloose_1') + +cats['baseline'] = cats['baseline'].replace('pt_2>30','pt_2>20') # delete me!!! +#cats['baseline'] = cats['baseline'].replace('leptonveto','(extramuon_veto||extraelec_veto)') # delete me!!! + +cats['oneprong'] = '(tau_decay_mode_2<3)' +cats['threeprong'] = '(tau_decay_mode_2>9)' +cats['dm0'] = '(tau_decay_mode_2==0)' +cats['dm1'] = '(tau_decay_mode_2==1)' +cats['dm1_ptLt40'] = '(tau_decay_mode_2==1&&pt_2<40)' +cats['inclusive_ptLt40'] = '(pt_2<40)' +cats['dm10'] = '(tau_decay_mode_2==10)' +cats['dm11'] = '(tau_decay_mode_2==11)' +cats['pt20to30'] = '(pt_2>20&&pt_2<30)' +cats['pt30to40'] = '(pt_2>30&&pt_2<40)' +cats['pt40to60'] = '(pt_2>40&&pt_2<60)' +cats['ptGt60'] = '(pt_2>60)' + +for x in ['pt20to30','pt30to40','pt40to60','ptGt60']: + cats['inclusive_'+x] = cats[x] + for dm in [0,1,10,11]: cats['dm%i_%s' % (dm,x) ] = cats['dm%i' % dm] + '&&' + cats[x] + +cats['baseline'] = cats['baseline'].replace('pt_2>30','pt_2>20') # delete me!!! - this is to select pT down to 20 for SF measurments!!!!! +#cats['baseline'] = cats['baseline'].replace('leptonveto','(extramuon_veto||extraelec_veto)') # delete me!!! - this is to select pT down to 20 for SF measurments!!!!! + +cats['qcd_loose_shape'] = cats['baseline'].replace('iso_1<0.15','iso_1>0.05&&iso_1<0.3') + +cats['inclusive'] = '(1)' +cats['wj_cut'] = "mt_1 < 40 && pt_1 > 40" +cats['w_os'] = 'os' +cats['w_sdb'] = 'mt_1>70.' +cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' +cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' +if options.era in ['smsummer16']: cats['w_sdb'] = 'mt_1>80.' +cats['w_sdb_os'] = 'os' +cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_medium_2>0.5 &&mva_olddm_tight_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' +if options.era == 'mssmsummer16': cats['tt_qcd_norm'] = '(mva_olddm_medium_1>0.5 && mva_olddm_loose_2>0.5 &&mva_olddm_medium_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' +if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['tt_qcd_norm'] = '(pt_1>40 && ((mva_olddm_loose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_2>0.5) || (mva_olddm_loose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_1>0.5)) && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' +# if options.era in ['cpsummer17','cp18']: cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' +if options.tt_qcd_sel_num==0: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==1: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==2: + cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==3: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==4: + cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' +elif options.tt_qcd_sel_num==5: + cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + +#medium vlose + +# CR categories +cats['ztt_control'] = '(m_sv>60&&m_sv<100)' +cats['ztt_control_dijet'] = '(m_sv>60&&m_sv<100 && n_jets>1)' +if options.channel == 'em': + cats['ztt_control'] = '(m_sv>60&&m_sv<100 && n_bjets==0)' + cats['ztt_control_dijet'] = '(m_sv>60&&m_sv<100 && n_jets>1 && n_bjets==0)' + +# MSSM categories +#cats['btag'] = '(n_bjets>=1)' +#cats['nobtag'] = '(n_bjets==0)' +# loose/tight iso-MT categories +cats['atleast1bjet'] = '(n_bjets>0)' +cats['btag_wnobtag']='(n_lowpt_jets>=1)' # this is the one that is used for the b-tag method 16! +cats['0jet'] = '(n_jets==0)' +cats['1jet'] = '(n_jets==1)' +cats['ge2jet'] = '(n_jets>=2)' +cats['btag_tight_wnobtag']='(n_lowpt_jets>=1)' +cats['w_shape']='' +cats['qcd_shape']='' +cats['w_shape_comp']='' +cats['qcd_shape_comp']='' +cats['Nbtag0_NjetsGt1'] = '(n_deepbjets==0 && n_jets>0 && jpt_1>50 && m_vis>100)' + +# MSSM run 2 categories +if options.channel == "tt": + cats['NbtagGt1'] = '(n_deepbjets>0)' + cats['Nbtag0'] = '(n_deepbjets==0)' +elif options.channel in ["et","mt"]: + cats['NbtagGt1'] = '(n_deepbjets>0 && mt_1<70)' + cats['Nbtag0'] = '(n_deepbjets==0 && mt_1<70)' +elif options.channel == "em": + cats['NbtagGt1'] = '(n_deepbjets>0 && pzeta>-35)' + cats['Nbtag0'] = '(n_deepbjets==0 && pzeta>-35)' + +cats['Nbtag0_MTLt40'] = '(n_deepbjets==0 && mt_1<40)' +cats['Nbtag0_MT40To70'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70)' +cats['NbtagGt1_MTLt40'] = '(n_deepbjets>0 && mt_1<40)' +cats['NbtagGt1_MT40To70'] = '(n_deepbjets>0 && mt_1>40 && mt_1<70)' + +cats['Nbtag0_MHGt250'] = '(n_deepbjets==0 && svfit_mass>250)' +cats['Nbtag0_MHGt200'] = '(n_deepbjets==0 && svfit_mass>200)' + +cats['Nbtag0_MTLt40_MHGt250'] = '(n_deepbjets==0 && mt_1<40 && svfit_mass>250)' +cats['Nbtag0_MT40To70_MHGt250'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70 && svfit_mass>250)' + +cats['Nbtag0_MTLt40_MHGt200'] = '(n_deepbjets==0 && mt_1<40 && svfit_mass>200)' +cats['Nbtag0_MT40To70_MHGt200'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70 && svfit_mass>200)' + +cats['Nbtag1'] = '(n_deepbjets==1)' +cats['Nbtag1_MTLt40'] = '(n_deepbjets==1 && mt_1<40)' +cats['Nbtag1_MT40To70'] = '(n_deepbjets==1 && mt_1>40 && mt_1<70)' + +cats['Nbtag0_MTLt70'] = '(n_deepbjets==0 && mt_1<70)' +cats['NbtagGt1_MTLt70'] = '(n_deepbjets>0 && mt_1<70)' +cats['MTLt70'] = '(mt_1<70)' + +cats['tightmt'] = '(mt_1<40)' +cats['loosemt'] = '(mt_1>40 && mt_1<70)' + +cats['wjets_control'] = '(mt_1>70 && n_deepbjets==0)' +if options.channel == "tt": + cats['qcd_control'] = '(1)' +elif options.channel in ["et","mt"]: + cats['qcd_control'] = 'mt_1<50 && iso_1>0.05' + +if options.cat == 'qcd_control': + options.do_ss = True + +cats['Nbtag0_DZetaGt30'] = '(n_deepbjets==0 && pzeta>30)' +cats['Nbtag0_DZetam10To30'] = '(n_deepbjets==0 && pzeta<=30 && pzeta>-10)' +cats['Nbtag0_DZetam35Tom10'] = '(n_deepbjets==0 && pzeta<=-10 && pzeta>-35)' +cats['NbtagGt1_DZetaGt30'] ='(n_deepbjets>0 && pzeta>30)' +cats['NbtagGt1_DZetam10To30'] ='(n_deepbjets>0 && pzeta<=30 && pzeta>-10)' +cats['NbtagGt1_DZetam35Tom10'] ='(n_deepbjets>0 && pzeta<=-10 && pzeta>-35)' +cats['NbtagGt1_DZetaLtm35'] = '(n_deepbjets>0 && pzeta<=-35)' + +cats['Nbtag0_DZetaGt30_MHGt250'] = '(n_deepbjets==0 && pzeta>30 && svfit_mass>250)' +cats['Nbtag0_DZetam10To30_MHGt250'] = '(n_deepbjets==0 && pzeta<=30 && pzeta>-10 && svfit_mass>250)' +cats['Nbtag0_DZetam35Tom10_MHGt250'] = '(n_deepbjets==0 && pzeta<=-10 && pzeta>-35 && svfit_mass>250)' + +cats['DZetaGtm35'] = '(pzeta>-35)' + + +if options.channel == 'et': cats['baseline_loose'] = '(iso_1<0.3 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' +if options.channel == 'mt': cats['baseline_loose'] = '(iso_1<0.3 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && (trg_singlemuon*(pt_1>23) || trg_mutaucross*(pt_1<23)))' + +# MVA DM categories for SF measurments +cats['mvadm_pi'] = 'mvadm_pi_2>mvadm_rho_2&&mvadm_pi_2>mvadm_a1_2' +cats['mvadm_rho'] = 'mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2' +cats['mvadm_a1'] = 'mvadm_a1_2>mvadm_pi_2&&mvadm_a1_2>mvadm_rho_2' +cats['mvadm_rho'] = 'mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2' +cats['mvadm_notrho'] = '!(mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2)' + +# SM categories +cats['0jet'] = '(n_jets==0)' +if options.channel == 'em': cats['0jet'] = '(n_jets==0 && n_bjets==0)' +cats['vbf'] = '(0)' +cats['twojets'] = '(n_jets>=2)' +if options.channel == 'em': cats['vbf'] = '(n_jets==2 && mjj>300 && n_bjets==0)' +if options.channel == 'et': cats['vbf'] = '(n_jets>=2 && mjj>300 && pt_tt>50)' +if options.channel == 'mt': cats['vbf'] = '(n_jets>=2 && mjj>300 && pt_tt>50 && pt_2>40)' +if options.channel == 'tt': cats['vbf'] = '(n_jets>=2 && pt_tt>100 && jdeta>2.5)' +cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['vbf']) +if options.channel == 'em': cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0)' % (cats['0jet'], cats['vbf']) + +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] or options.analysis in ['cpprod']: + cats['ttbar'] = 'n_jets>0' + if options.channel in ['mt','et']: + cats['0jet'] = '(n_jets==0 && n_bjets==0 &&n_loose_bjets<2)' + cats['dijet']='n_jets>=2 && mjj>300 && n_bjets==0 &&n_loose_bjets<2' + cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] + cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] + cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] + cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] + cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] + cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] + cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0 &&n_loose_bjets<2)' % (cats['0jet'], cats['dijet']) + #cats['boosted'] = '(n_jets==1&& n_bjets==0)' + elif options.channel in ['em']: + cats['0jet'] = '(n_jets==0 && n_loose_bjets<2 && n_bjets==0)' + cats['dijet']='n_jets>=2 && mjj>300 && n_loose_bjets<2 && n_bjets==0 ' + cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] + cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] + cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] + cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] + cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] + cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] + cats['boosted'] = '(!(%s) && !(%s) &&n_loose_bjets<2 && n_bjets==0)' % (cats['0jet'], cats['dijet']) + #cats['boosted'] = '(n_jets==1&& n_bjets==0)' + else: + cats['0jet'] = '(n_jets==0)' + cats['dijet']='n_jets>=2 && mjj>300' + cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] + cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] + cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] + cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] + cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] + cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] + + cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['dijet']) + #cats['boosted'] = '(n_jets==1)' + +#cats['0jet'] = '(n_jets==0 && n_bjets==0)' +cats['1jet'] = '(n_jets==1 && n_bjets==0)' +cats['2jet'] = '(n_jets>=2 && n_bjets==0)' + +# SM ML categories + +if options.channel == 'tt': + + mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' + mva_highMjj_jetFakes = '(IC_highMjj_Oct05_max_index==1)' + mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==2)' + + mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' + mva_lowMjj_jetFakes = '(IC_lowMjj_Oct05_max_index==1)' + mva_lowMjj_misc = '(IC_lowMjj_Oct05_max_index==2)' + mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' + mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==3)' + + # with simple mjj and pt_tt cuts like in Cutbased analysis + # cats['ggh_lowboost_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500 && pt_tt<150)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500 && pt_tt>150)'.format(mva_highMjj_ggh) + # cats['qqh_lowboost_highMjj'] = '({} && n_jets>=2 && mjj>500 && pt_tt<150)'.format(mva_highMjj_ggh) + # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>500 && pt_tt>150)'.format(mva_highMjj_ggh) + + # with binary ggH vs qqH mva + # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && IC_binary_Oct11_score>0.7)'.format(mva_highMjj_ggh) + # cats['ggh_lowboost_highMjj'] = '({} && n_jets>=2 && pt_tt<150 && mjj>300)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && pt_tt>150 && mjj>300)'.format(mva_highMjj_ggh) + # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) + + # simplest mjj based qqH vs ggH + cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) + cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) + cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) + cats['jetFakes_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_jetFakes) + + cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) + cats['misc_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_misc) + cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) + cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) + cats['jetFakes_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_jetFakes) + +if options.channel in ['et','mt']: + + mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' + mva_highMjj_jetFakes = '(IC_highMjj_Oct05_max_index==1)' + mva_highMjj_tt = '(IC_highMjj_Oct05_max_index==2)' + if options.channel == 'et': + mva_highMjj_zll = '(IC_highMjj_Oct05_max_index==3)' + mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==4)' + else: + mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==3)' + + mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' + mva_lowMjj_jetFakes = '(IC_lowMjj_Oct05_max_index==1)' + mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' + mva_lowMjj_tt = '(IC_lowMjj_Oct05_max_index==3)' + mva_lowMjj_zll = '(IC_lowMjj_Oct05_max_index==4)' + mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==5)' + + # if options.channel == 'et': + # latest one with binary MVA + # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) + # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.5)'.format(mva_highMjj_ggh) + # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.5)'.format(mva_highMjj_ggh) + + # else: + # latest ones with binary MVA + # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 &&IC_binary_Oct11_score>0.45)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.45)'.format(mva_highMjj_ggh) + # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.45)'.format(mva_highMjj_ggh) + # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.45)'.format(mva_highMjj_ggh) + + cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) + cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) + cats['tt_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_tt) + if options.channel == 'et': + cats['zll_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zll) + cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) + cats['jetFakes_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_jetFakes) + + cats['jetFakes_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_jetFakes) + cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) + cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) + cats['tt_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_tt) + cats['zll_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zll) + cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) + +if options.channel == 'em': + + mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' + mva_highMjj_tt = '(IC_highMjj_Oct05_max_index==1)' + mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==2)' + + mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' + mva_lowMjj_qcd = '(IC_lowMjj_Oct05_max_index==1)' + mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' + mva_lowMjj_tt = '(IC_lowMjj_Oct05_max_index==3)' + mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==4)' + + # latest one with binary MVA + # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.55)'.format(mva_highMjj_ggh) + # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.55)'.format(mva_highMjj_ggh) + # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.55)'.format(mva_highMjj_ggh) + # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.55)'.format(mva_highMjj_ggh) + + cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) + cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) + cats['tt_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_tt) + cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) + + cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) + cats['qcd_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qcd) + cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) + cats['tt_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_tt) + cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) + +# CP in decays categories +if options.channel in ["mt","et"]: + cats["inclusive_mixed"] = "(tau_decay_mode_2==1)" + cats["dijet_mixed"] = "(n_jets>=2 && mjj>300)" + cats["0jet_mixed"] = "({} && {})".format(cats["0jet"], cats["inclusive_mixed"]) + cats["dijet_boosted_mixed"] = "({} && pt_tt>100 && {})".format(cats["dijet_mixed"] ,cats["inclusive_mixed"]) + cats["dijet_lowboost_mixed"] = "({} && pt_tt<100 && {})".format(cats["dijet_mixed"] ,cats["inclusive_mixed"]) + cats["boosted_mixed"] = "(!{} && !({}) && {})".format(cats["0jet"], cats["dijet_mixed"], cats["inclusive_mixed"]) + + # MVA multiclass categories + cut_string = "" + if options.channel == "et": + cut_string = "IC_Apr02" + elif options.channel == "mt": + cut_string = "IC_Nov25_tauspinner" + mva_ggh = '({}_max_index==0)'.format(cut_string) + mva_jetFakes = '({}_max_index==1)'.format(cut_string) + mva_zttEmbed = '({}_max_index==2)'.format(cut_string) + + # apply b jet veto as done in training (to remove ttbar) + cats['higgs'] = '({} && n_bjets==0)'.format(mva_ggh) + cats['zttEmbed'] = '({} && n_bjets==0)'.format(mva_zttEmbed) + cats['jetFakes'] = '({} && n_bjets==0)'.format(mva_jetFakes) + + cats["mva_mupi"] = "(tau_decay_mode_2==0 && mva_dm_2==0)" # aco_angle_6 (ip) + cats["mva_murho"] = "(tau_decay_mode_2==1 && mva_dm_2==1)" # aco_angle_5 (planes) 6 (ip) + cats["mva_mua1"] = "(tau_decay_mode_2>=10 && mva_dm_2==10)" # aco_angle_5 (planes) + + cats["higgs_mvaMuPi"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_mupi"]) + cats["higgs_mvaMuRho"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_murho"]) + cats["higgs_mvaMuA1"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_mua1"]) + + cats["inclusive_mupi"] = "(tau_decay_mode_2==0)" + cats["inclusive_murho"] = "(tau_decay_mode_2==1)" + +if options.channel == 'tt': + +# start fresh here + cats["inclusive_rhorho"] = "(tau_decay_mode_1==1 && tau_decay_mode_2==1)" + cats["inclusive_pirho"] = "((tau_decay_mode_1==1 && tau_decay_mode_2==0 && ip_sig_2>=1.5) || (tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==1))" + cats["inclusive_a1rho"] = "((tau_decay_mode_1==10 && tau_decay_mode_2==1) || (tau_decay_mode_1==1 && tau_decay_mode_2==10))" + cats["inclusive_a1pi"] = "((tau_decay_mode_1==10 && tau_decay_mode_2==0 && ip_sig_2>=1.5) || (tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==10))" + cats["inclusive_a1a1"] = "(tau_decay_mode_1==10 && tau_decay_mode_2==10)" + cats["inclusive_pipi"] = "(tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==0 && ip_sig_2>=1.5)" + + + cats["inclusive_mvapirho_up"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2_up>=1.5 && mva_dm_2==0) || (ip_sig_1_up>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" + cats["inclusive_mvaa1pi_up"] = "((mva_dm_1==10 && ip_sig_2_up>=1.5 && mva_dm_2==0) || (ip_sig_1_up>=1.5 && mva_dm_1==0 && mva_dm_2==10))" + cats["inclusive_mvapipi_up"] = "(mva_dm_1==0 && ip_sig_1_up>=1.5 && ip_sig_2_up>=1.5 && mva_dm_2==0)" + cats["inclusive_mvapi0a1_up"] = "((mva_dm_1==0 && ip_sig_1_up>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2_up>=1.5))" + + cats["inclusive_mvapirho_down"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2_down>=1.5 && mva_dm_2==0) || (ip_sig_1_down>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" + cats["inclusive_mvaa1pi_down"] = "((mva_dm_1==10 && ip_sig_2_down>=1.5 && mva_dm_2==0) || (ip_sig_1_down>=1.5 && mva_dm_1==0 && mva_dm_2==10))" + cats["inclusive_mvapipi_down"] = "(mva_dm_1==0 && ip_sig_1_down>=1.5 && ip_sig_2_down>=1.5 && mva_dm_2==0)" + cats["inclusive_mvapi0a1_down"] = "((mva_dm_1==0 && ip_sig_1_down>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2_down>=1.5))" + + cats["inclusive_mvarhorho"] = "(tau_decay_mode_1==1 && mva_dm_1==1 && tau_decay_mode_2==1 && mva_dm_2==1)" + cats["inclusive_mvapirho"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2>=1.5 && mva_dm_2==0) || (ip_sig_1>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" + cats["inclusive_mvaa1rho"] = "((mva_dm_1==10 && tau_decay_mode_2==1 && mva_dm_2==1) || (tau_decay_mode_1==1 && mva_dm_1==1 && mva_dm_2==10))" + cats["inclusive_mvaa1pi"] = "((mva_dm_1==10 && ip_sig_2>=1.5 && mva_dm_2==0) || (ip_sig_1>=1.5 && mva_dm_1==0 && mva_dm_2==10))" + cats["inclusive_mvaa1a1"] = "(mva_dm_1==10 && mva_dm_2==10)" + cats["inclusive_mvapipi"] = "(mva_dm_1==0 && ip_sig_1>=1.5 && ip_sig_2>=1.5 && mva_dm_2==0)" + cats["inclusive_mvapi0a1"] = "((mva_dm_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2>=1.5))" + cats["inclusive_mvarho0a1"] = "(tau_decay_mode_1==1 && tau_decay_mode_2==1 && ((mva_dm_1==1&&mva_dm_2==2) || (mva_dm_1==2&&mva_dm_2==1) || (mva_dm_1==2&&mva_dm_2==2)))" + cats["inclusive_mvaa10a1"] = "((mva_dm_1==10 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==10))" + + #mva_ggh = '(svfit_mass>100&&svfit_mass<150)' + #mva_jetFakes = '(svfit_mass>150)' + #mva_zttEmbed = '(svfit_mass<100)' + + cut_string = "IC_01Jun2020" + mva_ggh = '({}_max_index==0)'.format(cut_string) + mva_jetFakes = '({}_max_index==1)'.format(cut_string) + mva_zttEmbed = '({}_max_index==2)'.format(cut_string) + + + cats['higgs_mvarhorho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvarhorho"]) + cats['zttEmbed_mvarhorho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvarhorho"]) + cats['jetFakes_mvarhorho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvarhorho"]) + cats['higgs_mvapirho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho"]) + cats['zttEmbed_mvapirho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapirho"]) + cats['jetFakes_mvapirho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapirho"]) + cats['higgs_mvaa1rho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1rho"]) + cats['zttEmbed_mvaa1rho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1rho"]) + cats['jetFakes_mvaa1rho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1rho"]) + cats['higgs_mvaa1pi'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi"]) + cats['zttEmbed_mvaa1pi'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1pi"]) + cats['jetFakes_mvaa1pi'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1pi"]) + cats['higgs_mvaa1a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1a1"]) + cats['higgs_mvaa1a1_sync'] = '({} && {} && tau_decay_mode_1==10 && tau_decay_mode_2==10 && a1_flag)'.format(mva_ggh, cats["inclusive_mvaa1a1"]) + cats['zttEmbed_mvaa1a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1a1"]) + cats['jetFakes_mvaa1a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1a1"]) + cats['higgs_mvapipi'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi"]) + cats['zttEmbed_mvapipi'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapipi"]) + cats['jetFakes_mvapipi'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapipi"]) + cats['higgs_mvapi0a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1"]) + cats['zttEmbed_mvapi0a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapi0a1"]) + cats['jetFakes_mvapi0a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapi0a1"]) + cats['higgs_mvarho0a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvarho0a1"]) + cats['zttEmbed_mvarho0a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvarho0a1"]) + cats['jetFakes_mvarho0a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvarho0a1"]) + + + cats['higgs_mvaa10a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa10a1"]) + + cats['zttEmbed_mvaa10a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa10a1"]) + cats['jetFakes_mvaa10a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa10a1"]) + + cats['higgs'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_ggh) + cats['zttEmbed'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_zttEmbed) + cats['jetFakes'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_jetFakes) + + cats['higgs_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_ggh) + cats['zttEmbed_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_zttEmbed) + cats['jetFakes_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_jetFakes) + + cats['higgs_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_ggh) + cats['zttEmbed_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_zttEmbed) + cats['jetFakes_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_jetFakes) + + cats['higgs_mvaother'] = '({} && !({}||{}||{}||{}||{}||{}||{}||{}||{}))'\ + .format(mva_ggh, cats["higgs_mvarhorho"], cats["higgs_mvapirho"], cats["higgs_mvaa1rho"], cats["higgs_mvaa1pi"], cats["higgs_mvaa1a1"], cats["higgs_mvapipi"], cats["higgs_mvapi0a1"], cats["higgs_mvarho0a1"], cats["higgs_mvaa10a1"]) + + cats['higgs_mvapirho_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho_up"]) + cats['higgs_mvaa1pi_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi_up"]) + cats['higgs_mvapipi_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi_up"]) + cats['higgs_mvapi0a1_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1_up"]) + + cats['higgs_mvapirho_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho_down"]) + cats['higgs_mvaa1pi_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi_down"]) + cats['higgs_mvapipi_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi_down"]) + cats['higgs_mvapi0a1_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1_down"]) + +# 2016 sm analysis uses relaxed shape selections for W + QCD processes in et and mt channel, these are set here +if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: # Remove the False when finished!!!!! + if options.channel in ['et','mt'] and options.cat in ['boosted','vbf','dijet','dijet_lowboost','dijet_boosted', + # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: + cats['qcd_shape'] = '('+cats['baseline_loose']+')*('+cats[options.cat]+')' + if options.cat in ['boosted','vbf','dijet','dijet_lowboost','dijet_boosted', + # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: + cats['w_shape'] = cats['qcd_shape'] + + +# Overwrite selection depending on whether tight or loose-mt categories is chosen - this can still be overwritten from command line using the --set_alias=sel:(...) option +#if options.cat == 'nobtag_tightmt' or options.cat == 'btag_tightmt': +# if options.channel == 'mt' or options.channel == 'et': options.sel = '(mt_1<50)' +#if options.cat == 'nobtag_loosemt' or options.cat == 'btag_loosemt': +# if options.channel == 'mt' or options.channel == 'et': options.sel = '(mt_1<70 && mt_1>50)' + +if options.era == "mssmsummer16": + if options.channel == "em": cats['baseline']+=" && trg_muonelectron" + if options.channel == "et" or options.channel == 'zee': cats['baseline']+=" && trg_singleelectron" + if options.channel in ['mt','zmm','mj']: cats['baseline']+=" && trg_singlemuon" + if options.channel == "tt": cats['baseline']+=" && trg_doubletau" + +#Overwrite any category selections if the --set_alias option is used +for i in options.set_alias: + cat_to_overwrite = i.split(':')[0] + cat_to_overwrite=cat_to_overwrite.replace("\"","") + overwrite_with = i.split(':')[1] + overwrite_with=overwrite_with.replace("\"","") + start_index=overwrite_with.find("{") + end_index=overwrite_with.find("}") + while start_index >0: + replace_with=overwrite_with[start_index:end_index+1] + replace_with=replace_with.replace("{","") + replace_with=replace_with.replace("}","") + replace_string = cats[replace_with] + overwrite_with=overwrite_with[0:start_index] + replace_string + overwrite_with[end_index+1:] + start_index=overwrite_with.find("{") + end_index=overwrite_with.find("}") + + print 'Overwriting alias: \"'+cat_to_overwrite+'\" with selection: \"'+overwrite_with+'\"' + if cat_to_overwrite == 'sel': + options.sel = overwrite_with + else: + cats[cat_to_overwrite] = overwrite_with +if options.v2p5 == True: + for key in cats: + cats[key] = cats[key].replace('deepTauVsJets','deepTauVsJetsV2p5').replace('deepTauVsEle','deepTauVsEleV2p5').replace('deepTauVsMu','deepTauVsMuV2p5').replace('iso_2','iso_2_V2p5') + +if options.do_aiso: + # overwrite electron/muon isolation cut in baseline + cats['baseline'] = cats['baseline'].replace('iso_1<0.15','iso_1>0.15&&iso_1<0.5') + +# Additional selections to seperate MC samples by gen flags +z_sels = {} +if options.channel == 'et': + z_sels['ztt_sel'] = '(gen_match_2==5)' + z_sels['zl_sel'] = '(gen_match_2<5)' + z_sels['zj_sel'] = '(gen_match_2==6)' +elif options.channel in ['mt','mj']: + z_sels['ztt_sel'] = '(gen_match_2==5)' + z_sels['zl_sel'] = '(gen_match_2<5)' + z_sels['zj_sel'] = '(gen_match_2==6)' +elif options.channel in ['mj']: + z_sels['ztt_sel'] = '(0)' + z_sels['zl_sel'] = '(0)' + z_sels['zj_sel'] = '(1)' +elif options.channel == 'tt': + z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' + z_sels['zl_sel'] = '(gen_match_2<6&&gen_match_1<6&&!(gen_match_1==5&&gen_match_2==5))' + z_sels['zj_sel'] = '(gen_match_2==6||gen_match_1==6)' +elif options.channel == 'em': + z_sels['ztt_sel'] = '(gen_match_1>2 && gen_match_2>3)' + z_sels['zll_sel'] = '(gen_match_1<3 || gen_match_2<4)' +elif options.channel == 'zee' or options.channel == 'zmm': + z_sels['ztt_sel'] = '(gen_match_1>2&&gen_match_1<6 && gen_match_2>2&&gen_match_2<6)' + if options.channel == 'zmm': z_sels['zl_sel'] = '(gen_match_1==2&&gen_match_2==2)' + else: z_sels['zl_sel'] = '(gen_match_1==1&&gen_match_2==1)' + z_sels['zj_sel'] = '(!('+z_sels['zl_sel']+') && !('+z_sels['ztt_sel']+'))' + +top_sels = {} +vv_sels = {} +top_sels['ttt_sel'] = z_sels['ztt_sel'] +top_sels['ttj_sel'] = '!('+z_sels['ztt_sel']+')' +vv_sels['vvt_sel'] = z_sels['ztt_sel'] +vv_sels['vvj_sel'] = '!('+z_sels['ztt_sel']+')' + +if options.channel == 'zee' or options.channel == 'zmm': + top_sels['ttt_sel'] = z_sels['zl_sel'] + top_sels['ttj_sel'] = '!('+z_sels['zl_sel']+')' + vv_sels['vvt_sel'] = z_sels['zl_sel'] + vv_sels['vvj_sel'] = '!('+z_sels['zl_sel']+')' + + +top_sels_embed = {} +if options.channel == 'mt': top_sels_embed['ttt_sel'] = '((gen_match_1 == 4) && (gen_match_2 == 5))' +if options.channel == 'et': top_sels_embed['ttt_sel'] = '((gen_match_1 == 3) && (gen_match_2 == 5))' +if options.channel == 'tt': top_sels_embed['ttt_sel'] = '((gen_match_1 == 5) && (gen_match_2 == 5))' +if options.channel == 'em': top_sels_embed['ttt_sel'] = '((gen_match_1 == 3) && (gen_match_2 == 4))' +if options.channel in ['zmm']: top_sels_embed['ttt_sel'] = '((gen_match_1 == 2) && (gen_match_2 == 2))' +if options.channel in ['zee']: top_sels_embed['ttt_sel'] = '((gen_match_1 == 1) && (gen_match_2 == 1))' + +top_sels_embed['vvt_sel'] = top_sels_embed['ttt_sel'] + +if options.channel in ['et','mt','mj']: + vv_sels['vvt_sel'] = '(gen_match_2<6)' + vv_sels['vvj_sel'] = '(gen_match_2==6)' + top_sels['ttt_sel'] = '(gen_match_2<6)' + top_sels['ttj_sel'] = '(gen_match_2==6)' +elif options.channel == 'tt': + vv_sels['vvt_sel'] = '(gen_match_1<6 && gen_match_2<6)' + vv_sels['vvj_sel'] = '(!(gen_match_1<6 && gen_match_2<6))' + top_sels['ttt_sel'] = '(gen_match_1<6 && gen_match_2<6)' + top_sels['ttj_sel'] = '(!(gen_match_1<6 && gen_match_2<6))' +if options.channel in ['mj']: + vv_sels['vvt_sel'] = '(0)' + vv_sels['vvj_sel'] = '(1)' + top_sels['ttt_sel'] = '(0)' + top_sels['ttj_sel'] = '(1)' + +if options.era in ["smsummer16"]: + if options.channel in ['mt','et']: + z_sels['ztt_sel'] = '(gen_match_2==5)' + z_sels['zl_sel'] = '(gen_match_2!=6&&gen_match_2!=5)' + z_sels['zj_sel'] = '(gen_match_2==6)' + vv_sels['vvt_sel'] = '(gen_match_2==5)' + vv_sels['vvj_sel'] = '(gen_match_2!=5)' + top_sels['ttt_sel'] = '(gen_match_2==5)' + top_sels['ttj_sel'] = '(gen_match_2!=5)' + elif options.channel == 'tt': + z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' + z_sels['zl_sel'] = '(!(gen_match_1==6 || gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' + z_sels['zj_sel'] = '(gen_match_1==6 || gen_match_2==6)' + vv_sels['vvt_sel'] = '(gen_match_1==5 && gen_match_2==5)' + vv_sels['vvj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' + top_sels['ttt_sel'] = '(gen_match_1==5 && gen_match_2==5)' + top_sels['ttj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' + +if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016','22']: + # define these selections to make them more compatible with the fake-factor method and embedded samples + if options.channel =='em': + z_sels['zll_sel'] = '(!(gen_match_2==4 && gen_match_1==3))' + z_sels['ztt_sel'] = '(gen_match_2==4 && gen_match_1==3)' + top_sels['ttt_sel'] = '(gen_match_2==4 && gen_match_1==3)' + top_sels['ttj_sel'] = '!(gen_match_2==4 && gen_match_1==3)' + vv_sels['vvt_sel'] = '(gen_match_2==4 && gen_match_1==3)' + vv_sels['vvj_sel'] = '!(gen_match_2==4 && gen_match_1==3)' + if options.channel =='mt': + z_sels['ztt_sel'] = '(gen_match_2==5 && gen_match_1==4)' + if options.channel =='et': + z_sels['ztt_sel'] = '(gen_match_2==5 && gen_match_1==3)' + if options.channel in ['mt','et']: + z_sels['zj_sel'] = '(gen_match_2==6)' + z_sels['zl_sel'] = '(gen_match_2!=6&&!(%s))' % z_sels['ztt_sel'] + vv_sels['vvt_sel'] = '(gen_match_2<6)' + vv_sels['vvj_sel'] = '(gen_match_2==6)' + top_sels['ttt_sel'] = '(gen_match_2<6)' + top_sels['ttj_sel'] = '(gen_match_2==6)' + elif options.channel == 'tt': + z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' + z_sels['zl_sel'] = '(!(gen_match_1==6 || gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' + z_sels['zj_sel'] = '(gen_match_1==6 || gen_match_2==6)' + vv_sels['vvt_sel'] = '(!(gen_match_1==6 || gen_match_2==6))' + vv_sels['vvj_sel'] = '(gen_match_1==6 || gen_match_2==6)' + top_sels['ttt_sel'] = '(!(gen_match_1==6 || gen_match_2==6))' + top_sels['ttj_sel'] = '(gen_match_1==6 || gen_match_2==6)' + if options.method==0 and True in ['baseline_aisotau1' in x for x in options.set_alias]: + top_sels['ttj_sel'] = '(gen_match_1==6)' + top_sels['ttt_sel'] = '(gen_match_1!=6)' + vv_sels['vvj_sel'] = '(gen_match_1==6)' + vv_sels['vvt_sel'] = '(gen_match_1!=6)' + z_sels['zj_sel'] = '(gen_match_1==6)' + z_sels['zl_sel'] = '(!(gen_match_1==6) && !(gen_match_1==5&&gen_match_2==5))' + if options.method==0 and True in ['baseline_aisotau2' in x for x in options.set_alias]: + top_sels['ttj_sel'] = '(gen_match_2==6)' + top_sels['ttt_sel'] = '(gen_match_2!=6)' + vv_sels['vvj_sel'] = '(gen_match_2==6)' + vv_sels['vvt_sel'] = '(gen_match_2!=6)' + z_sels['zj_sel'] = '(gen_match_2==6)' + z_sels['zl_sel'] = '(!(gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' + + +extra_top_sel = '1' +if options.embedding: + if options.channel == 'mt': extra_top_sel = '!((gen_match_1 == 4) && (gen_match_2 == 5))' + if options.channel == 'et': extra_top_sel = '!((gen_match_1 == 3) && (gen_match_2 == 5))' + if options.channel == 'tt': extra_top_sel = '!((gen_match_1 == 5) && (gen_match_2 == 5))' + if options.channel == 'em': extra_top_sel = '!((gen_match_1 == 3) && (gen_match_2 == 4))' + if options.channel =='zee': extra_top_sel = '!((gen_match_1 == 1) && (gen_match_2 == 1))' + top_sels["ttt_ztt_sel"] = top_sels["ttt_sel"]+'&&!'+extra_top_sel + vv_sels["vvt_ztt_sel"] = vv_sels["vvt_sel"]+'&&!'+extra_top_sel + for sel in top_sels: + if "ztt_sel" not in sel: top_sels[sel]+='&&'+extra_top_sel + for sel in vv_sels: + if "ztt_sel" not in sel: vv_sels[sel]+='&&'+extra_top_sel + top_sels_embed["ttt_ztt_sel"] = top_sels["ttt_ztt_sel"] + top_sels_embed["vvt_ztt_sel"] = vv_sels["vvt_ztt_sel"] + +# ------------------------------------------------------------ +# Add data sample names +if options.channel == 'mt': + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD'] +if options.channel == 'em': + data_samples = ['MuonEGB','MuonEGC','MuonEGD'] +if options.channel == 'et': + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD'] +if options.channel == 'tt': + data_samples = ['TauB','TauC','TauD'] + +# Add MC sample names +ztt_samples = [] +vv_samples = [] +wgam_samples = [] +top_samples = [] +wjets_samples = [] +ewkz_samples = [] +gghww_samples = [] +qqhww_samples = [] +top_samples = [] +# ------------------------------------------------------------ + +if options.era in ["mssmsummer16","smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','mvadm2016']: + # Add data sample names + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF','SingleMuonG','SingleMuonHv2','SingleMuonHv3'] + if options.era == "legacy16": + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF','SingleMuonG','SingleMuonH'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] + if options.era in ['UL_16_preVFP']: + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF'] + if options.era in ['UL_16_postVFP']: + data_samples = ['SingleMuonF','SingleMuonG','SingleMuonH'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauF','TauG','TauH'] + + if options.channel == 'em': + data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF','MuonEGG','MuonEGHv2','MuonEGHv3'] + if options.era == "legacy16": data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF','MuonEGG','MuonEGH'] + if options.era in ["UL_16_preVFP"]: data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] + if options.era in ["UL_16_postVFP"]: data_samples = ['MuonEGF','MuonEGG','MuonEGH'] + + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF','SingleElectronG','SingleElectronHv2','SingleElectronHv3'] + if options.era == "legacy16": + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF','SingleElectronG','SingleElectronH'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] + if options.era in ["UL_16_preVFP"]: + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF'] + if options.era in ["UL_16_postVFP"]: + data_samples = ['SingleElectronF','SingleElectronG','SingleElectronH'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauF','TauG','TauH'] + + if options.channel == 'tt': + data_samples = ['TauB','TauC','TauD','TauE','TauF','TauG','TauHv2','TauHv3'] + if options.era in ["legacy16"]: data_samples = ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] + if options.era in ['UL_16_preVFP']: data_samples = ['TauB','TauC','TauD','TauE','TauF'] + if options.era in ['UL_16_postVFP']: data_samples = ['TauF','TauG','TauH'] + + # MC Samples + if options.era in ["legacy16"]: + ztt_samples = ['DYJetsToLL-LO-ext1','DYJetsToLL-LO-ext2','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO'] + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] + wgam_samples = ['WGToLNuG-ext1','WGToLNuG-ext2','WGToLNuG-ext3'] + wjets_samples = ['WJetsToLNu-LO', 'WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W2JetsToLNu-LO-ext','W3JetsToLNu-LO','W3JetsToLNu-LO-ext','W4JetsToLNu-LO','W4JetsToLNu-LO-ext1','W4JetsToLNu-LO-ext2'] + if options.channel == 'mt': embed_samples = ['EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD','EmbeddingMuTauE','EmbeddingMuTauF','EmbeddingMuTauG','EmbeddingMuTauH'] + if options.channel == 'et': embed_samples = ['EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD','EmbeddingElTauE','EmbeddingElTauF','EmbeddingElTauG','EmbeddingElTauH'] + if options.channel == 'em': embed_samples = ['EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD','EmbeddingElMuE','EmbeddingElMuF','EmbeddingElMuG','EmbeddingElMuH'] + if options.channel == 'tt': embed_samples = ['EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD','EmbeddingTauTauE','EmbeddingTauTauF','EmbeddingTauTauG','EmbeddingTauTauH'] + if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD','EmbeddingMuMuE','EmbeddingMuMuF','EmbeddingMuMuG','EmbeddingMuMuH'] + if options.channel == 'zee': embed_samples = ['EmbeddingElElB','EmbeddingElElC','EmbeddingElElD','EmbeddingElElE','EmbeddingElElF','EmbeddingElElG','EmbeddingElElH'] + + if not options.era in ["UL_16_preVFP", "UL_16_postVFP"]: + if options.analysis in ['mssmrun2','vlq']: + top_samples = ['TT'] + else: + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + + + if options.era in ["UL_16_preVFP"]: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + else: + ztt_samples = ['DYJetstoLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + vv_samples = ['WZTo1L1Nu2Q','WZTo3LNu','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','T-tW', 'Tbar-tW','Tbar-t','T-t'] + wgam_samples = ['WGToLNuG'] + wjets_samples = ['WJetsToLNu-LO' ,'W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + gghww_samples = [] + qqhww_samples = [] + ewkz_samples = ['EWKZ2Jets_ZToLL'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + + if options.era in ["UL_16_postVFP"]: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + else: + ztt_samples = ['DYJetstoLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + vv_samples = ['WZTo3LNu','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','T-tW', 'Tbar-tW','Tbar-t','T-t'] + wgam_samples = ['WGToLNuG'] + wjets_samples = ['WJetsToLNu-LO' ,'W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + gghww_samples = [] + qqhww_samples = [] + ewkz_samples = ['EWKZ2Jets_ZToLL'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + +# ------------------------------------------------------------------------ +# Seems Redundant but ok I will ask + +if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'tauid2016','mvadm2016']: + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] + wjets_samples = ['WJetsToLNu-LO', 'WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W2JetsToLNu-LO-ext','W3JetsToLNu-LO','W3JetsToLNu-LO-ext','W4JetsToLNu-LO','W4JetsToLNu-LO-ext1','W4JetsToLNu-LO-ext2', 'EWKWMinus2Jets_WToLNu','EWKWMinus2Jets_WToLNu-ext1','EWKWMinus2Jets_WToLNu-ext2','EWKWPlus2Jets_WToLNu','EWKWPlus2Jets_WToLNu-ext1','EWKWPlus2Jets_WToLNu-ext2'] + ewkz_samples = ['EWKZ2Jets_ZToLL','EWKZ2Jets_ZToLL-ext'] + gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] + qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] + + if options.era == "legacy16": + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] + ewkz_samples = ['EWKZ2Jets_ZToLL','EWKZ2Jets_ZToLL-ext1','EWKZ2Jets_ZToLL-ext2'] + wgam_samples = ['WGToLNuG-ext1','WGToLNuG-ext1','WGToLNuG-ext2','WGToLNuG-ext3','WGstarToLNuEE','WGstarToLNuMuMu'] + +# ------------------------------------------------------------------------ +# 2017 + +if options.era in ['cpsummer17','tauid2017']: + + # ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO','DYJetsToLL_M-10-50-LO-ext1'] + if options.channel == "tt": # remove 'DYJetsToLL_M-10-50-LO (zero entries) + ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1'] + else: ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1','DYJetsToLL_M-10-50-LO'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWToLNuQQ','WZTo2L2Q','WZTo1L1Nu2Q','WZTo1L3Nu','WZTo3LNu', 'WWTo2L2Nu', 'ZZTo2L2Nu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L'] + if options.analysis in ['mssmrun2','vlq']: + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo2L2Q','WZTo3LNu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L','VVTo2L2Nu'] + + + wjets_samples = ['WJetsToLNu-LO','WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets','EWKWPlus2Jets'] + #wjets_samples = ['WJetsToLNu-LO','WJetsToLNu-LO-ext','EWKWMinus2Jets','EWKWPlus2Jets'] + wgam_samples = ['WGToLNuG'] + ewkz_samples = ['EWKZ2Jets'] + gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] + qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF'] + + + if options.channel == 'em': + data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF'] + if options.channel == 'tt': + data_samples = ['TauB','TauC','TauD','TauE','TauF'] + + + if options.channel == 'mt': embed_samples = ['EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD','EmbeddingMuTauE','EmbeddingMuTauF'] + if options.channel == 'et': embed_samples = ['EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD','EmbeddingElTauE','EmbeddingElTauF'] + if options.channel == 'em': embed_samples = ['EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD','EmbeddingElMuE','EmbeddingElMuF'] + if options.channel == 'tt': embed_samples = ['EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD','EmbeddingTauTauE','EmbeddingTauTauF'] + if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD','EmbeddingMuMuE','EmbeddingMuMuF'] + if options.channel == 'zee': embed_samples = ['EmbeddingElElB','EmbeddingElElC','EmbeddingElElD','EmbeddingElElE','EmbeddingElElF'] + + +if options.era in ['UL_17']: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + else: + ztt_samples = ['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + + # Question: Is this need for UL_17? + #if options.channel == "tt": # remove 'DYJetsToLL_M-10-50-LO (zero entries) + #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L'] + #vv_samples = ['T-tW', 'Tbar-tW','T-t','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L'] + # if options.analysis in ['mssmrun2','vlq']: + # vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo2L2Q','WZTo3LNu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L','VVTo2L2Nu'] + + wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + wgam_samples = ['WGToLNuG'] + ewkz_samples = ['EWKZ2Jets_ZToLL'] + gghww_samples = [''] + qqhww_samples = [''] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt' and options.singletau: data_samples += ['TauB','TauC','TauD','TauE','TauF'] + + if options.channel == 'em': + data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et' and options.singletau: data_samples += ['TauB','TauC','TauD','TauE','TauF'] + if options.channel == 'tt': + data_samples = ['TauB','TauC','TauD','TauE','TauF'] + +# ------------------------------------------------------------------------ +# 2018 + +if options.era in ['cp18']: + ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = [ + 'T-tW-ext1', 'Tbar-tW-ext1','Tbar-t','WWTo2L2Nu','T-t', + 'WWToLNuQQ','WZTo1L3Nu','WZTo3LNu','WZTo3LNu-ext1','WZTo2L2Q', + 'ZZTo2L2Nu-ext1','ZZTo2L2Nu-ext2','ZZTo2L2Q','ZZTo4L-ext','ZZTo4L' + ] + if options.analysis in ['mssmrun2','vlq']: + vv_samples = [ + 'T-tW-ext1', 'Tbar-tW-ext1','Tbar-t','T-t', + 'WZTo3LNu','WZTo3LNu-ext1','WZTo2L2Q', + 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L', 'VVTo2L2Nu', + ] + + wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets','EWKWPlus2Jets'] + wgam_samples = ['WGToLNuG'] + ewkz_samples = ['EWKZ2Jets'] + gghww_samples = [] + qqhww_samples = [] + gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] + qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt' and options.singletau == True : data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'em': + data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et' and options.singletau == True: data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'tt': + data_samples = ['TauA','TauB','TauC','TauD'] + + if options.channel == 'mt': embed_samples = ['EmbeddingMuTauA','EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD'] + if options.channel == 'et': embed_samples = ['EmbeddingElTauA','EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD'] + if options.channel == 'em': embed_samples = ['EmbeddingElMuA','EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD'] + if options.channel == 'tt': embed_samples = ['EmbeddingTauTauA','EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD'] + if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuA','EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD'] + if options.channel == 'zee': embed_samples = ['EmbeddingElElA','EmbeddingElElB','EmbeddingElElC','EmbeddingElElD'] + + +if options.era in ['UL_18']: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + #ztt_samples = ['DYJetsToLL-LO'] + else: + ztt_samples = ['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + + #ztt_samples = ['DYJetsToLL-NLO'] + #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] + top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = ['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] + # if options.analysis in ['mssmrun2','vlq']: + # vv_samples = [ + # 'T-tW', 'Tbar-tW','Tbar-t','T-t', + # 'WZTo3LNu','ZZTo4L'] + wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + wgam_samples = ['WGToLNuG'] + ewkz_samples = ['EWKZ2Jets_ZToLL'] + gghww_samples = [''] + qqhww_samples = [''] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'em': + data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'tt': + data_samples = ['TauA','TauB','TauC','TauD'] + +if options.era in ['22']: + if (options.DY_NLO==False): + ztt_samples = ['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] + #ztt_samples = ['DYJetsToLL-LO'] + else: + ztt_samples = ['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + + #ztt_samples = ['DYJetsToLL-NLO'] + #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] + top_samples = ['TTTo2L2Nu_postEE','TTTo2L2Nu_preEE']#['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] + vv_samples = ['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE','WW_preEE','WZ_preEE','ZZ_preEE','ZZZ_preEE']#['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] + # if options.analysis in ['mssmrun2','vlq']: + # vv_samples = [ + # 'T-tW', 'Tbar-tW','Tbar-t','T-t', + # 'WZTo3LNu','ZZTo4L'] + wjets_samples = []#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + wgam_samples = []#['WGToLNuG'] + ewkz_samples = []#['EWKZ2Jets_ZToLL'] + gghww_samples = [''] + qqhww_samples = [''] + + if options.channel in ['mt','zmm','mj']: + data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] + #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'em': + data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] + if options.channel == 'et' or options.channel == 'zee': + data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] + if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] + if options.channel == 'tt': + data_samples = ['TauA_preEE','TauB_rereco_preEE', + 'TauC_rereco_preEE','TauD_rereco_preEE','TauE_rereco_postEE','TauF_postEE','TauG_postEE'] + + +if options.method==0: ztt_samples+=ewkz_samples + +sm_samples = { 'ggH' : 'GluGluHToTauTau_M-*', 'qqH' : 'VBFHToTauTau_M-*', 'WplusH' : 'WplusHToTauTau_M-*', 'WminusH' : 'WminusHToTauTau_M-*', 'ZH' : 'ZHToTauTau_M-*', 'TTH' : 'TTHToTauTau_M-*' } +if options.era in ["smsummer16"]: sm_samples = { 'ggH_htt*' : 'GluGluToHToTauTau_M-*', 'qqH_htt*' : 'VBFHToTauTau_M-*', 'WplusH_htt*' : 'WplusHToTauTau_M-*', 'WminusH_htt*' : 'WminusHToTauTau_M-*', 'ZH_htt*' : 'ZHToTauTau_M-*'} + + +if options.analysis in ['cpprod']: +# 2016 + if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: + sm_samples = { + + + 'ggh*_powheg' : 'GluGluToHToTauTau_M-125', + # 'vbf*_powheg' : 'VBFHToTauTau_M-125', + # 'wplush*_powheg': 'WplusHToTauTau_M-125', + # 'wminush*_powheg': 'WminusHToTauTau_M-125', + # 'zh*_powheg': 'ZHToTauTau_M-125', +# 'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + # 'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + # 'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'qqH_htt*' : 'VBFHToTauTau_M-125', + 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + 'ZH_htt*': 'ZHToTauTau_M-125', + # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + + + 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0_HToTauTau', + 'qqH_ps_htt*' : 'VBFHiggs0M_HToTauTau', + 'qqH_sm_htt*' : 'VBFHiggs0PM_HToTauTau', + 'WH_mm_htt*' : 'WHiggs0MfWH05ph0', + 'WH_ps_htt*' : 'WHiggs0M', + 'WH_sm_htt*' : 'WHiggs0PM', + 'ZH_mm_htt*' : 'ZHiggs0MfZH05ph0', + 'ZH_ps_htt*' : 'ZHiggs0M', + 'ZH_sm_htt*' : 'ZHiggs0PM', + } + + +# 2017 + + + if (options.era == 'cpsummer17' or options.era == 'UL_17'): + sm_samples = { + 'ggh*_powheg' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], + # 'vbf*_powheg' : 'VBFHToTauTau_M-125', + # 'wplush*_powheg': 'WplusHToTauTau_M-125', + # 'wminush*_powheg': 'WminusHToTauTau_M-125', + # 'zh*_powheg': 'ZHToTauTau_M-125', + #'ZHps_htt*' : 'ZHiggs0MToTauTau', + #'ZHsm_htt*' : 'ZHiggs0PMToTauTau', + #'ZHmm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', + #'qqHsm_htt*' : 'VBFHiggs0PMToTauTau', + #'qqHps_htt*' :'VBFHiggs0MToTauTau', + #'qqHmm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', + #'WHps_htt*' :'WHiggs0MToTauTau', + #'WHmm_htt*' : 'WHiggs0Mf05ph0ToTauTau', + #'WHsm_htt*' : 'WHiggs0PMToTauTau', + # 'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + # 'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + # 'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'qqH_htt*' : 'VBFHToTauTau_M-125', + 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + 'ZH_htt*': 'ZHToTauTau_M-125', + # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', + 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', + 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', + 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', + 'WH_ps_htt*' : 'WHiggs0MToTauTau', + 'WH_sm_htt*' : 'WHiggs0PMToTauTau', + 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', + 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', + 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', + } + + +# 2018 + + + if (options.era == 'cp18' or options.era == 'UL_18'): + sm_samples = { + #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', + 'ggh*_powheg' : 'GluGluHToTauTau_M-125', + # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', + # 'wplush*_powheg': 'WplusHToTauTau_M-125', + # 'wminush*_powheg': 'WminusHToTauTau_M-125', + # 'zh*_powheg': 'ZHToTauTau_M-125', + #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', + 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], + # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', + 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', + 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', + 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', + 'WH_ps_htt*' : 'WHiggs0MToTauTau', + 'WH_sm_htt*' : 'WHiggs0PMToTauTau', + 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', + 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', + 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', + } + + if options.era == '22': + sm_samples = { + #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', + 'ggh*_powheg' : 'GluGluHToTauTau_M-125', + # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', + # 'wplush*_powheg': 'WplusHToTauTau_M-125', + # 'wminush*_powheg': 'WminusHToTauTau_M-125', + # 'zh*_powheg': 'ZHToTauTau_M-125', + #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], + 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], + 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], + 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', + 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], + # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', + 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', + 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', + 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', + 'WH_ps_htt*' : 'WHiggs0MToTauTau', + 'WH_sm_htt*' : 'WHiggs0PMToTauTau', + 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', + 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', + 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', + } + + + + +if options.analysis in ['cpdecay']: + + + if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: + sm_samples = { + #'ggH_ph_htt*' : 'GluGluToHToTauTau_M-125', + #'qqH_ph_htt*' : 'VBFHToTauTau_M-125', + "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + #"WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + #"ZH_ph_htt*": 'ZHToTauTau_M-125', + #"ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + #"qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + } + + +# for 2017 + if (options.era == 'cpsummer17' or options.era == 'UL_17'): + sm_samples = { + 'ggH_ph_htt*' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], + 'qqH_ph_htt*' : 'VBFHToTauTau_M-125', + "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + "ZH_ph_htt*": 'ZHToTauTau_M-125', + "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + } + + + if (options.era == 'cp18' or options.era == 'UL_18'): + sm_samples = { + # test CP in decay samples + 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', + 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', + "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + "ZH_ph_htt*": 'ZHToTauTau_M-125', + "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + } + if options.era == '22': + sm_samples = { + # test CP in decay samples + 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', + 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', + "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], + "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', + "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + "ZH_ph_htt*": 'ZHToTauTau_M-125', + "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", + "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", + } + + +if options.analysis in ['mssmrun2','vlq']: + if options.era == '22': + sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', + 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + } + if (options.era == 'cp18' or options.era == 'UL_18'): + sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', + 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], +# 'qqH95' : 'VBFHToTauTau_M-95', + #'qqH125' : 'VBFHToTauTau_M-125-ext1', + #'ZH125' : 'ZHToTauTau_M-125', + #'WplusH125' : 'WplusHToTauTau_M-125', + #'WminusH125' : 'WminusHToTauTau_M-125', + #'ttH125' : 'ttHToTauTau', + #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', + #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', + #'WminusHWW125' : 'HWminusJ_HToWW', + #'WplusHWW125' : 'HWplusJ_HToWW', + } + elif (options.era == 'cpsummer17' or options.era == 'UL_17'): + sm_samples = { 'ggH125_SM' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], + 'qqH125' : ['VBFHToTauTau_M-125','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + #'qqH95' : 'VBFHToTauTau_M-95', + #'qqH125' : 'VBFHToTauTau_M-125', + #'ZH125' : 'ZHToTauTau_M-125', + #'WplusH125' : 'WplusHToTauTau_M-125', + #'WminusH125' : 'WminusHToTauTau_M-125', + #'ttH125' : 'ttHToTauTau', + #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', + #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', + #'WminusHWW125' : 'HWminusJ_HToWW', + #'WplusHWW125' : 'HWplusJ_HToWW', + } + elif options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: + sm_samples = { 'ggH125_SM' : 'GluGluToHToTauTau_M-125', + 'qqH125': ['VBFHToTauTau_M-125','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], + #'qqH95' : 'VBFHToTauTau_M-95', + #'qqH125' : 'VBFHToTauTau_M-125', + #'ZH125' : 'ZHToTauTau_M-125', + #'WplusH125' : 'WplusHToTauTau_M-125', + #'WminusH125' : 'WminusHToTauTau_M-125', + #'ttH125' : 'ttHJetToTT', + #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', + #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', + #'WminusHWW125' : 'HWminusJ_HToWW', + #'WplusHWW125' : 'HWplusJ_HToWW', + } + + +if options.analysis == "vlq": + vlq_samples = { + "vlq_betaRd33_0_mU2_gU1":"VectorLQToTauTau_betaRd33_0_mU2_gU1", + "vlq_betaRd33_0_mU2_gU2":"VectorLQToTauTau_betaRd33_0_mU2_gU2", + "vlq_betaRd33_0_mU2_gU3":"VectorLQToTauTau_betaRd33_0_mU2_gU3", + "vlq_betaRd33_0_mU3_gU1":"VectorLQToTauTau_betaRd33_0_mU3_gU1", + "vlq_betaRd33_0_mU3_gU2":"VectorLQToTauTau_betaRd33_0_mU3_gU2", + "vlq_betaRd33_0_mU3_gU3":"VectorLQToTauTau_betaRd33_0_mU3_gU3", + "vlq_betaRd33_0_mU4_gU1":"VectorLQToTauTau_betaRd33_0_mU4_gU1", + "vlq_betaRd33_0_mU4_gU2":"VectorLQToTauTau_betaRd33_0_mU4_gU2", + "vlq_betaRd33_0_mU4_gU3":"VectorLQToTauTau_betaRd33_0_mU4_gU3", + "vlq_betaRd33_minus1_mU2_gU1":"VectorLQToTauTau_betaRd33_minus1_mU2_gU1", + "vlq_betaRd33_minus1_mU2_gU2":"VectorLQToTauTau_betaRd33_minus1_mU2_gU2", + "vlq_betaRd33_minus1_mU2_gU3":"VectorLQToTauTau_betaRd33_minus1_mU2_gU3", + "vlq_betaRd33_minus1_mU3_gU1":"VectorLQToTauTau_betaRd33_minus1_mU3_gU1", + "vlq_betaRd33_minus1_mU3_gU2":"VectorLQToTauTau_betaRd33_minus1_mU3_gU2", + "vlq_betaRd33_minus1_mU3_gU3":"VectorLQToTauTau_betaRd33_minus1_mU3_gU3", + "vlq_betaRd33_minus1_mU4_gU1":"VectorLQToTauTau_betaRd33_minus1_mU4_gU1", + "vlq_betaRd33_minus1_mU4_gU2":"VectorLQToTauTau_betaRd33_minus1_mU4_gU2", + "vlq_betaRd33_minus1_mU4_gU3":"VectorLQToTauTau_betaRd33_minus1_mU4_gU3", + "VLQ_betaRd33_0_M_2000":["VectorLQToTauTau_betaRd33_0_mU2_gU1","VectorLQToTauTau_betaRd33_0_mU2_gU2","VectorLQToTauTau_betaRd33_0_mU2_gU3"], + "VLQ_betaRd33_0_M_3000":["VectorLQToTauTau_betaRd33_0_mU3_gU1","VectorLQToTauTau_betaRd33_0_mU3_gU2","VectorLQToTauTau_betaRd33_0_mU3_gU3"], + "VLQ_betaRd33_0_M_4000":["VectorLQToTauTau_betaRd33_0_mU4_gU1","VectorLQToTauTau_betaRd33_0_mU4_gU2","VectorLQToTauTau_betaRd33_0_mU4_gU3"], + "VLQ_betaRd33_minus1_M_2000":["VectorLQToTauTau_betaRd33_minus1_mU2_gU1","VectorLQToTauTau_betaRd33_minus1_mU2_gU2","VectorLQToTauTau_betaRd33_minus1_mU2_gU3"], + "VLQ_betaRd33_minus1_M_3000":["VectorLQToTauTau_betaRd33_minus1_mU3_gU1","VectorLQToTauTau_betaRd33_minus1_mU3_gU2","VectorLQToTauTau_betaRd33_minus1_mU3_gU3"], + "VLQ_betaRd33_minus1_M_4000":["VectorLQToTauTau_betaRd33_minus1_mU4_gU1","VectorLQToTauTau_betaRd33_minus1_mU4_gU2","VectorLQToTauTau_betaRd33_minus1_mU4_gU3"], + } + + + + +if options.ggh_masses_powheg == "": + mssm_samples = { 'ggH' : 'SUSYGluGluToHToTauTau_M-*', 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*' } +else: + mssm_samples = { 'ggH' : 'SUSYGluGluToHToTauTau_M-*_powheg', 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*_powheg' } + + +if options.bbh_masses_powheg == "": + mssm_nlo_samples = { 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*-NLO' } + mssm_lo_samples = { 'bbH-LO' : 'SUSYGluGluToBBHToTauTau_M-*' } + mssm_nlo_qsh_samples = { 'bbH-QshUp' : 'SUSYGluGluToBBHToTauTau_M-*-NLO-QshUp', 'bbH-QshDown' : 'SUSYGluGluToBBHToTauTau_M-*-NLO-QshDown' } +else: + mssm_lo_samples = { 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*_powheg' } + + + + +if options.nlo_qsh and mssm_nlo_samples: mssm_nlo_samples.update(mssm_nlo_qsh_samples) +Hhh_samples = { 'ggH' : 'GluGluToRadionToHHTo2B2Tau_M-*' } + + +# set systematics: first index sets folder name contaning systematic samples, second index sets string to be appended to output histograms, third index specifies the weight to be applied , 4th lists samples that should be skipped +systematics = OrderedDict() +if not options.no_default: systematics['default'] = ('','', 'wt', [], False) + + +if options.syst_e_res != '': + systematics['res_e_up'] = ('ERES_UP' , '_'+options.syst_e_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + systematics['res_e_down'] = ('ERES_DOWN' , '_'+options.syst_e_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) +if options.syst_mu_res != '': + systematics['res_mu_up'] = ('MURES_UP' , '_'+options.syst_mu_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + systematics['res_mu_down'] = ('MURES_DOWN' , '_'+options.syst_mu_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) +if options.syst_tau_res != '': + systematics['res_tau_up'] = ('TRES_UP' , '_'+options.syst_tau_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + systematics['res_tau_down'] = ('TRES_DOWN' , '_'+options.syst_tau_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) +if options.syst_e_scale != '': + systematics['scale_e_up'] = ('ESCALE_UP' , '_'+options.syst_e_scale+'Up', 'wt', ['QCD','jetFakes'], False) + systematics['scale_e_down'] = ('ESCALE_DOWN' , '_'+options.syst_e_scale+'Down', 'wt', ['QCD','jetFakes'], False) +if options.syst_mu_scale != '': + systematics['scale_mu_up'] = ('MUSCALE_UP' , '_'+options.syst_mu_scale+'Up', 'wt',['QCD','jetFakes'], False) + systematics['scale_mu_down'] = ('MUSCALE_DOWN' , '_'+options.syst_mu_scale+'Down', 'wt', ['QCD','jetFakes'], False) + + +if options.syst_tau_scale != '': + systematics['scale_t_up'] = ('TSCALE_UP' , '_'+options.syst_tau_scale+'Up', 'wt', ['jetFakes'], False) + systematics['scale_t_down'] = ('TSCALE_DOWN' , '_'+options.syst_tau_scale+'Down', 'wt', ['jetFakes'], False) +if options.syst_tau_scale_0pi != '': + systematics['scale_t_0pi_up'] = ('TSCALE0PI_UP' , '_'+options.syst_tau_scale_0pi+'Up', 'wt', ['QCD','jetFakes'], False) + systematics['scale_t_0pi_down'] = ('TSCALE0PI_DOWN' , '_'+options.syst_tau_scale_0pi+'Down', 'wt', ['QCD','jetFakes'], False) +if options.syst_tau_scale_1pi != '': + systematics['scale_t_1pi_up'] = ('TSCALE1PI_UP' , '_'+options.syst_tau_scale_1pi+'Up', 'wt', ['QCD','jetFakes'], False) + systematics['scale_t_1pi_down'] = ('TSCALE1PI_DOWN' , '_'+options.syst_tau_scale_1pi+'Down', 'wt', ['QCD','jetFakes'], False) +if options.syst_tau_scale_3prong != '': + systematics['scale_t_3prong_up'] = ('TSCALE3PRONG_UP' , '_'+options.syst_tau_scale_3prong+'Up', 'wt', ['QCD','jetFakes'], False) + systematics['scale_t_3prong_down'] = ('TSCALE3PRONG_DOWN' , '_'+options.syst_tau_scale_3prong+'Down', 'wt', ['QCD','jetFakes'], False) +if options.syst_tau_scale_3prong1pi0 != '': + systematics['scale_t_3prong1pi0_up'] = ('TSCALE3PRONG1PI0_UP' , '_'+options.syst_tau_scale_3prong1pi0+'Up', 'wt', ['QCD','jetFakes'], False) + systematics['scale_t_3prong1pi0_down'] = ('TSCALE3PRONG1PI0_DOWN' , '_'+options.syst_tau_scale_3prong1pi0+'Down', 'wt', ['QCD','jetFakes'], False) +### group TES +if options.syst_tau_scale_grouped != "": + hist_name = options.syst_tau_scale_grouped + syst_dict = { + '0pi': ['1prong','TSCALE0PI'], + '1pi': ['1prong1pizero','TSCALE1PI'], + '3prong': ['3prong','TSCALE3PRONG'], + '3prong1pi0': ['3prong1pizero','TSCALE3PRONG1PI0'], + } + for name, values in syst_dict.iteritems(): + syst_name = hist_name.replace("*group", values[0]) + systematics["scale_t_{}_up".format(name)] = ( + "{}_UP".format(values[1]), "_{}Up".format(syst_name), + "wt", ["QCD","jetFakes"], False + ) + systematics["scale_t_{}_down".format(name)] = ( + "{}_DOWN".format(values[1]), "_{}Down".format(syst_name), + "wt", ["QCD","jetFakes"], False + ) +## +if options.syst_efake_0pi_scale != '': + systematics['scale_efake_0pi_up'] = ('EFAKE0PI_UP' , '_'+options.syst_efake_0pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['scale_efake_0pi_down'] = ('EFAKE0PI_DOWN' , '_'+options.syst_efake_0pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_efake_1pi_scale != '': + systematics['scale_efake_1pi_up'] = ('EFAKE1PI_UP' , '_'+options.syst_efake_1pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['scale_efake_1pi_down'] = ('EFAKE1PI_DOWN' , '_'+options.syst_efake_1pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_mufake_0pi_scale != '': + systematics['scale_mufake_0pi_up'] = ('MUFAKE0PI_UP' , '_'+options.syst_mufake_0pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['scale_mufake_0pi_down'] = ('MUFAKE0PI_DOWN' , '_'+options.syst_mufake_0pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_mufake_1pi_scale != '': + systematics['scale_mufake_1pi_up'] = ('MUFAKE1PI_UP' , '_'+options.syst_mufake_1pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','EmbedZTT'], False) + systematics['scale_mufake_1pi_down'] = ('MUFAKE1PI_DOWN' , '_'+options.syst_mufake_1pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_eff_t != '': + systematics['syst_eff_t_up'] = ('' , '_'+options.syst_eff_t+'Up', 'wt*wt_tau_id_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) + systematics['syst_eff_t_down'] = ('' , '_'+options.syst_eff_t+'Down', 'wt*wt_tau_id_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) +if options.syst_tquark != '': + systematics['syst_tquark_up'] = ('' , '_'+options.syst_tquark+'Up', 'wt*wt_tquark_up', ['ZTT','ZL','ZJ','VVT','VVJ','QCD','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['syst_tquark_down'] = ('' , '_'+options.syst_tquark+'Down', 'wt*wt_tquark_down', ['ZTT','ZL','ZJ','VVJ','VVT','QCD','W', 'signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +# syst_alt_name='CMS_htt_ttbarShape_TheoryVsData' +# if 'ttbarShape' in options.syst_tquark: +# syst_alt_name = options.syst_tquark.replace('ttbarShape','ttbarShape_TheoryVsData') +# systematics['syst_tquark_alt_up'] = ('' , '_'+syst_alt_name+'Up', 'wt*wt_tquark_alt', ['ZTT','ZL','ZJ','VVT','VVJ','QCD','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +# systematics['syst_tquark_alt_down'] = ('' , '_'+syst_alt_name+'Down', 'wt*(2.-wt_tquark_alt)', ['ZTT','ZL','ZJ','VVJ','VVT','QCD','W', 'signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_zwt != '': + systematics['syst_zwt_up'] = ('' , '_'+options.syst_zwt+'Up', 'wt*wt_zpt_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zwt_down'] = ('' , '_'+options.syst_zwt+'Down', 'wt*wt_zpt_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_w_fake_rate != '': + to_skip = ['ZTT','ZL','ZJ','VVT','VVJ','TTT','TTJ','QCD','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'] + if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','mvadm2016']: to_skip = ['ZTT','ZL','VVT','TTT','QCD','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'] + systematics['syst_w_fake_rate_up'] = ('' , '_'+options.syst_w_fake_rate+'Up', 'wt*wt_tau_fake_up', to_skip, False) + systematics['syst_w_fake_rate_down'] = ('' , '_'+options.syst_w_fake_rate+'Down', 'wt*wt_tau_fake_down', to_skip, False) +if options.syst_jfake_m != '': + systematics['syst_jfake_m_up'] = ('' , '_'+options.syst_jfake_m+'Up', 'wt*idisoweight_up_2', ['ZTT','QCD','signal','TT','EmbedZTT'], False) + systematics['syst_jfake_m_down'] = ('' , '_'+options.syst_jfake_m+'Down', 'wt*idisoweight_down_2', ['ZTT','QCD','signal','TT','EmbedZTT'], False) +if options.syst_jfake_e != '': + systematics['syst_jfake_e_up'] = ('' , '_'+options.syst_jfake_e+'Up', 'wt*idisoweight_up_1', ['ZTT','QCD','signal','TT','EmbedZTT'], False) + systematics['syst_jfake_e_down'] = ('' , '_'+options.syst_jfake_e+'Down', 'wt*idisoweight_down_1', ['ZTT','QCD','signal','TT','EmbedZTT'], False) +if options.syst_scale_j != '': + systematics['syst_scale_j_up'] = ('JES_UP' , '_'+options.syst_scale_j+'Up', 'wt', ['EmbedZTT','jetFakes'], False) + systematics['syst_scale_j_down'] = ('JES_DOWN' , '_'+options.syst_scale_j+'Down', 'wt', ['EmbedZTT','jetFakes'], False) +if options.syst_res_j != '': + systematics['syst_res_j_up'] = ('JER_UP' , '_'+options.syst_res_j+'Up', 'wt', ['EmbedZTT','jetFakes'], False) + systematics['syst_res_j_down'] = ('JER_DOWN' , '_'+options.syst_res_j+'Down', 'wt', ['EmbedZTT','jetFakes'], False) +if options.syst_scale_j_corr != '': + systematics['syst_scale_j_corr_up'] = ('JES_CORR_UP' , '_'+options.syst_scale_j_corr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_corr_down'] = ('JES_CORR_DOWN' , '_'+options.syst_scale_j_corr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_uncorr != '': + systematics['syst_scale_j_uncorr_up'] = ('JES_UNCORR_UP' , '_'+options.syst_scale_j_uncorr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_uncorr_down'] = ('JES_UNCORR_DOWN' , '_'+options.syst_scale_j_uncorr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_rbal != '': + systematics['syst_scale_j_rbal_up'] = ('JESRBAL_UP' , '_'+options.syst_scale_j_rbal+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_rbal_down'] = ('JESRBAL_DOWN' , '_'+options.syst_scale_j_rbal+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_rsamp != '': + systematics['syst_scale_j_rsamp_up'] = ('JESRSAMP_UP' , '_'+options.syst_scale_j_rsamp+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_rsamp_down'] = ('JESRSAMP_DOWN' , '_'+options.syst_scale_j_rsamp+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_full != '': + systematics['syst_scale_j_full_up'] = ('JESFULL_UP' , '_'+options.syst_scale_j_full+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_full_down'] = ('JESFULL_DOWN' , '_'+options.syst_scale_j_full+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_cent != '': + systematics['syst_scale_j_cent_up'] = ('JESCENT_UP' , '_'+options.syst_scale_j_cent+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_cent_down'] = ('JESCENT_DOWN' , '_'+options.syst_scale_j_cent+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_hf != '': + systematics['syst_scale_j_hf_up'] = ('JESHF_UP' , '_'+options.syst_scale_j_hf+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_hf_down'] = ('JESHF_DOWN' , '_'+options.syst_scale_j_hf+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_full_corr != '': + systematics['syst_scale_j_full_corr_up'] = ('JESFULL_CORR_UP' , '_'+options.syst_scale_j_full_corr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_full_corr_down'] = ('JESFULL_CORR_DOWN' , '_'+options.syst_scale_j_full_corr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_cent_corr != '': + systematics['syst_scale_j_cent_corr_up'] = ('JESCENT_CORR_UP' , '_'+options.syst_scale_j_cent_corr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_cent_corr_down'] = ('JESCENT_CORR_DOWN' , '_'+options.syst_scale_j_cent_corr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_hf_corr != '': + systematics['syst_scale_j_hf_corr_up'] = ('JESHF_CORR_UP' , '_'+options.syst_scale_j_hf_corr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_hf_corr_down'] = ('JESHF_CORR_DOWN' , '_'+options.syst_scale_j_hf_corr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_full_uncorr != '': + systematics['syst_scale_j_full_uncorr_up'] = ('JESFULL_UNCORR_UP' , '_'+options.syst_scale_j_full_uncorr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_full_uncorr_down'] = ('JESFULL_UNCORR_DOWN' , '_'+options.syst_scale_j_full_uncorr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_cent_uncorr != '': + systematics['syst_scale_j_cent_uncorr_up'] = ('JESCENT_UNCORR_UP' , '_'+options.syst_scale_j_cent_uncorr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_cent_uncorr_down'] = ('JESCENT_UNCORR_DOWN' , '_'+options.syst_scale_j_cent_uncorr+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_scale_j_hf_uncorr != '': + systematics['syst_scale_j_hf_uncorr_up'] = ('JESHF_UNCORR_UP' , '_'+options.syst_scale_j_hf_uncorr+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_scale_j_hf_uncorr_down'] = ('JESHF_UNCORR_DOWN' , '_'+options.syst_scale_j_hf_uncorr+'Down', 'wt', ['EmbedZTT'], False) +############ Regrouped JEC for full run2 +if options.syst_scale_j_regrouped != "": + hist_name = options.syst_scale_j_regrouped + # need dict of syst names and folders of where the shifted trees are found + names = ["Absolute", "Absolute_year", "BBEC1", "BBEC1_year", + "EC2", "EC2_year", "FlavorQCD", "HF", "HF_year", + "RelativeBal", "RelativeSample_year"] + folders = ["JESABS", "JESABS_YEAR", "JESBBEC1", "JESBBEC1_YEAR", + "JESEC2", "JESEC2_YEAR", "JESFLAV", "JESHF", "JESHF_YEAR", + "JESRBAL", "JESRELSAMP_YEAR"] + syst_dict = dict(zip(names, folders)) + + + replaceYear = "" + if options.era in ["legacy16",'UL_16_preVFP','UL_16_postVFP']: replaceYear = "2016" + elif (options.era == "cpsummer17" or options.era == 'UL_17'): replaceYear = "2017" + elif (options.era == "cp18" or options.era == 'UL_18'): replaceYear = "2018" + elif options.era == "22": replaceYear = "2022" + else: assert ValueError("Regrouped JES only works for full RunII analyses") + + + if "*group" in hist_name: + for name, folder in syst_dict.iteritems(): + if "year" in name: name=name.replace("year", replaceYear) + syst_name = hist_name.replace("*group", name) + systematics['syst_scale_j_{}_up'.format(syst_name)] = ( + "{}_UP".format(folder), "_{}Up".format(syst_name), + "wt", ["EmbedZTT",'jetFakes','QCD'], False) + systematics['syst_scale_j_{}_down'.format(syst_name)] = ( + "{}_DOWN".format(folder), "_{}Down".format(syst_name), + "wt", ["EmbedZTT",'jetFakes','QCD'], False) + + +if options.syst_eff_b_weights != '': + systematics['syst_b_weights_up'] = ('' , '_'+options.syst_eff_b_weights+'Up', 'wt*wt_btag_up/wt_btag', ['EmbedZTT','ZTT','ZL','ZLL','ZJ','EWKZ','signal','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) + systematics['syst_b_weights_down'] = ('' , '_'+options.syst_eff_b_weights+'Down', 'wt*wt_btag_down/wt_btag', ['EmbedZTT','ZTT','ZL','ZLL','ZJ','EWKZ','signal','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) +if options.syst_eff_b != '': + systematics['syst_b_up'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BTAG_UP'.format(options.year), '_'+options.syst_eff_b+'Up', 'wt', ['EmbedZTT','ZJ','EWKZ','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) + systematics['syst_b_down'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BTAG_DOWN'.format(options.year) , '_'+options.syst_eff_b+'Down', 'wt', ['EmbedZTT','ZJ','EWKZ','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) +if options.syst_fake_b != '': + systematics['syst_fake_b_up'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BFAKE_UP'.format(options.year), '_'+options.syst_fake_b+'Up', 'wt', ['EmbedZTT'], False) + systematics['syst_fake_b_down'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BFAKE_DOWN'.format(options.year) , '_'+options.syst_fake_b+'Down', 'wt', ['EmbedZTT'], False) +if options.syst_zpt_es != '': + systematics['syst_zpt_es_up'] = ('' , '_'+options.syst_zpt_es+'Up', 'wt*wt_zpt_esup', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zpt_es_down'] = ('' , '_'+options.syst_zpt_es+'Down', 'wt*wt_zpt_esdown', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_zpt_tt != '': + systematics['syst_zpt_tt_up'] = ('' , '_'+options.syst_zpt_tt+'Up', 'wt*wt_zpt_ttup', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zpt_tt_down'] = ('' , '_'+options.syst_zpt_tt+'Down', 'wt*wt_zpt_ttdown', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_zpt_statpt0 != '': + systematics['syst_zpt_statpt0_up'] = ('' , '_'+options.syst_zpt_statpt0+'Up', 'wt*wt_zpt_stat_m400pt0_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zpt_statpt0_down'] = ('' , '_'+options.syst_zpt_statpt0+'Down', 'wt*wt_zpt_stat_m400pt0_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_zpt_statpt40 != '': + systematics['syst_zpt_statpt40_up'] = ('' , '_'+options.syst_zpt_statpt40+'Up', 'wt*wt_zpt_stat_m400pt40_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zpt_statpt40_down'] = ('' , '_'+options.syst_zpt_statpt40+'Down', 'wt*wt_zpt_stat_m400pt40_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_zpt_statpt80 != '': + systematics['syst_zpt_statpt80_up'] = ('' , '_'+options.syst_zpt_statpt80+'Up', 'wt*wt_zpt_stat_m400pt80_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_zpt_statpt80_down'] = ('' , '_'+options.syst_zpt_statpt80+'Down', 'wt*wt_zpt_stat_m400pt80_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_z_mjj != '' and options.cat in ['vbf','dijet','dijet_lowboost','dijet_boosted', + # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: + systematics['syst_z_mjj_up'] = ('' , '_'+options.syst_z_mjj+'Up', 'wt*wt_z_mjj_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','ggH_hww125','qqH_hww125', 'ggH_hww', 'qqH_hww','EmbedZTT'], False) + systematics['syst_z_mjj_down'] = ('' , '_'+options.syst_z_mjj+'Down', 'wt*wt_z_mjj_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','ggH_hww125','qqH_hww125', 'ggH_hww', 'qqH_hww','EmbedZTT'], False) +if options.syst_qcd_scale != '' and options.cat in ['0jet','boosted','vbf','dijet','dijet_lowboost','dijet_boosted', + ] and options.channel in ['em','et','mt','tt'] and options.era == 'smsummer16': + if "Mjj" not in options.cat: + weight_up = 'wt*wt_scale_%s_%s' % (options.channel, options.cat) + weight_down = 'wt*(2-wt_scale_%s_%s)' % (options.channel, options.cat) + elif "low" in options.cat: + weight_up = 'wt*wt_scale_%s_boosted' % (options.channel) + weight_down = 'wt*(2-wt_scale_%s_boosted)' % (options.channel) + if options.cat in ['dijet','dijet_lowboost','dijet_boosted', + ]: + weight_up = 'wt*wt_scale_%s_vbf' % (options.channel) + weight_down = 'wt*(2-wt_scale_%s_vbf)' % (options.channel) + + + systematics['syst_qcd_scale_up'] = ('' , '_'+options.syst_qcd_scale+'Up', weight_up, ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['syst_qcd_scale_down'] = ('' , '_'+options.syst_qcd_scale+'Down', weight_down, ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) +if options.syst_qcd_scale != '' and options.era != 'smsummer16': + systematics['syst_qcd_scale_up'] = ('' , '_'+options.syst_qcd_scale+'Up', 'wt*wt_qcdscale_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) + systematics['syst_qcd_scale_down'] = ('' , '_'+options.syst_qcd_scale+'Down', 'wt*wt_qcdscale_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) +if options.syst_quarkmass != '': + systematics['syst_quarkmass_up'] = ('' , '_'+options.syst_quarkmass+'Up', 'wt*wt_quarkmass', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) + systematics['syst_quarkmass_down'] = ('' , '_'+options.syst_quarkmass+'Down', 'wt*((1./wt_quarkmass-1.)*0.05 + 1.)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) +if options.syst_ps != '': + if '*PS' in options.syst_ps: + hist_name_fsr = options.syst_ps.replace('*PS','PS_FSR') + hist_name_isr = options.syst_ps.replace('*PS','PS_ISR') + systematics['syst_ps_fsr_up'] = ('' , '_'+hist_name_fsr+'Up', 'wt*min(wt_ps_fsr_up,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + systematics['syst_ps_fsr_down'] = ('' , '_'+hist_name_fsr+'Down', 'wt*min(wt_ps_fsr_down,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + systematics['syst_ps_isr_up'] = ('' , '_'+hist_name_isr+'Up', 'wt*min(wt_ps_isr_up,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + systematics['syst_ps_isr_down'] = ('' , '_'+hist_name_isr+'Down', 'wt*min(wt_ps_isr_down,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + else: + systematics['syst_ps_up'] = ('' , '_'+options.syst_ps+'Up', 'wt*wt_ps_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + systematics['syst_ps_down'] = ('' , '_'+options.syst_ps+'Down', 'wt*wt_ps_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) +if options.syst_ue != '': + systematics['syst_ue_up'] = ('' , '_'+options.syst_ue+'Up', 'wt*wt_ue_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) + systematics['syst_ue_down'] = ('' , '_'+options.syst_ue+'Down', 'wt*wt_ue_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) +if options.syst_tau_id_dm0 != '': + systematics['syst_tau_id_dm0_up'] = ('' , '_'+options.syst_tau_id_dm0+'Up', 'wt*wt_tau_id_dm0_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) + systematics['syst_tau_id_dm0_down'] = ('' , '_'+options.syst_tau_id_dm0+'Down', 'wt*wt_tau_id_dm0_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) +if options.syst_tau_id_dm1 != '': + systematics['syst_tau_id_dm1_up'] = ('' , '_'+options.syst_tau_id_dm1+'Up', 'wt*wt_tau_id_dm1_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) + systematics['syst_tau_id_dm1_down'] = ('' , '_'+options.syst_tau_id_dm1+'Down', 'wt*wt_tau_id_dm1_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) +if options.syst_tau_id_dm10 != '': + systematics['syst_tau_id_dm10_up'] = ('' , '_'+options.syst_tau_id_dm10+'Up', 'wt*wt_tau_id_dm10_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) + systematics['syst_tau_id_dm10_down'] = ('' , '_'+options.syst_tau_id_dm10+'Down', 'wt*wt_tau_id_dm10_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) +if options.syst_lfake_dm0 != '': + systematics['syst_lfake_dm0_up'] = ('' , '_'+options.syst_lfake_dm0+'Up', 'wt*wt_lfake_dm0_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_lfake_dm0_down'] = ('' , '_'+options.syst_lfake_dm0+'Down', 'wt*wt_lfake_dm0_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_lfake_dm1 != '': + systematics['syst_lfake_dm1_up'] = ('' , '_'+options.syst_lfake_dm1+'Up', 'wt*wt_lfake_dm1_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) + systematics['syst_lfake_dm1_down'] = ('' , '_'+options.syst_lfake_dm1+'Down', 'wt*wt_lfake_dm1_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) +if options.syst_qcd_shape_wsf != '': + systematics['syst_qcd_shape_wsf_up'] = ('' , '_'+options.syst_qcd_shape_wsf.replace('cat',options.cat)+'Up', 'wt', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','jetFakes','signal','W','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['syst_qcd_shape_wsf_down'] = ('' , '_'+options.syst_qcd_shape_wsf.replace('cat',options.cat)+'Down', 'wt', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','jetFakes','signal','W','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + if options.cat in ["0jet","boosted", + # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', + ]: + w_abs_shift=0.1 + if options.cat in ["vbf",'dijet','dijet_lowboost','dijet_boosted', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: + w_abs_shift=0.3 +if options.syst_scale_met_unclustered != '': + #systematics['syst_scale_met_unclustered_up'] = ('METUNCL_UP' , '_'+options.syst_scale_met_unclustered+'Up', 'wt', ['EWKZ','ZLL','ZL','ZJ','ZTT','W','signal','QCD','jetFakes','EmbedZTT','ggH_hww','qqH_hww'], False) + #systematics['syst_scale_met_unclustered_down'] = ('METUNCL_DOWN' , '_'+options.syst_scale_met_unclustered+'Down', 'wt', ['EWKZ','ZLL','ZL','ZJ','ZTT','W','signal','QCD','jetFakes','EmbedZTT','ggH_hww','qqH_hww'], False) + systematics['syst_scale_met_unclustered_up'] = ('METUNCL_UP' , '_'+options.syst_scale_met_unclustered+'Up', 'wt', ['QCD','jetFakes','EmbedZTT'], False) + systematics['syst_scale_met_unclustered_down'] = ('METUNCL_DOWN' , '_'+options.syst_scale_met_unclustered+'Down', 'wt', ['QCD','jetFakes','EmbedZTT'], False) +if options.syst_scale_met_clustered != '': + systematics['syst_scale_met_clustered_up'] = ('METCL_UP' , '_'+options.syst_scale_met_clustered+'Up', 'wt', ['QCD','jetFakes','EmbedZTT'], False) + systematics['syst_scale_met_clustered_down'] = ('METCL_DOWN' , '_'+options.syst_scale_met_clustered+'Down', 'wt', ['QCD','jetFakes','EmbedZTT'], False) +if options.syst_res_met != '': + hist_name = options.syst_res_met + if '$NJET' in hist_name: + hist_name_0jet = hist_name.replace('$NJET','0Jet') + hist_name_1jet = hist_name.replace('$NJET','1Jet') + hist_name_2jet = hist_name.replace('$NJET','2Jet') + + systematics['syst_res_met_0jet_up'] = ('MET_RES_NJETS0_UP' , '_'+hist_name_0jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_res_met_0jet_down'] = ('MET_RES_NJETS0_DOWN' , '_'+hist_name_0jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + + systematics['syst_res_met_1jet_up'] = ('MET_RES_NJETS1_UP' , '_'+hist_name_1jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_res_met_1jet_down'] = ('MET_RES_NJETS1_DOWN' , '_'+hist_name_1jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + + systematics['syst_res_met_2jet_up'] = ('MET_RES_NJETS2_UP' , '_'+hist_name_2jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_res_met_2jet_down'] = ('MET_RES_NJETS2_DOWN' , '_'+hist_name_2jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + elif options.analysis == "vlq": + systematics['syst_res_met_up'] = ('MET_RES_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) + systematics['syst_res_met_down'] = ('MET_RES_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) + else: + systematics['syst_res_met_up'] = ('MET_RES_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) + systematics['syst_res_met_down'] = ('MET_RES_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) +if options.syst_scale_met != '': + hist_name = options.syst_scale_met + if '$NJET' in hist_name: + hist_name_0jet = hist_name.replace('$NJET','0Jet') + hist_name_1jet = hist_name.replace('$NJET','1Jet') + hist_name_2jet = hist_name.replace('$NJET','2Jet') + systematics['syst_scale_met_0jet_up'] = ('MET_SCALE_NJETS0_UP' , '_'+hist_name_0jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_scale_met_0jet_down'] = ('MET_SCALE_NJETS0_DOWN' , '_'+hist_name_0jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + + systematics['syst_scale_met_1jet_up'] = ('MET_SCALE_NJETS1_UP' , '_'+hist_name_1jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_scale_met_1jet_down'] = ('MET_SCALE_NJETS1_DOWN' , '_'+hist_name_1jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + + systematics['syst_scale_met_2jet_up'] = ('MET_SCALE_NJETS2_UP' , '_'+hist_name_2jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + systematics['syst_scale_met_2jet_down'] = ('MET_SCALE_NJETS2_DOWN' , '_'+hist_name_2jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) + elif options.analysis == "vlq": + systematics['syst_scale_met_up'] = ('MET_SCALE_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) + systematics['syst_scale_met_down'] = ('MET_SCALE_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) + else: + systematics['syst_scale_met_up'] = ('MET_SCALE_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) + systematics['syst_scale_met_down'] = ('MET_SCALE_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) + if options.embedding and options.analysis in ['mssmrun2','vlq']: + embed_hist_name='scale_embed_met_%s' % options.year + systematics['syst_scale_embed_met_up'] = ('MET_SCALE_UP' , '_'+embed_hist_name+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + systematics['syst_scale_embed_met_down'] = ('MET_SCALE_DOWN' , '_'+embed_hist_name+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) +if options.syst_scale_j_by_source != '': + jes_sources={"AbsoluteFlavMap":1,"AbsoluteMPFBias":2,"AbsoluteScale":3,"AbsoluteStat":4,"FlavorQCD":5,"Fragmentation":6,"PileUpDataMC":7,"PileUpPtBB":8,"PileUpPtEC1":9,"PileUpPtEC2":10,"PileUpPtHF":11,"PileUpPtRef":12,"RelativeBal":13,"RelativeFSR":14,"RelativeJEREC1":15,"RelativeJEREC2":16,"RelativeJERHF":17,"RelativePtBB":18,"RelativePtEC1":19,"RelativePtEC2":20,"RelativePtHF":21,"RelativeStatEC":22,"RelativeStatFSR":23,"RelativeStatHF":24,"SinglePionECAL":25,"SinglePionHCAL":26,"TimePtEta":27} + jes_to_process=[] + for i in options.jes_sources.split(','): + if ':' in i: jes_to_process+=range(int(i.split(':')[0]),int(i.split(':')[1])+1) + else: jes_to_process.append(int(i)) + jes_to_process = list(set(jes_to_process)) + for source in jes_sources: + jes_num = jes_sources[source] + if jes_num not in jes_to_process: continue + replace_dict = {'n_jets':'n_jets_%i'%jes_num, 'n_bjets':'n_bjets_%i'%jes_num, 'mjj':'mjj_%i'%jes_num, 'jdeta':'jdeta_%i'%jes_num, 'jdphi':'jdphi_%i'%jes_num, 'jpt_1':'jpt_1_%i'%jes_num, 'jpt_2':'jpt_2_%i'%jes_num} + syst_name = 'syst_scale_j_by_source_'+source + hist_name = options.syst_scale_j_by_source.replace('SOURCE', source) + systematics[syst_name+'_up'] = ('JES_UP' , '_'+hist_name+'Up', 'wt', ['jetFakes','EmbedZTT'], False,replace_dict) + systematics[syst_name+'_down'] = ('JES_DOWN' , '_'+hist_name+'Down', 'wt', ['jetFakes','EmbedZTT'], False,replace_dict) + +if options.syst_jfake_scale != '': + # this is an approximate version of this uncertainty for now + replace_dict_up = {'pt_2':'pt_2*1.03', 'm_vis':'m_vis*sqrt(1.03)'} + replace_dict_down = {'pt_2':'pt_2*0.97', 'm_vis':'m_vis*sqrt(0.97)'} + syst_name = 'syst_jfake_scale' + hist_name = options.syst_jfake_scale + to_skip = ['VVT','VVJ','TTT','TTJ','QCD','signal','jetFakes','EmbedZTT','ZJ','ZL','ZLL','ZTT'] + systematics[syst_name+'_approx_up'] = ('' , '_'+hist_name+'ApproxUp', 'wt', to_skip, False,replace_dict_up) + systematics[syst_name+'_approx_down'] = ('' , '_'+hist_name+'ApproxDown', 'wt', to_skip, False,replace_dict_down) + systematics[syst_name+'_up'] = ('JFAKE_UP' , '_'+hist_name+'Up', 'wt', to_skip, False) + systematics[syst_name+'_down'] = ('JFAKE_DOWN' , '_'+hist_name+'Down', 'wt', to_skip, False) + +## em QCD uncertainties +if options.syst_em_qcd != '' and options.channel == 'em': + hist_name = options.syst_em_qcd + if '*BIN' in hist_name: + hist_name_bini = hist_name.replace('*BIN', 'IsoExtrap') + systematics['syst_em_qcd_extrap_up'] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_em_qcd_extrapup', ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['syst_em_qcd_extrap_down'] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_em_qcd_extrapdown', ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + for j in range(0,3): + for i in range(1,3): + hist_name_bini = hist_name.replace('*BIN', 'stat_njets%(j)i_unc%(i)i' % vars()) + systematics['syst_em_qcd_njets%(j)i_unc%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_em_qcd_njets%(j)s_unc%(i)i_up' % vars(), ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + systematics['syst_em_qcd_njets%(j)i_unc%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_em_qcd_njets%(j)i_unc%(i)i_down' % vars(), ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) + + +if options.syst_prefire != '': + systematics['syst_prefire_up'] = ('' , '_'+options.syst_prefire+'Up', 'wt*wt_prefire_up/wt_prefire', ['QCD','jetFakes','EmbedZTT'], False) + systematics['syst_prefire_down'] = ('' , '_'+options.syst_prefire+'Down', 'wt*wt_prefire_down/wt_prefire', ['QCD','jetFakes','EmbedZTT'], False) + + +if options.syst_tau_id_diff != '': + + + hist_name = options.syst_tau_id_diff + + + if options.analysis in ['mssmrun2','vlq']: + if '*' in hist_name: + # add the usual pT binned uncerts for et and mt with pT<100 + if options.channel in ['et','mt']: + + + pt_bins = ["20-25", "25-30", "30-35", "35-40", "40-500", "500-1000", "1000-inf"] + + + for i in range(3,6): + bin_name = pt_bins[i-1] + hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) + systematics['syst_tau_id_diff_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*(wt_tau_id_pt_bin%(i)i_up*(pt_2<100) + (pt_2>=100))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*(wt_tau_id_pt_bin%(i)i_down*(pt_2<100) + (pt_2>=100))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + + + if options.channel == 'tt': + # add the usual dm binned uncerts for tt with pt<100 + for i in [0,1,10,11]: + hist_name_bini = hist_name.replace('*','dm%(i)i' % vars()) + systematics['syst_tau_id_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_id_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + + # add the dedicated high pT uncerts which are common for both channels + + pt_bins = {5: "highpT_100-500", 6: "highpT_500-inf"} + + + # weights stored incorrectly, doing by hand instead + #for i in range(5,7): + #bin_name = pt_bins[i] + #hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) + #systematics['syst_tau_id_diff_highpt_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_mssm_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + #systematics['syst_tau_id_diff_highpt_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_mssm_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + if options.year == "2022": + nom_40_plus = "1.00458784525" + up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" + down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" + if options.year == "2018": + nom_40_plus = "1.00458784525" + up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" + down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" + elif options.year == "2017": + nom_40_plus = "0.86966080714" + up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "0.903623575349", "0.86966080714", "0.0339627682083", "0.0679255364167" + down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.835685230027", "0.86966080714", "-0.0339755771129", "-0.0679511542259" + elif options.year == "2016": + nom_40_plus = "0.949771847264" + up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "0.982473629072", "0.949771847264", "0.0327017818078", "0.0654035636156" + down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.908265091132", "0.949771847264", "-0.0415067561324", "-0.0830135122647" + + + bin5_up_formula = "(((gen_match_X==5&&pt_X>100&&pt_X<=500)*(%(up_40_500)s/%(nom_40_plus)s)) + ((gen_match_X==5&&pt_X>100&&pt_X<=500)==0))" % vars() + bin5_down_formula = "(((gen_match_X==5&&pt_X>100&&pt_X<=500)*(%(down_40_500)s/%(nom_40_plus)s)) + ((gen_match_X==5&&pt_X>100&&pt_X<=500)==0))" % vars() + bin6_up_formula = "((((gen_match_X==5&&pt_X>500&&pt_X<=1000)*((%(up_500_1000_const)s + %(up_500_1000_scale)s*(pt_X/500.))/%(nom_40_plus)s))+((gen_match_X==5&&pt_X>1000)*((%(up_500_1000_const)s + %(up_1000_plus)s)/%(nom_40_plus)s)))+((gen_match_X==5&&pt_X>500)==0))" % vars() + bin6_down_formula = "((((gen_match_X==5&&pt_X>500&&pt_X<=1000)*((%(down_500_1000_const)s + %(down_500_1000_scale)s*(pt_X/500.))/%(nom_40_plus)s))+((gen_match_X==5&&pt_X>1000)*((%(down_500_1000_const)s + %(down_1000_plus)s)/%(nom_40_plus)s)))+((gen_match_X==5&&pt_X>500)==0))" % vars() + + + + + if options.channel in ["mt","et"]: + systematics['syst_tau_id_diff_highpt_bin5_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Up', 'wt*{}'.format(bin5_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin5_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Down', 'wt*{}'.format(bin5_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin6_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Up', 'wt*{}'.format(bin6_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin6_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Down', 'wt*{}'.format(bin6_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + elif options.channel == "tt": + systematics['syst_tau_id_diff_highpt_bin5_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Up', 'wt*{}*{}'.format(bin5_up_formula.replace("X","1"),bin5_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin5_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Down', 'wt*{}*{}'.format(bin5_down_formula.replace("X","1"),bin5_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin6_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Up', 'wt*{}*{}'.format(bin6_up_formula.replace("X","1"),bin6_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_bin6_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Down', 'wt*{}*{}'.format(bin6_down_formula.replace("X","1"),bin6_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + + + + + + + + hist_name_pi0 = hist_name.replace('_eff_t','').replace('*','1ProngPi0Eff' % vars()) + hist_name_pi = hist_name.replace('_eff_t','').replace('*','3ProngEff' % vars()) + if options.channel in ['et','mt']: + systematics['syst_tau_id_diff_emb_trk_pi_up' % vars()] = ('' , '_'+hist_name_pi+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*1.008+(tau_decay_mode_2>9)*1.024))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi_down' % vars()] = ('' , '_'+hist_name_pi+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*0.992+(tau_decay_mode_2>9)*0.976))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi0_up' % vars()] = ('' , '_'+hist_name_pi0+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*1.014))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi0_down' % vars()] = ('' , '_'+hist_name_pi0+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*0.986))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + if options.channel in ['tt']: + systematics['syst_tau_id_diff_emb_trk_pi_up' % vars()] = ('' , '_'+hist_name_pi+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*1.008+(tau_decay_mode_2>9)*1.024))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1<3)*1.008+(tau_decay_mode_1>9)*1.024))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi_down' % vars()] = ('' , '_'+hist_name_pi+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*0.992+(tau_decay_mode_2>9)*0.976))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1<3)*0.992+(tau_decay_mode_1>9)*0.976))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi0_up' % vars()] = ('' , '_'+hist_name_pi0+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*1.014))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1==0 || tau_decay_mode_1==10) + ((tau_decay_mode_1==0 || tau_decay_mode_1==10)==0)*1.014))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + systematics['syst_tau_id_diff_emb_trk_pi0_down' % vars()] = ('' , '_'+hist_name_pi0+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*0.986))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1==0 || tau_decay_mode_1==10) + ((tau_decay_mode_1==0 || tau_decay_mode_1==10)==0)*0.986))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) + + + + elif '*PT' in hist_name: + for i in range(1,6): + hist_name_bini = hist_name.replace('*PT','bin%(i)i' % vars()) + systematics['syst_tau_id_diff_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_pt_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + systematics['syst_tau_id_diff_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_pt_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) + elif '*DM' in hist_name: + for i in [0,1,10,11]: + hist_name_bini = hist_name.replace('*DM','DM%(i)i' % vars()) + systematics['syst_tau_id_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_id_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + elif '*MVADM' in hist_name: + for i in [0,1,2,10,11]: + if options.channel != 'tt': + hist_name_bini = hist_name.replace('*MVADM','pTlow_MVADM%(i)i' % vars()) + systematics['syst_tau_id_diff_lowpt_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_lowpt_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_id_diff_lowpt_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_lowpt_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + + hist_name_bini = hist_name.replace('*MVADM','pThigh_MVADM%(i)i' % vars()) + systematics['syst_tau_id_diff_highpt_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_highpt_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_id_diff_highpt_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_highpt_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + +if options.syst_lep_trg_diff != '': + hist_name = options.syst_lep_trg_diff + chan = options.channel + if options.analysis in ['mssmrun2','vlq']: + hist_name_bini_slt = hist_name.replace('*','trigger_%(chan)s' % vars()) + hist_name_bini_ct = hist_name.replace('*','xtrigger_l_%(chan)s' % vars()) + if chan in ["et"]: + systematics['syst_lep_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini_slt+'Up', 'wt*((1.02*(trg_singleelectron==1)) + (trg_singleelectron==0))' % vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini_slt+'Down', 'wt*((1.02*(trg_singleelectron==1)) + (trg_singleelectron==0))'% vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_crosstrg_up' % vars()] = ('' , '_'+hist_name_bini_ct+'Up', 'wt*((1.02*(trg_etaucross==1)) + (trg_etaucross==0))' % vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_crosstrg_down' % vars()] = ('' , '_'+hist_name_bini_ct+'Down', 'wt*((1.02*(trg_etaucross==1)) + (trg_etaucross==0))'% vars(), ['QCD','jetFakes'], False) + elif chan in ["mt"]: + systematics['syst_lep_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini_slt+'Up', 'wt*((1.02*(trg_singlemuon==1)) + (trg_singlemuon==0))' % vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini_slt+'Down', 'wt*((1.02*(trg_singlemuon==1)) + (trg_singlemuon==0))'% vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_crosstrg_up' % vars()] = ('' , '_'+hist_name_bini_ct+'Up', 'wt*((1.02*(trg_mutaucross==1)) + (trg_mutaucross==0))' % vars(), ['QCD','jetFakes'], False) + systematics['syst_lep_trg_diff_crosstrg_down' % vars()] = ('' , '_'+hist_name_bini_ct+'Down', 'wt*((1.02*(trg_mutaucross==1)) + (trg_mutaucross==0))'% vars(), ['QCD','jetFakes'], False) + + + + +if options.syst_tau_trg_diff != '': + hist_name = options.syst_tau_trg_diff + chan = options.channel + + + if options.analysis in ['mssmrun2','vlq']: + if '*'in hist_name: + + + # single tau uncerts + hist_name_bini = hist_name.replace('*','trigger_single_t' % vars()) + systematics['syst_tau_trg_diff_singletau_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_singletau_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_singletau_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_singletau_down'% vars(), ['QCD','jetFakes'], False) + + + if chan in ['mt','et']: + + + # single lepton uncerts + hist_name_bini = hist_name.replace('*','trigger_%(chan)s' % vars()) + systematics['syst_tau_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_singlelep_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_singlelep_down'% vars(), ['QCD','jetFakes'], False) + + + # cross lepton uncerts + hist_name_bini = hist_name.replace('*','xtrigger_l_%(chan)s' % vars()) + systematics['syst_tau_trg_diff_crosslep_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_crosslep_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_crosslep_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_crosslep_down'% vars(), ['QCD','jetFakes'], False) + + + # double-tau / cross-tau uncerts + for i in [0,1,10,11]: + + + hist_name_bini = hist_name.replace('*','xtrigger_t_%(chan)s_dm%(i)i' % vars()) + + + systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + + if chan == 'tt': + # for tt channels we decouple low and high pT so add additional uncertainty for high pT here + hist_name_bini = hist_name.replace('*','xtrigger_t_%(chan)s_dm%(i)i_highpT' % vars()) + systematics['syst_tau_trg_diff_dm%(i)i_highpt_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_highpt_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_dm%(i)i_highpt_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_highpt_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + + + + + + elif '*DM' in hist_name: + for i in [0,1,10,11]: + hist_name_bini = hist_name.replace('*DM','DM%(i)i' % vars()) + if options.channel != 'tt': + systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*((wt_tau_trg_dm%(i)i_up==1) + (wt_tau_trg_dm%(i)i_up!=1)*(max(1.05,wt_tau_trg_dm%(i)i_up)))' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*((wt_tau_trg_dm%(i)i_down==1) + (wt_tau_trg_dm%(i)i_down!=1)*(min(0.95,wt_tau_trg_dm%(i)i_down)))' % vars(), ['QCD','jetFakes'], False) + else: + systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + elif '*MVADM' in hist_name: + + + for i in [0,1,2,10,11]: + hist_name_bini = hist_name.replace('*MVADM','MVADM%(i)i' % vars()) + systematics['syst_tau_trg_diff_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) + systematics['syst_tau_trg_diff_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) + + +if options.syst_embed_pt != '': + hist_name = options.syst_embed_pt + systematics['syst_embed_pt_up' % vars()] = ('' , '_'+hist_name+'Up', 'wt*wt_zpt_embed_ic' % vars(), ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + systematics['syst_embed_pt_down' % vars()] = ('' , '_'+hist_name+'Down', 'wt*(2-wt_zpt_embed_ic)'% vars(), ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) + + +if options.method in [17,18] and options.do_ff_systs and options.channel in ['et','mt','tt'] and options.era == 'mssmsummer16': + processes = ['tt','w','qcd'] + dms = ['dm0', 'dm1'] + njets = ['njet0','njet1'] + for process in processes: + template_name = 'ff_'+process+'_syst' + if process is 'qcd' or options.channel == 'tt': template_name = 'ff_'+process+'_'+options.channel+'_syst' + weight_name = 'wt_ff_'+options.cat+'_'+process+'_syst_' + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + if options.channel == 'tt' and process in ['w','tt']: continue + for dm in dms: + for njet in njets: + template_name = 'ff_'+process+'_'+dm+'_'+njet + if process != 'tt': template_name+='_'+options.channel + template_name+='_stat' + weight_name = 'wt_ff_'+options.cat+'_'+process+'_'+dm+'_'+njet+'_stat_' + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + if options.channel == "tt": + processes = ['dy', 'w', 'tt'] + for process in processes: + template_name = 'ff_'+process+'_frac_tt_syst' + weight_name = 'wt_ff_'+options.cat+'_'+process+'_frac_syst_' + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + +if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis=='cpdecay' and options.do_ff_systs: + if options.channel in ['et','mt']: + chan = options.channel + lt_systs = {} + lt_systs['ff_%(chan)s_qcd_syst' % vars()] = 'wt_ff_qcd_syst_' % vars() + lt_systs['ff_%(chan)s_wjets_syst' % vars()] = 'wt_ff_wjets_syst_' % vars() + lt_systs['ff_%(chan)s_ttbar_syst' % vars()] = 'wt_ff_ttbar_syst_' % vars() + + + tt_systs['ff_%(chan)s_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_syst_' % vars() + tt_systs['ff_%(chan)s_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_syst_' % vars() + + + tt_systs['ff_%(chan)s_wjets_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_syst_' % vars() + tt_systs['ff_%(chan)s_wjets_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_syst_' % vars() + tt_systs['ff_%(chan)s_wjets_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_syst_' % vars() + + + + + tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_met_' % vars() + tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_met_' % vars() + tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_met_' % vars() + + + tt_systs['ff_%(chan)s_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_met_' % vars() + tt_systs['ff_%(chan)s_qcd_met_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_met_' % vars() + + + tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_l_pt_' % vars() + tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_l_pt_' % vars() + tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_l_pt_' % vars() + + + tt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_l_pt_' % vars() + tt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_l_pt_' % vars() + + + for proc in ['qcd','wjets']: + lt_systs['ff_%(chan)s_%(proc)s_met_closure_syst' % vars()] = 'wt_ff_%(proc)s_met_' % vars() + lt_systs['ff_%(chan)s_%(proc)s_l_pt_closure_syst' % vars()] = 'wt_ff_%(proc)s_l_pt_' % vars() + + + for njet in ['0','1','2']: + for dm in ['0_sig_lt3','0_sig_gt3','1','2','10','11']: + #lt_systs[('ff_%(chan)s_%(proc)s_stat_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_njet%(njet)s_mvadm%(dm)s_' % vars() + lt_systs[('ff_%(chan)s_%(proc)s_stat_unc1_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_unc1_njet%(njet)s_mvadm%(dm)s_' % vars() + lt_systs[('ff_%(chan)s_%(proc)s_stat_unc2_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_unc2_njet%(njet)s_mvadm%(dm)s_' % vars() + for template_name in lt_systs: + weight_name = lt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + + if options.channel in ['tt']: + tt_systs={} + tt_systs['ff_tt_qcd_met_closure_syst' % vars()] = 'wt_ff_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_qcd_met_' % vars() + tt_systs['ff_tt_qcd_syst' % vars()] = 'wt_ff_qcd_syst_' % vars() + tt_systs['ff_tt_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_syst_' % vars() + tt_systs['ff_tt_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_syst_' % vars() + + + tt_systs['ff_tt_wjets_syst' % vars()] = 'wt_ff_wjets_syst_' % vars() + for njet in ['0','1','2']: + for dm in ['0_sig_lt3','0_sig_gt3','1','2','10','11']: + #tt_systs[('ff_tt_qcd_stat_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_njet%(njet)s_mvadm%(dm)s_' % vars() + tt_systs[('ff_tt_qcd_stat_unc1_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_unc1_njet%(njet)s_mvadm%(dm)s_' % vars() + tt_systs[('ff_tt_qcd_stat_unc2_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_unc2_njet%(njet)s_mvadm%(dm)s_' % vars() + + + for template_name in tt_systs: + weight_name = tt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + + template_name = 'ff_%s_sub_syst' % (options.channel) + systematics['ff_sub_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics['ff_sub_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + +if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis=='cpprod' and options.do_ff_systs: + if options.channel in ['et','mt']: + chan = options.channel + lt_systs = {} + lt_systs['ff_%(chan)s_qcd_syst' % vars()] = 'wt_ff_dmbins_qcd_syst_' % vars() + lt_systs['ff_%(chan)s_wjets_syst' % vars()] = 'wt_ff_dmbins_wjets_syst_' % vars() + lt_systs['ff_%(chan)s_ttbar_syst' % vars()] = 'wt_ff_dmbins_ttbar_syst_' % vars() + + + lt_systs['ff_%(chan)s_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_syst_' % vars() + lt_systs['ff_%(chan)s_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_syst_' % vars() + + + lt_systs['ff_%(chan)s_wjets_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_syst_' % vars() + lt_systs['ff_%(chan)s_wjets_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_syst_' % vars() + lt_systs['ff_%(chan)s_wjets_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_syst_' % vars() + + + + + lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_met_' % vars() + lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_met_' % vars() + lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_met_' % vars() + + + lt_systs['ff_%(chan)s_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_met_' % vars() + lt_systs['ff_%(chan)s_qcd_met_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_met_' % vars() + + + lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_l_pt_' % vars() + lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_l_pt_' % vars() + lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_l_pt_' % vars() + + + lt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_l_pt_' % vars() + lt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_l_pt_' % vars() + + + for proc in ['qcd','wjets']: + lt_systs['ff_%(chan)s_%(proc)s_met_closure_syst' % vars()] = 'wt_ff_dmbins_%(proc)s_met_' % vars() + lt_systs['ff_%(chan)s_%(proc)s_l_pt_closure_syst' % vars()] = 'wt_ff_dmbins_%(proc)s_l_pt_' % vars() + for njet in ['0','1','2']: + for dm in ['0','1','10','11']: + lt_systs[('ff_%(chan)s_%(proc)s_stat_unc1_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_%(proc)s_stat_unc1_njet%(njet)s_dm%(dm)s_' % vars() + lt_systs[('ff_%(chan)s_%(proc)s_stat_unc2_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_%(proc)s_stat_unc2_njet%(njet)s_dm%(dm)s_' % vars() + for template_name in lt_systs: + weight_name = lt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + + if options.channel in ['tt']: + tt_systs={} + tt_systs['ff_tt_qcd_met_closure_syst' % vars()] = 'wt_ff_dmbins_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_qcd_met_' % vars() + tt_systs['ff_tt_qcd_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_qcd_met_' % vars() + + +# tt_systs['ff_tt_qcd_syst' % vars()] = 'wt_ff_dmbins_qcd_syst_' % vars() + tt_systs['ff_tt_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_syst_' % vars() + tt_systs['ff_tt_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_syst_' % vars() + + + tt_systs['ff_tt_wjets_syst' % vars()] = 'wt_ff_dmbins_wjets_syst_' % vars() + for njet in ['0','1','2']: + for dm in ['0','1','10','11']: + tt_systs[('ff_tt_qcd_stat_unc1_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_qcd_stat_unc1_njet%(njet)s_dm%(dm)s_' % vars() + tt_systs[('ff_tt_qcd_stat_unc2_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_qcd_stat_unc2_njet%(njet)s_dm%(dm)s_' % vars() + + + for template_name in tt_systs: + weight_name = tt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + + template_name = 'ff_%s_sub_syst' % (options.channel) + systematics['ff_sub_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + systematics['ff_sub_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) + + +if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis in ['mssmrun2','vlq'] and options.do_ff_systs: + ch = options.channel + yr = options.year + if options.channel in ['tt']: + tt_systs={} + + for i in [1,2]: + tt_systs['CMS_ff_total_qcd_stat_dR_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_dR_unc%(i)i_' % vars() + tt_systs['CMS_ff_total_qcd_stat_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_pt_unc%(i)i_' % vars() + tt_systs['CMS_ff_total_qcd_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_' % vars() + tt_systs['CMS_ff_total_wjets_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_' % vars() + tt_systs['CMS_ff_total_ttbar_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_' % vars() + + + # new additional uncertainties + tt_systs['CMS_ff_total_qcd_syst_dr_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_dR_closure_' % vars() + tt_systs['CMS_ff_total_qcd_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_met_closure_' % vars() + tt_systs['CMS_ff_total_qcd_syst_pt_2_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_pt_2_closure_' % vars() + tt_systs['CMS_ff_total_syst_alt_func_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_syst_alt_func_' % vars() + + + for njet in [0,1]: + for jetpt in ['low','med','high']: + for i in [1,2,3]: + tt_systs[('CMS_ff_total_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() + + + + + for template_name in tt_systs: + weight_name = tt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + + + elif options.channel in ['et','mt']: + lt_systs={} + + + for njet in [0,1]: + for i in [1,2]: + lt_systs['CMS_ff_total_qcd_stat_ss_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_ss_njets%(njet)i_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_wjets_stat_met_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_met_njets%(njet)i_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_wjets_stat_l_pt_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_l_pt_njets%(njet)i_unc%(i)i_' % vars() + + + for i in [1,2]: + lt_systs['CMS_ff_total_qcd_stat_os_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_os_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_qcd_stat_l_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_l_pt_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_qcd_stat_iso_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_iso_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_wjets_stat_extrap_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_extrap_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_ttbar_stat_met_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_stat_met_unc%(i)i_' % vars() + lt_systs['CMS_ff_total_ttbar_stat_l_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_stat_l_pt_unc%(i)i_' % vars() + + + lt_systs['CMS_ff_total_qcd_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_' % vars() + lt_systs['CMS_ff_total_qcd_syst_iso_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_iso_' % vars() + lt_systs['CMS_ff_total_wjets_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_' % vars() + lt_systs['CMS_ff_total_wjets_syst_extrap_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_extrap_' % vars() + lt_systs['CMS_ff_total_ttbar_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_' % vars() + + + lt_systs['CMS_ff_total_wjets_frac_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_frac_' % vars() + lt_systs['CMS_ff_total_ttbar_frac_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_frac_' % vars() + + lt_systs['CMS_ff_total_low_pt_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_low_pt_' % vars() + + + # new additional uncertainties + lt_systs['CMS_ff_total_qcd_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_met_closure_' % vars() + lt_systs['CMS_ff_total_wjets_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_met_closure_' % vars() + lt_systs['CMS_ff_total_ttbar_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_met_closure_' % vars() + lt_systs['CMS_ff_total_wjets_syst_l_pt_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_l_pt_closure_' % vars() + lt_systs['CMS_ff_total_ttbar_syst_l_pt_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_l_pt_closure_' % vars() + lt_systs['CMS_ff_total_syst_alt_func_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_syst_alt_func_' % vars() + lt_systs['CMS_ff_total_qcd_syst_bkg_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_bkg_' % vars() + lt_systs['CMS_ff_total_wjets_syst_bkg_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_bkg_' % vars() + + + for njet in [0,1]: + for jetpt in ['low','med','high']: + for i in [1,2,3]: + lt_systs[('CMS_ff_total_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() + for i in [1,2,3,4]: + lt_systs[('CMS_ff_total_wjets_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_wjets_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() + for i in [1,2,3]: + lt_systs[('CMS_ff_total_ttbar_stat_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_ttbar_stat_jet_pt_%(jetpt)s_unc%(i)i_' % vars() + + + if options.qcd_ff_closure or options.w_ff_closure: + for key,val in lt_systs.items(): + if options.qcd_ff_closure: + lt_systs[key] = '(wt_ff_mssm_qcd_1/wt_ff_mssm_1)*%(val)s' % vars() + elif options.w_ff_closure: + lt_systs[key] = '(wt_ff_mssm_wjets_1/wt_ff_mssm_1)*%(val)s' % vars() + + + + + for template_name in lt_systs: + weight_name = lt_systs[template_name] + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + + + template_name = 'CMS_ff_total_sub_syst_%(ch)s_%(yr)s' % vars() + systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) + + + + +if options.syst_qcd_bkg: + systematics['qcd_sub_up'] = ('','_'+options.syst_qcd_bkg+'Up', 'wt', ['EWKZ','ZTT','ZJ','ZL','ZLL','VV','VVT','VVJ','TT','TTT','TTJ','W','signal','EmbedZTT','jetFakes'], False) + systematics['qcd_sub_down'] = ('','_'+options.syst_qcd_bkg+'Down', 'wt', ['EWKZ','ZTT','ZJ','ZL','ZLL','VV','VVT','VVJ','TT','TTT','TTJ','W','signal','EmbedZTT','jetFakes'], False) + + + + +if options.no_systs: systematics = {'default' : ('','', 'wt', [], False)} + + +# sort systematics by tree's input directory name +systematics = OrderedDict(sorted(systematics.items(), key=lambda key: key[1])) + + +if options.qcd_os_ss_ratio > 0: + qcd_os_ss_ratio = options.qcd_os_ss_ratio +else: + if options.analysis in ['sm','cpprod','cpdecay','mssmrun2','vlq']: + if options.channel == 'et': + qcd_os_ss_ratio = 1.0 + qcd_os_ss_ratio = 1.13 + if options.cat == '0jet': + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 0.97 + else: qcd_os_ss_ratio = 1.0 + elif options.cat == 'boosted': + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.61 + else: qcd_os_ss_ratio = 1.28 + elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 + elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: qcd_os_ss_ratio = 1.82 + elif options.cat in ['btag']: qcd_os_ss_ratio = 1.16 + + + elif options.channel in ['mt','mj']: + #qcd_os_ss_ratio = 1.07 + qcd_os_ss_ratio = 1.12 + if options.cat == '0jet': + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.15 + else: qcd_os_ss_ratio = 1.07 + elif options.cat == 'boosted': + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.18 + else: qcd_os_ss_ratio = 1.06 + elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 + elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', + # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' + ]: qcd_os_ss_ratio = 1.23 + elif options.cat in ['btag']: qcd_os_ss_ratio = 1.01 + elif options.channel == 'zmm' or options.channel == 'zee': + qcd_os_ss_ratio = 1.07 + elif options.channel == 'em': + qcd_os_ss_ratio = 1.0 + else: + qcd_os_ss_ratio = 1.0 + else: + if options.channel == 'et': + qcd_os_ss_ratio = 1.02 + if options.cat == 'inclusive': qcd_os_ss_ratio = 1.13 + elif options.cat in ['nobtag', 'nobtag_tightmt', 'nobtag_loosemt']: qcd_os_ss_ratio = 1.11 + elif options.cat in ['btag', 'btag_tightmt', 'btag_loosemt']: qcd_os_ss_ratio = 1.16 + elif options.channel in ['mt','mj']: + qcd_os_ss_ratio = 1.18 + if options.cat == 'inclusive': qcd_os_ss_ratio = 1.12 + elif options.cat in ['nobtag', 'nobtag_tightmt', 'nobtag_loosemt']: qcd_os_ss_ratio = 1.14 + elif options.cat in ['btag', 'btag_tightmt', 'btag_loosemt']: qcd_os_ss_ratio = 1.01 + elif options.channel == 'zmm' or options.channel == 'zee': + qcd_os_ss_ratio = 1.06 + else: + qcd_os_ss_ratio = 1.0 +#if options.do_ss: +# qcd_os_ss_ratio = 1.0 + + + + +# Get array of signal masses to process +ggh_masses=None +bbh_masses=None +sm_masses=None +bbh_masses_powheg=None +ggh_masses_powheg=None +if options.sm_masses != "": sm_masses = options.sm_masses.split(',') +if options.ggh_masses != "": ggh_masses = options.ggh_masses.split(',') +if options.bbh_masses != "": bbh_masses = options.bbh_masses.split(',') +if options.bbh_nlo_masses != "": bbh_nlo_masses = options.bbh_nlo_masses.split(',') +if options.ggh_masses_powheg != "": ggh_masses = options.ggh_masses_powheg.split(',') +if options.bbh_masses_powheg != "": bbh_masses = options.bbh_masses_powheg.split(',') + + + + +ROOT.TH1.SetDefaultSumw2(True) + + +# All functions defined here + + +def BuildCutString(wt='', sel='', cat='', sign='os',bkg_sel=''): + full_selection = '(1)' + if wt != '': + full_selection = '('+wt+')' + if sel != '': + full_selection += '*('+sel+')' + if sign != '': + full_selection += '*('+sign+')' + if bkg_sel != '': + full_selection += '*('+bkg_sel+')' + if cat != '': + full_selection += '*('+cat+')' + return full_selection + + +def GetZTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['ztt_sel']) + return ana.SummedFactory('ZTT'+add_name, samples, plot, full_selection) +def GetEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + wt_ = wt + if options.analysis in ['mssmrun2','vlq']: + if options.channel == 'tt': + wt_+='*(pt_1/gen_match_1_pt<1.5&&pt_2/gen_match_2_pt<1.5)' + if options.year == "2016": wt_+='*1.008' + else: wt_+='*1.01' + if options.channel in ['et','mt']: wt_+='*(pt_2/gen_match_2_pt<1.5)*1.005' + #wt_+='*wt_emb_sel_kit/trackingweight_1' + wt_+='*1/trackingweight_1' + if options.channel == 'em': + #for em channel there are non-closures wrt data and MC which are corrected here with these additional correction factors + if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: wt_+='*1.106' + if options.era in ['cpsummer17','UL_17']: wt_+='*1.080' + if options.era in ['cp18','UL_18']: wt_+='*1.101' + if options.era in ['22']: wt_+='*1.101' + full_selection = BuildCutString(wt_+'*(wt<2)', sel, cat, OSSS, z_sels['ztt_sel']) + return ana.SummedFactory('EmbedZTT'+add_name, samples, plot, full_selection) + + + + +def GetZLLNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zll_sel']) + return ana.SummedFactory('ZLL'+add_name, samples, plot, full_selection) + + +def GetZLNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zl_sel']) + return ana.SummedFactory('ZL'+add_name, samples, plot, full_selection) + + +def GetZLEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + wt_=wt + if options.analysis in ['mssmrun2','vlq']: + #wt_+='*wt_emb_sel_kit/(trackingweight_1*trackingweight_2)' + #wt_+='*wt_zpt_embed_ic/(trackingweight_1*trackingweight_2)' + wt_+='*1/(trackingweight_1*trackingweight_2)' + full_selection = BuildCutString(wt_, sel, cat, OSSS, '1') + return ana.SummedFactory('EmbedZL'+add_name, samples, plot, full_selection) + + +def GetZJNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zj_sel']) + return ana.SummedFactory('ZJ'+add_name, samples, plot, full_selection) + + +def GenerateZLL(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True, doZL=True, doZJ=True): + if options.channel == 'em': + zll_node = GetZLLNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(zll_node) + else: + if doZL: + zl_node = GetZLNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(zl_node) + if doZJ: + zj_node = GetZJNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(zj_node) + + +def GenerateZTT(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + ztt_node = GetZTTNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(ztt_node) + split_taus = False + if split_taus: + ztt_node_rho = GetZTTNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(ztt_node_rho) + ztt_node_a1 = GetZTTNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(ztt_node_a1) + ztt_node_pi = GetZTTNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(ztt_node_pi) + ztt_node_other = GetZTTNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(ztt_node_other) + +def GenerateEmbedded(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + embed_node = GetEmbeddedNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node) + if split_taus: + embed_node_rho = GetEmbeddedNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node_rho) + embed_node_a1 = GetEmbeddedNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node_a1) + embed_node_pi = GetEmbeddedNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node_pi) + embed_node_other = GetEmbeddedNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node_other) +def GenerateZLEmbedded(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + embed_node = GetZLEmbeddedNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) + ana.nodes[nodename].AddNode(embed_node) + +def GetEWKZNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True, doJFakes=True): + extra_sel = '1' + if not doJFakes: + if options.channel in ['et','mt']: extra_sel = 'gen_match_2<6' + if options.channel == 'tt': extra_sel = '!(gen_match_1==6 || gen_match_2==6)' + if get_os: OSSS = 'os' + else: OSSS = '!os' + if options.embedding: full_selection = BuildCutString(wt, sel, cat, OSSS, extra_top_sel+'&&'+extra_sel) + else: full_selection = BuildCutString(wt, sel, cat, OSSS, extra_sel) + return ana.SummedFactory('EWKZ'+add_name, samples, plot, full_selection) + + +def GenerateEWKZ(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): + ewkz_node = GetEWKZNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os, options.method != 17) + ana.nodes[nodename].AddNode(ewkz_node) + + +def GetggHWWNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, '1') + return ana.SummedFactory('ggH_hww125'+add_name, samples, plot, full_selection) + + +def GetqqHWWNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, '1') + return ana.SummedFactory('qqH_hww125'+add_name, samples, plot, full_selection) + + +def GenerateHWW(ana, add_name='', ggh_samples=[], qqh_samples=[], plot='', wt='', sel='', cat='', get_os=True, doggH=True, doqqH=True): + if doggH: + gghww_node = GetggHWWNode(ana, add_name, ggh_samples, plot, wt, sel, cat, get_os) + ana.nodes[nodename].AddNode(gghww_node) + if doqqH: + qqhww_node = GetqqHWWNode(ana, add_name, qqh_samples, plot, wt, sel, cat, get_os) + ana.nodes[nodename].AddNode(qqhww_node) + + +def GetTTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttt_sel']) + return ana.SummedFactory('TTT'+add_name, samples, plot, full_selection) + +def GetTTTforZTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttt_ztt_sel']) + return ana.SummedFactory('TTT_for_ZTT'+add_name, samples, plot, full_selection) + + + + +def GetTTJNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttj_sel']) + return ana.SummedFactory('TTJ'+add_name, samples, plot, full_selection) + + +def GenerateTop(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True, doTTT=True, doTTJ=True): + wt_=wt#+"*wt_tquark_down" + if doTTT: + ttt_node = GetTTTNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_node) + if options.embedding: + ttt_for_ztt_node = GetTTTforZTTNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_for_ztt_node) + + + if split_taus: + ttt_node_rho = GetTTTNode(ana, '_rho'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==1', cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_node_rho) + ttt_node_a1 = GetTTTNode(ana, '_a1'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==2', cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_node_a1) + ttt_node_pi = GetTTTNode(ana, '_pi'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==0', cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_node_pi) + ttt_node_other = GetTTTNode(ana, '_other'+add_name, samples, plot, wt_, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttt_node_other) + + + if doTTJ: + ttj_node = GetTTJNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) + ana.nodes[nodename].AddNode(ttj_node) + + +def GetVVTNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvt_sel']) + return ana.SummedFactory('VVT'+add_name, samples, plot, full_selection) + + +def GetVVTforZTTNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvt_ztt_sel']) + return ana.SummedFactory('VVT_for_ZTT'+add_name, samples, plot, full_selection) + + + + +def GetVVJNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvj_sel']) + return ana.SummedFactory('VVJ'+add_name, samples, plot, full_selection) + + +def GenerateVV(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True, doVVT=True, doVVJ=True): + if doVVT: + vvt_node = GetVVTNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_node) + if options.embedding: + vvt_for_ztt_node = GetVVTforZTTNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_for_ztt_node) + if split_taus: + vvt_node_rho = GetVVTNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_node_rho) + vvt_node_a1 = GetVVTNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_node_a1) + vvt_node_pi = GetVVTNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_node_pi) + vvt_node_other = GetVVTNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvt_node_other) + + + if doVVJ: + vvj_node = GetVVJNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) + ana.nodes[nodename].AddNode(vvj_node) + +def GetWGNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS) + wg_node = ana.SummedFactory('WGam'+add_name, samples, plot, full_selection) + return wg_node + + +def GetWNode(ana, name='W', samples=[], data=[], plot='',plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True): + if get_os: OSSS = 'os' + else: OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS, '') + if cats['w_shape'] != '': shape_cat = cats['w_shape'] + else: shape_cat = cat + if method == 14: + shape_cat = '(n_jets<=1 && n_loose_bjets>=1)*('+cats['baseline']+')' + shape_selection = BuildCutString(wt, sel, shape_cat, OSSS, '') + + if method in [0, 8, 9, 15, 19]: + w_node = ana.SummedFactory(name, samples, plot, full_selection) + elif method in [10, 11]: + control_sel = cats['w_sdb']+' && '+ OSSS + w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) + w_control_full_selection_data = BuildCutString(wt, control_sel, cat_data, OSSS) + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) + if shape_selection == full_selection: + w_shape = None + else: + w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) + w_node = HttWNode(name, + ana.SummedFactory('data_obs', data, plot_unmodified, w_control_full_selection_data), + subtract_node, + ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), + ana.SummedFactory('W_sr', samples, plot, full_selection), + w_shape) + elif method in [12, 13, 14, 16, 23]: + if method == 16: + cat_nobtag = '('+cats['btag_wnobtag']+')*('+cats['baseline']+')' + cat_nobtag_data = '('+cats_unmodified['btag_wnobtag']+')*('+cats_unmodified['baseline']+')' + full_selection = BuildCutString(wt, sel, cat_nobtag, OSSS) + ss_selection = BuildCutString(wt, '', cat_nobtag, '!os', '') + os_selection = BuildCutString(wt, '', cat_nobtag, 'os', '') + control_sel = cats['w_sdb'] + w_control_full_selection = BuildCutString(wt, control_sel, cat_nobtag, OSSS) + w_control_full_selection_os = BuildCutString(wt, control_sel, cat_nobtag) + w_control_full_selection_ss = BuildCutString(wt, control_sel, cat_nobtag, '!os') + w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_nobtag_data) + w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_nobtag_data, '!os') + btag_extrap_sel_num = BuildCutString(wt, sel, cat, OSSS, '') + btag_extrap_sel_den = BuildCutString(wt, sel, cat_nobtag, OSSS, '') + btag_extrap_num_node = ana.SummedFactory('btag', samples, plot, btag_extrap_sel_num) + btag_extrap_den_node = ana.SummedFactory('no_btag', samples, plot, btag_extrap_sel_den) + subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat_nobtag,cat_nobtag_data,method,qcd_os_ss_ratio,True,False) + subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat_nobtag,cat_nobtag_data,method,qcd_os_ss_ratio,False,False) + elif method == 23: + cat_nopt = '('+cats['dijet_lowboost']+')*('+cats['baseline']+')' + cat_nopt_data = '('+cats_unmodified['dijet_lowboost']+')*('+cats_unmodified['baseline']+')' + full_selection = BuildCutString(wt, sel, cat_nopt, OSSS) + ss_selection = BuildCutString(wt, '', cat_nopt, '!os', '') + os_selection = BuildCutString(wt, '', cat_nopt, 'os', '') + control_sel = cats['w_sdb'] + w_control_full_selection = BuildCutString(wt, control_sel, cat_nopt, OSSS) + w_control_full_selection_os = BuildCutString(wt, control_sel, cat_nopt) + w_control_full_selection_ss = BuildCutString(wt, control_sel, cat_nopt, '!os') + w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_nopt_data) + w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_nopt_data, '!os') + btag_extrap_sel_num = BuildCutString(wt, sel, cat, OSSS, '') + btag_extrap_sel_den = BuildCutString(wt, sel, cat_nopt, OSSS, '') + btag_extrap_num_node = ana.SummedFactory('btag', samples, plot, btag_extrap_sel_num) + btag_extrap_den_node = ana.SummedFactory('no_btag', samples, plot, btag_extrap_sel_den) + subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat_nopt,cat_nopt_data,method,qcd_os_ss_ratio,True,False) + subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat_nopt,cat_nopt_data,method,qcd_os_ss_ratio,False,False) + else: + full_selection = BuildCutString(wt, sel, cat, OSSS) + ss_selection = BuildCutString(wt, '', cat, '!os', '') + os_selection = BuildCutString(wt, '', cat, 'os', '') + control_sel = cats['w_sdb'] + w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) + w_control_full_selection_os = BuildCutString(wt, control_sel, cat) + w_control_full_selection_ss = BuildCutString(wt, control_sel, cat, '!os') + w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_data) + w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_data, '!os') + btag_extrap_num_node = None + btag_extrap_den_node = None + subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) + subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,False,False) + + if shape_selection == full_selection: + w_shape = None + else: + w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) + w_node = HttWOSSSNode(name, + ana.SummedFactory('data_os', data, plot_unmodified, w_control_full_selection_os_data), + subtract_node_os, + ana.SummedFactory('data_ss', data, plot_unmodified, w_control_full_selection_ss_data), + subtract_node_ss, + ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), + ana.SummedFactory('W_sr', samples, plot, full_selection), + ana.SummedFactory('W_os', samples, plot, os_selection), + ana.SummedFactory('W_ss', samples, plot, ss_selection), + w_shape, + qcd_factor, + get_os, + btag_extrap_num_node, + btag_extrap_den_node) + + elif method in [21,22,24,25]: + control_sel = cats['w_sdb']+' && '+ OSSS + w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) + w_control_full_selection_data = BuildCutString(wt, control_sel, cat_data, OSSS) + data_node=ana.SummedFactory('data_obs', data, plot_unmodified, w_control_full_selection_data) + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) + + qcd_subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,cats['w_sdb'],cat,cat_data,8,qcd_os_ss_ratio,False,True) + qcd_control_full_selection = BuildCutString(wt, cats['w_sdb'], cat, '!os') + qcd_control_full_selection_data = BuildCutString(wt, cats['w_sdb'], cat_data, '!os') + qcd_node = HttQCDNode('QCD'+add_name, + ana.SummedFactory('data_ss', data, plot_unmodified, qcd_control_full_selection_data), + qcd_subtract_node, + qcd_factor, + None) + + subtract_node.AddNode(qcd_node) + + if shape_selection == full_selection: w_shape = None + else: w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) + + if method in [22]: + data_node = None + wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 21, qcd_factor, True) + wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) + if method in [24]: + data_node = None + cat_nopt = '('+cats['dijet']+')*('+cats['baseline']+')' + cat_nopt_data = '('+cats_unmodified['dijet_lowboost']+')*('+cats_unmodified['baseline']+')' + wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) + wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat_nopt, cat_nopt_data, 8, qcd_factor, True) + if method in [25]: + data_node = None + wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 24, qcd_factor, True) + wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) + else: + wsf_num = None + wsf_denum = None + + w_node = HttWNode(name, + data_node, + subtract_node, + ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), + ana.SummedFactory('W_sr', samples, plot, full_selection), + w_shape, + wsf_num, + wsf_denum) + return w_node + + +def GenerateW(ana, add_name='', samples=[], data=[], wg_samples=[], plot='', plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True): + w_node_name = 'W' + if options.channel == 'em': + w_total_node = SummedNode('W'+add_name) + w_total_node.AddNode(GetWGNode(ana, add_name, wg_samples, plot, wt, sel, cat, get_os)) + ana.nodes[nodename].AddNode(GetWGNode(ana, add_name, wg_samples, plot, wt, sel, cat, get_os)) + w_node_name+='J' + ana.nodes[nodename].AddNode(GetWNode(ana, w_node_name+add_name, samples, data, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_factor, get_os)) + if options.channel == 'em': + w_total_node.AddNode(GetWNode(ana, w_node_name+add_name, samples, data, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_factor, get_os)) + ana.nodes[nodename].AddNode(w_total_node) + + +def GetSubtractNode(ana,add_name,plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,OSSS,includeW=False,w_shift=None): + subtract_node = SummedNode('total_bkg'+add_name) + if includeW and options.era!='22': + if w_shift is not None: w_wt = '%s*%f' %(wt,w_shift) + else: w_wt = wt + w_node = GetWNode(ana, 'W', wjets_samples, data_samples, plot, plot_unmodified, w_wt, sel, cat, cat_data,method, qcd_os_ss_ratio, OSSS) + subtract_node.AddNode(w_node) + ttt_node = GetTTTNode(ana, "", top_samples, plot, wt, sel, cat, top_sels, OSSS) + ttj_node = GetTTJNode(ana, "", top_samples, plot, wt, sel, cat, top_sels, OSSS) + vvt_node = GetVVTNode(ana, "", vv_samples, plot, wt, sel, cat, vv_sels, OSSS) + vvj_node = GetVVJNode(ana, "", vv_samples, plot, wt, sel, cat, vv_sels, OSSS) + subtract_node.AddNode(ttt_node) + subtract_node.AddNode(ttj_node) + subtract_node.AddNode(vvt_node) + subtract_node.AddNode(vvj_node) + if options.embedding and options.channel != 'zmm': + embed_node = GetEmbeddedNode(ana, "", embed_samples, plot, wt, sel, cat, z_sels, OSSS) + subtract_node.AddNode(embed_node) + else: + ztt_node = GetZTTNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) + subtract_node.AddNode(ztt_node) + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.method!=0: + ewkz_node = GetEWKZNode(ana, "", ewkz_samples, plot, wt, sel, cat, z_sels, OSSS) + subtract_node.AddNode(ewkz_node) + if options.channel not in ["em"]: + zl_node = GetZLNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) + zj_node = GetZJNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) + subtract_node.AddNode(zl_node) + subtract_node.AddNode(zj_node) + if options.channel in ["em"]: + zll_node = GetZLLNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) + subtract_node.AddNode(zll_node) + if options.channel == "em": + wg_node = GetWGNode(ana, "", wgam_samples, plot, wt, sel, cat, OSSS) + subtract_node.AddNode(wg_node) + #print(subtract_node.shape) + return subtract_node + +def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True,w_shift=None): + shape_node = None + OSSS = "!os" + if get_os: OSSS = "os" + if method == 0: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,8,1.0,get_os,True) + full_selection = BuildCutString(wt, sel, cat_data, OSSS) + ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, + ana.SummedFactory('data', data, plot_unmodified, full_selection), + subtract_node, + 1.0)) + return + + + if options.channel != 'tt': + sub_shift='*1.0' + if 'qcd_sub_up' in systematic: sub_shift = '*1.1' + if 'qcd_sub_down' in systematic: sub_shift = '*0.9' + if method in [9, 11, 13, 14]: + if method in [9, 11, 13]: + shape_cat = '('+cats[options.cat]+')*('+cats['qcd_loose_shape']+')' + shape_cat_data = '('+cats_unmodified[options.cat]+')*('+cats_unmodified['qcd_loose_shape']+')' + elif method == 14: + shape_cat = '(n_jets<=1 && n_loose_bjets>=1)*('+cats['baseline']+')' + shape_cat_data = '(n_jets<=1 && n_loose_bjets>=1)*('+cats_unmodified['baseline']+')' + shape_selection = BuildCutString(wt, sel, shape_cat_data, '!os') + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_shift,sel,shape_cat,shape_cat_data,method,qcd_os_ss_ratio,False,True) + shape_node = SubtractNode('shape', ana.SummedFactory('data_ss', data, plot_unmodified, shape_selection), subtract_node) + + #if options.channel == 'em': qcd_os_ss_factor = 1 + qcd_os_ss_factor = qcd_factor + weight = wt + if method in [15,19]: + #qcd_os_ss_factor = 1 + if get_os and options.channel == "em": + weight = wt+'*wt_em_qcd' + #if options.era in ['cpsummer16','cpdecay16',"legacy16",'mvadm2016']: weight+='*wt_em_qcd_extrapup' + if options.em_qcd_weight != '': + weight=wt+'*'+options.em_qcd_weight + if method == 19: + shape_selection = BuildCutString(weight, sel, cats_unmodified['em_shape_cat'], '!os') + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight+sub_shift,sel,cats['em_shape_cat'],cats_unmodified['em_shape_cat'],method,1,False,True) + shape_node = SubtractNode('shape', ana.SummedFactory('data_ss',data, plot_unmodified, shape_selection), subtract_node) + + if cats['qcd_shape'] != "" or (w_shift is not None and w_shift!=1.0): + add_shape = False + if cats['qcd_shape'] == '': shape_cat = cat + else: + shape_cat = cats['qcd_shape'] + add_shape = True + if cats['qcd_shape'] == '': shape_cat_data = cat_data + else: + shape_cat_data = cats_unmodified['qcd_shape'] + add_shape = True + if add_shape: + shape_selection = BuildCutString(weight, sel, shape_cat_data, '!os') + if method == 21: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,shape_cat,shape_cat_data,22,1,False,True,w_shift) + else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,shape_cat,shape_cat_data,method,1,False,True,w_shift) + shape_node = SubtractNode('shape', ana.SummedFactory('data_ss',data, plot_unmodified, shape_selection), subtract_node) + else: shape_node = None + + full_selection = BuildCutString(weight, sel, cat_data, '!os') + if method == 21: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,22,qcd_os_ss_ratio,False,True) + elif method == 24: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,25,qcd_os_ss_ratio,False,True) + else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight+sub_shift,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + if get_os: qcd_ratio = qcd_os_ss_factor + else: qcd_ratio = 1.0 + ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, + ana.SummedFactory('data_ss', data, plot_unmodified, full_selection), + subtract_node, + qcd_ratio, + shape_node)) + + else: + if method == 8: + qcd_sdb_cat = cats[options.cat]+' && '+cats['tt_qcd_norm'] + qcd_sdb_cat_data = cats_unmodified[options.cat]+' && '+cats_unmodified['tt_qcd_norm'] + # if options.no_qcd_subtract: + # subtract_node =None + # else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + num_selection = BuildCutString(wt, sel, cat_data, '!os') + num_node = SubtractNode('ratio_num', + ana.SummedFactory('data', data, plot_unmodified, num_selection), + subtract_node) + if options.analysis == 'mssmsummer16': tau_id_wt = 'wt_tau2_id_loose' + else: tau_id_wt = '1' + # if options.no_qcd_subtract: + # subtract_node =None + # else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) + den_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, '!os') + den_node = SubtractNode('ratio_den', + ana.SummedFactory('data', data, plot_unmodified, den_selection), + subtract_node) + shape_node = None + full_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, OSSS) + # if options.no_qcd_subtract: + # subtract_node = None + # else: + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) + + ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, + ana.SummedFactory('data', data, plot_unmodified, full_selection), + subtract_node, + 1, + shape_node, + num_node, + den_node)) + if method == 9: + #osss = '(3.68434 -1.8015*dR + 0.488955*dR*dR -0.0489159*dR*dR*dR)' # this line to be inclusive by decay mode + osss = '((tau_decay_mode_1<2&&tau_decay_mode_2<2)*(3.555-1.689*dR+0.4741*dR*dR-0.04973*dR*dR*dR) + ((tau_decay_mode_1<2&&tau_decay_mode_2>9)||(tau_decay_mode_1>9&&tau_decay_mode_2<2))*(2.851-1.008*dR+0.2374*dR*dR-0.02331*dR*dR*dR) + (tau_decay_mode_1>9&&tau_decay_mode_2>9)*(3.391-2.21*dR+0.7623*dR*dR-0.08775*dR*dR*dR))' + weight = wt + if get_os: + weight = wt+'*'+osss + full_selection = BuildCutString(weight, sel, cat_data, '!os') + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, + ana.SummedFactory('data_ss', data, plot_unmodified, full_selection), + subtract_node, + 1.0, + None)) + + +def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt='', sel='', cat_name='',get_os=True,ff_syst_weight=None): + + + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + + + sub_wt='' + if 'sub_syst' in add_name and 'Up' in add_name: sub_wt='*1.1' + if 'sub_syst' in add_name and 'Down' in add_name: sub_wt='*0.9' + + + wp = options.wp + # Select data from anti-isolated region + if options.channel != "tt": + if options.channel == 'mt': + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: + anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) + else: + anti_isolated_sel = '(iso_1<0.15 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' + elif options.channel == 'et': + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: + anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) + else: + anti_isolated_sel = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' + ff_cat = cats[cat_name] +" && "+ anti_isolated_sel + ff_cat_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: + if ff_syst_weight is not None and 'sub_syst' not in add_name: fake_factor_wt_string = '('+ff_syst_weight+'_1)' + else: + if options.analysis in ['cpprod']: + fake_factor_wt_string = "wt_ff_us_1" + fake_factor_wt_string = "wt_ff_dmbins_1" + elif options.analysis in ['mssmrun2','vlq']: + #if options.w_ff_closure or options.qcd_ff_closure: + #json_name = 'scripts/ff_strings.json' + #with open(json_name) as json_file: + #ff_dict = json.load(json_file) + if options.w_ff_closure: + fake_factor_wt_string = "wt_ff_mssm_wjets_1" + if options.ml_ff: fake_factor_wt_string = "wt_ff_reweight_wjets_dr_1" + #fake_factor_wt_string = RawFFFromString(ff_dict[options.channel][options.year]['wjets']) + #fake_factor_wt_string = ff_dict[options.channel][options.year]['wjets'] + elif options.qcd_ff_closure: + fake_factor_wt_string = "wt_ff_mssm_qcd_1" + if options.ml_ff: fake_factor_wt_string = "wt_ff_reweight_qcd_raw_1" + #fake_factor_wt_string = ff_dict[channel][year]['qcd'] + else: + fake_factor_wt_string = "wt_ff_mssm_1" + if options.ml_ff: fake_factor_wt_string = "((wt_ff_reweight_qcd_1*ff_frac_mssm_qcd) + (wt_ff_reweight_wjets_1*ff_frac_mssm_wjets) + (wt_ff_reweight_ttbar_1*ff_frac_mssm_ttbar))" + + + else: fake_factor_wt_string = "wt_ff_1" + else: + if ff_syst_weight is not None: fake_factor_wt_string = ff_syst_weight + else: fake_factor_wt_string = "wt_ff_"+options.cat + fake_factor_wt_string+='*wt_tau_id_loose' + if wt is not "": wt+="*"+fake_factor_wt_string + else: wt=fake_factor_wt_string + + + full_selection = BuildCutString(wt, sel, ff_cat_data, OSSS, '') + # Calculate FF for anti-isolated data (f1) then subtract contributions from real taus (f2) + f1 = ana.SummedFactory('data', data, plot_unmodified, full_selection) + + + if (not options.w_ff_closure and not options.qcd_ff_closure) or options.ml_ff: + f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel+'&&(gen_match_2<6)',ff_cat,ff_cat_data,8,1.0,get_os,True) + elif options.qcd_ff_closure and not options.ml_ff: + f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,8,1,get_os,True) + elif options.w_ff_closure and not options.ml_ff: + f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,8,1,get_os,False) + full_selection_ss = BuildCutString(wt, sel, ff_cat_data, '!os', '') + qcd_node = SubtractNode('qcd', ana.SummedFactory('data', data, plot_unmodified, full_selection_ss), GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,12,1.0,False,True)) + f2.AddNode(qcd_node) + ana.nodes[nodename].AddNode(SubtractNode('jetFakes'+add_name, f1, f2)) + + + if options.channel == 'tt': + anti_isolated_sel_1 = '(mva_olddm_medium_1<0.5 && mva_olddm_vloose_1>0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' + anti_isolated_sel_2 = '(mva_olddm_medium_2<0.5 && mva_olddm_vloose_2>0.5 && mva_olddm_medium_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' + if options.era == "mssmsummer16": + anti_isolated_sel_1 +=" && trg_doubletau" + anti_isolated_sel_2 +=" && trg_doubletau" + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"mvadm2016"]: + anti_isolated_sel_1 = cats['baseline'].replace('mva_olddm_tight_1>0.5','mva_olddm_tight_1<0.5 && mva_olddm_vloose_1>0.5') + anti_isolated_sel_2 = cats['baseline'].replace('mva_olddm_tight_2>0.5','mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5') + if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP','22']: # need to do also for MVA cats for 2016! + anti_isolated_sel_2 = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) + anti_isolated_sel_1 = cats['baseline'].replace('deepTauVsJets_%(wp)s_1>0.5' % vars(),'deepTauVsJets_%(wp)s_1<0.5 && deepTauVsJets_vvvloose_1>0.5' % vars()) + ff_cat_1 = cats[cat_name] +" && "+ anti_isolated_sel_1 + ff_cat_2 = cats[cat_name] +" && "+ anti_isolated_sel_2 + ff_cat_1_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel_1 + ff_cat_2_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel_2 + if ff_syst_weight is not None and 'sub_syst' not in add_name: + fake_factor_wt_string_1 = '('+ff_syst_weight+'_1)' + fake_factor_wt_string_2 = ff_syst_weight+'_2' + + +#wt_ff_dmbins_qcd_syst_down + if options.analysis in ['cpprod'] and 'ff_tt_qcd_syst' in add_name: + flat = 1.04 + if (options.era=='cpsummer17' or options.era == 'UL_17'): flat=1.07 + if (options.era=='cp18'or options.era == 'UL_18'): flat=1.06 + if (options.era=='22'): flat=1.06 + + + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_qcd_syst_down_1*%(flat)s + (n_jets>0)*wt_ff_dmbins_1)' % vars() + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)*(2*wt_ff_dmbins_1-wt_ff_dmbins_qcd_syst_down_1*%(flat)s) + (n_jets>0)*wt_ff_dmbins_1)' % vars() + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_1 + (n_jets>0)*wt_ff_dmbins_qcd_syst_down_1*%(flat)s)' % vars() + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_1 + (n_jets>0)*(2*wt_ff_dmbins_1-wt_ff_dmbins_qcd_syst_down_1*%(flat)s))' % vars() + + + fake_factor_wt_string_1 = ff_syst_weight + + + + + if options.analysis in ['cpdecay'] and 'ff_tt_qcd_syst' in add_name: + if(options.era=='22'): + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + + if(options.era=='cp18' or options.era == 'UL_18'): + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + + + if (options.era=='cpsummer17' or options.era == 'UL_17'): + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.40415-0.101317*dR)/1.07 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.40415-0.101317*dR)*1.07 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.16253-0.031154*dR)/1.07)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.16253-0.031154*dR)*1.07)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.40415-0.101317*dR)/1.07 + (n_jets>0)*(1.16253-0.031154*dR)/1.07)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.40415-0.101317*dR)*1.07 + (n_jets>0)/(1.16253-0.031154*dR)*1.07)*wt_ff_1' + + + if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.22618-0.0546679*dR)/1.04 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.22618-0.0546679*dR)*1.04 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.09292-0.0200048*dR)/1.04)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.09292-0.0200048*dR)*1.04)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.22618-0.0546679*dR)/1.04 + (n_jets>0)*(1.09292-0.0200048*dR)/1.04)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.22618-0.0546679*dR)*1.04 + (n_jets>0)/(1.09292-0.0200048*dR)*1.04)*wt_ff_1' + fake_factor_wt_string_1 = ff_syst_weight + + + if options.analysis in ['cpprod','cpdecay','mssmrun2','vlq']: + fake_factor_wt_string_2='0' + else: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: + # deep tau tight 2018 anti isolating the subleading tau + if options.analysis == 'cpprod': + fake_factor_wt_string_2='0' + fake_factor_wt_string_1 = "wt_ff_dmbins_1" + elif options.analysis == 'cpdecay': + fake_factor_wt_string_2='0' + fake_factor_wt_string_1 = "wt_ff_1" + elif options.analysis in ['mssmrun2','vlq']: + fake_factor_wt_string_2='0' + if options.wp == 'medium': + fake_factor_wt_string_1 = "wt_ff_mssm_1" + #fake_factor_wt_string_1 = "wt_ff_mssm_qcd_syst_down_1" # change back afterwards!!!! + if options.ml_ff: + fake_factor_wt_string_1 = "0.5*wt_ff_reweight_qcd_1*((os==0) + (wt_ff_reweight_qcd_dr_to_ar_1*(os==1)))" + fake_factor_wt_string_2 = "0.5*wt_ff_reweight_qcd_2*((os==0) + (wt_ff_reweight_qcd_dr_to_ar_2*(os==1)))" + elif options.wp == 'tight': + fake_factor_wt_string_1 = "wt_ff_mssm_tight_1" + #fake_factor_wt_string_1 = '((n_prebjets==0 && jet_pt_1<1.25*pt_1)*((pt_1<200)*(15.4087*TMath::Landau(min(pt_1,199.),-15.7496,4.82075)+0.0870211) + (pt_1>=200)*0.27557) + (n_prebjets==0 && jet_pt_1>=1.25*pt_1&&jet_pt_1<1.5*pt_1)*((pt_1<200)*(-411615*TMath::Landau(min(pt_1,199.),-110.218,-14.0548)+0.084284) + (pt_1>=200)*0.28273) + (n_prebjets==0 &&jet_pt_1>=1.5*pt_1)*(0.0392299) + (n_prebjets>0&&jet_pt_1<1.25*pt_1)*((pt_1<200)*(11.7652*TMath::Landau(min(pt_1,199.),-12.9921,5.06968)+0.077124) + (pt_1>=200)*0.13219) + (n_prebjets>0&&jet_pt_1>=1.25*pt_1&&jet_pt_1<1.5*pt_1)*((pt_1<200)*(144.787*TMath::Landau(min(pt_1,199.),14.249,0.467844)+0.0529324) + (pt_1>=200)*0.07516) + (n_prebjets>0&&jet_pt_1>=1.5*pt_1)*(-51.0159*TMath::Landau(min(pt_1,199.),-142.619,-346.505)+0.0294523))*((n_deepbjets==0)*((0.950911+-0.05705*min(dR,5.)+0.0159116*pow(min(dR,5.),2)+0.00199494*pow(min(dR,5.),3))) + (n_deepbjets>0)*((2.53701+-2.23664*min(dR,5.)+0.87535*pow(min(dR,5.),2)+-0.101159*pow(min(dR,5.),3))))' + + + else: + fake_factor_wt_string_1 = "wt_ff_"+options.cat+"_1" + fake_factor_wt_string_2 = "wt_ff_"+options.cat+"_2" + fake_factor_wt_string_1+='*wt_tau1_id_loose' + fake_factor_wt_string_2+='*wt_tau2_id_loose' + if wt is not "": + wt_1=wt+"*"+fake_factor_wt_string_1 + wt_2=wt+"*"+fake_factor_wt_string_2 + else: + wt_1=fake_factor_wt_string_1 + wt_2=fake_factor_wt_string_2 + + if options.analysis == 'cpdecay' and get_os: + if (options.era=='cp18' or options.era == 'UL_18'): + fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.24845-0.0578994*dR) + (n_jets>0)*(1.15364-0.0317013*dR))' + if (options.era=='cpsummer17' or options.era == 'UL_17'): + fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.40415-0.101317*dR) + (n_jets>0)*(1.16253-0.031154*dR))' + if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: + fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.22618-0.0546679*dR) + (n_jets>0)*(1.09292-0.0200048*dR))' + #fake_factor_wt_string_1='wt_ff_test_lead_1' + if wt is not "": + wt_1=wt+"*"+fake_factor_wt_string_1 + else: + wt_1=fake_factor_wt_string_1 + full_selection_1 = BuildCutString(wt_1, sel, ff_cat_1_data, OSSS, '') + full_selection_2 = BuildCutString(wt_2, sel, ff_cat_2_data, OSSS, '') + + if options.ff_ss_closure: + # usual OS FF + + + + + ff_total_node = SummedNode('jetFakes_pre'+add_name) + f1_total_node = SummedNode('data') + f1_total_node.AddNode(ana.SummedFactory('data_1', data, plot_unmodified, full_selection_1)) + f1_total_node.AddNode(ana.SummedFactory('data_2', data, plot_unmodified, full_selection_2)) + f2_total_node = SummedNode('total_bkg') + f2_total_node.AddNode(GetSubtractNode(ana,'_1',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,get_os,True)) + f2_total_node.AddNode(GetSubtractNode(ana,'_2',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,get_os,True)) + + + #ana.nodes[nodename].AddNode(SubtractNode('jetFakes_pre'+add_name, f1_total_node, f2_total_node)) + + + # FF for SS data + full_selection_1_ss = BuildCutString(wt_1, sel, ff_cat_1_data, '!os', '') + full_selection_2_ss = BuildCutString(wt_2, sel, ff_cat_2_data, '!os', '') + ff_total_node_ss = SummedNode('jetFakes_ss'+add_name) + f1_total_node_ss = SummedNode('data_ss') + f1_total_node_ss.AddNode(ana.SummedFactory('data_1_ss', data, plot_unmodified, full_selection_1_ss)) + f1_total_node_ss.AddNode(ana.SummedFactory('data_2_ss', data, plot_unmodified, full_selection_2_ss)) + f2_total_node_ss = SummedNode('total_bkg_ss') + f2_total_node_ss.AddNode(GetSubtractNode(ana,'_1_ss',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,False,True)) + f2_total_node_ss.AddNode(GetSubtractNode(ana,'_2_ss',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,False,True)) + den_node = SubtractNode('jetFakes_ss'+add_name, f1_total_node_ss, f2_total_node_ss) + + + # SS data - bkg + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel+'*(gen_match_1<6 && gen_match_2<6)',cats[cat_name]+'&&'+cats['baseline'],cats_unmodified[cat_name]+'&&'+cats['baseline'],8,1.0,False,True) + num_selection = BuildCutString(wt, sel, cats_unmodified[cat_name]+'&&'+cats['baseline'], '!os') + num_node = SubtractNode('ratio_num', + ana.SummedFactory('data', data, plot_unmodified, num_selection), + subtract_node) + + + ana.nodes[nodename].AddNode(HttQCDNode('jetFakes'+add_name, + f1_total_node, + f2_total_node, + 1, + None, + num_node, + den_node)) + else: + ff_total_node = SummedNode('jetFakes'+add_name) + f1_total_node = SummedNode('data') + f1_total_node.AddNode(ana.SummedFactory('data_1', data, plot_unmodified, full_selection_1)) + if options.ml_ff: f1_total_node.AddNode(ana.SummedFactory('data_2', data, plot_unmodified, full_selection_2)) + f2_total_node = SummedNode('total_bkg') + f2_total_node.AddNode(GetSubtractNode(ana,'_1',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,get_os,True)) + if options.ml_ff: f2_total_node.AddNode(GetSubtractNode(ana,'_2',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,get_os,True)) + ana.nodes[nodename].AddNode(SubtractNode('jetFakes'+add_name, f1_total_node, f2_total_node)) + + + + + if options.channel=='tt': + #if options.analysis == 'cpprod': full_selection_extra = BuildCutString(wt+'*wt_ff_us_2', sel+'*(gen_match_2==6)', ff_cat_2_data, OSSS, '') + #else: full_selection_extra = BuildCutString(wt+'*wt_ff_2', sel+'*(gen_match_2==6)', ff_cat_2_data, OSSS, '') + + + full_selection_extra = BuildCutString(wt, sel, cats_unmodified[cat_name]+'&&'+cats['baseline'], OSSS, 'gen_match_2==6') + + + + #wnode = ana.SummedFactory('Wfakes'+add_name, ztt_samples+vv_samples+wjets_samples+ewkz_samples+top_samples, plot, full_selection_extra) +# ana.nodes[nodename].AddNode(wnode) + +def GenerateSMSignal(ana, add_name='', plot='', masses=['125'], wt='', sel='', cat='', get_os=True, sm_bkg = '',processes=['ggH','qqH','ZH','WminusH','WplusH']): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + if masses is not None: + for mass in masses: + if sm_bkg != '': + add_str = '_SM'+sm_bkg + else: + add_str = mass + for key in sm_samples: + if 'ggH' in key: + full_selection = BuildCutString(wt+'*wt_ph_nnlops', sel, cat, OSSS) + else: full_selection = BuildCutString(wt, sel, cat, OSSS) + if True not in [proc in key for proc in processes]: continue + sample_names=[] + if isinstance(sm_samples[key], (list,)): + for i in sm_samples[key]: + sample_names.append(i.replace('*',mass)) + else: sample_names = [sm_samples[key].replace('*',mass)] + ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',add_str)+add_name, sample_names, plot, full_selection)) + +def GenerateMSSMSignal(ana, add_name='', bbh_add_name='', plot='', ggh_masses = ['1000'], bbh_masses = ['1000'], wt='', sel='', cat='', get_os=True, do_ggH=True, do_bbH=True): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + if options.gen_signal: OSSS='1' + full_selection = BuildCutString(wt, sel, cat, OSSS) + for key in mssm_samples: + masses = None + if key == 'ggH': + masses = ggh_masses + elif key == 'bbH': + masses = bbh_masses + if masses is not None: + for mass in masses: + if key == 'ggH' and not do_ggH: + continue + if key == 'bbH' and not do_bbH: + continue + sample_name = mssm_samples[key].replace('*',mass) + add_name_2 = '' + if bbh_add_name == '-LO' and key is 'bbH': + sample_name = mssm_lo_samples['bbH-LO'].replace('*',mass) + add_name_2 = bbh_add_name + ana.nodes[nodename].AddNode(ana.BasicFactory(key+add_name_2+mass+add_name, sample_name, plot, full_selection)) + + +# for CP signals +# need to multiply by the weights wt_cp_sm/ps/mm +def GenerateReweightedCPSignal(ana, add_name='', plot='', wt='', sel='', cat='', get_os=True): + weights = {"sm": "wt_cp_sm*wt_ph_nnlops", "ps": "wt_cp_ps*wt_ph_nnlops", "mm": "wt_cp_mm*wt_ph_nnlops", "flat": "wt_ph_nnlops"} + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + if options.gen_signal: + OSSS='1' + for key, sample in sm_samples.iteritems(): + non_cp = True + for name in weights: + if key.split("_")[1] == name: + non_cp=False + weight=wt+"*"+weights[name] + full_selection = BuildCutString(weight, sel, cat, OSSS) + name = key + + + sample_names=[] + if isinstance(sm_samples[key], (list,)): + for i in sm_samples[key]: + sample_names.append(i.replace('*',mass)) + else: sample_names = [sm_samples[key].replace('*',mass)] + ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) + #ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample, plot, full_selection)) + if non_cp: + full_selection = BuildCutString(wt, sel, cat, OSSS) + name = key + #ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample, plot, full_selection)) + + + sample_names=[] + if isinstance(sm_samples[key], (list,)): + for i in sm_samples[key]: + sample_names.append(i.replace('*',mass)) + else: sample_names = [sm_samples[key].replace('*',mass)] + ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) + + +def GenerateReweightedCPProdSignal(ana, add_name='', plot='', wt='', sel='', cat='', get_os=True): + weights = {"sm": "wt_cp_prod_sm", "ps": "wt_cp_prod_ps", "mm": "wt_cp_prod_mm"} + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + if options.gen_signal: + OSSS='1' + for key, sample in sm_samples.iteritems(): + non_cp = True + if 'ggH_sm' in key or 'ggH_ps' in key or 'ggH_mm' in key: non_cp=False + if not non_cp: + for name in weights: + tname = key.replace('*',mass)+add_name + if 'ggH_'+name not in tname: + tname=key.replace('*',mass)+'_reweightedto_'+name+add_name + #continue + weight=wt+"*"+weights[name]+'*wt_quarkmass*wt_mg_nnlops' + else: + weight=wt+'*wt_quarkmass*wt_mg_nnlops*(wt_cp_prod_sm!=0)' + non_cp=False + #weight=wt+"*"+weights[name]+'*wt_quarkmass*wt_mg_nnlops' + full_selection = BuildCutString(weight, sel, cat, OSSS) + name = key + + + sample_names=[] + if isinstance(sm_samples[key], (list,)): + for i in sm_samples[key]: + sample_names.append(i.replace('*',mass)) + else: sample_names = [sm_samples[key].replace('*',mass)] + ana.nodes[nodename].AddNode(ana.SummedFactory(tname, sample_names, plot, full_selection)) + if non_cp: + name = key + weight=wt + if 'ggh' in name.lower(): + if 'reweighted_' in name: weight+='*wt_quarkmass*wt_mg_nnlops' + else: weight+='*wt_ph_nnlops' + full_selection = BuildCutString(weight, sel, cat, OSSS) + sample_names=[] + if isinstance(sm_samples[key], (list,)): + for i in sm_samples[key]: + sample_names.append(i.replace('*',mass)) + else: sample_names = [sm_samples[key].replace('*',mass)] + ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) + + + + +def GenerateReWeightedMSSMSignal(ana, add_name='', plot='', ggh_masses = ['1000'], wt='', sel='', cat='', get_os=True): + weights = {'ggh_t_':'wt_ggh_t', 'ggh_b_':'wt_ggh_b', 'ggh_i_':'wt_ggh_i', 'ggH_t_':'wt_ggH_t', 'ggH_b_':'wt_ggH_b', 'ggH_i_':'wt_ggH_i', 'ggA_t_':'wt_ggA_t', 'ggA_b_':'wt_ggA_b', 'ggA_i_':'wt_ggA_i' } + #weights = {'ggH_t_':'wt_ggH_t', 'ggH_b_':'wt_ggH_b', 'ggH_i_':'wt_ggH_i', 'ggA_t_':'wt_ggA_t', 'ggA_b_':'wt_ggA_b', 'ggA_i_':'wt_ggA_i' } + if get_os: OSSS = 'os' + else: OSSS = '!os' + if options.gen_signal: OSSS='1' + for mass in ggh_masses: + if int(mass) == 95: + full_selection = BuildCutString(wt, sel, cat, OSSS) + sample_name = mssm_samples['ggH'].replace('*',mass) + name = 'ggH' + ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample_name, plot, full_selection)) + for name in weights: + weight=wt+"*"+weights[name] + full_selection = BuildCutString(weight, sel, cat, OSSS) + sample_name = mssm_samples['ggH'].replace('*',mass) + ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample_name, plot, full_selection)) + if options.syst_mssm_ggh and add_name=='': + for u in ['_scale', '_hdamp']: + weight_up=wt+"*"+weights[name].replace('ggH','ggh')+u+'_up' + weight_down=wt+"*"+weights[name].replace('ggH','ggh')+u+'_down' + full_selection_up = BuildCutString(weight_up, sel, cat, OSSS) + full_selection_down = BuildCutString(weight_down, sel, cat, OSSS) + if 'scale' in u: + syst_name_up='_QCDscale_ggH_REWEIGHTUp' + syst_name_down='_QCDscale_ggH_REWEIGHTDown' + else: + syst_name_up = '_Hdamp_%sREWEIGHTUp' % (name.replace('ggA','ggH').replace('ggh','ggH')) + syst_name_down = '_Hdamp_%sREWEIGHTDown' % (name.replace('ggA','ggH').replace('ggh','ggH')) + sample_name = mssm_samples['ggH'].replace('*',mass) + ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name+syst_name_up, sample_name, plot, full_selection_up)) + ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name+syst_name_down, sample_name, plot, full_selection_down)) + +def GenerateNLOMSSMSignal(ana, add_name='', plot='', ggh_nlo_masses = ['1000'], bbh_nlo_masses = ['1000'],wt='wt', sel='', cat='', doScales=True, doPDF=False, get_os=True,do_ggH=True, do_bbH=True): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + if options.gen_signal: OSSS='1' + weights = {'':'1'} + wt_noscale = wt + if doScales: weights = {'':'1','muR1muF2':'wt_mur1_muf2','muR1muF0.5':'wt_mur1_muf0p5','muR2muF1':'wt_mur2_muf1','muR2muF2':'wt_mur2_muf2','muR0.5muF1':'wt_mur0p5_muf1','muR0.5muF0.5':'wt_mur0p5_muf0p5'} + if doPDF: + for i in range(1,101): weights['PDF_'+str(i)] = 'wt_pdf_'+str(i) + weights['AlphaS_Up'] = 'wt_alphasup' + weights['AlphaS_Down'] = 'wt_alphasdown' + for weight in weights: + wt = weights[weight]+'*'+wt_noscale + full_selection = BuildCutString(wt, sel, cat, OSSS) + for key in mssm_nlo_samples: + if 'Qsh' in key and weight is not '': continue + if 'ggH' in key: + masses = ggh_nlo_masses + elif 'bbH' in key: + masses = bbh_nlo_masses + if masses is not None: + for mass in masses: + if key == 'ggH' and not do_ggH: + continue + if key == 'bbH' and not do_bbH: + continue + sample_name = mssm_nlo_samples[key].replace('*',mass) + ana.nodes[nodename].AddNode(ana.BasicFactory(key+mass+add_name+weight, sample_name, plot, full_selection)) + + +def GenerateHhhSignal(ana, add_name='', plot='', masses = ['700'], wt='', sel='', cat='', get_os=True): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS) + if masses is not None: + for mass in masses: + for key in Hhh_samples: + sample_name = Hhh_samples[key].replace('*',mass) + ana.nodes[nodename].AddNode(ana.BasicFactory(key+mass+add_name, sample_name, plot, full_selection)) + + +def GenerateVLQSignal(ana, add_name='', plot='', vlq_sig= [] ,wt='', sel='', cat='', get_os=True): + if get_os: + OSSS = 'os' + else: + OSSS = '!os' + full_selection = BuildCutString(wt, sel, cat, OSSS) + for key in vlq_samples: + if key in vlq_sig: + if isinstance(vlq_samples[key], (list,)): + sample_names = [] + for i in vlq_samples[key]: + sample_names.append(i) + else: sample_names = [vlq_samples[key]] + ana.nodes[nodename].AddNode(ana.SummedFactory(key+add_name, sample_names, plot, full_selection)) + + + +def PrintSummary(nodename='', data_strings=['data_obs'], add_names=''): + print '' + print '################### Summary ###################' + nodes = ana.nodes[nodename].SubNodes() + bkg_total = ufloat(0.000000001,0.000000001) + sig_total = ufloat(0.000000001,0.000000001) + for node in nodes: + if options.channel == 'em' and node.name == 'W': continue + if node.shape.rate.n == 0: per_err = 0 + else: per_err = node.shape.rate.s/node.shape.rate.n + print node.name.ljust(10) , ("%.2f" % node.shape.rate.n).ljust(10), '+/-'.ljust(5), ("%.2f" % node.shape.rate.s).ljust(7), "(%.4f)" % per_err + if True in [node.name.find(add_name) != -1 and add_name is not '' for add_name in add_names]: continue + if len(signal_samples) != 0: sig_samp_cond = [node.name.find(sig) != -1 for sig in signal_samples.keys()] + else: sig_samp_cond = [] + if True in sig_samp_cond and node.name.find("_SM"+options.add_sm_background) ==-1: + sig_total += node.shape.rate + elif node.name not in data_strings or (options.method == 18 and 'jetFakes' == node.name): + bkg_total += node.shape.rate + if bkg_total.n == 0: per_err = 0 + else: per_err = bkg_total.s/bkg_total.n + print 'Total bkg'.ljust(10) , ("%.2f" % bkg_total.n).ljust(10), '+/-'.ljust(5), ("%.2f" % bkg_total.s).ljust(7), "(%.4f)" % per_err + if sig_total.n == 0: per_err = 0 + else: per_err = sig_total.s/sig_total.n + print 'Total sig'.ljust(10) , ("%.2f" % sig_total.n).ljust(10), '+/-'.ljust(5), ("%.2f" % sig_total.s).ljust(7), "(%.4f)" % per_err + print '###############################################' + print '' + + + +def FixBins(ana,outfile='output.root'): + #Fix empty histograms + nodes = ana.nodes[nodename].SubNodes() + for node in nodes: + if 'data_obs' in node.name: continue + hist = outfile.Get(nodename+'/'+node.name) + outfile.cd(nodename) + #Fix empty histogram + if hist.Integral() == 0.0: + hist.SetBinContent(hist.GetNbinsX()/2, 0.00001) + hist.SetBinError(hist.GetNbinsX()/2, 0.00001) + hist.Write(hist.GetName(),ROOT.TObject.kWriteDelete) + outfile.cd() + + + +def NormFFSysts(ana,outfile='output.root'): + nominal_hist = outfile.Get(nodename+'/jetFakes') + if isinstance(nominal_hist,ROOT.TH2): nominal_scale = nominal_hist.Integral(-1,-1,-1,-1) + else: nominal_scale = nominal_hist.Integral(0,nominal_hist.GetNbinsX()+2) + directory = outfile.Get(nodename) + outfile.cd(nodename) + hists_to_add=[] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + hist = directory.Get(hist_name).Clone() + if not isinstance(hist,ROOT.TDirectory): + if 'jetFakes' not in hist_name: continue + if hist_name == 'jetFakes': continue + if isinstance(hist,ROOT.TH2): norm = nominal_scale/hist.Integral(-1,-1,-1,-1) + else: norm = nominal_scale/hist.Integral(0,hist.GetNbinsX()+2) + hist.Scale(norm) + norm_hist_name = hist_name + norm_hist_name = norm_hist_name.replace('jetFakes','jetFakes_norm') + hist.SetName(norm_hist_name) + hists_to_add.append(hist) + for hist in hists_to_add: hist.Write() + +def NormWFakeSysts(ana,outfile='output.root'): + nominal_hist = outfile.Get(nodename+'/W') + if isinstance(nominal_hist,ROOT.TH2): nominal_scale = nominal_hist.Integral(-1,-1,-1,-1) + else: nominal_scale = nominal_hist.Integral(-1,-1) + directory = outfile.Get(nodename) + outfile.cd(nodename) + hists_to_add=[] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + hist = directory.Get(hist_name) + if not isinstance(hist,ROOT.TDirectory): + if 'W' not in hist_name or options.syst_w_fake_rate not in hist_name or 'Wplus' in hist_name or 'Wminus' in hist_name or 'WH' in hist_name: continue + if isinstance(hist,ROOT.TH2): norm = nominal_scale/hist.Integral(-1,-1,-1,-1) + else: norm = nominal_scale/hist.Integral(-1,-1) + hist.Scale(norm) + hists_to_add.append(hist) + for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) + + +def NormEmbedToMC(ana,outfile='output.root'): + nominal_hist = outfile.Get(nodename+'/ZTT') + nominal_hist_embed = outfile.Get(nodename+'/EmbedZTT') + if isinstance(nominal_hist,ROOT.TH2): scale = nominal_hist.Integral(-1,-1,-1,-1)/nominal_hist_embed.Integral(-1,-1,-1,-1) + else: scale = nominal_hist.Integral(-1,-1)/nominal_hist_embed.Integral(-1,-1) + directory = outfile.Get(nodename) + outfile.cd(nodename) + hists_to_add=[] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + hist = directory.Get(hist_name) + if not isinstance(hist,ROOT.TDirectory): + if 'EmbedZTT' not in hist_name: continue + hist.Scale(scale) + hists_to_add.append(hist) + for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) + + + +def TTBarEmbeddingSyst(ana,outfile,template_name): + nominal_hist = outfile.Get(nodename+'/EmbedZTT') + shift_hist = outfile.Get(nodename+'/TTT_embed_syst') + shift_hist_2 = outfile.Get(nodename+'/VVT_embed_syst') + shift_hist.Add(shift_hist_2) + shift_hist.Scale(0.1) + up_hist = nominal_hist.Clone() + down_hist = nominal_hist.Clone() + up_hist.Add(shift_hist) + down_hist.Add(shift_hist,-1) + up_hist.SetName('EmbedZTT_'+template_name+'Up') + down_hist.SetName('EmbedZTT_'+template_name+'Down') + outfile.cd(nodename) + up_hist.Write() + down_hist.Write() + +def OverwriteNames(input_string,replace_dict={}): + for i in replace_dict: + input_string=input_string.replace(i,replace_dict[i]) + return input_string + +def PDFUncerts(nodename, infile): + def RMS(a): + from numpy import mean, sqrt, square + rms = sqrt(mean(square(a-mean(a)))) + return rms + outstring1='' + outstring2='' + + for mass in bbh_nlo_masses: + nominal_error=ROOT.Double() + nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) + sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' + evt_nom = ana.info[sample_name]['evt'] + pdf_variations_nosf=[] + pdf_variations=[] + pdf_variations_nosf.append(nominal) + pdf_variations.append(nominal) + for i in range(1,101): + wt = 'wt_pdf_'+str(i) + name = 'PDF_'+str(i) + val = outfile.Get(nodename+'/bbH'+mass+name).Integral(-1, -1) + pdf_variations_nosf.append(val) + evt_var = ana.info[sample_name]['evt_'+wt] + sf = evt_nom/evt_var + pdf_variations.append(val*sf) + pdf_uncert_nosf=RMS(pdf_variations_nosf)/nominal*100 + pdf_uncert=RMS(pdf_variations)/nominal*100 + #print pdf_uncert_nosf, pdf_uncert + + outstring1+=mass+',' + outstring2+=str(pdf_uncert)+',' + + nominal_error=ROOT.Double() + nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) + alphas_down_error_nosf=ROOT.Double() + alphas_down_nosf = outfile.Get(nodename+'/bbH'+mass+'AlphaS_Down').IntegralAndError(-1, -1,alphas_down_error_nosf) + alphas_up_error_nosf=ROOT.Double() + alphas_up_nosf = outfile.Get(nodename+'/bbH'+mass+'AlphaS_Up').IntegralAndError(-1, -1,alphas_up_error_nosf) + evt_var = ana.info[sample_name]['evt_wt_alphasdown'] + sf = evt_nom/evt_var + alphas_down=alphas_down_nosf*sf + alphas_down_error=alphas_down_error_nosf*sf + evt_var = ana.info[sample_name]['evt_wt_alphasup'] + sf = evt_nom/evt_var + alphas_up=alphas_up_nosf*sf + alphas_up_error=alphas_up_error_nosf*sf + + alphas_uncert = (alphas_up-alphas_down)/2/nominal + alphas_uncert_error = math.sqrt(alphas_down_error**2+alphas_up_error**2)/(alphas_up-alphas_down)*alphas_uncert + #(alphas_up_nosf-alphas_down_nosf)/2/nominal + #print alphas_uncert*100, '\\% $\\pm$', alphas_uncert_error*100,'\\%' + print outstring1 + print outstring2 + + +def DONLOUncerts(nodename,infile): + def LargestDiff(nominal,scales_shifted): + largest_diff=0 + value = nominal + for i in scales_shifted: + diff = abs(scales_shifted[i] - nominal) + if diff > largest_diff: + largest_diff = diff + value = scales_shifted[i] + return value + if not options.bbh_nlo_masses: return + outstring='%'+options.channel+' '+options.datacard+'\n' + if options.nlo_qsh: outstring+='\\begin{table}[H]\n\\centering\n\\resizebox{\\textwidth}{!}{\n\\begin{tabular}{ |c|c|c| }\n\\hline\nSignal Mass (GeV) & Qsh Uncertainty & Qsh Uncertainty (*)' + else: outstring+='\\begin{table}[H]\n\\centering\n\\resizebox{\\textwidth}{!}{\n\\begin{tabular}{ |c|c|c| }\n\\hline\nSignal Mass (GeV) & Scale Uncertainty & Scale Uncertainty (*)' + outstring += '\\\\\n\\hline\n' + #outstring2='{' + #outstring3='{' + #outstring4='{' + for mass in bbh_nlo_masses: + nominal_error=ROOT.Double() + nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) + samples = {'bbH*':'', 'bbH*muR0.5muF0.5':'wt_mur0p5_muf0p5', 'bbH*muR1muF0.5':'wt_mur1_muf0p5', 'bbH*muR0.5muF1':'wt_mur0p5_muf1', 'bbH*muR2muF2':'wt_mur2_muf2', 'bbH*muR2muF1':'wt_mur2_muf1', 'bbH*muR1muF2':'wt_mur1_muf2'} + qsh_down_error=ROOT.Double() + qsh_up_error=ROOT.Double() + if options.nlo_qsh: + qsh_down = outfile.Get(nodename+'/bbH-QshDown'+mass).IntegralAndError(-1, -1,qsh_down_error) + qsh_up = outfile.Get(nodename+'/bbH-QshUp'+mass).IntegralAndError(-1, -1,qsh_up_error) + qsh_uncert_1=(max(nominal,qsh_down,qsh_up) - min(nominal,qsh_down,qsh_up))/2 + up_error = nominal_error + down_error = nominal_error + if max(nominal,qsh_down,qsh_up) is qsh_up: up_error = qsh_up_error + if max(nominal,qsh_down,qsh_up) is qsh_down: up_error = qsh_down_error + if min(nominal,qsh_down,qsh_up) is qsh_up: down_error = qsh_up_error + if min(nominal,qsh_down,qsh_up) is qsh_down: down_error = qsh_down_error + qsh_error_1 = math.sqrt(up_error**2 + down_error**2) + qsh_uncert_2 = (qsh_up - qsh_down)/2 + qsh_error_2 = math.sqrt(qsh_up_error**2 + qsh_down_error**2) + scale_max = nominal + scale_min = nominal + scale_nosf_max = nominal + scale_nosf_min = nominal + up_dic = {} + down_dic = {} + for samp in samples: + acceptance_error = ROOT.Double() + acceptance = outfile.Get(nodename+'/'+samp.replace('*',mass)).IntegralAndError(-1, -1,acceptance_error) + if samp is 'bbH*': sf = 1.0 + else: + sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' + evt_nom = ana.info[sample_name]['evt'] + evt_var = ana.info[sample_name]['evt_'+samples[samp]] + sf = evt_nom/evt_var + acceptance_nosf = acceptance + acceptance*=sf + #if samples[samp] in ['wt_mur0p5_muf0p5', 'wt_mur1_muf0p5', 'wt_mur0p5_muf1']: down_dic[samples[samp]] = acceptance + #if samples[samp] in ['wt_mur2_muf2','wt_mur2_muf1','wt_mur1_muf2']: up_dic[samples[samp]] = acceptance + if samples[samp] in ['wt_mur0p5_muf0p5']: + down_dic[samples[samp]] = [acceptance,acceptance_error] + if samples[samp] in ['wt_mur2_muf2']: up_dic[samples[samp]] = [acceptance,acceptance_error] + if acceptance > scale_max: + scale_max = acceptance + up_error = acceptance_error + if acceptance < scale_min: + scale_min = acceptance + down_error = acceptance_error + if acceptance_nosf > scale_nosf_max: scale_nosf_max = acceptance_nosf + if acceptance_nosf < scale_nosf_min: scale_nosf_min = acceptance_nosf + #up_nom = LargestDiff(nominal,up_dic) + #down_nom = LargestDiff(nominal,down_dic) + up_nom = up_dic['wt_mur2_muf2'][0] + down_nom = down_dic['wt_mur0p5_muf0p5'][0] + uncert = (scale_max-scale_min)/2 + uncert_error = math.sqrt(up_error**2+down_error**2)/(scale_max-scale_min)*uncert + uncert_nosf = (scale_nosf_max-scale_nosf_min)/2 + uncert_alt_method = (up_nom-down_nom)/2 + uncert_alt_error = math.sqrt(up_dic['wt_mur2_muf2'][1]**2 + down_dic['wt_mur0p5_muf0p5'][1]**2)/(up_nom-down_nom) *uncert_alt_method + pythia_error=ROOT.Double() + pythia_yield = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,pythia_error) + outstring +=mass#+ ' & '+ str(round(pythia_yield,1))+' $\pm$ '+str(round(pythia_error,1))+ ' & '+ str(round(nominal,1))+' $\pm$ '+str(round(nominal_error,1))+ '('+str(round((pythia_yield-nominal)*100/pythia_yield,2))+' \%)' + ' & '+ str(round(uncert_nosf/nominal,2)) + ' & '+ str(round(uncert/nominal,2))+ ' & '+ str(round(uncert_alt_method/nominal,2)) + if options.nlo_qsh: + outstring+=' & '+ str(round(100*qsh_uncert_1/nominal,1))+' $\pm$ '+str(round(100*qsh_error_1/nominal,1))+' & '+ str(round(100*qsh_uncert_2/nominal,1))+' $\pm$ '+str(round(100*qsh_error_2/nominal,1))+'\\\\\n' + else: + outstring+=' & '+ str(round(100*uncert/nominal,1))+'\\% $\\pm$ '+ str(round(100*uncert_error/nominal,1)) +'\\% & '+ str(round(100*uncert_alt_method/nominal,1))+'\\% $\\pm$ '+str(round(100*uncert_alt_error/nominal,1)) +'\\% \\\\\n' + #outstring2 +=str(round(100*uncert/nominal,1))+',' + #outstring3 +=str(round(100*uncert_error/nominal,1))+',' + #outstring4+=mass+',' + outstring+='\\hline\n\\end{tabular}}\n\\end{table}' + print outstring + #print outstring2 + #print outstring3 + #print outstring4 + +def ScaleUncertBand(nodename='',outfile='output.root',NormScales=True): + hist_names=['bbH*muR0.5muF0.5','bbH*muR1muF0.5','bbH*muR0.5muF1','bbH*muR2muF1','bbH*muR1muF2','bbH*muR2muF2'] + mass = '100' + if options.draw_signal_mass: mass = options.draw_signal_mass + hists=[] + for hist_name in hist_names: + sf = 1.0 + if NormScales: + sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' + evt_nom = ana.info[sample_name]['evt'] + evt_var = ana.info[sample_name]['evt_'+hist_name.replace('bbH*','wt_').replace('muF','_muf').replace('muR','mur').replace('0.5','0p5')] + sf = evt_nom/evt_var + hist_name=hist_name.replace('*',mass) + hist = outfile.Get(nodename+'/'+hist_name).Clone() + if NormScales: hist.Scale(sf) + hists.append(hist) + nom_hist = outfile.Get(nodename+'/bbH'+mass) + up_hist = nom_hist.Clone() + down_hist = nom_hist.Clone() + up_hist.SetName('ScaleUp') + down_hist.SetName('ScaleDown') + for i in range (1,nom_hist.GetNbinsX()+2): + for hist in hists: + max_content = up_hist.GetBinContent(i) + min_content = down_hist.GetBinContent(i) + content = hist.GetBinContent(i) + if content > max_content: up_hist.SetBinContent(i,content) + if content < min_content: down_hist.SetBinContent(i,content) + outfile.cd(nodename) + up_hist.Write() + down_hist.Write() + outfile.cd() + + +def DYUncertBand(outfile='output.root',ScaleToData=True): + bkg_hist = outfile.Get(nodename+'/total_bkg') + nominal_hist = outfile.Get(nodename+'/ZLL') + up_hist = outfile.Get(nodename+'/total_bkg').Clone() + down_hist = outfile.Get(nodename+'/total_bkg').Clone() + up_hist.SetName('total_bkg_up') + down_hist.SetName('total_bkg_down') + shifts=['_ES', '_TT', '_Stat0', '_Stat40', '_Stat80'] + for i in range(1,nominal_hist.GetNbinsX()+2): + nom_content = nominal_hist.GetBinContent(i) + bkg_content = bkg_hist.GetBinContent(i) + uncert=0 + for shift in shifts: + shift_hist_up = outfile.Get(nodename+'/ZLL'+shift+'Up') + shift_hist_down = outfile.Get(nodename+'/ZLL'+shift+'Down') + up = abs(shift_hist_up.GetBinContent(i) - nom_content) + down = abs(shift_hist_down.GetBinContent(i) - nom_content) + uncert=math.sqrt(max([up,down])**2+uncert**2) + up_hist.SetBinContent(i, bkg_content+uncert) + down_hist.SetBinContent(i, bkg_content-uncert) + outfile.cd(nodename) + up_hist.Write() + down_hist.Write() + outfile.cd() + if ScaleToData: + data_hist=outfile.Get(nodename+'/data_obs') + data_total=data_hist.Integral(-1,-1) + bkg_total=bkg_hist.Integral(-1,-1) + data_hist.Scale(bkg_total/data_total) + outfile.cd(nodename) + data_hist.Write() + outfile.cd() + +def GetTotals(ana,add_name="",outfile='outfile.root'): + # add histograms to get totals for backgrounds split into real/fake taus and make a total backgrounds histogram + outfile.cd(nodename) + nodes = ana.nodes[nodename].SubNodes() + nodenames=[] + for node in nodes: nodenames.append(node.name) + # for i in ['TT', 'VV', 'Z']: + # j = 'T' + # outname = i+add_name + # first_hist=True + # if options.channel == 'em' and i is 'Z': + # if first_hist and 'ZLL'+add_name in nodenames: + # sum_hist = ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone() + # first_hist=False + # elif 'ZLL'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone()) + # if first_hist and'ZTT'+add_name in nodenames: + # sum_hist = ana.nodes[nodename].nodes['ZTT'+add_name].shape.hist.Clone() + # first_hist=False + # elif 'ZTT'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZTT'+add_name].shape.hist.Clone()) + # if not first_hist: + # sum_hist.SetName(outname) + # sum_hist.Write() + # elif (options.channel == 'zee' or options.channel == 'zmm') and i is 'Z': + # if first_hist and 'ZLL'+add_name in nodenames: + # sum_hist = ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone() + # first_hist=False + # elif 'ZLL'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone()) + # if not first_hist: + # sum_hist.SetName(outname) + # sum_hist.Write() + # else: + # if i is 'Z': + # outname = 'ZLL'+add_name + # j = 'L' + # if i+'J' or i+j in [node.name for node in nodes]: + # if first_hist and i+'J'+add_name in nodenames: + # sum_hist = ana.nodes[nodename].nodes[i+'J'+add_name].shape.hist.Clone() + # first_hist=False + # elif i+'J'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes[i+'J'+add_name].shape.hist.Clone()) + # if first_hist and i+j+add_name in nodenames: + # sum_hist = ana.nodes[nodename].nodes[i+j+add_name].shape.hist.Clone() + # first_hist=False + # elif i+j+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes[i+j+add_name].shape.hist.Clone()) + # if not first_hist: + # sum_hist.SetName(outname) + # sum_hist.Write() + first_hist=True + for node in nodes: + if len(signal_samples) != 0: sig_samp_cond = [node.name.find(sig) != -1 for sig in signal_samples.keys()] + else: sig_samp_cond = [] + if True not in sig_samp_cond and node.name != 'data_obs' and node.name.find("_SM"+options.add_sm_background) ==-1 and not node.name.endswith('Up') and not node.name.endswith('Down'): + if options.embedding and node.name.startswith('ZTT'): continue + if 'embed_syst' in node.name: continue + if options.method == 18 and 'jetFakes' == node.name: continue + if options.channel == 'em' and node.name == 'W': continue + if add_name not in node.name: continue + if first_hist: + total_bkg = ana.nodes[nodename].nodes[node.name].shape.hist.Clone() + first_hist=False + else: total_bkg.Add(ana.nodes[nodename].nodes[node.name].shape.hist.Clone()) + if not first_hist: + total_bkg.SetName('total_bkg'+add_name) + total_bkg.Write() + outfile.cd() + + #hist = outfile.Get(nodename+'/total_bkg') + #qcd_hist = outfile.Get(nodename+'/QCD') + #ztt_hist = outfile.Get(nodename+'/ZTT') + #tot_sub = total_bkg.Integral(-1,-1) - qcd_hist.Integral(-1,-1) - ztt_hist.Integral(-1,-1) + #out_str='' + #hist_names = ['TT','VV','W','ZLL','EmbedZTT'] + #for name in hist_names: + # hist = outfile.Get(nodename+'/'+name) + # frac = hist.Integral(-1,-1)/tot_sub + # out_str+='%s = %.2f, ' % (name, frac) + #print out_str + + + +def CompareShapes(compare_w_shapes, compare_qcd_shapes): + if compare_w_shapes: + nominal_hist = outfile.Get(nodename+'/W') + nominal_scale = nominal_hist.Integral(0,nominal_hist.GetNbinsX()+2) + directory = outfile.Get(nodename) + outfile.cd(nodename) + shape_hist = outfile.Get(nodename+'/W_shape') + shape_scale = shape_hist.Integral(0,shape_hist.GetNbinsX()+2) + shape_hist.Scale(nominal_scale/shape_scale) + shape_hist.Write() + if compare_qcd_shapes: + nominal_hist = outfile.Get(nodename+'/QCD') + nominal_scale = nominal_hist.Integral() + directory = outfile.Get(nodename) + outfile.cd(nodename) + shape_hist = outfile.Get(nodename+'/QCD_shape') + shape_scale = shape_hist.Integral() + shape_hist.Scale(nominal_scale/shape_scale) + shape_hist.Write() + +def AppendNameToSamples(samples=[],name_to_add=None): + if name_to_add is None or name_to_add is '': return samples + elif type(samples) is dict: + new_samples = {} + for key in samples: new_samples[key] = samples[key]+name_to_add + return new_samples + else: + new_samples = [] + for sample in samples: new_samples.append(sample+name_to_add) + return new_samples + +def RunPlotting(ana, cat='',cat_data='', sel='', add_name='', wt='wt', do_data=True, samples_to_skip=[], outfile='output.root',ff_syst_weight=None): + doTTJ = 'TTJ' not in samples_to_skip + doTTT = 'TTT' not in samples_to_skip + doVVJ = 'VVJ' not in samples_to_skip + doVVT = 'VVT' not in samples_to_skip + doZL = 'ZL' not in samples_to_skip + doZJ = 'ZJ' not in samples_to_skip + + zll_samples=list(ztt_samples) + if options.analysis in ['cpdecay','cpprod','mssmrun2','vlq']: zll_samples+=ewkz_samples + + + # produce template for observed data + if do_data: + if options.do_ss: + OSSS = '!os' + else: + OSSS = 'os' + weight='wt' + if options.add_wt : weight+='*'+options.add_wt + full_selection = BuildCutString(weight, sel, cat_data, OSSS) + ana.nodes[nodename].AddNode(ana.SummedFactory('data_obs', data_samples, plot_unmodified, full_selection)) + + # produce templates for backgrounds + if options.method in [17] and options.channel != "em": + doVVJ=False + doTTJ=False + + + if 'jetFakes' not in samples_to_skip: + GenerateFakeTaus(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, options.cat,not options.do_ss,ff_syst_weight) + #if options.channel == 'tt': + + # use existing methods to calculate background due to non-fake taus + add_fake_factor_selection = "gen_match_2<6" + if options.channel == "tt": add_fake_factor_selection = "gen_match_1<6 && gen_match_2<6" + residual_cat=cat+"&&"+add_fake_factor_selection + if 'EmbedZTT' not in samples_to_skip and options.embedding: + GenerateEmbedded(ana, add_name, embed_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) + #if do_data: GenerateZTT(ana, add_name, ztt_samples+top_samples+vv_samples+ewkz_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) + #if 'ZTT' not in samples_to_skip and not options.embedding: + if 'ZTT' not in samples_to_skip: + GenerateZTT(ana, add_name, ztt_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) + if 'ZLL' not in samples_to_skip: + GenerateZLL(ana, add_name, zll_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss,doZL,False) + if 'TT' not in samples_to_skip: + GenerateTop(ana, add_name, top_samples, plot, wt, sel, residual_cat, top_sels, not options.do_ss, doTTT, doTTJ) + if 'VV' not in samples_to_skip: + GenerateVV(ana, add_name, vv_samples, plot, wt, sel, residual_cat, vv_sels, not options.do_ss, doVVT, doVVJ) + #if 'EWKZ' not in samples_to_skip and options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'tauid2016','cpsummer17','tauid2017','cp18','mvadm2016']: + #GenerateEWKZ(ana, add_name, ewkz_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) + #if 'ggH_hww' not in samples_to_skip and 'qqH_hww' not in samples_to_skip and options.analysis == 'cpprod': + # GenerateHWW(ana, add_name, gghww_samples, qqhww_samples, plot, wt, sel, cat, not options.do_ss, True, True) + if 'W' not in samples_to_skip and options.channel=='tt' and options.analysis in ['cpprod','cpdecay','mssmrun2','vlq'] and 'VV' not in samples_to_skip and 'ZTT' not in samples_to_skip and not options.ml_ff: + GenerateW(ana, 'fakes'+add_name, ztt_samples+vv_samples+wjets_samples+ewkz_samples+top_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel+'&&gen_match_1!=6&&gen_match_2==6', cat, cat_data, 8, qcd_os_ss_ratio, not options.do_ss) + if options.channel in ['mt','et']: + # need to add back the other fake components when testing the FF validations + if options.w_ff_closure and not options.ml_ff: + if 'ZLL' not in samples_to_skip: + GenerateZLL(ana, add_name+'_res', ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss,False,True) + if 'TT' not in samples_to_skip: + GenerateTop(ana, add_name+'_res', top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, False, True) + if 'VV' not in samples_to_skip: + GenerateVV(ana, add_name+'_res', vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, False, True) + if 'QCD' not in samples_to_skip: + GenerateQCD(ana, add_name+'_res', data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 12, 1.1, not options.do_ss,wshift) + if options.qcd_ff_closure and not options.ml_ff: + if 'ZLL' not in samples_to_skip: + GenerateZLL(ana, add_name+'_res', ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss,False,True) + if 'TT' not in samples_to_skip: + GenerateTop(ana, add_name+'_res', top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, False, True) + if 'VV' not in samples_to_skip: + GenerateVV(ana, add_name+'_res', vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, False, True) + if 'W' not in samples_to_skip: + GenerateW(ana, add_name+'_res', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 8, qcd_os_ss_ratio, not options.do_ss) + + + else: + method = options.method + if options.method == 18: + + + if 'jetFakes' not in samples_to_skip: + GenerateFakeTaus(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, options.cat,not options.do_ss,ff_syst_weight) + if options.channel == 'tt': method = 8 + elif options.cat == "btag_loosemt" or options.cat == "btag_tight": method = 16 + elif options.channel == 'et' or options.channel == 'mt': method = 12 + if 'EmbedZTT' not in samples_to_skip and options.embedding and options.channel != 'zmm' and options.channel != 'zee': + GenerateEmbedded(ana, add_name, embed_samples, plot, wt, sel, cat, z_sels, not options.do_ss) + if options.cat in ['pass','fail']: + cat_pass = '('+cats['pass']+')*('+cats['baseline']+')' + cat_fail = '('+cats['fail']+')*('+cats['baseline']+')' + GenerateEmbedded(ana, '_pass'+add_name, embed_samples, plot, wt, sel, cat_pass, z_sels, not options.do_ss) + GenerateEmbedded(ana, '_fail'+add_name, embed_samples, plot, wt, sel, cat_fail, z_sels, not options.do_ss) + if 'ZTT' not in samples_to_skip and not options.embedding: + GenerateZTT(ana, add_name, ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss) + if 'ZTT' not in samples_to_skip and options.embedding and 'VV' not in samples_to_skip and 'TT' not in samples_to_skip: + GenerateZTT(ana, add_name, ztt_samples+top_samples+vv_samples+ewkz_samples, plot, wt, sel, cat, z_sels, not options.do_ss) + if 'ZLL' not in samples_to_skip: + GenerateZLL(ana, add_name, zll_samples, plot, wt, sel, cat, z_sels, not options.do_ss,doZL,doZJ) + if options.embedding and options.channel in ['zmm','zee'] and 'EmbedZLL' not in samples_to_skip: GenerateZLEmbedded(ana, add_name, embed_samples, plot, wt, sel, cat, z_sels, not options.do_ss) + if 'TT' not in samples_to_skip: + GenerateTop(ana, add_name, top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, doTTT, doTTJ) + if 'mvadm' in options.cat: + cat_mvarho = '('+cats['mvadm_rho']+')*('+cats['baseline']+')' + cat_mvaa1 = '('+cats['mvadm_a1']+')*('+cats['baseline']+')' + cat_mvapi = '('+cats['mvadm_pi']+')*('+cats['baseline']+')' + cat_mvanotrho = '('+cats['mvadm_notrho']+')*('+cats['baseline']+')' + GenerateTop(ana, '_mvarho'+add_name, top_samples, plot, wt, sel, cat_mvarho, top_sels, not options.do_ss, doTTT, False) + GenerateTop(ana, '_mvaa1'+add_name, top_samples, plot, wt, sel, cat_mvaa1, top_sels, not options.do_ss, doTTT, False) + GenerateTop(ana, '_mvapi'+add_name, top_samples, plot, wt, sel, cat_mvapi, top_sels, not options.do_ss, doTTT, False) + GenerateTop(ana, '_mvanotrho'+add_name, top_samples, plot, wt, sel, cat_mvanotrho, top_sels, not options.do_ss, doTTT, False) + if 'VV' not in samples_to_skip: + GenerateVV(ana, add_name, vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, doVVT, doVVJ) + if 'mvadm' in options.cat: + cat_mvarho = '('+cats['mvadm_rho']+')*('+cats['baseline']+')' + cat_mvaa1 = '('+cats['mvadm_a1']+')*('+cats['baseline']+')' + cat_mvapi = '('+cats['mvadm_pi']+')*('+cats['baseline']+')' + cat_mvanotrho = '('+cats['mvadm_notrho']+')*('+cats['baseline']+')' + GenerateVV(ana, '_mvarho'+add_name, vv_samples, plot, wt, sel, cat_mvarho, vv_sels, not options.do_ss, doVVT, False) + GenerateVV(ana, '_mvaa1'+add_name, vv_samples, plot, wt, sel, cat_mvaa1, vv_sels, not options.do_ss, doVVT, False) + GenerateVV(ana, '_mvapi'+add_name, vv_samples, plot, wt, sel, cat_mvapi, vv_sels, not options.do_ss, doVVT, False) + GenerateVV(ana, '_mvanotrho'+add_name, vv_samples, plot, wt, sel, cat_mvanotrho, vv_sels, not options.do_ss, doVVT, False) + if 'W' not in samples_to_skip: + sel_mod=sel + if options.method==0 and True in ['baseline_aisotau1' in x for x in options.set_alias] and options.channel=='tt': sel_mod =sel+'&&(gen_match_1==6)' + if options.method==0 and True in ['baseline_aisotau2' in x for x in options.set_alias] and options.channel=='tt': sel_mod =sel+'&&(gen_match_2==6)' + GenerateW(ana, add_name, wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel_mod, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss) + if 'QCD' not in samples_to_skip: + GenerateQCD(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) + #if 'EWKZ' not in samples_to_skip and options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'tauid2016','cpsummer17','tauid2017','cp18','mvadm2016'] and options.method!=0: + # GenerateEWKZ(ana, add_name, ewkz_samples, plot, wt, sel, cat, z_sels, not options.do_ss) + #if 'ggH_hww' not in samples_to_skip and 'qqH_hww' not in samples_to_skip and options.analysis in ['cpprod','mssmrun2'] and options.channel == 'em': + # GenerateHWW(ana, add_name, gghww_samples, qqhww_samples, plot, wt, sel, cat, not options.do_ss, True, True) + if options.method==0 and options.channel=='tt': + sel_mod = sel + if True in ['baseline_aisotau1' in x for x in options.set_alias]: sel_mod =sel+'&&(gen_match_1!=6)' + if True in ['baseline_aisotau2' in x for x in options.set_alias]: sel_mod =sel+'&&(gen_match_2!=6)' + GenerateW(ana, add_name+'_realextra', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel_mod, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss) + # used to plot em QCD uncerts + #GenerateQCD(ana, '_shapeup', data_samples, plot, plot_unmodified, wt+'*wt_em_qcd_shapeup', sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) + #GenerateQCD(ana, '_shapedown', data_samples, plot, plot_unmodified, wt+'*wt_em_qcd_shapedown', sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) + + if compare_w_shapes: + cat_relax=cats['w_shape_comp'] + GenerateW(ana, '_shape', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel, cat_relax, cats_unmodified['w_shape_comp'], 8, qcd_os_ss_ratio, not options.do_ss) + if compare_qcd_shapes: + if options.channel == 'em': + GenerateQCD(ana, '_shape', data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 19, qcd_os_ss_ratio, not options.do_ss,wshift) + else: + cat_relax=cats['qcd_shape_comp'] + GenerateQCD(ana, '_shape', data_samples, plot, plot_unmodified, wt, sel, cat_relax,cats_unmodified['qcd_shape_comp'], method, qcd_os_ss_ratio, not options.do_ss) + + if 'signal' not in samples_to_skip: + if options.analysis in ['sm','cpprod','cpdecay']: + procs=[] + for proc in sm_samples: + if True not in [samp in proc for samp in samples_to_skip]: procs.append(proc) + if options.analysis == 'cpdecay' and options.sm_masses!="": GenerateReweightedCPSignal(ana, add_name, plot, wt, sel, cat, not options.do_ss) + elif options.analysis == 'cpprod' and options.sm_masses!="": GenerateReweightedCPProdSignal(ana, add_name, plot, wt, sel, cat, not options.do_ss) + else: GenerateSMSignal(ana, add_name, plot, sm_masses, wt, sel, cat, not options.do_ss,processes=procs) + elif options.analysis in ['mssm','mssmrun2'] and (options.ggh_masses != "" or options.bbh_masses != "" or options.ggh_masses_powheg != "" or options.bbh_masses_powheg != "") : + bbh_add_name = '' + if options.bbh_nlo_masses and not options.bbh_masses_powheg: bbh_add_name = '-LO' + #GenerateMSSMSignal(ana, add_name, bbh_add_name, plot, ggh_masses, bbh_masses, wt, sel, cat, not options.do_ss) + GenerateMSSMSignal(ana, add_name, bbh_add_name, plot, [], bbh_masses, wt, sel, cat, not options.do_ss) + if options.add_sm_background: + GenerateSMSignal(ana, add_name, plot, ['125'], wt, sel, cat, not options.do_ss, options.add_sm_background) + elif options.analysis == 'Hhh': + GenerateHhhSignal(ana, add_name, plot, ggh_masses, wt, sel, cat, not options.do_ss) + elif options.analysis == 'vlq': + GenerateVLQSignal(ana, add_name, plot, options.vlq_sig, wt, sel, cat, not options.do_ss) + if options.analysis in ['mssm','mssmrun2'] and options.bbh_nlo_masses != "": + GenerateNLOMSSMSignal(ana, add_name, plot, [''], bbh_nlo_masses, wt, sel, cat, options.doNLOScales, options.doPDF, not options.do_ss) + if options.analysis in ['mssm','mssmrun2'] and options.doMSSMReWeighting: + GenerateReWeightedMSSMSignal(ana, add_name, plot, ggh_masses, wt, sel, cat, not options.do_ss) + + if options.syst_embedding_tt and options.embedding and systematic == 'default': + GenerateTop(ana, '_embed_syst', top_samples, plot, wt, sel, cat, top_sels_embed, not options.do_ss, True, False) + GenerateVV(ana, '_embed_syst', vv_samples, plot, wt, sel, cat, top_sels_embed, not options.do_ss, True, False) + + +def Get1DBinNumFrom2D(h2d,xbin,ybin): + Nxbins = h2d.GetNbinsX() + return (ybin-1)*Nxbins + xbin -1 + + +def Get1DBinNumFrom3D(h3d,xbin,ybin,zbin): + Nxbins = h3d.GetNbinsX() + Nybins = h3d.GetNbinsY() + return (zbin-1)*Nxbins*Nybins + (ybin-1)*Nxbins + xbin -1 + + +def UnrollHist2D(h2d,inc_y_of=True): + # inc_y_of = True includes the y over-flow bins + if inc_y_of: n = 1 + else: n = 0 + Nbins = (h2d.GetNbinsY()+n)*(h2d.GetNbinsX()) + h1d = ROOT.TH1D(h2d.GetName(), '', Nbins, 0, Nbins) + for i in range(1,h2d.GetNbinsX()+1): + for j in range(1,h2d.GetNbinsY()+1+n): + glob_bin = Get1DBinNumFrom2D(h2d,i,j) + content = h2d.GetBinContent(i,j) + error = h2d.GetBinError(i,j) + h1d.SetBinContent(glob_bin+1,content) + h1d.SetBinError(glob_bin+1,error) + #if 'sjdphi' in plot: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) + #else: + # h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.0f-%.0f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) + #if 'sdphi' in options.var: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) + #h1d.LabelsOption('v','X') + return h1d + + +def UnrollHist3D(h3d,inc_y_of=False,inc_z_of=True): + if inc_y_of: ny = 1 + else: ny = 0 + if inc_z_of: nz = 1 + else: nz = 0 + + Nbins = (h3d.GetNbinsZ()+nz)*(h3d.GetNbinsY()+ny)*(h3d.GetNbinsX()) + h1d = ROOT.TH1D(h3d.GetName(), '', Nbins, 0, Nbins) + for i in range(1,h3d.GetNbinsX()+1): + for j in range(1,h3d.GetNbinsY()+1+ny): + for k in range(1,h3d.GetNbinsZ()+1+nz): + glob_bin = Get1DBinNumFrom3D(h3d,i,j,k) + content = h3d.GetBinContent(i,j,k) + error = h3d.GetBinError(i,j,k) + h1d.SetBinContent(glob_bin+1,content) + h1d.SetBinError(glob_bin+1,error) + #if 'sjdphi' in plot: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) + #else: + # h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.0f-%.0f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) + # if 'sdphi' in options.var: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) + #h1d.LabelsOption('v','X') + return h1d + + +def NormSignals(outfile,add_name): + # When adding signal samples to the data-card we want to scale all XS to 1pb - correct XS times BR is then applied at combine harvestor level + samples_to_skip = add_names_dict[add_name] + if 'signal' not in samples_to_skip: + outfile.cd(nodename) + if options.analysis in ['sm','cpprod','cpdecay'] or options.add_sm_background: + if options.analysis == "sm": + masses = sm_masses + else: + masses = [options.add_sm_background] + for samp in sm_samples: + if options.analysis == "sm": + samp_name = samp + else: + samp_name = samp+"_SM" + if masses is not None: + for mass in masses: + if isinstance(sm_samples[samp], (list,)): xs = ana.info[sm_samples[samp][0].replace('*',mass)]['xs'] + else: xs = ana.info[sm_samples[samp].replace('*',mass)]['xs'] + if xs == 1.: continue + sf = 1.0/xs + if not outfile.GetDirectory(nodename).GetListOfKeys().Contains(samp_name+mass+add_name): continue + sm_hist = outfile.Get(nodename+'/'+samp_name+mass+add_name) + sm_hist.Scale(sf) + sm_hist.Write("",ROOT.TObject.kOverwrite) + if options.analysis in ["mssm",'mssmrun2']: + for samp in mssm_samples: + if samp == 'ggH': + masses = ggh_masses + elif samp == 'bbH' and not options.bbh_nlo_masses: + masses = bbh_masses + elif 'bbH' in samp: + masses = bbh_nlo_masses + if masses is not None: + for mass in masses: + xs = ana.info[mssm_samples[samp].replace('*',mass)]['xs'] + if xs == 1.: continue + sf = 1.0/xs + if sf == 1.0: continue + mssm_hist = outfile.Get(nodename+'/'+samp+mass+add_name) + mssm_hist.Scale(sf) + mssm_hist.Write("",ROOT.TObject.kOverwrite) + if options.doMSSMReWeighting and samp == 'ggH': + re_weighted_names = ['ggh_t_','ggh_b_','ggh_i_','ggH_t_','ggH_b_','ggH_i_','ggA_t_','ggA_b_','ggA_i_'] + #re_weighted_names = ['ggH_t_','ggH_b_','ggH_i_','ggA_t_','ggA_b_','ggA_i_'] + for name in re_weighted_names: + mssm_hist = outfile.Get(nodename+'/'+name+mass+add_name) + #mssm_hist = ana.nodes[nodename].nodes[name+mass+add_name].shape.hist + mssm_hist.Scale(sf) + mssm_hist.Write("",ROOT.TObject.kOverwrite) + if options.analysis == "Hhh": + for samp in Hhh_samples: + masses = ggh_masses + if masses is not None: + for mass in masses: + xs = ana.info[Hhh_samples[samp].replace('*',mass)]['xs'] + if xs == 1.: continue + sf = 1.0/xs + mssm_hist = outfile.Get(nodename+'/'+samp+mass+add_name) + mssm_hist.Scale(sf) + mssm_hist.Write("",ROOT.TObject.kOverwrite) + if options.analysis == "vlq": + for samp in vlq_samples: + xs = ana.info[vlq_samples[samp]]['xs'] + if xs == 1.: continue + sf = 1.0/xs + vlq_hist = outfile.Get(nodename+'/'+samp+add_name) + vlq_hist.Scale(sf) + vlq_hist.Write("",ROOT.TObject.kOverwrite) + outfile.cd() + + +def RenameMSSMrun2Datacards(outfile): + chan = options.channel + renames = { + 'CMS_eff_trigger_' : 'CMS_eff_trigger_emb_', + 'CMS_eff_xtrigger_l_' : 'CMS_eff_xtrigger_l_emb_', + 'CMS_eff_xtrigger_t_': 'CMS_eff_xtrigger_t_emb_', + 'CMS_eff_t_': 'CMS_eff_t_emb_', + 'CMS_scale_e' : 'CMS_scale_e_emb', + 'CMS_scale_t_' : 'CMS_scale_t_emb_', + 'CMS_eff_trigger_single_t_':'CMS_eff_trigger_single_t_emb_', + 'scale_embed_met_' : 'scale_embed_met_%s_' % chan, + } + directory = outfile.Get(nodename) + + + # count number of directories + count = 0 + print nodename + print directory + print outfile + for key in directory.GetListOfKeys(): + count += 1 + print key + + i = 0 + for key in directory.GetListOfKeys(): + if i < count: + name = key.GetName() + histo = directory.Get(name) + if not isinstance(histo,ROOT.TDirectory) and 'EmbedZTT' in name: + new_name = name.replace('EmbedZTT', 'EMB') + histo.SetName(new_name) + directory.cd() + #histo.Write(new_name,ROOT.TObject.kWriteDelete) + histo.Write(new_name) + directory.Delete(name+';1') + for x in renames: + if x in new_name: + histo_clone = histo.Clone() + y = renames[x] + new_name_2 = new_name.replace(x,y) + print new_name,new_name_2 + histo_clone.SetName(new_name_2) + histo_clone.Write(new_name_2) + break + elif not isinstance(histo,ROOT.TDirectory) and 'VVT' in name and not 'VVT_for_ZTT' in name: + new_name = name.replace('VVT', 'VVL') + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'TTT' in name and not 'TTT_for_ZTT' in name: + new_name = name.replace('TTT', 'TTL') + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'for_ZTT' in name: + new_name = name.replace('_for_ZTT', '') + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'Wfakes' in name: + new_name = name.replace('Wfakes', 'wFakes') + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + #elif not isinstance(histo,ROOT.TDirectory) and ('ggH_' in name or 'ggA_' in name) and name[:6].count('_') == 1: + #new_name = name[:5]+'_'+name[5:] + #histo.SetName(new_name) + #directory.cd() + #histo.Write(new_name) + #directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'bbH' in name and name[:4].count('_') == 0: + new_name = name[:3]+'_'+name[3:] + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + #elif isinstance(histo,ROOT.TDirectory): + # directory.Delete(name+';1') + #elif not isinstance(histo,ROOT.TDirectory) and ('WplusH' in name or 'WminusH' in name): + #directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'ggH' in name and name[:4].count('_') == 0 and 'ggH125_SM' not in name and 'ggH95' not in name: + directory.Delete(name+';1') + elif not isinstance(histo,ROOT.TDirectory) and 'ggH125_SM' in name : + new_name = name.replace('ggH125_SM', 'ggH125') + histo.SetName(new_name) + directory.cd() + histo.Write(new_name) + directory.Delete(name+';1') + + + i += 1 + + + + + + +def TotalUnc(h0, hists=[]): + #sum in quadrature several systematic uncertainties to form total uncertainty band + hout = h0.Clone() + hup = h0.Clone() + hdown = h0.Clone() + hout.SetName(h0.GetName()+'_uncerts_total') + hup.SetName(h0.GetName()+'_uncerts_total_up') + hdown.SetName(h0.GetName()+'_uncerts_total_down') + for i in range(1,h0.GetNbinsX()+2): + x0 = h0.GetBinContent(i) + uncerts_up = [0.] + uncerts_down = [0.] + for h in hists: + x = h.GetBinContent(i) + if x>x0: uncerts_up.append(x-x0) + if x 0: + ana = Analysis() + #if options.syst_scale_j_by_source != '': ana.writeSubnodes(False) # storing subnodes uses too much memory when doing JES uncertainties split by source + + ana.remaps = {} + if options.channel == 'em': + ana.remaps['MuonEG'] = 'data_obs' + elif options.channel in ['mt','mj','zmm']: + ana.remaps['SingleMuon'] = 'data_obs' + elif (options.era != 'cp18' and options.era != 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): + ana.remaps['SingleElectron'] = 'data_obs' + elif (options.era == 'cp18' or options.era == 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): + ana.remaps['EGamma'] = 'data_obs' + elif options.channel == 'tt': + ana.remaps['Tau'] = 'data_obs' + + ana.nodes.AddNode(ListNode(nodename)) + print ana.remaps + + prev_dir=None + for index, systematic in enumerate(list(systematics.keys())[:max_systs_per_pass]): + syst_names[systematic] = systematics[systematic][1] + if prev_dir is not None and systematics[systematic][0] is not prev_dir: continue # this ensures that we process the same trees from every call to ana.Run() - i.e trees in sub-directory systematics[systematic][0] + prev_dir = systematics[systematic][0] + print "Processing:", systematic + print "" + print systematics[systematic][0] + + + plot = options.var + cats=copy.deepcopy(cats_unmodified) + wshift=1.0 + if systematic == 'syst_qcd_shape_wsf_up' and w_abs_shift is not None: wshift+=w_abs_shift + if systematic == 'syst_qcd_shape_wsf_down' and w_abs_shift is not None: wshift-=w_abs_shift + if (options.syst_scale_j_by_source != '' and 'syst_scale_j_by_source' in systematic) or (options.syst_jfake_scale and 'syst_jfake_scale_approx' in systematic): + # if JES systematic split by source then the category and plotting variable strings need to be modified to use the shifted variables + replace_dict = systematics[systematic][5] + for cat in cats: cats[cat] = OverwriteNames(cats[cat], replace_dict) + plot = OverwriteNames(plot, replace_dict) + + add_folder_name = systematics[systematic][0] + add_name = systematics[systematic][1] + isFFSyst = systematics[systematic][4] + ff_syst_weight = None + if not isFFSyst: weight = systematics[systematic][2] + else: + weight='wt' + ff_syst_weight = systematics[systematic][2] + if options.add_wt is not "": weight+="*"+options.add_wt + if options.channel == "tt" and options.era == 'mssmsummer16': weight+='*wt_tau_id_medium' + if options.channel == "tt" and options.era in ['smsummer16']: weight+='*wt_tau_id_tight' + if options.cat == '0jet' and options.era in ['smsummer16']: weight+='*wt_lfake_rate' + + + samples_to_skip = systematics[systematic][3] + add_names.append(add_name) + syst_add_name=add_folder_name + + + + mc_input_folder_name = options.folder + if add_folder_name != '': mc_input_folder_name += '/'+add_folder_name + + if options.signal_folder: signal_mc_input_folder_name = options.signal_folder + else: signal_mc_input_folder_name = options.folder + if add_folder_name != '': signal_mc_input_folder_name += '/'+add_folder_name + + if options.embed_folder: embed_input_folder_name = options.embed_folder + else: embed_input_folder_name = options.folder + if add_folder_name != '' and 'EmbedZTT' not in samples_to_skip: embed_input_folder_name += '/'+add_folder_name + + # Add all data files + for sample_name in data_samples: + ana.AddSamples(options.folder+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) + + print("------------------") + print(data_samples) + print("------------------") + # Add all MC background files + for sample_name in ztt_samples + vv_samples + wgam_samples + top_samples + wjets_samples+ewkz_samples+gghww_samples+qqhww_samples: + ana.AddSamples(mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) + #ana.AddSamples(mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', options.folder+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), sample_name) # this fixes issues if a sample is not included in systematic sub directory (e.g because systematics doesn't affect it) but at the same time can make it easier to miss issues like a sample missing that should be there + print("------------------") + print(ztt_samples,vv_samples,wgam_samples,top_samples,wjets_samples,ewkz_samples,gghww_samples,qqhww_samples) + print("------------------") + # Add embedded samples if using + if options.embedding: + for sample_name in embed_samples: + ana.AddSamples(embed_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) + + # Add all MC signal files + + if options.analysis in ['sm','cpprod','cpdecay']: + signal_samples = sm_samples + elif options.analysis in ['mssm','mssmrun2']: + signal_samples = mssm_samples + if options.bbh_nlo_masses and mssm_nlo_samples: signal_samples['bbH'] = mssm_nlo_samples['bbH'] + if options.nlo_qsh: signal_samples.update(mssm_nlo_qsh_samples) + if options.bbh_nlo_masses and options.bbh_masses: signal_samples.update(mssm_lo_samples) + elif options.analysis == 'Hhh': + signal_samples = Hhh_samples + elif options.analysis == "vlq": + signal_samples = vlq_samples + + + for samp in signal_samples: + if options.analysis in ['sm','cpprod','cpdecay']: + masses=sm_masses + elif samp == 'ggH': + masses = ggh_masses + elif (samp == 'bbH' and not options.bbh_nlo_masses) or samp == 'bbH-LO': + masses = bbh_masses + elif 'bbH' in samp: + masses = bbh_nlo_masses + elif options.analysis == "vlq": + masses = None + if masses is not None: + for mass in masses: + sample_names=[] + if isinstance(signal_samples[samp], (list,)): + for i in signal_samples[samp]: sample_names.append(i.replace('*',mass)) + else: sample_names = [signal_samples[samp].replace('*',mass)] + tree_name = 'ntuple' + if options.gen_signal: tree_name = 'gen_ntuple' + for sample_name in sample_names: + #if 'amcatnloFXFX' in sample_name and False: + # new_sig_folder = '/vols/cms/dw515/Offline/output/SM/Oct26_2016_newsig/' + # if add_folder_name != '': new_sig_folder += '/'+add_folder_name + ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), tree_name, None, sample_name) + elif options.analysis == "vlq": + if options.vlq_sig != "": + if samp in options.vlq_sig.split(","): + sample_names=[] + if isinstance(vlq_samples[samp], (list,)): + for i in vlq_samples[samp]: sample_names.append(i) + else: sample_names = [vlq_samples[samp]] + for sample_name in sample_names: + ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) + #ana.AddSamples(signal_mc_input_folder_name+'/'+signal_samples[samp]+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, signal_samples[samp]) + + + if options.add_sm_background and options.analysis in ['mssm','mssmrun2']: + for samp in sm_samples: + sample_names=[] + if isinstance(sm_samples[samp], (list,)): + for i in sm_samples[samp]: sample_names.append(i.replace('*',options.add_sm_background)) + else: sample_names = [sm_samples[samp].replace('*',options.add_sm_background)] + for sample_name in sample_names: + ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) + + + + + + + + ana.AddInfo(options.paramfile, scaleTo='data_obs') + + # Add data only for default + if systematic == 'default': do_data = True + else: do_data = False + + #Run default plot + if options.scheme == 'signal': + samples_to_skip.extend(['TTT','TTJ','VVT','VVJ','W','QCD','jetFakes','ZLL','ZTT','ZL','EWKZ','ggH_hww']) + do_data = False + if options.scheme == "noTT": + samples_to_skip.extend(["TTT","TTJ"]) + if options.scheme == "noWandEWKZ": + samples_to_skip.extend(['TTT','TTJ','W','EWKZ']) + RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) + #if options.era == "tauid2016" and options.channel in ['et','mt']: + # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) + # RunPlotting(ana, cats['fail']+'&&'+cats['baseline'], cats_unmodified['fail']+'&&'+cats_unmodified['baseline'], sel, "fail"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) + + if options.do_custom_uncerts and options.custom_uncerts_wt_up != "" and options.custom_uncerts_wt_down !="": + add_names.append("_custom_uncerts_up") + add_names.append("_custom_uncerts_down") + RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, '_custom_uncerts_up', weight+'*'+options.custom_uncerts_wt_up, do_data, ['signal'],outfile,ff_syst_weight) + RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, '_custom_uncerts_down', weight+'*'+options.custom_uncerts_wt_down, do_data, ['signal'],outfile,ff_syst_weight) + + + add_names_dict[add_name] = samples_to_skip + + del systematics[systematic] + if options.plot_from_dc == "": + ana.Run() + ana.nodes.Output(outfile) + + + # fix negative bns,empty histograms etc. + FixBins(ana,outfile) + for n in add_names: + GetTotals(ana,n,outfile) + PrintSummary(nodename, ['data_obs'], add_names) + + +if compare_w_shapes or compare_qcd_shapes: CompareShapes(compare_w_shapes, compare_qcd_shapes) + +#if options.method in [17,18] and options.do_ff_systs: NormFFSysts(ana,outfile) +if (options.era in ["smsummer16"] and options.syst_w_fake_rate and options.method != 8) or options.era in ["tauid2016"]: NormWFakeSysts(ana,outfile) +#NormEmbedToMC(ana,outfile) # this is to check embedding sensitivity after scaling embedding to MC yields + + +if options.syst_embedding_tt and options.embedding and not options.no_default: TTBarEmbeddingSyst(ana,outfile,options.syst_embedding_tt) + + +if options.doNLOScales: + ScaleUncertBand(nodename,outfile) + DONLOUncerts(nodename,outfile) +if options.doPDF: + PDFUncerts(nodename,outfile) + + +def Symmetrise(hist): + nbins = hist.GetNbinsX() + if nbins % 2: + print 'N X bins in 2D histogram is not even so cannot symmetrise!' + return + to_skip = ['data_obs','ggH','qqH','WH','WplusH','WminusH','ZH'] + to_skip = ['data_obs'] + if True in [x in hist.GetName() for x in to_skip]: return + for i in range(1,nbins/2+1): + lo_bin = i + hi_bin = nbins-i+1 + for j in range(1,hist.GetNbinsY()+2): + c1 = hist.GetBinContent(lo_bin,j) + c2 = hist.GetBinContent(hi_bin,j) + e1 = hist.GetBinError(lo_bin,j) + e2 = hist.GetBinError(hi_bin,j) + cnew = (c1+c2)/2 + enew = math.sqrt(e1**2 + e2**2)/2 + hist.SetBinContent(lo_bin,j,cnew) + hist.SetBinContent(hi_bin,j,cnew) + hist.SetBinError(lo_bin,j,enew) + hist.SetBinError(hi_bin,j,enew) + + +def MergeXBins(hist): + nxbins = hist.GetNbinsX() + nybins = hist.GetNbinsY() + nbins = hist.GetNbinsX()*hist.GetNbinsY() + to_skip = ['data_obs','ggH','qqH','WH','WplusH','WminusH','ZH'] + if True in [x in hist.GetName() for x in to_skip]: return + for i in range(1,nybins+2): + tot_err = ROOT.Double() + tot = hist.IntegralAndError(1,nxbins,i,i,tot_err) + for j in range(1, nxbins+1): + hist.SetBinContent(j,i,tot/nxbins) + hist.SetBinError(j,i,tot_err/nxbins) + + +## print average weights +#x_lines = [] +#y_labels = [] +#directory = outfile.Get(nodename) +#outfile.cd(nodename) +#for key in directory.GetListOfKeys(): +# hist_name = key.GetName() +# hist = directory.Get(hist_name).Clone() +# +# if not isinstance(hist,ROOT.TDirectory): +# print hist.GetName(), hist.GetEntries(), hist.Integral(-1,-1)/hist.GetEntries() + + +# sm 2D unrolling +if is_2d and options.do_unrolling: + x_lines = [] + y_labels = [] + first_hist = True + # loop over all TH2Ds and for each one unroll to produce TH1D and add to datacard + directory = outfile.Get(nodename) + outfile.cd(nodename) + hists_to_add = [] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + hist = directory.Get(hist_name).Clone() + + if not isinstance(hist,ROOT.TDirectory): + include_of = True + if 'dijet' in options.cat: include_of = False + + if options.symmetrise: Symmetrise(hist) + if options.mergeXbins: MergeXBins(hist) + + + h1d = UnrollHist2D(hist,include_of) + hists_to_add.append(h1d) + if first_hist: + first_hist=False + Nxbins = hist.GetNbinsX() + for i in range(1,hist.GetNbinsY()+1): x_lines.append(Nxbins*i) + for j in range(1,hist.GetNbinsY()+1): y_labels.append([hist.GetYaxis().GetBinLowEdge(j),hist.GetYaxis().GetBinLowEdge(j+1)]) + if include_of: y_labels.append([hist.GetYaxis().GetBinLowEdge(hist.GetNbinsY()+1),-1]) + for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) + + +# sm 3D unrolling +if is_3d and options.do_unrolling: + x_lines = [] + y_labels = [] + z_labels = [] + first_hist = True + # loop over all TH3Ds and for each one unroll to produce TH1D and add to datacard + directory = outfile.Get(nodename) + outfile.cd(nodename) + hists_to_add = [] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + hist = directory.Get(hist_name).Clone() + if not isinstance(hist,ROOT.TDirectory): + include_y_of = False + include_z_of = True + h1d = UnrollHist3D(hist,include_y_of,include_z_of) + hists_to_add.append(h1d) + if first_hist: + first_hist=False + Nxbins = hist.GetNbinsX() + for i in range(1,hist.GetNbinsY()+1): x_lines.append(Nxbins*i) + for j in range(1,hist.GetNbinsY()+1): y_labels.append([hist.GetYaxis().GetBinLowEdge(j),hist.GetYaxis().GetBinLowEdge(j+1)]) + if include_y_of: y_labels.append([hist.GetYaxis().GetBinLowEdge(hist.GetNbinsY()+1),-1]) + for j in range(1,hist.GetNbinsZ()+1): z_labels.append([hist.GetZaxis().GetBinLowEdge(j),hist.GetZaxis().GetBinLowEdge(j+1)]) + if include_z_of: z_labels.append([hist.GetZaxis().GetBinLowEdge(hist.GetNbinsZ()+1),-1]) + for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) + + + + +# make systematic uncertainty histograms + + +custom_uncerts_up_name = options.custom_uncerts_up_name +custom_uncerts_down_name = options.custom_uncerts_down_name +#if len(syst_names)>1 and options.do_custom_uncerts: +if options.do_custom_uncerts: + + + custom_uncerts_up_name = 'total_bkg_uncerts_total_up' + custom_uncerts_down_name = 'total_bkg_uncerts_total_down' + + + directory = outfile.Get(nodename) + h0 = directory.Get('total_bkg') + hists=[] + + + for x in syst_names: + if x == 'default': continue + h=h0.Clone() + syst = syst_names[x] + print 'add syst', x, syst, h0.Integral() + h.SetName(h0.GetName()+syst) + for key in directory.GetListOfKeys(): + name = key.GetName() + if name.startswith('ggH') or name.startswith('bbH') or name.startswith('qqH') or name.startswith('VH') or name.startswith('ZH') or name.startswith('WH') or name.startswith('WplusH') or name.startswith('WminusH'): continue + histo = directory.Get(name) + if not isinstance(histo,ROOT.TDirectory) and name.endswith(syst) and not name.startswith('jetFakes_norm'): + #print name.replace(syst,''), name, histo.Integral() + histo_nom = directory.Get(name.replace(syst,'')) + histo.Add(histo_nom,-1) + if 'scale_embed_met' in name: + # this part scales the embed MET uncertainties to their actual values + scales = { + "mt_2018": 0.29, + "mt_2017": 0.69, + "mt_2016": 0.44, + "et_2018": 0.29, + "et_2017": 0.69, + "et_2016": 0.44, + "tt_2018": 0.29, + "tt_2017": 0.69, + "tt_2016": 0.44, + } + scale = (scales['%s_%s' % (options.channel,options.year)]**2+0.1**2)**.5 + print 'scaling ', name, ' by ', scale + for i in range(1,histo.GetNbinsX()+1): + histo.SetBinContent(i,histo.GetBinContent(i)*scale) + h.Add(histo) + hists.append(h.Clone()) + + + norm_systs = {} + if options.embedding: + if options.channel in ['em']: + norm_systs['embed_yield'] = (0.04,['EmbedZTT']) + norm_systs['dy_xs'] = (0.02,['ZLL']) + norm_systs['lumi'] = (0.025,['TTT','VVT','ZLL']) + else: + norm_systs['embed_yield'] = (0.04,['EmbedZTT']) + norm_systs['dy_xs'] = (0.02,['ZL']) + norm_systs['lumi'] = (0.025,['TTT','VVT','ZL']) + else: + if options.channel in ['em']: + norm_systs['dy_xs'] = (0.02,['ZLL','ZTT']) + norm_systs['lumi'] = (0.025,['TTT','VVT','ZLL','ZTT']) + else: + norm_systs['dy_xs'] = (0.02,['ZL','ZTT']) + norm_systs['lumi'] = (0.025,['TTT','VVT','ZL','ZTT']) + norm_systs['ttbar_xs'] = (0.04,['TTT']) + norm_systs['vv_xs'] = (0.05,['VVT']) + if options.channel == 'tt': + if options.embedding: norm_systs['tau_id'] = (0.06,['EmbedZTT']) + else: norm_systs['tau_id'] = (0.06,['ZTT']) + norm_systs['wfakes_yield'] = (0.2,['Wfakes']) + norm_systs['l_fakerate'] = (0.05,['VVT','ZL','TTT']) + if options.channel in ['et','mt']: + if options.embedding: + norm_systs['tau_id'] = (0.03,['EmbedZTT']) + norm_systs['l_id'] = (0.02,['EmbedZTT','TTT','VVT','ZL']) + else: + norm_systs['tau_id'] = (0.02,['ZTT']) + norm_systs['l_id'] = (0.02,['ZTT','TTT','VVT','ZL']) + norm_systs['l_fakerate'] = (0.2,['ZL']) + if options.channel in ['em']: + if options.embedding: + norm_systs['m_id'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) + norm_systs['e_id'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) + norm_systs['m_trg'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) + norm_systs['e_trg'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) + else: + norm_systs['m_id'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) + norm_systs['e_id'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) + norm_systs['m_trg'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) + norm_systs['e_trg'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) + norm_systs['l_fakerate'] = (0.2,['ZLL','W']) + + for syst in norm_systs: + + val = norm_systs[syst][0] + procs = norm_systs[syst][1] + h1 = h0.Clone() + h2 = h0.Clone() + h1.SetName(h0.GetName()+syst) + h2.SetName(h0.GetName()+syst) + for p in procs: + print p + hup = directory.Get(p).Clone() + hnom = directory.Get(p).Clone() + hup.Scale(val) + #print syst, p, hnom.Integral(), hup.Integral() + h1 = h0.Clone() + h2 = h0.Clone() + h1.Add(hup) + h2.Add(hup,-1) + hists.append(h1.Clone()) + hists.append(h2.Clone()) + + + (uncert, up, down) = TotalUnc(h0, hists) + outfile.cd(nodename) + uncert.Write() + up.Write() + down.Write() + + + +if options.scale_by_bin: + directory = outfile.Get(nodename) + QCDdirectory = directory.Get("QCD.subnodes") + + hist_den = QCDdirectory.Get("ratio_den") + hist_scale = QCDdirectory.Get("ratio_num").Clone() + integralFactor = (hist_scale.Integral())/(hist_den.Integral()) + hist_scale.Divide(hist_den) + for i in range(0,hist_scale.GetNbinsX()): + if hist_scale.GetBinContent(i+1)>=1: + hist_scale.Fill(i+1,integralFactor) + + + hist_QCD = QCDdirectory.Get("data").Clone() + hist_bkg = QCDdirectory.Get("total_bkg") + hist_QCD.Add(hist_bkg,-1) + hist_QCD.Multiply(hist_scale) + hist_QCD.SetName("QCD_bybin") + outfile.cd(nodename) + hist_QCD.Write() + if options.no_qcd_subtract: + hist_QCD_nosub = QCDdirectory.Get("data").Clone() + hist_QCD_nosub.Multiply(hist_scale) + hist_QCD_nosub.SetName("QCD_bybin_nosub") + hist_QCD_nosub.Write() + + +if options.no_qcd_subtract: + directory = outfile.Get(nodename) + QCDdirectory = directory.Get("QCD.subnodes") + + hist_QCD = QCDdirectory.Get("data").Clone() + den = QCDdirectory.Get("ratio_den").Integral() + num = QCDdirectory.Get("ratio_num").Integral() + hist_QCD.Scale(num/den) + #hist_QCD.SetEntries(hist_QCD.GetEntries()*(num/den)) + hist_QCD.SetName("QCD_nosub") + outfile.cd(nodename) + hist_QCD.Write() + +outfile.Close() + +if options.do_unrolling==0: + print "Finished Processing" + exit(0) +if is_2d and not options.do_unrolling: + print "Finished Processing" + exit(0) # add options for is_3d as well! +if options.plot_from_dc != "": output_name = options.plot_from_dc +plot_file = ROOT.TFile(output_name, 'READ') + +#if options.method in [12,16] or (options.channel != "tt" and options.method == "18"): +# w_os = plot_file.Get(nodename+"/W.subnodes/W_os") +# w_ss = plot_file.Get(nodename+"/W.subnodes/W_ss") +# w_os_error=ROOT.Double(0.) +# w_ss_error=ROOT.Double(0.) +# w_os_total = w_os.IntegralAndError(0,w_os.GetNbinsX()+1,w_os_error) +# w_ss_total = w_ss.IntegralAndError(0,w_ss.GetNbinsX()+1,w_ss_error) +# w_os_ss = w_os_total/w_ss_total +# w_os_ss_error = math.sqrt( (w_os_error/w_os_total)**2 + (w_ss_error/w_ss_total)**2 )*w_os_ss +# +# print "W OS/SS ratio = ", w_os_ss, "+/-", w_os_ss_error, "("+str(100*w_os_ss_error/w_os_ss)+" %)" + + +if options.custom_uncerts_wt_up != "" and options.custom_uncerts_wt_down != "": + custom_uncerts_up_name = "total_bkg_custom_uncerts_up" + custom_uncerts_down_name = "total_bkg_custom_uncerts_down" +elif options.custom_uncerts_up_name != '': + custom_uncerts_up_name = options.custom_uncerts_up_name + custom_uncerts_down_name = options.custom_uncerts_down_name + + + + +if not options.no_plot: + #if options.extra_name != '': vname = options.extra_name + #else: vname = var_name + vname = var_name + '_' +options.extra_name + + + if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year + else: plot_name = options.outputfolder+'/'+vname+'_'+options.cat+'_'+options.channel+'_'+options.year + + if options.plot_from_dc != "": plot_name = options.outputfolder + '/combined' + + + if options.do_ss: plot_name += "_ss" + if options.log_x: plot_name += "_logx" + if options.log_y: plot_name += "_logy" + titles = plotting.SetAxisTitles(options.var,options.channel) + if options.do_unrolling and is_2d: titles2d = plotting.SetAxisTitles2D(options.var,options.channel) + if options.x_title == "": + x_title = titles[0] + if options.do_unrolling and is_2d: + x_title = titles2d[0][0] + else: x_title = options.x_title + + if options.y_title == "": + y_title = titles[1] + if options.do_unrolling and is_2d: + if options.norm_bins: y_title = titles2d[0][1] + else: y_title = titles2d[0][1] + y_var_titles = titles2d[1] + else: y_title = options.y_title + scheme = options.channel + if compare_w_shapes: scheme = 'w_shape' + if compare_qcd_shapes: scheme = 'qcd_shape' + if options.scheme != "" and options.scheme != "noWandEWKZ": scheme = options.scheme + FF = options.method in [17,18] + if options.ml_ff: + options.w_ff_closure = False + options.qcd_ff_closure = False + if "zttEmbed" in options.cat or "jetFakes" in options.cat: + options.blind = False + options.x_blind_min = -1e5 + options.x_blind_max = -1e5 + if options.do_unrolling and is_2d: + auto_blind=False + options.norm_bins=False + plotting.HTTPlotUnrolled(nodename, + plot_file, + options.signal_scale, + options.draw_signal_mass, + FF, + options.norm_bins, + options.channel, + options.blind, + options.x_blind_min, + options.x_blind_max, + auto_blind, + options.ratio, + options.log_y, + options.log_x, + options.ratio_range, + options.custom_x_range, + options.x_axis_min, + options.x_axis_max, + options.custom_y_range, + options.y_axis_max, + options.y_axis_min, + x_title, + y_title, + options.extra_pad, + options.do_custom_uncerts, + options.add_stat_to_syst, + options.add_flat_uncert, + options.uncert_title, + options.lumi, + plot_name, + custom_uncerts_up_name, + custom_uncerts_down_name, + scheme, + options.cat, + x_lines, + [y_labels,y_var_titles], + options.embedding, + vbf_background, + options.signal_scheme + ) + elif scheme != 'signal': + auto_blind=False + plotnames = [[plot_name,"QCD"]] + if options.scale_by_bin: + plotnames.append([plot_name+"_bybin","QCD_bybin"]) + if options.no_qcd_subtract: + plotnames.append([plot_name+"_bybin_nosub","QCD_bybin_nosub"]) + if options.no_qcd_subtract: + plotnames.append([plot_name+"_nosub","QCD_nosub"]) + for namepair in plotnames: + plotting.HTTPlot(nodename, + plot_file, + options.signal_scale, + options.draw_signal_mass, + FF, + options.norm_bins, + options.channel, + options.blind, + options.x_blind_min, + options.x_blind_max, + options.ratio, + options.threePads, + options.ratio_log_y, + options.log_y, + options.log_x, + options.ratio_range, + options.custom_x_range, + options.x_axis_min, + options.x_axis_max, + options.custom_y_range, + options.y_axis_max, + options.y_axis_min, + x_title, + y_title, + options.extra_pad, + options.signal_scheme, + options.do_custom_uncerts, + options.add_stat_to_syst, + options.add_flat_uncert, + options.uncert_title, + options.lumi, + namepair[0], + custom_uncerts_up_name, + custom_uncerts_down_name, + scheme, + options.embedding, + vbf_background, + options.split_sm_scheme, + options.ggh_scheme, + options.cat, + split_taus, + auto_blind, + discrete_x_axis, + discrete_x_labels, + options.qcd_ff_closure, + options.w_ff_closure, + options.bkg_comp, + options.plot_signals.split(","), + namepair[1] + ) + else: + plotting.HTTPlotSignal(nodename, + plot_file, + options.signal_scale, + options.draw_signal_mass, + options.norm_bins, + options.channel, + options.blind, + options.x_blind_min, + options.x_blind_max, + options.ratio, + options.log_y, + options.log_x, + options.ratio_range, + options.custom_x_range, + options.x_axis_min, + options.x_axis_max, + options.custom_y_range, + options.y_axis_max, + options.y_axis_min, + x_title, + y_title, + options.extra_pad, + options.signal_scheme, + options.do_custom_uncerts, + options.add_stat_to_syst, + options.add_flat_uncert, + options.uncert_title, + options.lumi, + plot_name, + custom_uncerts_up_name, + custom_uncerts_down_name + ) + + # plotting.SoverBPlot(nodename, + # plot_file, + # options.channel, + # options.log_y, + # options.log_x, + # options.custom_x_range, + # options.x_axis_max, + # options.x_axis_min, + # options.custom_y_range, + # options.y_axis_max, + # options.y_axis_min, + # x_title, + # options.extra_pad, + # plot_name+'_soverb') + + # hists = [plot_file.Get(nodename+"/bbH-LO700"), plot_file.Get(nodename+"/bbH700") ] + # plotting.CompareHists(hists, + # ['Pythia','amc@NLO'], + # "bb#phi 700", + # options.ratio, + # options.log_y, + # options.log_x, + # options.ratio_range, + # options.custom_x_range, + # options.x_axis_max, + # options.x_axis_min, + # options.custom_y_range, + # options.y_axis_max, + # options.y_axis_min, + # x_title, + # y_title, + # options.extra_pad, + # False, + # plot_name, + # "#mu#tau_{h}") + +#norm signal yields on datacards to 1pb AFTER plotting +outfile = ROOT.TFile(output_name, 'UPDATE') +for add_name in add_names: + if options.analysis in ['mssm','mssmrun2']: + NormSignals(outfile,add_name) + +# for smsummer16 need to ad WplusH and WminusH templates into one +if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.channel != 'zmm' and options.analysis != "mssmrun2": + outfile.cd(nodename) + directory = outfile.Get(nodename) + hists_to_add = [] + for key in directory.GetListOfKeys(): + hist_name = key.GetName() + if 'wminush' in hist_name.lower(): + hist_to_add_name = hist_name.replace('minus', 'plus') + hist = directory.Get(hist_name).Clone() + hist_to_add = directory.Get(hist_to_add_name).Clone() + hist.Add(hist_to_add) + hist.SetName(hist_name.replace('minus','')) + hists_to_add.append(hist) + for hist in hists_to_add: hist.Write() + +if options.analysis in ['mssmrun2','vlq']: #and options.era not in ['UL_16_preVFP','UL_16_postVFP','UL_17','UL_18']: //was failing before + RenameMSSMrun2Datacards(outfile) + + +outfile.Close() + +print "Finished Processing" diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg similarity index 86% rename from Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg rename to Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg index 4d3a7eb40..c0c7b6141 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_2022_nosubqcd.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg @@ -1,4 +1,4 @@ -#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_2022_nosubqcd.cfg --no_qcd_subtract --var "m_vis(20,0,200)" +#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_2022.cfg --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_2022.json @@ -13,7 +13,7 @@ draw_signal_mass="" year=2022 norm_bins=True ratio=True -lumi=38.48 fb^{-1} (13.6 TeV) +lumi=38.18 fb^{-1} (13.6 TeV) vbf_background=False wp = medium channel = tt @@ -23,3 +23,5 @@ outputfolder=output_2022 no_qcd_subtract= True #do_ss = True scheme = noWandEWKZ +scale_by_bin = True +v2p5 = True diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index 3a4f8362d..5b68f128f 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -1,4 +1,4 @@ -#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018.cfg --var "m_vis(20,0,200)" +#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018_nosubqcd.cfg --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json @@ -18,6 +18,9 @@ vbf_background=False wp = medium channel = tt method = 8 -outputfolder =output -#extra_name = vvvlose +outputfolder=output_2018_all +#extra_name = nosubqcd +no_qcd_subtract= True #do_ss = True +scale_by_bin = True +v2p5 = True \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg deleted file mode 100644 index 54168dd97..000000000 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018_nosubqcd.cfg +++ /dev/null @@ -1,24 +0,0 @@ -#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var "m_vis(20,0,200)" -[Defaults] -analysis=mssmrun2 -paramfile=scripts/params_UL_2018.json -folder=/vols/cms/eb921/output/tt_UL_2018/ -era=UL_18 -sm_masses="" -draw_signal_mass="" -#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 -#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -year=2018 -norm_bins=True -ratio=True -lumi=59.7 fb^{-1} (13 TeV) -vbf_background=False -wp = medium -channel = tt -method = 8 -outputfolder=output_nosubqcd -#extra_name = nosubqcd -no_qcd_subtract= True -#do_ss = True From c911faa25c0cd8c2fd3bd0a804e4b3a4aa7363c6 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 20 Jul 2023 11:51:25 +0100 Subject: [PATCH 23/50] Add 2022 trigger to src --- .../HiggsTauTauRun2/interface/HTTCategories.h | 4 + Analysis/HiggsTauTauRun2/src/HTTCategories.cc | 14 ++ Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 4 + .../HiggsTauTauRun2/src/HTTTriggerFilter.cc | 150 +++++++++++++----- 4 files changed, 132 insertions(+), 40 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/interface/HTTCategories.h b/Analysis/HiggsTauTauRun2/interface/HTTCategories.h index 325cb45e6..deec74f1c 100644 --- a/Analysis/HiggsTauTauRun2/interface/HTTCategories.h +++ b/Analysis/HiggsTauTauRun2/interface/HTTCategories.h @@ -839,6 +839,10 @@ class HTTCategories : public ModuleBase { bool trg_singlemuon27_; bool trg_muonelectron_; bool trg_doubletau_; + bool trg_doubletau_plusjet60_; + bool trg_doubletau_plusjet75_; + double trg60jet_pt_; + double trg75jet_pt_; bool trg_tt_monitoring_1_; bool trg_tt_monitoring_2_; bool trg_tt_monitoring_3_; diff --git a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc index d3d9b620a..f083a2db8 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc @@ -1145,6 +1145,10 @@ namespace ic { outtree_->Branch("trg_singlemuon24", &trg_singlemuon24_); outtree_->Branch("trg_singlemuon27", &trg_singlemuon27_); outtree_->Branch("trg_doubletau", &trg_doubletau_); + outtree_->Branch("trg_doubletau_plusjet60", &trg_doubletau_plusjet60_); + outtree_->Branch("trg_doubletau_plusjet75", &trg_doubletau_plusjet75_); + outtree_->Branch("trg60jet_pt", &trg60jet_pt_); + outtree_->Branch("trg75jet_pt", &trg75jet_pt_); outtree_->Branch("trg_doubletau_mssm", &trg_doubletau_mssm_); outtree_->Branch("trg_tt_monitoring_1", &trg_tt_monitoring_1_); @@ -1533,6 +1537,8 @@ namespace ic { synctree_->Branch("trg_singleelectron", &trg_singleelectron_); synctree_->Branch("trg_singlemuon", &trg_singlemuon_); synctree_->Branch("trg_doubletau", &trg_doubletau_); + synctree_->Branch("trg_doubletau_plusjet60", &trg_doubletau_plusjet60_); + synctree_->Branch("trg_doubletau_plusjet75", &trg_doubletau_plusjet75_); synctree_->Branch("trg_tt_monitoring_1", &trg_tt_monitoring_1_); synctree_->Branch("trg_tt_monitoring_2", &trg_tt_monitoring_2_); @@ -1596,6 +1602,8 @@ namespace ic { mvatree_->Branch("trg_singleelectron", &trg_singleelectron_); mvatree_->Branch("trg_singlemuon", &trg_singlemuon_); mvatree_->Branch("trg_doubletau", &trg_doubletau_); + mvatree_->Branch("trg_doubletau_plusjet60", &trg_doubletau_plusjet60_); + mvatree_->Branch("trg_doubletau_plusjet75", &trg_doubletau_plusjet75_); mvatree_->Branch("deepTauVsJets_medium_1", &deepTauVsJets_medium_1_); mvatree_->Branch("deepTauVsJets_medium_2", &deepTauVsJets_medium_2_); mvatree_->Branch("deepTauVsEle_vvloose_1", &deepTauVsEle_vvloose_1_); @@ -1759,6 +1767,10 @@ namespace ic { if (event->Exists("trg_singlemuon27")) trg_singlemuon27_ = event->Get("trg_singlemuon27"); else trg_singlemuon27_ = false; if (event->Exists("trg_doubletau")) trg_doubletau_ = event->Get("trg_doubletau"); + if (event->Exists("trg_doubletau_plusjet60")) trg_doubletau_plusjet60_ = event->Get("trg_doubletau_plusjet60"); + if (event->Exists("trg_doubletau_plusjet75")) trg_doubletau_plusjet75_ = event->Get("trg_doubletau_plusjet75"); + if (event->Exists("trg60jet_pt")) trg60jet_pt_ = event->Get("trg60jet_pt"); + if (event->Exists("trg75jet_pt")) trg75jet_pt_ = event->Get("trg75jet_pt"); if (event->Exists("trg_tt_monitoring_1"))trg_tt_monitoring_1_ = event->Get("trg_tt_monitoring_1"); if (event->Exists("trg_tt_monitoring_2"))trg_tt_monitoring_2_ = event->Get("trg_tt_monitoring_2"); @@ -1780,6 +1792,8 @@ namespace ic { trg_singleelectron_ = true; trg_singlemuon_ = true; trg_doubletau_ = true; + trg_doubletau_plusjet60_ = true; + trg_doubletau_plusjet75_ = true; trg_tt_monitoring_1_ = true; trg_tt_monitoring_2_ = true; trg_tt_monitoring_3_ = true; diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index db46d9aa8..51dc64115 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -171,6 +171,10 @@ HTTSequence::HTTSequence(std::string& chan, std::string postf, Json::Value const tau_pt = 20.; lead_tau_pt = 20; } + if(era_type == era::data_2022_preEE || era_type == era::data_2022_preEE){ + tau_pt=35; + lead_tau_pt=35; + } tau_eta = 2.1; min_taus = 2; lead_min_taus = 1; diff --git a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc index eda0ecf5e..f76d338c1 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc @@ -46,6 +46,9 @@ namespace ic { std::string alt_er_trk_trig_obj_label; std::string alt_trig_obj_label_2; std::string alt_trig_obj_label_3; + std::string trig_ttpj_obj_label1=""; + std::string trig_ttpj_obj_label2=""; + std::string leg1_filter; std::string leg2_filter; std::string extra_leg2_filter; @@ -72,6 +75,14 @@ namespace ic { std::string alt_cross_leg2_filter; std::string alt_cross_extra_leg2_filter; + + std::string ttplusjet_leg1_filter_1 = ""; + std::string ttplusjet_leg2_filter_1 = ""; + std::string ttplusjet_leg1_filter_2 = ""; + std::string ttplusjet_leg2_filter_2 = ""; + std::string ttplusjet_jet_filter_1 = ""; + std::string ttplusjet_jet_filter_2 = ""; + std::string monitoring_16_trig_obj_label; std::string monitoring_16_leg1_filter; std::string monitoring_16_leg2_filter; @@ -398,13 +409,24 @@ namespace ic { trig_obj_label = "triggerObjectsDoubleMediumDeepPFTauHPS35"; leg1_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; leg2_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; - alt_trig_obj_label_3 = "triggerObjectsDoubleMediumDeepPFTauHPS35"; - alt_leg1_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; - alt_leg2_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; - alt_jetleg1_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; // leading - //subleading from following (but contains leading as well) - alt_jetleg2_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; - } + + trig_ttpj_obj_label1 = "triggerObjectsDoubleMediumDeepPFTauHPS30PFJets60"; + ttplusjet_leg1_filter_1 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_leg2_filter_1 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_jet_filter_1 = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; + + trig_ttpj_obj_label2= "triggerObjectsDoubleMediumDeepPFTauHPS30PFJets75"; + ttplusjet_leg1_filter_2 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_leg2_filter_2 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_jet_filter_2 = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; + + // alt_trig_obj_label_3 = "triggerObjectsDoubleMediumDeepPFTauHPS35"; + // alt_leg1_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + // alt_leg2_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + // alt_jetleg1_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; // leading + // //subleading from following (but contains leading as well) + // alt_jetleg2_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; + }// only leading jet 75 and 60 two variables } //single tau trigger @@ -665,12 +687,16 @@ namespace ic { trig_obj_label = "triggerObjectsDoubleMediumDeepPFTauHPS35"; leg1_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; leg2_filter = "hltHpsDoublePFTau35MediumDitauWPDeepTauL1HLTMatched"; - alt_trig_obj_label_3 = "triggerObjectsDoubleMediumDeepPFTauHPS35"; - alt_leg1_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; - alt_leg2_filter_3 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; - alt_jetleg1_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; // leading - //subleading from following (but contains leading as well) - alt_jetleg2_filter = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; + + trig_ttpj_obj_label1 = "triggerObjectsDoubleMediumDeepPFTauHPS30PFJets60"; + ttplusjet_leg1_filter_1 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_leg2_filter_1 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_jet_filter_1 = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet60"; + + trig_ttpj_obj_label2= "triggerObjectsDoubleMediumDeepPFTauHPS30PFJets75"; + ttplusjet_leg1_filter_2 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_leg2_filter_2 = "hltHpsDoublePFTau30MediumDitauWPDeepTauL1HLTMatchedDoubleTauJet"; + ttplusjet_jet_filter_2 = "hltHpsOverlapFilterDeepTauDoublePFTau30PFJet75"; } } } @@ -996,6 +1022,11 @@ namespace ic { bool match_l1_parts = false; bool jetleg1_match = false; bool jetleg2_match = false; + bool passed_doubletau_plusjet_1 = false; + bool passed_doubletau_plusjet_2 = false; + double trg1_jet_pt = -9999; + double trg2_jet_pt = -9999; + if (channel_ == channel::tt){ for(unsigned i = 0; i < dileptons.size(); ++i){ bool leg1_match = IsFilterMatchedWithIndex(dileptons[i]->At(0), objs, leg1_filter, 0.5).first; @@ -1064,38 +1095,45 @@ namespace ic { match_l1_parts = (MatchByDR(match_taus,passed_l1_taus,0.5,true,true)).size() == 2; passed_doubletau = passed_doubletau && match_l1_parts; } - } - - // 2018 vbf trg jet matching after double tau trg part - if ((era_ == era::data_2018 || era_ == era::data_2018UL) && passed_vbfdoubletau && alt_trig_obj_label_3 != "") { - std::vector alt_objs_3 = event->GetPtrVec(alt_trig_obj_label_3); - std::vector jets = event->GetPtrVec("ak4PFJetsCHS"); - // first need to find jets with maximum mjj and cross clean from taus? - if (jets.size() >= 2) { - unsigned int i1 = 0; - unsigned int j1 = 0; - double mjj_max = 0; - - for (unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ - for (unsigned int jjet = ijet+1; jjet < jets.size(); ++jjet){ - double mjj_test = (jets[ijet]->vector()+jets[jjet]->vector()).M(); + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ + std::vector jets = event->GetPtrVec("ak4PFJetsCHS"); + if(jets.size()>0){ + std::vector ttplusjet_objs_1 = event->GetPtrVec(trig_ttpj_obj_label1); + leg1_match = IsFilterMatchedWithIndex(dileptons[i]->At(0), ttplusjet_objs_1,ttplusjet_leg1_filter_1, 0.5).first; + leg2_match = IsFilterMatchedWithIndex(dileptons[i]->At(1), ttplusjet_objs_1,ttplusjet_leg2_filter_1, 0.5).first; + if(leg1_match && leg2_match){ + for(unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + jetleg1_match = IsFilterMatchedWithIndex(jets[ijet], ttplusjet_objs_1, ttplusjet_jet_filter_1, 0.5).first; + if(jetleg1_match){ + trg1_jet_pt = jets[ijet]->pt(); + passed_doubletau_plusjet_1 = true; + break; + } + } + } - if (mjj_test > mjj_max){ - mjj_max = mjj_test; - i1 = ijet; - j1 = jjet; + std::vector ttplusjet_objs_2 = event->GetPtrVec(trig_ttpj_obj_label2); + leg1_match = IsFilterMatchedWithIndex(dileptons[i]->At(0), ttplusjet_objs_2,ttplusjet_leg1_filter_2, 0.5).first; + leg2_match = IsFilterMatchedWithIndex(dileptons[i]->At(1), ttplusjet_objs_2,ttplusjet_leg2_filter_2, 0.5).first; + if(leg1_match && leg2_match){ + for(unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + jetleg1_match = IsFilterMatchedWithIndex(jets[ijet], ttplusjet_objs_2, ttplusjet_jet_filter_2, 0.5).first; + if(jetleg1_match){ + trg2_jet_pt = jets[ijet]->pt(); + passed_doubletau_plusjet_2 = true; + break; + } } - } + } + if(!passed_doubletau && (passed_doubletau_plusjet_2 || passed_doubletau_plusjet_1)){ + dileptons_pass.push_back(dileptons[i]); + } } - - // add VBF trig here, need to do jet matching - jetleg1_match = IsFilterMatchedWithIndex(jets[i1], alt_objs_3, alt_jetleg1_filter, 0.5).first; - jetleg2_match = IsFilterMatchedWithIndex(jets[j1], alt_objs_3, alt_jetleg2_filter, 0.5).first; - if (jetleg1_match && jetleg2_match) passed_vbfdoubletau = true; - else passed_vbfdoubletau = false; } } - if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && passed_vbfdoubletau && alt_trig_obj_label_3 != "") { + + // 2018 vbf trg jet matching after double tau trg part + if ((era_ == era::data_2018 || era_ == era::data_2018UL) && passed_vbfdoubletau && alt_trig_obj_label_3 != "") { std::vector alt_objs_3 = event->GetPtrVec(alt_trig_obj_label_3); std::vector jets = event->GetPtrVec("ak4PFJetsCHS"); // first need to find jets with maximum mjj and cross clean from taus? @@ -1123,10 +1161,42 @@ namespace ic { else passed_vbfdoubletau = false; } } + // if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && passed_vbfdoubletau && alt_trig_obj_label_3 != "") { + // std::vector alt_objs_3 = event->GetPtrVec(alt_trig_obj_label_3); + // std::vector jets = event->GetPtrVec("ak4PFJetsCHS"); + // // first need to find jets with maximum mjj and cross clean from taus? + // if (jets.size() >= 2) { + // unsigned int i1 = 0; + // unsigned int j1 = 0; + // double mjj_max = 0; + + // for (unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + // for (unsigned int jjet = ijet+1; jjet < jets.size(); ++jjet){ + // double mjj_test = (jets[ijet]->vector()+jets[jjet]->vector()).M(); + + // if (mjj_test > mjj_max){ + // mjj_max = mjj_test; + // i1 = ijet; + // j1 = jjet; + // } + // } + // } + + // // add VBF trig here, need to do jet matching + // jetleg1_match = IsFilterMatchedWithIndex(jets[i1], alt_objs_3, alt_jetleg1_filter, 0.5).first; + // jetleg2_match = IsFilterMatchedWithIndex(jets[j1], alt_objs_3, alt_jetleg2_filter, 0.5).first; + // if (jetleg1_match && jetleg2_match) passed_vbfdoubletau = true; + // else passed_vbfdoubletau = false; + // } + // } } event->Add("trg_doubletau", passed_doubletau); + event->Add("trg_doubletau_plusjet60", passed_doubletau_plusjet_1); + event->Add("trg_doubletau_plusjet75", passed_doubletau_plusjet_2); event->Add("trg_doubletau_mssm", (passed_doubletau&&passed_doubletau_extra)); event->Add("trg_vbfdoubletau", passed_vbfdoubletau); + event->Add("trg60jet_pt", trg1_jet_pt); + event->Add("trg75jet_pt", trg2_jet_pt); bool passed_singletau_1 = false; bool passed_singletau_2 = false; From 3534c58e5393dfc955f362546b75154c996ab803 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 20 Jul 2023 11:53:54 +0100 Subject: [PATCH 24/50] Add my controlplots script 2022 --- .../scripts/control_plots_2022_tt.py | 52 ++++++++++++++ .../scripts/control_plots_tt.py | 72 ++++++++++--------- 2 files changed, 91 insertions(+), 33 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py diff --git a/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py new file mode 100644 index 000000000..063fdf6b6 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py @@ -0,0 +1,52 @@ +import os + +variables = [ + + # 'n_jets(4,0,4)', + # 'pt_1(20,0,200)', + # 'pt_2(20,0,200)', + # 'mt_1(30,0,300)', + # 'mt_2(30,0,300)', + # 'pt_tt(20,0,200)', + 'm_vis(20,0,200)' +] + +#Selections in the control region (QCD) +selnames = [ + ["medium_vloose_medium","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5"], + ["medium_vvvloose_medium","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], + ["vloose_vvvloose_medium","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], + ["medium_vloose_medium_vloose","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5"], + ["medium_vvvloose_medium_vvvloose","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5"], + ["vloose_vvvloose_vloose_vvvloose","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5"], + ] + +DO_SS = True #produce same-sign files +years = ["UL_2018"]#"UL_2018","2022" +triggernames_2022 = ["trg_doubletau","trg_doubletau_plusjet60","trg_doubletau_plusjet75"] + +for yr in years: + for v in variables: + v_tt = v + for sel in selnames: + extra=' --ratio_range=\"0.6,1.4\" ' + #extra += ' --tt_qcd_sel_num=%i'%sel + if yr == "UL_2018": + triggernames = ["trg_doubletau"] + else: + triggernames = triggernames_2022 + + for trigname in triggernames: + extra+= ' --extra_name=%s_%s'%(sel[0],trigname) + if v[0] != 'm': + extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%trigname + else: + extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%trigname + + extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%(sel[1],trigname) + + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + if DO_SS: + os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + + diff --git a/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py index 2e8a90b65..4545125c0 100644 --- a/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py +++ b/Analysis/HiggsTauTauRun2/scripts/control_plots_tt.py @@ -1,40 +1,46 @@ import os +years = ['2018','2017','2016'] +#years = ['2017'] + variables = [ - #'n_jets(4,0,4)' - # 'pt_1(20,0,200)', - # 'pt_2(20,0,200)', - #'mt_1(30,0,300)' - # 'mt_2(30,0,300)', - # 'm_vis(20,0,200)', - # 'pt_tt(20,0,200)' + 'met[0,10,20,30,40,50,60,70,80,90,100,120,140,200,400]', + 'n_jets(4,0,4)', + 'pt_1[40,45,50,55,60,65,70,80,90,100,120,140,200,400]', + 'pt_2[40,45,50,55,60,65,70,80,90,100,120,140,200,400]', + 'mt_1(30,0,300)', + 'mt_2(30,0,300)', + 'mt_lep(30,0,300)', + 'm_vis(50,0,500)', + 'met_dphi_1(20,0,3.1415927)', + 'met_dphi_2(20,0,3.1415927)', + 'mt_tot[50,60,70,80,100,120,140,160,180,200,250,300,350,400,500,700,900,3900]', + 'dphi(20,0,3.1415927)', + 'n_deepbjets(4,0,4)', ] -selnames = ["medium_vloose_medium", - "medium_vvvloose_medium", - "vloose_vvvloose_medium", - "medium_vloose_medium_vloose", - "medium_vvvloose_medium_vvvloose", - "vloose_vvvloose_vloose_vvvloose"] - -for v in variables: - v_tt = v - for sel in range(0,6): - extra=' --ratio_range=\"0.6,1.4\" ' - extra+= '--extra_name=%s'%selnames[sel] - extra += ' --tt_qcd_sel_num=%i'%sel - - #if 'mt_tot' in v: extra+='--log_y --log_x' - - - # add systematic bands - #extra += ' --do_custom_uncerts --add_stat_to_syst --syst_tau_trg_diff="trg_syst_*" --syst_tau_id_diff="id_syst_*" --do_ff_systs --syst_tquark="syst_ttbar_pt" --syst_embedding_tt="syst_embed_tt" ' #--syst_tau_scale_grouped="tes_*group" ' - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var=\"%(v_tt)s\"' % vars ()) - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_UL_2018.cfg --var=\"%(v_tt)s\"' % vars() ) - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_UL_2018_nosubqcd.cfg --no_qcd_subtract --var=\"%(v_tt) s\"' % vars()) - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_UL_2018.cfg --var=\"%(v_tt)s\"' % vars() ) - - #os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_UL_%(yp)s.cfg --var=\"%(v_tt)s\" --outputfolder=controlOutput/ %(extra)s --embedding ' % vars()) - #os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_UL_%(yp)s.cfg --var=\"%(v_tt)s\" --outputfolder=controlOutput/ %(extra)s --datacard=mc ' % vars()) + +for y in years: + for v in variables: + + yp = y + + v_tt = v + + + if y != '2018': + extra=' --norm_bins --extra_pad=0.4 --singletau --add_wt=\'wt_tau_trg_mssm*wt_tau_id_mssm*wt_prefire\' ' + else: + extra=' --norm_bins --extra_pad=0.4 --singletau --add_wt=\'wt_tau_trg_mssm*wt_tau_id_mssm\' ' + + if 'mt_tot' in v: extra='--log_y --log_x' + + extra+=' --ratio_range=\"0.6,1.4\" ' + + # add systematic bands + extra += ' --do_custom_uncerts --add_stat_to_syst --syst_tau_trg_diff="trg_syst_*" --syst_tau_id_diff="id_syst_*" --do_ff_systs --syst_tquark="syst_ttbar_pt" --syst_embedding_tt="syst_embed_tt" ' #--syst_tau_scale_grouped="tes_*group" ' + + os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_mssm_%(yp)s.cfg --method=17 --channel=tt --var=\"%(v_tt)s\" --outputfolder=mssm_control/ %(extra)s --embedding ' % vars()) + os.system('python scripts/HiggsTauTauPlot.py --cfg=scripts/plot_mssm_%(yp)s.cfg --method=17 --channel=tt --var=\"%(v_tt)s\" --outputfolder=mssm_control/ %(extra)s --datacard=mc ' % vars()) From 02a3cb48601ece0e70d17b60ed96c7ca0ffce131 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 20 Jul 2023 12:10:59 +0100 Subject: [PATCH 25/50] Some new features in plotting.py --- python/plotting.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/python/plotting.py b/python/plotting.py index d0ed2cc29..a73fc5884 100644 --- a/python/plotting.py +++ b/python/plotting.py @@ -2216,7 +2216,8 @@ def HTTPlot(nodename, qcd_ff_closure=False, w_ff_closure=False, bkg_comp = False, - plot_signals=[] + plot_signals=[], + qcdname="QCD" #Only used with tt for specific analysis, not implemented fully ): R.gROOT.SetBatch(R.kTRUE) @@ -2289,7 +2290,7 @@ def HTTPlot(nodename, ], 'tt':[ backgroundComp("t#bar{t}",["TTT","TTJ"],R.TColor.GetColor(155,152,204)), - backgroundComp("QCD", ["QCD"], R.TColor.GetColor(250,202,255)), + backgroundComp("QCD", [qcdname], R.TColor.GetColor(250,202,255)), backgroundComp("Electroweak",["VVT","VVJ","W","ZL","ZJ"],R.TColor.GetColor(222,90,106)), backgroundComp("Z#rightarrow#tau#tau",["ZTT","EWKZ"],R.TColor.GetColor(248,206,104)), ], @@ -3185,6 +3186,7 @@ def HTTPlot(nodename, c1.SaveAs(plot_name+'.pdf') c1.SaveAs(plot_name+'.png') + c1.Close() def CompareSysts(hists=[], plot_name="plot", From b789c25e46e5ca2f3775af3fdf7e8baa7fbfd114 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 27 Jul 2023 13:14:36 +0100 Subject: [PATCH 26/50] Small changes --- .../HiggsTauTauRun2/scripts/htt_2022_postEE.py | 2 +- .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 2 +- Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg | 18 +++++++++--------- .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 18 +++++++++--------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index f4ca853eb..e1c224abf 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -3,7 +3,7 @@ # python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs -# python scripts/htt_UL_2018.py --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs +# python scripts/htt_2022_postEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs # importing libraries diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index 3f79e4eb0..baa10d4de 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -3,7 +3,7 @@ # python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs -# python scripts/htt_UL_2018.py --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs +# python scripts/htt_2022_preEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs # importing libraries diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg index c0c7b6141..300357b82 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg @@ -15,13 +15,13 @@ norm_bins=True ratio=True lumi=38.18 fb^{-1} (13.6 TeV) vbf_background=False -wp = medium -channel = tt -method = 8 +wp=medium +channel=tt +method=8 outputfolder=output_2022 -#extra_name = nosubqcd -no_qcd_subtract= True -#do_ss = True -scheme = noWandEWKZ -scale_by_bin = True -v2p5 = True +#extra_name=nosubqcd +no_qcd_subtract=True +#do_ss=True +scheme=noWandEWKZ +scale_by_bin=True +#v2p5=True \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index 5b68f128f..9f39558e9 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -15,12 +15,12 @@ norm_bins=True ratio=True lumi=59.7 fb^{-1} (13 TeV) vbf_background=False -wp = medium -channel = tt -method = 8 -outputfolder=output_2018_all -#extra_name = nosubqcd -no_qcd_subtract= True -#do_ss = True -scale_by_bin = True -v2p5 = True \ No newline at end of file +wp=medium +channel=tt +method=8 +outputfolder=output_2018_test +#extra_name=nosubqcd +no_qcd_subtract=True +#do_ss=True +scale_by_bin=True +#v2p5=True \ No newline at end of file From 48d26139d12a78012eae216329ec182d86a7dd06 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 27 Jul 2023 13:20:22 +0100 Subject: [PATCH 27/50] Solving jet overlap issue in triggers --- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 30 ++++++++++--------- .../HiggsTauTauRun2/src/HTTTriggerFilter.cc | 6 ++-- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index 51dc64115..f506a49ea 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -571,21 +571,7 @@ httPairSelector.set_gen_taus_label("genParticles"); BuildModule(httPairSelector); -if(channel != channel::tpzmm &&channel !=channel::tpzee && (is_data || js["trg_in_mc"].asBool())){ - bool tau_dataset = output_name.find("Tau") != output_name.npos && is_data; - BuildModule(HTTTriggerFilter("HTTTriggerFilter") - .set_channel(channel) - .set_mc(mc_type) - .set_era(era_type) - .set_strategy(strategy_type) - .set_is_data(is_data) - .set_tau_dataset(tau_dataset) - .set_is_embedded(is_embedded) - .set_do_singletau(js["do_singletau"].asBool()) - .set_do_filter(false) - .set_pair_label("ditau")); -} // Lepton Vetoes if (js["baseline"]["di_elec_veto"].asBool()) BuildDiElecVeto(); @@ -1351,6 +1337,22 @@ for (unsigned i=0; i ttplusjet_objs_1 = event->GetPtrVec(trig_ttpj_obj_label1); leg1_match = IsFilterMatchedWithIndex(dileptons[i]->At(0), ttplusjet_objs_1,ttplusjet_leg1_filter_1, 0.5).first; leg2_match = IsFilterMatchedWithIndex(dileptons[i]->At(1), ttplusjet_objs_1,ttplusjet_leg2_filter_1, 0.5).first; - if(leg1_match && leg2_match){ - for(unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + if(leg1_match && leg2_match){ + for(unsigned int ijet = 0; ijet < jets.size(); ++ijet){ jetleg1_match = IsFilterMatchedWithIndex(jets[ijet], ttplusjet_objs_1, ttplusjet_jet_filter_1, 0.5).first; if(jetleg1_match){ trg1_jet_pt = jets[ijet]->pt(); @@ -1116,7 +1116,7 @@ namespace ic { leg1_match = IsFilterMatchedWithIndex(dileptons[i]->At(0), ttplusjet_objs_2,ttplusjet_leg1_filter_2, 0.5).first; leg2_match = IsFilterMatchedWithIndex(dileptons[i]->At(1), ttplusjet_objs_2,ttplusjet_leg2_filter_2, 0.5).first; if(leg1_match && leg2_match){ - for(unsigned int ijet = 0; ijet < jets.size()-1; ++ijet){ + for(unsigned int ijet = 0; ijet < jets.size(); ++ijet){ jetleg1_match = IsFilterMatchedWithIndex(jets[ijet], ttplusjet_objs_2, ttplusjet_jet_filter_2, 0.5).first; if(jetleg1_match){ trg2_jet_pt = jets[ijet]->pt(); From c5601005ca652e2f1ec877ffa8ca7121751e4825 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 27 Jul 2023 13:42:37 +0100 Subject: [PATCH 28/50] modify my plotters --- .../scripts/compare_qcdmethods.py | 498 ++++++++++++++---- .../scripts/control_plots_2022_tt.py | 70 ++- 2 files changed, 451 insertions(+), 117 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py index 5c8fe936c..6a2a731a2 100644 --- a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py +++ b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py @@ -1,127 +1,441 @@ import ROOT as R -from UserCode.ICHiggsTauTau.plotting import CompareHists +from UserCode.ICHiggsTauTau.plotting import * import numpy as np -file_w_qcdsub_dirname = "../output/datacard_" -file_wo_qcdsub_dirname = "../output_nosubqcd/datacard_" +PLOTBYBIN = True +DOCHI2 = True +infiles_dirname = "output_2018_good/" +output_folder_name = "output_test/" + +def MyCompareHists(hists=[], + legend_titles=[], + title="", + ratio=True, + log_y=False, + log_x=False, + ratio_range="0.7,1.3", + custom_x_range=False, + x_axis_max=4000, + x_axis_min=0, + custom_y_range=False, + y_axis_max=4000, + y_axis_min=0, + x_title="", + y_title="", + extra_pad=0, + norm_hists=False, + plot_name="plot", + label="", + norm_bins=True, + uncert_hist=None, + uncert_title='', + ReweightPlot=False, + output_file = None, + outputfolder = None): + + objects=[] + R.gROOT.SetBatch(R.kTRUE) + R.TH1.AddDirectory(False) + ModTDRStyle(r=0.04, l=0.14) + + colourlist=[R.kBlue,R.kRed,R.kGreen+3,R.kBlack,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] + if ReweightPlot: + colourlist=[R.kBlack,R.kBlue,R.kRed,R.kGreen+3,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] + + hs = R.THStack("hs","") + hist_count=0 + legend_hists=[] + if isinstance(uncert_hist, (list,)): + for i in uncert_hist: + if i is None: continue + if norm_bins and i is not None: i.Scale(1.0,"width") + else: + if norm_bins and uncert_hist is not None: uncert_hist.Scale(1.0,"width") + + for hist in hists: + # print hist.GetName() + # for bin_ in range(1,hist.GetNbinsX()): + # print hist.GetBinContent(bin_) + # print np.sqrt(hist.GetBinContent(bin_)) + if norm_hists: hist.Scale(1.0/hist.Integral(0, hist.GetNbinsX()+1)) + if norm_bins: hist.Scale(1.0,"width") + h = hist.Clone() + objects.append(h) + h.SetFillColor(0) + h.SetLineWidth(3) + h.SetLineColor(colourlist[hist_count]) + h.SetMarkerColor(colourlist[hist_count]) + h.SetMarkerSize(0) + hs.Add(h) + hist_count+=1 + o=h.Clone() + objects.append(o) + legend_hists.append(o) + # hs.Draw("nostack") + + c1 = R.TCanvas() + c1.cd() + + if ratio: + if ReweightPlot: pads=TwoPadSplit(0.39,0.01,0.01) + else: pads=TwoPadSplit(0.29,0.01,0.01) + else: + pads=OnePad() + pads[0].cd() + + if(log_y): pads[0].SetLogy(1) + if(log_x): pads[0].SetLogx(1) + if custom_x_range: + if x_axis_max > hists[0].GetXaxis().GetXmax(): x_axis_max = hists[0].GetXaxis().GetXmax() + if ratio: + if(log_x): pads[1].SetLogx(1) + axish = createAxisHists(2,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.01) + axish[1].GetXaxis().SetTitle(x_title) + axish[1].GetXaxis().SetLabelSize(0.03) + axish[1].GetYaxis().SetNdivisions(4) + axish[1].GetYaxis().SetTitle("Ratio") + #if ReweightPlot: + # axish[1].GetYaxis().SetTitle("Correction") + axish[1].GetYaxis().SetTitleOffset(1.6) + axish[1].GetYaxis().SetTitleSize(0.04) + axish[1].GetYaxis().SetLabelSize(0.03) + + axish[0].GetXaxis().SetTitleSize(0) + axish[0].GetXaxis().SetLabelSize(0) + if custom_x_range: + axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + axish[1].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + if custom_y_range: + axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + axish[1].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + else: + axish = createAxisHists(1,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.005) + axish[0].GetXaxis().SetLabelSize(0.03) + axish[0].GetXaxis().SetTitle(x_title) + axish[0].GetXaxis().SetTitleSize(0.04) + if custom_x_range: + axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + if custom_y_range: + axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + axish[0].GetYaxis().SetTitle(y_title) + axish[0].GetYaxis().SetTitleOffset(1.6) + axish[0].GetYaxis().SetTitleSize(0.04) + axish[0].GetYaxis().SetLabelSize(0.03) + + hs.Draw("nostack same") + + uncert_hs = R.THStack() + if uncert_hist is not None: + if isinstance(uncert_hist, (list,)): + #col_list = [12,6,4,2,3,4] + col_list=colourlist + count = 0 + for i in uncert_hist: + if i is not None: + i.SetFillColor(CreateTransparentColor(col_list[count],0.4)) + i.SetLineColor(CreateTransparentColor(col_list[count],0.4)) + i.SetMarkerSize(0) + i.SetMarkerColor(CreateTransparentColor(col_list[count],0.4)) + i.SetFillStyle(1111) + uncert_hs.Add(i) + count+=1 + uncert_hs.Draw("nostack e2same") + else: + uncert_hist.SetFillColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetLineColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetMarkerSize(0) + uncert_hist.SetMarkerColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetFillStyle(1111) + uncert_hs.Add(uncert_hist) + uncert_hs.Draw("e2same") + + uncert_hs.Draw("nostack e2same") + if not custom_y_range: + if(log_y): + if hs.GetMinimum("nostack") >0: axish[0].SetMinimum(hs.GetMinimum("nostack")) + else: axish[0].SetMinimum(0.0009) + axish[0].SetMaximum(10**((1+extra_pad)*(math.log10(1.1*hs.GetMaximum("nostack") - math.log10(axish[0].GetMinimum()))))) + else: + maxi=1.1*(1+extra_pad)*max(hs.GetMaximum("nostack"),uncert_hs.GetMaximum("nostack")) + if not ReweightPlot: axish[0].SetMinimum(0) + else: + mini = None + maxi = None + for h in hists+uncert_hist: + if h is None: continue + for i in range(1,h.GetNbinsX()+1): + lo = h.GetBinContent(i)-h.GetBinError(i) + hi = h.GetBinContent(i)+h.GetBinError(i) + if mini is None: + mini = min(lo,hi) + maxi = max(lo,hi) + else: + mini = min(mini,lo,hi) + maxi = max(maxi,lo,hi) + #mini = min(hs.GetMinimum("nostack"),uncert_hs.GetMinimum("nostack")) + mini-= abs(mini)*extra_pad + axish[0].SetMinimum(mini) + maxi*=(1.+extra_pad) + axish[0].SetMaximum(maxi) + axish[0].Draw() + uncert_hs.Draw("nostack e2same") + + hs.Draw("nostack hist same") + axish[0].Draw("axissame") + + + #Setup legend + tot = len(hists) + if isinstance(uncert_hist,list): tot+=len(uncert_hist) + legend = PositionedLegend(0.3,0.1,2,0.04) + legend.SetTextFont(42) + legend.SetTextSize(0.035) + legend.SetFillColor(0) + + + for legi,hist in enumerate(legend_hists): + legend.AddEntry(hist,legend_titles[legi],"l") + if isinstance(uncert_hist, (list,)): + count=0 + for i in uncert_hist: + if i is not None: legend.AddEntry(i,uncert_title[count],'f') + count+=1 + else: + if uncert_hist is not None and uncert_title: legend.AddEntry(uncert_hist,uncert_title,'f') + legend.Draw("same") + + #CMS label and title + FixTopRange(pads[0], axish[0].GetMaximum(), extra_pad if extra_pad>0 else 0.30) + DrawCMSLogo(pads[0], 'CMS', 'Preliminary', 11, 0.045, 0.05, 1.0, '', 1.0) + #DrawCMSLogo(pads[0], 'CMS', 'Simulation', 11, 0.045, 0.05, 1.0, '', 1.0) + DrawTitle(pads[0], title, 3) + + latex2 = R.TLatex() + latex2.SetNDC() + latex2.SetTextAngle(0) + latex2.SetTextColor(R.kBlack) + latex2.SetTextSize(0.028) + latex2.DrawLatex(0.145,0.955,label) + + #Add ratio plot if required + if ratio: + ratio_hs = R.THStack("ratio_hs","") + hist_count=0 + pads[1].cd() + pads[1].SetGrid(0,1) + axish[1].Draw("axis") + axish[1].SetMinimum(float(ratio_range.split(',')[0])) + axish[1].SetMaximum(float(ratio_range.split(',')[1])) + div_hist = hists[0].Clone() + objects.append(div_hist) + + for i in range(0,div_hist.GetNbinsX()+2): div_hist.SetBinError(i,0) + first_hist=True + for hist in hists: + h = hist.Clone() + objects.append(h) + + h.SetFillColor(0) + h.SetLineWidth(3) + h.SetLineColor(colourlist[hist_count]) + h.SetMarkerColor(colourlist[hist_count]) + h.SetMarkerSize(0) + + h.Divide(div_hist) + if first_hist: + for i in range(1,h.GetNbinsX()+1): h.SetBinError(i,0.00001) + first_hist=False + o = h.Clone() + objects.append(o) + ratio_hs.Add(o) + hist_count+=1 + if uncert_hist is not None: + if isinstance(uncert_hist, (list,)): + ratio_err_hs = R.THStack("ratio_err_hs","") + count=0 + for i in uncert_hist: + if i is not None: + h = i.Clone() + objects.append(h) + h.Divide(div_hist) + ratio_err_hs.Add(h) + h.Draw("e2same") + count+=1 + #ratio_err_hs.Draw("nostack e2same") + else: + h = uncert_hist.Clone() + objects.append(h) + h.Divide(div_hist) + h.Draw("e2same") + ratio_hs.Draw("nostack e same") + pads[1].RedrawAxis("G") + pads[0].cd() + pads[0].GetFrame().Draw() + pads[0].RedrawAxis() + + + legendstats = PositionedLegend(0.3,0.25,3,0.04) + legendstats.SetTextFont(42) + legendstats.SetTextSize(0.044) + legendstats.SetFillColor(0) + legendstats.SetHeader(" Integrals") + + + for legi,hist in enumerate(legend_hists): + legendstats.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(), + (hist.Integral()/legend_hists[0].Integral())*100),"l") + if isinstance(uncert_hist, (list,)): + count=0 + for i in uncert_hist: + if i is not None: legendstats.AddEntry(i,uncert_title[count],'f') + count+=1 + else: + if uncert_hist is not None and uncert_title: legendstats.AddEntry(uncert_hist,uncert_title,'f') + legendstats.Draw("same") + + c1.SaveAs(outputfolder+plot_name+'.png') + #c1.SaveAs(outputfolder+plot_name+'.pdf') + if output_file is not None: + output_file.WriteObject(c1, plot_name) + for o in objects: + o.IsA().Destructor(o) + c1.Close() variables = [ - ["n_jets","N_{jets}"], - ["pt_1","p_{T}^{#tau_{1}}"], - ["pt_2", "p_{T}^{#tau_{2}}"], - ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], - ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], + # ["n_jets","N_{jets}"], + # ["pt_1","p_{T}^{#tau_{1}}"], + # ["pt_2", "p_{T}^{#tau_{2}}"], + # ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], + # ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], ["m_vis","m_{#tau#tau}"], ["pt_tt", "p_{T}^{#tau#tau}"] ] -selnames = ["medium_vloose_medium", - "medium_vvvloose_medium", - "vloose_vvvloose_medium", +selnames = [ "medium_vloose_medium_vloose", - "medium_vvvloose_medium_vvvloose", - "vloose_vvvloose_vloose_vvvloose" + "medium_vloose_medium", + # "medium_vvvloose_medium", + # "vloose_vvvloose_medium", + "medium_vvvloose_medium_vvvloose" + # "vloose_vvvloose_vloose_vvvloose" ] types=["SS","OppS"] -output_folder_name = "." +version = "v2p5" -chi2file = open('chi2test.txt','w') +if DOCHI2: chi2file = open(output_folder_name+'chi2test.txt','w') selnames_array = np.expand_dims(np.array(selnames,dtype = object),axis=1) for var in variables: - chi2file.write("----------- %s ------------ \n"% var[0]) - ChiList = [] - ChiList_SS = [] + if DOCHI2: + chi2file.write("----------- %s ------------ \n"% var[0]) + ChiList = [] + ChiList_SS = [] for sel in selnames: for chargetype in types: #-------------------------------------------------------------------- - filename = var[0]+"_inclusive_"+sel+"_tt_2018" - if chargetype == "SS": - file_w_qcdsub= R.TFile.Open(file_w_qcdsub_dirname+filename+"_ss.root", "READ") - else: - file_w_qcdsub= R.TFile.Open(file_w_qcdsub_dirname+filename+".root", "READ") - file_w_qcdsub_dir = file_w_qcdsub.Get("tt_inclusive") - (file_w_qcdsub_dir).cd() - hist_w_qcdsub = file_w_qcdsub_dir.Get("QCD") -#-------------------------------------------------------------------- + filename = "datacard_"+var[0]+"_inclusive_"+sel+"_trg_doubletau_"+version+"_tt_2018" if chargetype == "SS": - file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_dirname+filename+"_ss.root", "READ") + file= R.TFile.Open(infiles_dirname+filename+"_ss.root", "READ") else: - file_wo_qcdsub = R.TFile.Open(file_wo_qcdsub_dirname+filename+".root", "READ") - file_wo_qcdsub_dir = file_wo_qcdsub.Get("tt_inclusive") - (file_wo_qcdsub_dir).cd() - hist_wo_qcdsub = file_wo_qcdsub_dir.Get("QCD") -#-------------------------------------------------------------------- - sub_hist_w_qcdsub = file_w_qcdsub_dir.Get("data_obs") - tot_bkg_hist_w = file_w_qcdsub_dir.Get("total_bkg") + file= R.TFile.Open(infiles_dirname+filename+".root", "READ") + file_dir = file.Get("tt_inclusive") + (file_dir).cd() + if PLOTBYBIN: + hist_w_qcdsub_bybin = file_dir.Get("QCD_bybin") + hist_wo_qcdsub_bybin = file_dir.Get("QCD_bybin_nosub") + sub_hist_w_qcdsub_bybin = file_dir.Get("data_obs").Clone() + tot_bkg_hist_w = file_dir.Get("total_bkg") + sub_hist_w_qcdsub_bybin.Add(tot_bkg_hist_w,-1) + sub_hist_w_qcdsub_bybin.Add(hist_w_qcdsub_bybin) + + hist_w_qcdsub = file_dir.Get("QCD") + hist_wo_qcdsub = file_dir.Get("QCD_nosub") + + sub_hist_w_qcdsub = file_dir.Get("data_obs").Clone() + tot_bkg_hist_w = file_dir.Get("total_bkg") sub_hist_w_qcdsub.Add(tot_bkg_hist_w,-1) sub_hist_w_qcdsub.Add(hist_w_qcdsub) #-------------------------------------------------------------------- - p = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW") - chi2 = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2") - chi2NDF = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2/NDF") - p_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW") - chi2_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2") - chi2NDF_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2/NDF") - - if chargetype == "SS": - ChiList_SS.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) - else: - ChiList.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) -#-------------------------------------------------------------------- + if DOCHI2: + p = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW") + chi2 = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2") + chi2NDF = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2/NDF") + p_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW") + chi2_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2") + chi2NDF_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2/NDF") + + if chargetype == "SS": + ChiList_SS.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) + else: + ChiList.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) +#-------------------------------------------------------------------- + if PLOTBYBIN: + output_file = R.TFile(output_folder_name+"/"+var[0]+"_"+sel+"_bybin_"+chargetype+".root","RECREATE") + plot_name = var[0]+"_"+sel+"_bybin_"+chargetype + if var[0] == "n_jets": + MyCompareHists(hists = [hist_w_qcdsub_bybin,hist_wo_qcdsub_bybin], + legend_titles = ["QCD - MC","Data Only"], + title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", + x_title = var[1], y_title = "Events",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) + else: + MyCompareHists(hists = [hist_w_qcdsub_bybin,hist_wo_qcdsub_bybin], + legend_titles = ["QCD - MC","Data Only"], + title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", + x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) output_file = R.TFile(output_folder_name+"/"+var[0]+"_"+sel+"_"+chargetype+".root","RECREATE") + plot_name = var[0]+"_"+sel+"_"+chargetype if var[0] == "n_jets": - CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub,sub_hist_w_qcdsub], - legend_titles = ["#splitline{Background}{Subtracted} (%s)"%chargetype,"Data Only ("+chargetype+")","OBS - Non-QCD ("+chargetype+")"], - title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", - x_title = var[1], y_title = "Events",plot_name = var[0]+"_"+sel+"_"+chargetype, output_file = output_file) + MyCompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], + legend_titles = ["QCD - MC","Data Only"], + title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", + x_title = var[1], y_title = "Events",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) else: - CompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub,sub_hist_w_qcdsub], - legend_titles = ["#splitline{Background}{Subtracted} (%s)"%chargetype,"Data Only ("+chargetype+")","OBS - Non-QCD ("+chargetype+")"], - title="59.7 fb^{-1} (13 TeV)", extra_pad=0.2,ratio_range="0.6,1.4", - x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = var[0]+"_"+sel+"_"+chargetype, output_file = output_file) + MyCompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], + legend_titles = ["QCD - MC","Data Only"], + title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", + x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) #-------------------------------------------------------------------- output_file.Close() - file_w_qcdsub.Close() - file_wo_qcdsub.Close() -#-------------------------------------------------------------------- - ChiList_SS = np.array(ChiList_SS,dtype = object) - ChiList = np.array(ChiList,dtype = object) - ChiList = np.concatenate((selnames_array,ChiList), axis=1) - ChiList_SS = np.concatenate((selnames_array,ChiList_SS), axis=1) - ChiList = ChiList[ChiList[:,3].argsort()] - ChiList_SS = ChiList_SS[ChiList_SS[:,3].argsort()] - chi2file.write("------------ OppS ------------ \n") - order = 1 - for ChiVar in ChiList: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], - ChiVar[2],ChiVar[3])) - order+=1 - chi2file.write("------------- SS ------------ \n") - order = 1 - for ChiVar in ChiList_SS: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], - ChiVar[2],ChiVar[3])) - order+=1 - - chi2file.write("------------ Compared to BKG------------ \n") - ChiList = ChiList[ChiList[:,-1].argsort()] - ChiList_SS = ChiList_SS[ChiList_SS[:,-1].argsort()] - chi2file.write("------------ OppS ------------ \n") - order = 1 - for ChiVar in ChiList: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], - ChiVar[5],ChiVar[6])) - order+=1 - chi2file.write("------------- SS ------------ \n") - order = 1 - for ChiVar in ChiList_SS: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], - ChiVar[5],ChiVar[6])) - order+=1 + file.Close() +#-------------------------------------------------------------------- + if DOCHI2: + ChiList_SS = np.array(ChiList_SS,dtype = object) + ChiList = np.array(ChiList,dtype = object) + ChiList = np.concatenate((selnames_array,ChiList), axis=1) + ChiList_SS = np.concatenate((selnames_array,ChiList_SS), axis=1) + ChiList = ChiList[ChiList[:,3].argsort()] + ChiList_SS = ChiList_SS[ChiList_SS[:,3].argsort()] + chi2file.write("------------ OppS ------------ \n") + order = 1 + for ChiVar in ChiList: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], + ChiVar[2],ChiVar[3])) + order+=1 + chi2file.write("------------- SS ------------ \n") + order = 1 + for ChiVar in ChiList_SS: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], + ChiVar[2],ChiVar[3])) + order+=1 + + chi2file.write("------------ Compared to BKG------------ \n") + ChiList = ChiList[ChiList[:,-1].argsort()] + ChiList_SS = ChiList_SS[ChiList_SS[:,-1].argsort()] + chi2file.write("------------ OppS ------------ \n") + order = 1 + for ChiVar in ChiList: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], + ChiVar[5],ChiVar[6])) + order+=1 + chi2file.write("------------- SS ------------ \n") + order = 1 + for ChiVar in ChiList_SS: + chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], + ChiVar[5],ChiVar[6])) + order+=1 diff --git a/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py index 063fdf6b6..4347fc427 100644 --- a/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py +++ b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py @@ -1,52 +1,72 @@ import os +import json variables = [ - # 'n_jets(4,0,4)', - # 'pt_1(20,0,200)', - # 'pt_2(20,0,200)', - # 'mt_1(30,0,300)', - # 'mt_2(30,0,300)', - # 'pt_tt(20,0,200)', - 'm_vis(20,0,200)' + 'n_jets(4,0,4)', + 'pt_1(20,0,200)', + 'pt_2(20,0,200)', + 'mt_1(30,0,300)', + 'mt_2(30,0,300)', + 'pt_tt(20,0,200)', + 'm_vis(20,0,200)' ] #Selections in the control region (QCD) selnames = [ ["medium_vloose_medium","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5"], - ["medium_vvvloose_medium","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], - ["vloose_vvvloose_medium","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], + # ["medium_vvvloose_medium","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], + # ["vloose_vvvloose_medium","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5"], ["medium_vloose_medium_vloose","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5"], ["medium_vvvloose_medium_vvvloose","deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5"], - ["vloose_vvvloose_vloose_vvvloose","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5"], + # ["vloose_vvvloose_vloose_vvvloose","deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5"], ] DO_SS = True #produce same-sign files years = ["UL_2018"]#"UL_2018","2022" -triggernames_2022 = ["trg_doubletau","trg_doubletau_plusjet60","trg_doubletau_plusjet75"] +triggernames_2022 = [["trg_doubletau && pt_1>40 && pt_2>40","trg_doubletau"],["(trg_doubletau && pt_1>40 && pt_2>40) || ((trg_doubletau_plusjet60 || trg_doubletau_plusjet75) && trg60jet_pt>65)","trg_both"]]#pt>35 base cut +versions = ["v2p5"] #"v2p1","v2p5" + + +json_name= 'input/tau_SF_strings_dm_binned_mediumvsjet_vvloosevsele_split_fit.json' +with open(json_name) as json_file: + sf_data = json.load(json_file) +sf=sf_data['mediumvsjet_vvloosevsele']['2018'] +sf+='*%s' % sf.replace('_2','_1') for yr in years: for v in variables: v_tt = v for sel in selnames: - extra=' --ratio_range=\"0.6,1.4\" ' - #extra += ' --tt_qcd_sel_num=%i'%sel if yr == "UL_2018": - triggernames = ["trg_doubletau"] + triggernames = [["trg_doubletau && pt_1>40 && pt_2>40","trg_doubletau"]] + add_cond = '--add_wt=\'%(sf)s*1/wt_tau_id_dm\'' % vars()#'--add_wt=\'wt_prefire*%(sf)s/wt_tau_id_dm*%(trg_sf)s\'' % vars() else: triggernames = triggernames_2022 + add_cond = '' for trigname in triggernames: - extra+= ' --extra_name=%s_%s'%(sel[0],trigname) - if v[0] != 'm': - extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%trigname - else: - extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%trigname - - extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%(sel[1],trigname) - - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) - if DO_SS: - os.system('python scripts/HiggsTauTauPlot.py %(extra)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + for version in versions: + extra=' --ratio_range=\"0.6,1.4\" ' + if v[0] != 'm': + extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%trigname[0] + + extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%(sel[1],trigname[0]) + else: + extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%trigname[0] + + extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%(sel[1],trigname[0]) + + if version =="v2p5": + extra += ' --v2p5' + extra+= ' --extra_name=%s_%s_v2p5'%(sel[0],trigname[1]) + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + if DO_SS: + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + elif yr=="UL_2018": + extra+= ' --extra_name=%s_%s_v2p1'%(sel[0],trigname[1]) + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + if DO_SS: + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) From 37898185ecf30195c61008e8e44cb09c2c02612f Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 27 Jul 2023 13:48:26 +0100 Subject: [PATCH 29/50] Remove added tgz from test folder --- test/July0623_2022_filelists.tgz | Bin 2048000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/July0623_2022_filelists.tgz diff --git a/test/July0623_2022_filelists.tgz b/test/July0623_2022_filelists.tgz deleted file mode 100644 index 1ffa62ff971040db564f021f3a498db518be17a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048000 zcmdSi&5m5ldA4bebrd=Qi?!b0c;_Yr80eV>o)OeGXWrTdMG5fPce(BA{xZ7rC+??h z;M)@$5HcgOxGFO9z9Lrr)8GE}-`~potG${1!@vFZ*Pma$eEr97Kfisw-t3>he);3K zUw{4f6j>E`0G__~OI=oQ5wx!xx|N z+2V`O@Wp5N;xl~l8NT=oUwnoyKKzg3_~LVX@j1TuoWD+d@j1Tu9AA8nFFwZ?pW}-U z|7ZhWe1R{%z!zWOi!b<32w!}GFTTJRU*L-`@WqFJK#4ED#1~)Ui!brTm-ymK{KSFFyW2 zeDMvw_y%8mgD<|p7vJEEZ}7!8_~ILU@eRF(=)WeeeD+2!T6?1x?K=~~25)clqO~`A z(b^lmXzh(&wDv|XT6?1x?Yq>`e-(ToU>PwiBX;4756g&Q88Iv)hGoRCj2M;?!!m-c z!T6eqWyFNp;*}4}h+!EqEF*?x#ITGQmJ!4MC|E`e%gFn78M?q@88OFiyI4jH%ZOna zF)Sm7WrY7;V;M0lBZg(fu#6a%5exj856g&Q88Iv)hGm4mHDDPrEF*?x#ITGQmJ!1; zVu`PwiBZg&!f4aajVpv8D%ZOnaF)Sm7WyG+ISmAHGSVj!X2>*bJWyG+I7?u&k zGGbUp-ZyX4PpDW%49kc$PAynQ_;(yEBZg(fu#6a%5yLWKSVj!Xh+!EqEF-pX=i?8= zkr~T~VHq(jBZg(fu#6a%5yLWKSVj!X2rVr*v^bU#$1>trMjXqCV;ONQBaUU{{a6wF zh~QX89Lor9b&h4kv5YvD5yvv(SVkPnh+`RXEF+F(#IcOv-0N6I9LtDf8F3up9T!x` z`O9&;aQwy7@wW!YGJ?gx`5QK0ZTYW?@H(lCIF=E|GU8Z99LtDf8Nuk}SVkPnh+`RX zEF+F(#IcMxmJ!D?;#fu;%LxDN#4_SoMjXqCV;ONQBaUUnv5YvD5yvv(SVs5)k7dNM zjJ)5-gMOF8GU8Z99LtDf8F4Hlj%CELjPTD0SVkPnh+`RXEF+F(#IcMxmJ!D?;#fu; z%LxCNiDksGj5wAN$1>trMjXqCV;ONQBaUUnv5fFON4BY|Zku#5zjk-##7qitXr2`nRl zWhAhS1kU$?+iT!(7Pxu@{>mEo`v&g*!9OkXw|c%#^ItOICqy@|29}Y)G7?xu0?P=d zqrfr}SVrD&B@N?rU>ON4BY|Zku#5zjk-#z%SVs8o7?zR1G7?xu0?SBX83`;Sfn_AH zj0BdEz%s&@X)GgwWhAhS1eTG&G7?xu0?SBX83`;Sfn|ih(_ON4BY|Zku#5zjk-#!SzmVat8;NBkv5X{^ zk;F2RSVj`dNMadDEF+0!B(aR(Z>;Zs_y~SuO)MjcWhAkTB$koHGLl$E63a+p8A&W7 zIC>mXX3TQdmX`%Sd4v!QVRz%Sd4v zDJ&y}Wu&l-6qb>~GE!JZ3ZEG%EF(Bw6qb>~GE!JZ3d=}g87V9yg=M6$j1-oU!ZL#E zS78|`EF*mXX3TQdmX`%Sd4vDJ&y6pca;q!ZK1=MheSFVHqhbBZbMJaPKV~ z>k5|^+~A9UPv&28_$O5U@q)iM@Lz1~ zGE!JZ3d=}g8R6GEmXX3TQdmX`%Sd4vDJ&y}Wu&l-6qb>~GQyWkEF*mXX3T zQdmX`%Sd4vDJ&y}WrTi2z;C*ZWu&o;G?tOZGSXN^8p}vy8EGsdjb)^-q_K=NmXXFX(pW|s%SdAxX)Gg+Wu&o;-~iEBMjFdVV;N~IBaLOGv5Yj9k;XF8 zSVkJl2yR%7Wu&o;G?tOZGSXN^8p}vy8EGsdjb)^JWMLUuSVk6>k%eVsVHsIiMi!P4{MNa!j4Ui83(LsDGP1CYEG#1n%gDkqvapOS zEF<{S*TOQgu#7A$BMZyO!ZNb3j4Ui83(LsDGP1CY;1BQ%%gDkqvapOSEF%lc$igzR zu#7A$BMZyO!ZL!t11>Bh3(LsDGP1CYEG#1n%gDkqvapOSEF%lc2+jx#%gDkqvapOS zEF%lc$igzRu#7A$BMZyO!ZLzO)WR~du#7A$BMZyO!ZNb3j4Ui83(LsDGP1CY;F!6v zj4Ui83(LsDGP1CYEG#1n%gDkqvM^ID+?a6>U%U|Vyu-hn^DkEXQ!)QY!{3kiVj^4# z18-S}No8RfSy)CEmXU>JWMLUuSVk6>k%eVsVHsIiM(9P0FTKGsGFV0i%gA6E87w1% zWn{3743?3>GBQ|3@ai>KMh45sU>O-KBZFmRu#60rk-;)DSVjiR2z~<`EF*(uWU!13 zmXX0SGFV0i%gA6E87w1%WdwhQ8Z0A&Wn{3743?3>GBQ|32Fu7`85t}igJlGN3?D2b zgJoo}j0~2M!7?&fMh45sU>O-KBZFlGf0G+5BZFmRu#60rk-;)DSVjiR$Y2>6EF*(u z1jm5EGBQ|32Fu7`85t}igJoo}j0~2M!7?&fMsQCWEF*(uWU!13mXX0SGFV0i%gA6E z87w1%WdtY5!7?&fMh45sU>O-KBZFmRu#60rk-;)D7&v&<=6Ra8MIMIuw|f4SjDMcy zABOll8DEBuuA%Gmm%o4i%g;ak`2PLt^>!o`+e5Dd4BQ@S{Glg*8h9Hu_^2m;t7{we z4+e< zQTf$$WC^#U9$~`vP`)-Dal$q#Uz?6VVH=gNO-H1#jmp=iBUHE@^#}*Hhw`=QhzGV& z`Py^@1ly>5Z8{=?ZB)KC9U;LsDqow9YX9x1N4bA{C|{e7g8w!uUz?7S|28ULn~tLY zHY#76j-8`!mp#9_}i%Xo$fl?i@%ME z-|4QS-T2$6_?_-L+K+!bDsSNzZ{gR`&iZY_d~G_~TfdFU*QTT0_1ma?Z93Xtzm3Y* zCf>rYqn+}%6Xq@aI@&A0jmp=iquuh`sC;cY+AqJ2%Gai&9rL%N@)mya7JeP=ecvX` z*QTT0@7t(+Z93ZjzKzP)rlTG3+o*hP;w}6-+RJ`BVcx>8quuP=sC;cY+Rwg?%Gai& z9qrqwd~G_~(|$WDZ{Zhj;n&gb^lid?Z93YYzKzP)rlTF|+o*hPI@+VYjmp<1-ome= z-R8Fw<}Lg>+Hby%%Gai&9p~Gqd~G_~bH0tr*QTRg=eMKs7Jl&-ejV)}-zLo0rlTF? z+o*hPI@&|Njmp=iqg~|NsC;eWE&Mv#4}Lpg-ome=9pT%kd~G_~6TXeg*QTRg;oGQu zZQ}dFjkj>)E!=nux1*cb-28-%w{SbUjm%3HYc7H+(S z8*kyp_k|m8;l}rc8*kyp_k|m8;l^9I@fL2pg&W@&ZoGvX-xqGYg&W@&ZoGvX-xqGY zg&S|-##^}Y7H)iBxbYTld|$Zn7H)iBxbYTlyoDQY;l^9I@qOXOTe$Ik;l^9I@qOXO zTe$Ik;l^9I@fL2pg&S|-#`lFAZ{f!Gg&S|-#`lFAZ{fyUxbYTlyoDRz7jC?T8{Zdh zyoDRz7jC?T8{ZdhyoDQY;l^9I@fL1;U%2rWZhT+3@fL1;U%2rWZoGvXZ{fyUxbc1A z##^}Yec{Gixbc1A##^}Yec{GixbYTlyoDQY;l}rc8*kyp_k|m8;l}rc8*kyxTe$NU z?!1LNZ{f~cxbqh7d|$Zp7Vdmsxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96 zTe$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LN zZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7 zyoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ z^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI z&Re+i7Vf--J8$8^TX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX z2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm z9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjP zc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE z;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7t zg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x z7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}& zTX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8 zZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sW zyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg z@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;l*2c@fKdZg%@w( z#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC z7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn zUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvT zc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU z;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZ zg%@w(&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$ z7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1 zTX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3 zZ{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzC zyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok z^A_H`g*R{E&0Bc$7T&ytH*evKxA4VV_~I>m@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf z7QT23U%Z7c-oh7e;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>= zg)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e z;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB|Eqw77 zzIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fJS3g%5Ax z!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX% z4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6 zKD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR z`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M z;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2 zg%5Ax!&~?qwQ&3Vt+#8C_1 z9?Gw#qZYo6%CDxQ7QT(juco6GzKzPSrlS^qJL*vj-yX`>rlS_Vjmp=iqZYo6%Gai& z7QT(j*QTQuzKzP)rlS^qJL*vj-yX`>rlS_Vjmp=iqZYo6%Gai&7QT(j*QTQuemm+> z3*R2f*QTQuzKzP)rlS_Vjmp=iqZYo6%Gai&7QT(j*QTQuemm+>3*R2f*QTQuzKzP) zrlS_Vjmp=iqZYo6%Gai&7JfVGQ48N5%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZYo6 z%Gai&7JfVGQ48N5%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZWQU>QM{d9?I9IqZYo6 z%Gai&7QT(j*QTQuzKzP)rlS_Vjmp=iqZWQU>QM{d9?I9IqZYo6%Gai&7QT(j*QTQu zzKzP)Cf>p?-ome=ec?B+^*Y)YzC9GLP1n)B@NHDQHeE;i!naZJ+H@W53*Sb?YtzMB z_{CfJb+j-1_OM&(x%Z{gR`zVO=#^A>&`?F-*V z#qV_2(Z29)RQyhN9qkL>M#b-R*U`T4+fjK7zjzD3j`oFb6Xx%9NBhFJQTf_*v@d)c zm9I@l`@*+T`P#%=_;s`|{C2{;gfUoO-K8}w^8}pbhI!0c2wTN zFW$nhqkZAqg!$TZv@d)cm9I@l`@*+T`Py`}FMJ!7uT8v#Uq}1GZzs%K_;s`|d>fUo zO-K8}w^8}pbhIyg8a+7P464S=_X*~E!=nux1)Qc-29k~w{SbU zN6I!TUYqRb9x2H{QaH?+Z8H!j10>H{QaH zw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3x7YUgqJnm!i~3Z)`@)U4aO3;Jjkj>)`@)U4aN{l9cnde)!j10>H{QaH?+Z8H!j10>H{QaHw{YVv z+;|H&zAxN(3pc(m+;|H&zAxN(3pc(m+<6Ok-ol-?aOW-Dc?);m!kzC6f4|QR%{R{X zg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i z7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96 zTe$NU?!1LNZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LN zZ{f~cxbqh7yoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqh7 zyoEb&;m%vQ^A_&Bg*$KI&Re+i7Vf--J8$96Te$NU?!1LNZ{f~cxbqesyoCpE;lW#Y z@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp z!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX z2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm z9=wGIZ{fjPc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjP zc<>e;yoCpE;lW#Y@D?7tg$Hlp!CQFn79PBX2XEoQTX^sm9=wGIZ{fjPc<>e;yoCpE z;lW#Y@D`rDg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-F zg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x z7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}& zTX^yop1g%8Z{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8 zZ{f*Xc=8sWyoD!k;mKQg@)n-Fg(q*}$y<2x7M{F?CvV}&TX^yop1g%8Z{f*Xc=8sW zyoD!k;mKQg@)n-Fg(q*}$y<2x7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c z@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w( z#anps7GAuC7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC z7jNOkTX^vnUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn zUc7}DZ{fvTc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vnUc7}DZ{fvT zc<~lqyoDEU;l*2c@fKdZg%@w(#anps7GAuC7jNOkTX^vn-n@l3Z{f{bc=HzCyoEP! z;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H` zg*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$ z7T&ytH*ew1TX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1 zTX^#p-n@l3Z{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3 zZ{f{bc=HzCyoEP!;muok^A_H`g*R{E&0Bc$7T&ytH*ew1TX^#p-n@l3Z{f{bc=Hy% zcne>=g)iR17jNNm@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c z-oh7e;fuHM#asB|Eqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNN< zxA4VV_~I>m@fN;#3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB| zEqw77zIY2?yoE2`!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNNm@fN;# z3tzm2FW$lzZ{dr#@WosB;w^mf7QT23U%Z7c-oh7e;fuHM#asB|Eqw77zIY2?yoE2` z!WVDhi?{H_TlnHFeDM~(cne>=g)iR17jNOiTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_ z@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax z!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX% z4{zbaTlnx6KD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6 zKD>nwZ{fpR`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>nwZ{fpR z`0y4!yoC>M;lo?_@D@J2g%5Ax!&~_97CyX%4{zbaTlnx6KD>p`Q49CaU;h66FF*hE z^|Z8~b<+o*hPI%?tDsC;cYYT?_cd~G^v;oGQuZ8~b^|Z8~b<+o*hPI%?tDsC;cYYT?_cd~G^v;kTn6weansd~G^v;oGQuZ8~b<+o*hP zI%?tDsC;cYYT?_cd~G^v;kTn6weansd~G^v;oGQuZ8~b<+o*hPI%?tDsC;cYYT>t| z9<}i8p?qyRYT?_cd~G^v;oGQuZ8~b<+o*hPI%?tDsC;cYYT>t|9<}i8p?qyRYT?_c zd~G^v;oGQuZ8~b<+o*hPI%?s!qaL;J?V)^aI%?tDsC;cYYT?_cd~G^v;oGQuZ8~b< z+o*hPI%?s!qaL;J?V)^aI%?tDsC;cYYT?_cd~G^v;oGQuZQ?Eb;w}6-+82KFTCbyh z;oC#;+H@W53*Sb?YtwbKFMJynuT9s{zVK~Syf$6Dg-$vzE)6u^0ZB%|W@fLm^?F+x1FmK`4(Z29)RQyhN9qkL>M#b-R*U`T4ZB+bD zcOC5uza5pg@Qb(b>u6v2HevowceF2j8fUoO-K8}Z%5@V{NgSAI@%Y$O_;AuNBhFJQTf_* zv@d)cm9I@l`@*+T`P#%=_;s`|{C2{;gfUoO-K8}w^8}pbhI!0 zc2wTNFW$nhqkZAqg!$TZv@d)cm9I@l`@*+T`Py`}FMJ!7uT8v#Uq}1GZzs%K_;s`| zd>fUoO-K8}w^8}pbhIyg8`&NFsFWh(w zH{QaHw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3pd`vjkj>)E!_CNaN{l9_`Y!CE!_CN zaN{lf{iG6J)_4my-olOV3pd`vjqeLL-olOV3pd`vjqeLL-olNyaN{l9cndeaFWh(w zH@+|2cndeaFWh(wH{QaHw{YVv-1xq5<1O6yzHs9$-1xq5<1O6yzHs9$+;|H&-olNy zaO3;Jjkj>)`@)U4aO3;Jjkj>)E!=nuH{QaH?+Z8H!j10>H{QaH?+Z8H!j10>w~rS7 z>A(NKfBM_M{`*^*e|^tQ_7DH|+h2cv`SSH2zy197^?fhqKY!f9;Omd?KfeF++aLbr z+fOj1_d6cERm7)!|7+6kLw$OCdlzQ6_y7BU{SO|UpRR~}zdYWzo#v;v>;3O!$EV-F zfw7Js^0&YK{PyGbzyI|8&+qpPeemdCe*NqJ$b245;lJa5`v16J#ee-{|F5^L$m>6D zTk-b4+$`h%@q^bMe*b&si;tI|Kz;@HH@?6467DDe7oXrhBfajrfx0F?$ki{-KwXm`r0W-Fpsva4zv6=o z{@N>e5W`=50`-^iK^T8=2I`vpAdbH}kl z$nh`EK>clgkmg^Ufx0F?$n-DHKwXm`B>NX8)LYw`noPoL^JphsyXP~ah z53uC58K@KZAQ#-j9~?q>@fE07@`D2jFU~-{k{=vScyR{mmHgnK!izJIFC=wMmLIRm z$b$nAul)=k9D{iA3Di#)4~|5u8;>8(=SE9I{sWti0sg0L@ z0FTaYy!Zt2k3jrIcyyZM#g`!dBG`kw9KARL@fX1!-0|qe8K}Pq;@7oDCq`a-1rN@R zy!Zs_m8=rsqmv{rz6AA3esHSf#Tlqq@`Dp5FU~-{lGV#VUeq6)S$XY8pc3Ju^D8gT zK>V2f=q$^NGY~&!KRVa);ta%(*^kb+yfy>%omC}5Q;G1=shJml1oF>7y^>WTd~}-T z#h-z?COfP>Jx-S)JE@1S%0eI=A!U4CEi8`sqR?!bj(MUi=xTYx0A$ zJ+I9`{TZr6_~@L_i?2ZafTR-Pqmx4~z6AMSLH%^065*p0MKAsg)HPZC5vWA?=#0{9 zKLV8qADvfvaR%y|{NU`;i!+e_8P!i0DiJ<9)AZWUKz#)&5k5K}_2Mf~*JPClADx(b z@g=Bh@`KY;FU~-|4%AN{}x3bs%6;&d%2YZc3&@gfnLN`$5op*{H9A+P--s6=QF{*K6tGf+QWJouX;FU~++ zlOOzjk(Xv51}L?`z5m7UySKY}ZT=5#@Al#oh#yY;!L8n2oPqc;+aKKa?Zp|0zX_o%(B)r7^%S8$xXIp&{|M@u{NRRrFU~;ybfFTVtEUL%e*~2X{lV@0Ui(K-iO?V1 z+V8~~sB7|r+x)#a19eS)aLd0JXP~ahDiNw123#dVS5Fc8gBuFI_K%YDuErh_leK#Xwm+mcFz{@^x-ul)#ABJ>BhG<YA()p{u6|{lTpc zU;G)UYx0BJ9=P}gLY2wgoz=nrnT_~Oq% zU6a*cCG`}ct3>E35xPo*t`ecErwCmoLRU`_x=Mup;7=dD_N$=&COr59N-s`8E!rv( zx=Mtu5}~U^=;|p#SBcQoQ-rP(q4)_;Ef=8@VW>nH5B?6+OTUVt5@9^}n@}&#K>TnL z>M6odi7?btgrO3ln$SWe!cd7YR3Z%Z6k(`D80w8iLnXpci7-?m43!AgmK!P&hDwB? z5@D!B80w8iLnXpcZ!{Vz5r(>@GgKl}Q6W?!43!8&CBjgNFjSoi6$L_Vv7z2*G*luC zl?c^)WQP1fTmF0_zpco>&H4{f{hX|xA`F!XL%q>xs6?nTYp6sRDiOZ_B@}HxW2i(J zDiMZyqtQ@_Fw|3op%P)JHyV|HnN=bTl?X#6!cd7Y)EkY4N`#>jVW>nH>M6odiBNu5 zQHd~AA`F!XLp?C>9 zA`F!XLnXpciBSHWtrB6VrwBtO!cd7YR3Z$O2ty^pP>C>9A`F!X#kV!}`(CO?|*(({8vVcRU%B4 z2va4(REbb6V5t&eszjJ75x)P4Wbv0#CBjsRFjXRa|C7+_&p_PLnJN*gDK=FiOqB>z zCBjsRFjXQ!$;*NMub{5UDiNkigsBpts-&qBVX8!!DiNkigsBo?szjJ7 z5vEFnsS;tTL@56*szjJ75vEFnsS;tTM3^cOrb>jV5@D)Dm?{yjV5@D)D zm?{ybN`$ErVX8!!DiNkigz~2ol?YQM!c>VcRU%B42va4(REaQEB21MCQzb(2n}Yf& zxl|%7l?Y2E!cvK_R3a>u2umfxQi-rsA}o~%)vs%%5@D%CSSk^gN`$2nVW~t|DiM}S zgryQ;sYIxDgHnmGR3a>u2umfxQi-rsA}o~%OC`cmPZ5?%glfPll?Y2E!cvK_R3a>u z2umfxQi-rsA}o~%OC>_Jq?SsAr4nJOL|7^jmP&-B5@D%CSSk^gN`$2np_=qdCBjmP zuv8)}l?Y2E!cvK_R39sqB}%QqrA9c_mP(Ev@^?=8qrUtJOMYXM*AxApQQS&bDiM}S zger2DN`$2nVW~t|DiM}SgryQ;sYF;R5td4Xr4ph1tE3WPsYF;R5td4Xr4nJOL|7^j zmP&-B5@D%CD6i=%5td4Xr4nJOL|7^jmP&-B5@D%CSSk^gN`&IaBlWXIt3=o;5w=Q% ztrB6YMA#}3wn~Jp5@D-E*eVgKA97nI!d8i}RU&Ma2wNq>R*A4xB5aiiTP4C)iBSEv z)hZFTN`$QvVXH*gDiO9ygsl=`t3=o;5w=Q%>ev2OiLg~7Y?TOGCBjyTuvH>#l?YoU z!d8i}RU%aTQ>#SSDiO9ygsl=`t3=o;5w=Q%trB6YMA#}3sv)#hB5aiiTP4C)iLg~7 zY?TOGCBjyTuvH>#l?c@$-zpKdN`$QvVXH*gDiO9ygsl=`tH9Q(YqXk^RT^qJ#l?YoU!d8h; z{!LJcuvH>#l?YoU!d8i}RU&Ma2wNq>R*A4xA{5^f)D?NDM7UHUTq+SRl?azggi9sD zr4r#%iEybzxKtukKN>8R2$xEPOC`dk65&#baH&MNR3cm|5iXSomr8`{XVj$<;Zlik zsYJL`B3vpFE|mzEN`y-#!le@7Qi)Lgvb0npTq+SRl?azggi9sDr4r#%iEybzxKtus zDiNyR+Lua%OC`dk65&#baH&MNR3cm|5iXSomr8_7B| zM7UHUTq+SRl?azgglflJDiJP~2$xEPOC`dk65&#baH&MNR3cm|5iXSo)u6sqB3vpF zE|mzEN`y-#!le@7Qi*V>M7UI;TPlpGva{qMEq6dUzsTQuRbJ8b3u&~! zj-e9cQi*V>M7UHUTq+SRl?azggi9sDr4r#%iEybzDE=a-*YT)CI4Tj2N`#{l;iyD7 zDiMxKgrgGSs6;p_5vmL7s6;p_5spfPqY~k$L^vuDj!J~165*&sI4TjU@9d)z;iyD7 zDiMxKgrgGSs6;p_5spfPqY~k$M5unm9F+)1CBjjOa8x23l?X>A!cmEER3aRe2uCGC z^}EifL^vuDj!J~165*&sI4Tj2N`#{l;iyD7DiNw*x<@6#QHgL=A{>U;h66FF*hE+_pV~d`%K?+vXr&lZ4#1Imp)}LAPxV z@-<1=ZJUF9O%gb}odc1x?HS~ClGxcc2YH<&dbZ6$UMGp4ZF7*m-4&Z4UA}NhoZagS<`>%(|Te(X8zmm&iA zZ4UA}NyuoMgS<`>^tqh_QJ?J@wmHbxr0h5sIX89tDrCpG$jPZ~4(faNMb1ubb5P&AFLHWn zn}hn^eUbB1w{wsk=aL=gB1fRMS0S&H^K)WmbASJd7UH&leRg? z>m)gvw9P?YC&}TYZ4UA}DLc+Z&KKRj3fXZka>8hvgS<|XGe+AS+2$axljP*jHV1i~Bxiqa=O8=IB|FYVj_+)*LS84y0iJCR@;XV5@N9FC z*GY1SXPbk(PRfpRk#jh=uR?a5i=4#S<{+<=-+IG1+lU zb{r%3&Aa)xFxhd8+&OQXgL+LGxp&?+2lbjXa`(L3ImnJ(uQb{vz> zOyE9FrZ#WXCc2JdVkZWAb?%lO4z8^Ef6uj>+e7Om-ZT9mizHG1+lU zK96Iv^LT$$1&M)Og@ievg4TS zI3_!e$&O?4c^s1+$K>-kCOeMF=W$GS9FrZ#WXCbtaZEmsW3uCzd>+SS$1(Xlj>(Q= z@_8JS9mizHG1+lUb{vz>Oxhk7KgqnCv(vJC4bYWAb?%lO4z8^Ef6u zj>+e7Om-ZT&*PZvI3_!e$&O>P-PNU9G4x(Wyf*Zaa?vBmmSAt$8p(l zTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$I zaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v-- z$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU z9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Z zaa?wskR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv z#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x z9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q% zcAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7 z*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$S zWXB2FaYA;SkR2yv#|hbSLUx>#9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}i zlpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7 zQg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbS zN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(Q zCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^K zoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycASzOr)0+|*>OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@OsCoR%G@ zWyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkq zmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$Jd zT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f- zY1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHS zoR%G@WyfjRaawkqB|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6 zmh3o7cAO^MtyoFzNXk{xHsjRTaI7@b% zB|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-9v zvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-8^*>Og8oRJ-8WXBoV zaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b z#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$ z9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10 zcASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42 z*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8 zh~wDjFMt33m!E(7@%{T(dn1msJ;U{fAHV(f^LJnV`0dwUzkUAY$G1O!{m=jZ%hw;@ ze|-Ptx6kHp?>7zmdfD6iH=@t)V{Xr2@-w*n3?V;5%Fj^pGqn5+OMZq?pMf~e?G;5F zXL|$%jm+fUZ4UA}NgQXJgS<`>$Jyo}uam@aZs$N8XL|;Dog|L4%|Tu#iQ{Z@ zkk?7#INKcLb&@#F?Hq{XY|kLClf-ehImqiIahz=q@;XTzXPbk(P7=r2<{+<=#Bpxt zKpba#26>$%jm+fUZ4UA} zNgQXJgS<`>$Jyo}uam@aZs$N8XL|;Dog|L4%|Tu#iQ{Z@kk?7#INKcLby9YmOLm-# zoX5HOIb7sC&h`xII(d=vINKc5b@C$Take?A>*Phw<7{(K*U3wEoJ)3`i=4-~{W-{v zbCL5n+Z^O;lAOoc<{)2_^K)WkF(7|eeb@=d7Nzy>U;M^ z&f{!zP~W>RavtY)4zlB1vg2IjJkIti89p@tFac*CQ>^K)WkF(7|UMI!j>B7dek}`zmC| zxyX5(Z4UA}NzUVJbCB0bavo=!gS<|X^EkJ2kR9ie9p@tFakf_>uao3F&Nc^moh0XR zwmHb_Bsq_>%|Tr!-w))7rzcEy9FrZ#$bHprev&3Tj*^LT$$1&M)Og@ievg4TSI3_!e$&O?4c^s1+$K>-k zCOeMF=W$GSocB|%>Pjm+j>(Q=@_8JS9mnMJI3_!e$>(uQb{vz>OyE9FrZ#^LSnj>(Q=vg4S19>-+IG5I`>$&O?4c^s1+ z$K>-kCOeMFj$^XpnCv(vpT{xTaZEmsW3uCzd>+SS$1&M)Om-ZT9mnMJI3_!e$>(uQ zb{vz>PNU9G4x(Wyf*Zaa?vBm(Sz8-@Z;PdoG{HaoKTPb{v--$7RQH z*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x( zWyf*Zaa?vBmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vB zmmSAt$8p(lTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(l zTy`9n9mi$IaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmSAt$8p(lTy`9n9mi$I zaoKTPb{v--$7RQH*>PNU9G4x(Wyf*Zaa?vBmmMc$#|hbSLUx>x9VcYR3E6Q%cAStM zCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4 zoRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2F zaYA;SkR2yv#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv z#|hbSLUx>x9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x z9VcYR3E6Q%cAStMCuGM7*>OU4oRA$SWXB2FaYA;SkR2yv#|hbSLUx>x9VcbSN!f8y zcAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS; z*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3W zWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}i zlpQB!$4S|7Qg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7 zQg)n_9VcbSN!f8ycAS(QCuPS;*>O^KoRl3WWyeX`aZ+}ilpQB!$4S|7Qg)n_9VcbS zN!f8ycAS(Qr)0+|*>OsCoRS@OsCoRS@OsC zoRS@OsCoRS@OsCoRS@OsCoRS@OsCoRS@M$7$JdT6Ub49j9f-Y1wgF zcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@ zWyfjRaawkqmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkq zmK~>M$7$JdT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK~>M$7$Jd zT6Ub49j9f-Y1wgFcASPHSoR%G@WyfjRaawkqmK|rwjRTa zI7@b%B|FZN9cRgovt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgo zvt-9vvg0h-ahB{jOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNXk{xHsjRTaI7@b%B|FZN9cRgovt-9vvg0h-ahB{j zOLm+kJI<0FXUUGUWXD;u<1E>6mh3o7cAO^MtyoFzNX zk{xHsjOg8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwN zXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8 zoRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoV zaYlBWksW7b#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b z#~ImiMs}Q$9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoVaYlBWksW7b#~ImiMs}Q$ z9cN_68QF10cASwNXJp42*>Og8oRJ-8WXBoeIR5#|-@pIm=bwIj|NhnAh~sR}aQ)%O zZ@>Ng-IqUp`}NmvpMUxB?ayET^Z)Cahz=q@;XTzXPbk(P7=r2<{+<=#BsJc$m=9=oZC4N$Jw4iUMGp; zY;%y;N#Z!$9OQM9ILm+fUZ4UA}NgQXJgS<`>$Jyo}uam@a zwmHb_BypVEIS|L$oCahz=q z@;XTzXPbk(P7=r2<{+<=#BsJc$m=9=oZC4N$Jw4iUMGp;Y;%y;N#Z!$9OQM9ILm+fUZ4UA}NgQXJgS<`>$Jyo}uam@awmHb_BypVEIS|L$od6Dxt+Z@z&@{%3rk{#zF=W%X-4zlB1^PU~I2SpOv%L!W zy_=lJ+2$axljJ^K)Wk8}GfWXHM4d7Nzy@;XV*<7{(~*GY07 zXPbk(PLlIDw{wsk=aL=gBIj|oS0S&H^K)WkF&iBd7UKZake?g z>m)gkv&}(XC&_u7Z4UA}DLc+Z&g0y^3fXZkavo=!gS<|X^Elfa%|Tu#$$6Y@4)Qul&f{!zP}fP59mizHG1+m9+*j@9 zCuy?d7`d<7HV1W`G;&|HZ4T->`F`d~Jdb0t^LT$ z$1&M)Og@ievg4S19>-+IG1+lUb{vx($K>-kCOeMF=W$GS9Fx!EnCv(vJC4bYW3uCz zd>+SS$1(Xlj>(Q=@_8JS9mnMJI3_!e$&O>POxhk7Kgqn0y|`WXCbt zaZGj``*563|NH;zVBTA=l{BA%^&~p zFW-Lh*ZO{Mo41Pil%4)Q)Tg(%_ZIJN~Et_YI2v`2XCQ==~Ci|F|>J z+y8QRq`L=)o;~jF_rRwQ1^-H!_!CJRj{Xzyekb)A9=UtK7Hg}S$O)$ zyY=?zBkxw*XOF}e!u`zqbVxoXzWDCv+^4g}7vKGS`*civ@!ik0PshX;-~BxMY)t&m zdB5jA9TH!B_xtVBG4aZGzt=t;6R&*t`|Q&(@yd6<$37hsuYC9)<$kz*Hre~Z_UR+> zugd*E`*cja^4$-zPshY7-~9mlbWFVR-4CwM#>79``-S%Dka*?0Uu2(-iGRuN7ucs` z;+5}yaeX=_Uit19)~93Ql@I@b?x)yilf9o{pFR?=eD{;<(=qX{=l#U`bWFVR-A}4d z$HXh&{e=2#O#CwMH`k{_;+5}yV|_X%Uit1f)u&_PU+nu0_34;+<-6ZZpN@%FK0Mj` zarN0`??=_AkHjnA{hJy+9TTs7_itkKbWFS?+`nnj(=qYNcmF0u&&I?<-ro)XbV$7N z-QWHGbWFVR-M?$m(=qYNcmFO$PshZI$^E+$JslITeEfkpGT-0s{_JJm-{$`Gk@(`f zzpef0nE2wmzm5IrnE2wmzis{LnDiQ=?_;>~J=hoj#1|iykp~;xpUxIveD^oBKOGZa zeD^o7KOGZaeE6S}ubKCExIcTDSVkV~Xn#5;{i5<<2m8}8=@*p;JJz3$NxwBb*rEPx zO#F6)WyG+IJlMki^kwqbi7!4ZBM-KyKYg8e<-5Nn{ppx^<-9}=*PJlKT(bhi9wi{Ey! zj6B$6{`7U?l@Gs6EF%wgp+9?>SVkV~I)6GQUit3tGJiTI|5w3pyI4jZ>>_{mI`L$& zj6B$G{&cc<<-;;!_iqpMbhdcqyMH^Nr(^PePyDuvWd!g3GAtu@|NcPFezaId?Ed|L zo{ouEzWew8c{(Ou`R?EE=joXE;=6x;pJ!v@_v`yN1bR9oZi`q(?EW8ccsg5r@!kJ} z4Nu3!7vKFq(C~CjeDU4?gA7l`qy++pmiIs5eebRV&!&3+PC-u}N#Cyh{+)rIj!7?C zzkes7r(@EK_Wci@<9`);(fa*6{XBb}boFw4X2h|K`2AY}J$;$@xAXq3f1Zv>KPx(x z5yxjn9LtE~Gb8u!Sn}*gi)F;Ij5wANzkjcvr>_&QeE09|^K?wS^4-6e&(ksS%6I?X zJ@{Oc;&l)cb=zX;*}4}2zE=yGUE8mh~K|m&$AybmJz>yd!DCb z;+60I?RcJ!iC4b+x8Hd>CM_*|fyXl9_wUd1>}6sZ@%#7Vc{(Ou`LK*QJ~QI?@3-^x zb>fxp{{3~HjfsC#u#7l9GvXgN;5oi~iDMaYEF+H3j5wAN$7e?T{vSqodI{l`4`1(C zMjXqCV;ONQBaY9EIF=E|XGR>$h~qOOj%9>@Q^7Lg_{@l78F4Hlj?auZmJ!EiMjXqC z<1-_UWrTj9!QXWQ%Sd1uiTi&$;mKP{U>S+~e=FhXnDmQE;4>qEWhC&Kk-##7b4g$s z2`nRlWhC&Kk-#z%_-ON4BY|Zku#5!0n^s^M34AxLz%mke zKUH8E!O=Fbj0BdEz%mk8Mgr&i!0k0~I179?t-vx8`1=OFS5)v%i~OyguhaaOO!x`m z&wTjINMIQWd^fGYGJ@$Su#5zjk@s6k!;MCPWhAhS1iqVAU>ON~W+bqT1iqUV{~g0J z5?Dq8%Sd1u34AxLz%ufF+jja(hGiu1nUTOU!k1|*BY|Zku#5zjk-#z%SVjWNNMIQW zEF*!>jPQ4QEF*zsB(RJGmXW|R5?Dq8%Sd1u2`nRlWrTlN#4-|CMgq%7U>ON4BY|Zk zu#5zjk-#z%SVrgNTv5X{^k;F2RSVj`dNa8aiiDe|Qj3kzk#4>`vvA+M|BluxD zv5X{^k;F2RSVj`dNMadDEF+0!B(aR(=#f}P63a+p8F~NHVf0r8%Sd7wNh~Ape+~`5 zPP(5ev5equmRLp-%Sd7wNh~9YWhAkTy#Kj9dI@0}Nh~9YWdx_!#4?gtMiR?NVi`#+ zBZif4{~ul2}F(%Sd7wNh~9YWhAkTB$koH zGLl$E=qFqJiLbDX6qb>~GE!JZ3d=}g87V9yg=M6$j1-m;{H39=j1-oU!ZK1=MheSF zVHqhbBZXz8u#6Oz5&XTgu#6Ozk-{=kSVjuVNMRW%EF*MPV5!EF*mXX3TQdmX`%Sd4vDJ&zneifFH!ZK1=MheSFVHqhbBZXz8u#6Ozk-{>918QLz zDJ&y}Wu&l-6qb>~GE$ff3isZ^v954w!41Cn_hkMhhkrulA20ZO1OLSq{#EF1n8Gqr zSVl186qb>~GE!JZ3d=}g87V9yg=M6$j1-oU!ZO0IcPt}?Wu&l-6qb>~GE!JZ3d=}g z87V9yg=K^~GE!JZ3d;!nh=AX88_P&z8EGsdjb)^< zj5L;!#xl}aMjFdVV;RAp+ZxMAV;N~IBaLOGv5Yj9k;XF8SVkJlNMjknAN?E4NMjjk zEF+C&q_K=NmXXFX(pW|s%SdAx!QUPm%SdAxX)Gg+Wu&o;G?tOZGSXN^8p}vy8NmUf zv5Yj9k;XF8SVkJlNMjjkEF+C&q_K=NmJ!^r8p}vy8EGsdjb)^})&WMLUuSVk6>k%eVsVHsIiMi!Qlg=J)6 z8Nnam7nYHQWn^I)Sy)CEmXU>JWMLUuSVk6>k%eUhe+OJxMi!Qlg=J)68Ch6H7M78P zWn^I)Sy)CEmJys07M78PWn^I)Sy)CEmXU>JWMLUuSVk6>k%eUhm#BqhWMLUuSVk6> zk%eVsVHsIiMi!Qlg=J)68No4gVHsIiMi!Qlg=J)68Ch6H7M78PWn^KdShz9c9=>=X zGBQ|32Fu7`85t}igJoo}jNsL4u#60rk-;)DSVjiR$Y2>6 zEF*(uWU!13mJ$30I9Nso%gA6E87w1%Wn{3743?3>GBQ|32FnQk3^iCr2Fu7`85t}i zgJoo}j0~2M!7?&fMh43W{un-3Mh45sU>O-KBZFmRu#60rk-;)DSVjiR2>vEFSVjiR z$Y2>6EF*(uWU!13mXX0SGFV0i%LtAEgJoo}j0~2M!7?&fMh45sU>O-KBZFmRu#DiI zG+0Ik%gA6E87w1%Wn{3743?3>GBQ|32FnOel7nSru#60rk-;)DSVjiR$Y2>6EF*(u zWH4~>s?GB>Z;Lz(@o)9~D;fVh%|8tBcQU>V9bH4$=P!T%{+FMB`tkky*X!*_Dz=AS z2N<|L)c8YB{xtA5YVc7{{#MsE>d7B-*&cdwx3le`C&z)dhn{%Z?L&{~VS6aQnvU>c z8BtgpM?J!X?V)^aI^u+FRK7MHfx5Z8}1NZB)KC9o7EZQIB%} z_E5ey9R>ewRK7MHCI4+yzBV02|7}#hHXUXE+fk45{q|74HXQ~0ZB)KC9VPs2RK7MH zMf`14zBV0Y{B2aeHXZf&+fk2#{Ps}3HXSATZB)KC9Yy(VRK7MHW%+GXzBV0&`P)&C z0{iw*zBU~t_H9(YHXTLwZB)KC9cA`yRK7MHh4yV!zBU~d^V?C6lKJ*fzBV02^KDeV zHXUX2ZB)KC9fk94RK7MHrSscSj}rLyP`)-DMeuD@zBV0Y@NHDSHXViVZB)KC9i{MX zRJ=C5$8g$*ucK}IHxs^&_U&&E#aGjHv~zzO6<eH)dpO}vF)N4w2$C(K*;b+q4n8fUoO-H-Pw^8}p#9R1vv>*I-!n}oF zM?1o|QTf_*v?qKUm9I@lyTZ3o`P#(yg&S|-##^}Y7H&s3vAOvP8*kxubQ_y(RD3nr z(T!}jQSsGeN4K)M9hJ9m<1O5H3pd`vjqeLL-olOV3pd`vjqeLL-olNyaN{l9cndea zFWh(wH@+|2cndeaFWh(wH@+|2cnde)!i~3Z<1O6yzHs9$-1xq5<1O6yzHs9$+;|H& z-olNyaO3;Jjkj>)`@)U4aO3;Jjkj>)`@)U4aN{l9cnde)!j10>H{QaH?+Z8H!j10> zH{QaHw{YVv+;|H&zAxN(3pc(m+;|H&zAxN(3pc(m+;|H&-olNyaN{l9_`Y!CE!_CN zaN{l9_`Y!CE!=nuH{QaHw{YY8!i~3Zxcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>x zcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T) z;4M6O3lHAHgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAH zgSYVDEj)M&58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAHgSYVDEj)M& z58lFqxA5RCJa`Ka-ok^o@Zc>xcnc5S!h^T);4M6O3lHAHgSYVDEj)M&58lF)xA5dG zJb4RG-olf&@Z>E#c?(b8!jre~E#c?(b8!jre~E#c?(b8 z!jre~E#c?(b8!jre~E#c?(b8!jre~E#c?(b8!jre~2Lq~?{Dv>@b&%AE89Q(+i!pU`Q^*kfBg3I+t=&O{`u?w@weap^5u_T{_ro~ ze)3`8-v4{=d!OF7^1R>V)IYtwUGF>k?fw7$$A9m4TQ&Q1z2Dv8{m&s?Z*TqS?RqCO z`}F%aKIH3<{M%oDe*5wJ-+%i4=dtU-!+!boum2Ab%vEtl`-@ ze&m1s-Fon&O+4m*{he_zX5%sc>#vN1F^7(cFNBW|Sm%@d_@~y&d0?6oFAXZz>xTY|M)Zp#>6Y%$7eAxCSLhIK8b-b@yhqH zCjpF!S3dlY^0AfSe6k-q8Neg)ugb?h1~4XG`95|rfHCpP_pyfojEPsij~xu>W8xp} z$Ib^ZBwqPG_C0_x@h{oOt_LtCUim)uJb*Fr%J;G30gQ=PKKujv*eG#6*^hk^;E{Oc z``9G`#>Bs#AA2Ogn0V#;*dYPN#4F#&{)qE2@yqAH`Ivafk6jyJNWAiW?AZWg;+5}X#|9V^uY4c-HNcp7G5Of70mj5DAAcZ@%pZF^ z&R^!o77y@9eDQs3@Bm}ti|=E52N)Ayd>@-Tz?k$JqVHq4^4Z5;lH(U?A6rSlBl*ju z7p;BlBLTCe7p;BlA^~I4i`G8&kbp7qMN8j04a>+oD?-MxkBukiKOih4_Oa~*jEOJ4 zk4-0FOnmWuY&ijA;)@TjC49~N*r;;;GO>)<$2Ju(CjFvfADdLbnDmQ^eQZ$yW72O8 z_HkJAd`$dygk{9AjJ$7`p=&0V5&Jmc34XMA<@-3^3C6@L-^bxjFeYC4@b5L25&Jk2 zdj2x8jM&G4P%tL{3E_(m%ZPm(1_iGZuY4azLC?p;KOih4hGoP)4v>PEiC6fKQ~OTXUTd+z5(>N zDj%l;FG~ z`TXVc_dnn^06(oDKVSc!!gFWJ-TMFf{0rE>uK)jg+%pIL<=dP6%WVL1o!>NLck;!E-sBnF?a3Eg8BCtR-JX20vBBgS-0jI1+Z;@u!QGyG_g%aQZs)Gx zBEX&e2kw3tF9O}kGq~H6F9P1lGq~H6F9P4mGq~H6F9P7XGr0RETm-_CCvdkXUj)RH zXK?q^d=VH=p26Lod=Vf|p26Lod=V&5p26LoeD^iH2%6`v;39CI{0Hv##y0-3ymyC2585#iMa zA(NMIwd`xtHK>M0mB$$mAK^ei859$#)~d zt1U<-UxT|n`C{$q+!@?`4ev&TSG$x%xcJ4K}dj)qR z!f-bt3>Rx@CtrfQzZEXl)=r+m-JX20)^_d;?mipbY^XQifxAD}?v8U_Y|AtC^56ZX zcCks%T>YE(-`$^ScLzD|{z$t!#(DFb?CvkLi_Lwe-u}D4&n~w5nX7;I^}Bid-u-QM zu?^7N_22BicYm1OeEIJFEW10nd9h*8)XRVOH`(2vWOs))FE$gJyZ)QcfEQZ}&DFp8 z@Nn}f{_bzFi*1LdF8}T?v5QTJ=IY<+a95y91hce|+5?&%FE7>+W!7y?OiI9nHL1{_bGr#fC^zpZ>dJnHSq5&DFozeJ?gk znyY{F+w)@Uq`CTc@1L6w4|fm0IgNRD81wEd=EYu1Q*YnhNz99#m*(o;6CgYxe*7?JqX|dH%tz z>5YFz$DKC9;emeS>EPwC=4p;QJo1#Phew`%(+`h41)AZJr|ofg!ogCKWkLP(JIjqT@?|dqBSd%;7`BpKbntYk(Y2&aY zcfRw4aafZ(-}weG!*UUNzN%|flV2cCMlN>N7@jP5K2An1HqjWK zt-rSXwadxK#YP#!>*UVIm&wV<#by|z%j9I_V*86>P40Z>E3Jk#{axX&T~0e6`f@Y`OEDuaFwn^!Jm$b~zd0>94@aNH|~pG5V>~yk;bF zG7@>sNaSQB@|qEUX*n5*=lkQ0-cC+N;`yF}BDyXSk>4Quk(F8{9LWF(&NO*gtsPDbMS zessf{-1#^eiM(bcp6@$1yiV?X=X=eKYVs$Alaa`4M&kLNa>L8yXIoB2BCi>VoQyo%iJXi?UNaIo8Hv1RByutmdCf@VWW;}|bVg=QMj|I8 zk&}_g$w=g6B=VY($jM0LH6xLe5q+TH-@1vDk;KVJ;$$RoGLqi>rPUuQiIb7U$w=a4 zBylprT#`5$Nt}!%PDT; z-lzRTcHR!#T1#7k<7_R z=46Bepv=ig=42#uGLktN$()R2PDU~(Bbk$t%*jaRWW+xyoQz~nMlvTOnUj&s$w=m8 zBy%#7IT^{EjATwmyxDRxk~ta4oQz~nMlvTOnUj&s$w=m8By%#7IT`WqYfeToCnK4Y zk<7_R=42#uGLktN$()R2PDU~(Bl={^Pke=wk;2JH;bf$6GEz7hDV&THPDTnRBZZTZ z!pR8#XegYF6i!A8CnJTEk;2JH;bf$6GEz7hDV&THPDc25XW?X|a57Rj87Z8M6i!A8 zCnJTEk;2JH;bf$6GQxCGI2kFNj1*2r3MV6llaa#7Na19pa57Rj87Z8MuznRzMhYh* zg_DuO$w=X3q;N7)I2kFNj1*2r3MV5BsD+b}!pTVCWTbF1QaBkYoQxEX3<`U1VXP}G zEo|_`e<%Bo9DhRf#|!^%@DKKlcSSd-Dx8cIPDVJ!DV&THPDTnRBZZTZ!pTVCWTbF1 zQaBkYoQxDsM*M!~WTbF1QaBkYoQxDsMhYh*g_DuO$w=X3q;N9gEt8Xx!pTVCWTbF1 zQaBkYoQxDsMhYh*g_DuO$%sB8@Rx4oWTbL3QaKr^oQzaXMk*&Gm6MUm$w=j7q;fLC z&ux{Hk;=(P z(8|e37cBaQ#U_Mb=oZ0ipu{;lFI;l}%^ zfAphrGQwd@woygBiRn$A~e1L6GQF|-5R_?6l z!)v2UT=+ zYNJ!tJMMf|ZB$Y3IDKu-2h|2=dOoK%I#BPp^C`7aMZM$BXVgX&^;`9PLTyx0zg5rY z(*_mw63?g8Mg{f9^7(AqsG@$Wo=>KYD(dI>d@gNNQG49^RNAPb_BcJ$^O3Z{nVwIi zjSkcvcRr6cs;E8gd>U<3Q5(SdEZV4|_PFzzoJf{tQG5_(L3wh+{pNIQ( z{^Rd)Z#>`NzYc%=^iKa`g5xc{olJhL9P#bDW9bk%=G()~Qk`#4(o4sD`+`|I=G*i0 z(lOt@R+f(W_SC#|%(pL-rDMK5x-K2_?JH#E7Oj|l zmwF5HR!(ip@s^H(+j^UdSgHeEXUpuC>Oj}oc9>YI16^m^Rbr(Mylh)4w^RnY&bE8R zQXTjxY&%9Q)q$?F_CssmkTOUzd4z~yW?*-{zkI$JunR0q1wmWeIZfsfplge}#9uCwJ|OLd^@z^QG4 z*UG7FS=Z7r&~>(iYpD)&oh{c|sskU>EzMf016^m!uvY3onJu|mDg#|-%d3{^K-bw) zs--&6b+&A3sSbR!w?t~G4s;zk1W0g8pH?ns3!avafm>&bo0jUpt+RzpOLgGZ*`lST zI_vkr`ga1TPT2M>Sh$$5?O3pMj9kw8%@($uo0raQ{bmc>Zp}+|)^E13?a;hb2X40Y zubu$@9JZa9S1xDUgL&x~xOKLDmzV0mt+Va5yi^Bnoo#>Rr8;oyz$aTe)wcX(<#NEE z!?x&Tsm}U?b=a1gEY(?munyY-lchTAPrPAUR&&B1?6k>%hwf{v5UiAuE>y{v5VtAWL=RHGnTH@aM4YPrP(J&~>&w ziC5~tO91{Hz@Njm_wdr?K-by!8(yj-uN!<}fj@_BU*VDnfv&Ud6TDPMUTgTm0)GzMe!wf&1E&W59KfH$w(sxK5w zyg%@T1^x`vAOZY2Y}-PvylmjlVcQIHsSb3VZ41byI?#2tjUSilz^$`w_qb9AzT>t{ z9+%31AAvuIZCA&obAwxF+skpO4%|B14vtH8;MUppZCt3c-rwP;c?5rs;LmZ}D|h7u z*#3Ut(lP5dTipI;;8LCSo9(&H;WBAN@aMSwZNQc5S??ba{5gU@NATwe^Uo3dIl}yN z1b>b&{~W=eBg{Vo)J5>;2>u+wpCkBlg!$(P{v2WcIf6e&c;b!V&oD0>b&|GfRF!j_;ZB$=eYf?yrtI-o^`;VBg{WX z@Mrn-fImm@=Lr5BVg5OSKS!8a|C~mF#jC4Kk&A4yMaH; zBNg~_1b>d;&k_7N!u)dte~vK!9KoL>%s)r)XL+&)e~vK!9KoL>_;ZB$=Lr5BVg5OS zKS!8-&k5$A6Zmrie@@`f@H0DsKPT|#1pb`B zpA-0V0)I~6&k6iFfj=kkXV8`e{+z&{6Zmrie@@`f3H&*MKPT|#1pb`Bp8?$x_;Uh( zPTheKWFe~_{p5X zpELOL^UoSA|D4a@&l&tVgFk2R=M4Uw!JjkuGssB>f6m~~8T>heKWFgg4E~(KpELM# z27k`r&j4r{{5gX^XYl6?{+z*|GvI3mb<4ml8GdJH_<;qEn&r`2o~h)^RJy2qeCTys zADz$O&l&tVgFgeOXYl6?{+z*|Gx&1`f6m~~8T>heKWFgg4E`*4HTZJ|f6m~~8T>he zKWFgg4E~(KpELM#27i|32L7DEpELM#27k`r&l&tVgFk2R=M4Uw!Jp+j4*WTTKWFgg z4E~(KpELM#27k`r&l&tVgFml7xxtf80e>#w&jtLsfIk=T=K}s*z@H2Fa{+%Y;Lq^D zTfm#w z&jtJ$e*PBl=K}s*z@H2Fa{+%Y;Lip8xqv?x@aF>l3<^@fp9}bN0e>#w&(FUxzMQTV z@aF>lT)>|T_;Ue&1`I3U&jtLsfIk=TXRtk>J&-+sz4cA)fb~H20QJE1fb>B00QA7~ zfb&4})_2bY%LB>-$pgp(#{^&z?d|a#Y75W*`TXzk_8i5n?;h#7)U7^8I3Lgd z_eXsz<=uC0R&MR6KmYjk)0gkQd-wSdJv=TB{r-@CKH4mN z^3bCnv6F`$jp$DvdX%nA9(weHWAf0WXV1w)j~+wj4)r_YQ1~Z{-l*#L;UW7^p0MAC zhatdZRlg4pBZ0}PejgqN1anpWZ9R+&CX4!gco-f`R`q^(7$r|Cae0# z^>A>1va0vP!-40?s@@L|2Oj6D`lTKYzD*YOet0O8--m}m>SR^EoA_JK^)MW+j+na8aJWcf^3WTX$~SO0Tsbj$!h8dV!*vvs zRrv-EhpQ?ktNIPhU#-tz@?g?)?tBkdTudJ7_n`+d;cywo|?H~e^+@B z6Fi7{&hT&-_8=x4E)bb~fxRCdE*F`s>izI=@yKLV?}z?D_aG)5E-ab5R1adp;WCrS zsyALHzYjf#35QEiCa=}|;o*XmxvKsuc@PskhzW;_RVFXhd;j6qNt0D?yu$vy>_JR8 z+<9d3TD>3orFsw(4p*ShU8)B$;cx}&WL58nhbzz~tKN8X{CnAhm~gnFYwlY8d_9N> z9>j#h6izI=1=wU&?}vvg!X~TUcwhZ{*@GCLQVSl$gu@kNb1$$5G2w7U*<@Ak zhleZ7CaZcsJX~=$S=H~u!xd z@o<-`xohQ?7CnfG9>m1M9k3=Z)jzEs#6({a6FrEDz9J@i5EFexjC*qQASQYc6FrED z9>hdn5feR#iM}ExdJq%+w?_0J#>0tt<15{Rn0VuZbLU$9d)ZgSL=R%3uZW2r#6({a z<4ITaASQYc6FrED9>hdn5fcx0|C)P{@E|675EFexO!Oe;#;4VTnCL-F^dKhsikRp@ zO!O5o@$gST%-zBs#6%BbqOXX#(fU1zi5|o}cRS%9f*!;~Ul9{Mh>5-;CLV63H+Ktr z5EDI!x$zv~K}_@@CVCJPeML<4ASU{XnCL-F^c6AjaI3z#TiAn`8xN%(#6%Bbq6ab2 zgP70G=-1vp#K}_@&G0}sV=s`^M6*19+nCL5Fq6ab2SHwgQ zV%Q`6*K+b8CV3E(Jcvmi#3Wx4lRSt?z9J@h5R*KJNgl*Fy(AA}k_R!#gP7ziVv+|j z$%B~WK}_->CV3E(Jcx0}OCH1|4`PxBG0B6NgRMVjP8&2QkTm znB+lB@*pO8PLP~-lWSaZKuP|aH~G&LPZ-jTN6Q;e12-D@jnCYjmx(8DlLs-$gP7z& zO!6Sc@Rc=8}7c@UF4h)EvABoAVe2QkTmm>VBC4`PxBG0B6NgRMVv+|jH~O~+G0B6NgRMVv+|j$%B|14+9>= zBoAVe2QkTmnB+lB@*pO85R*KJNgl)`4`OaSS$YtYJcvmi#3T=5k_R!#gP7z&O!6Qm zc@UF4h~Xb|{wpPW5R*NKdH(Gp{ehD`h{+zrWDjDp2Qk@$nCwAJ_8`W8@;?8B72gpa z#AFX*vIjBQgP80=O!goqdk~X7h{+zrxSwPXVzLJ@*@KwppM>KNjt4Q>gP80=%=1s( z`L*&A*X%)zV_fziCVLQ*J&4I3#AFX*vIjBGKdQ(#lLs-`gP80=jLUBJASQbdlRb#Z z9>io1VzNgJ*;P0@_3-1CdfB_;@o&Dz40J%qxawVxZZh%y&rlIlRb#Z9>jR& zls$;a9>io1VzLJ@*@KwuK}_}_CVLQ*J&4I3#N7DYco364h{+zrWDjDp2QkmToy`w< z9>io1VzLJ@*@KuHP1u8&>_JTSASQbdlRb#Z9>io1VzLJ@*@KwuLClSBbPr;(2Qk@$ znCwAJ_8=yE5R*NK$sWXH4`Q+hG5jR#Plv^WnBqZv zKZ>%f`h%!Hhx%ivKZW{3s6T`HBd9-t`U9vxf3nT{)2Bat`m?7$dis;6KY03cr$2W3 zQ>Q<4@^-lX$mvg<{=n(aoBp`zPn-U*>Cc+}sJT69zWepR|9`v!|N7_u_^-DT;>Yk7 z!ax4!4?lkW@ZsaXeERz7&19`{#R0Z_cW~Mj!5y{+uP$A z_J`;HeEt{9b7PzE?vb8rMe1{S=JEW$Kk_rJd-vVjt*Vm;|M|zSpT2ze-Mi0!=;3j3 z%=dr%@$Ygz7pL&I_&@z}x9i`&56`WO-^#~Fcs&1m|I^#^{=;8B|LN=RzkL4u@nDnS z(GdruP{Tvy7&*0r!M)+R9ZaYUk2%4tUS);SuT8`Xig=V(}NSO#vLqw%<5 z9q2ko198JT&~=VR;D&Xe>m2PqFsuVz2VUx<`L@xi9Syb(kAd6zXq0VO2fEJD@Y=8r zbe*GdwP79TI!6O)qdM@i9gU<7%RtvT8bTY^fsew`*x9fSbe*F?vtb?RI!B{r!#dD) z;3YVkA{(9B(fHW#80b1j17pKF@bNhs5gXQlu5&cpGOPn#=O{ED)q%@7iuQ(Opz9n3 zYr{Iwb&kTcVIBC$9R+B^I?#2FLbG8V=sIv}M-kcR)Q-Zj;W5y4jsme^9q2koA=t1E zd`ypmuVEeNI!9sGs1B4l3b=-4pz9okTEjZfb&i6pVIAl?N8#154t%ta0;^#i=sI!; zkl;};HM*RmNNRWt+&V`w)UXcRI!DpdunychM{(1z&iZ|@{+$4-6ON{r1{V{K#+HW1 z$mOixY~g6B`0(7;Z?IDA-V{bmbC%fW|r;AUI@>IvY_&!FYMk9ChO=V-0>@EEvt zj#hUM>%gsZw4Qrd2X39C72Lx*aO=P)TRPRzD(%tbfIo+$b=ku@>kro9XeIWr&iaFO zI9hu>th4^a8;(|6kLtju6#O}WKR*Ne^-cx;9FEpd4_`LuI!CLfhjpOq9IcZc)`6}A zpE&U6aI_YBbUEP9;b`^qu#UV2aO;3ShocqF!|Q>rbF`*;R0m!H@aF*j9FEp44=)G0 z=+R2$VI6th;0p`!xt9# zb2wVAF}fZ&HSp&E{v3{$WehI|y3Wy3jA0$F;LqV`X~pPe z1Ah)j%PEF+pz9nhp%~VIu5+|(Vps=mouj1^qdM>%ceFfWSO#1N{5c#gh8Uh3+&V`K zAcl3|);U`AFsuW&&bH8DVg7l&zr#=S2>u+wpX1TSrGpnb9_?5_;ZB$=Lr5BVg5OSKS!8ga|C~mF#jCEpXJj7{v5%dBlvTK`R54!9AW-B z9&H#oy4}E^BlvTK`DbaO;Lj2K`MK12{nrKfbAu*l{y83P9W=V#z@H=dvwW9= zKR;KuuipmX&k^RIBlvTK`R54!9AW-B9&PzEy4}E^<&g^fIf6e&@aG8r9AW-BfoRc zr36pOV6RD@kK~I{I--0O=rvd$CrjYZ3H&*MKPT{KAov9SoWP%-n<6gjQ38KX;Li#C zIe|YX@aF{noWP&ulK}plz@HQNa{_-(;Li#CIe|YX@aF{noWP%@A%Z_A@aF{noWP$G z_;Uh(PT$d^;a|VCT;LiYP&p&dq z{t|#cXYl6?{+z*|GvI3mb<4ml8GdJH_<;qEn&r`2o~h)^RJy2qeCTz9t^@v@!Jjku zGjMtaf6m~~8T>heKWFgg4E~(KpELM#27k`r&vI9TKWFgg4E~(KpELOL^N*OVe`$k1 zXYl6?{+z*|rMZDWXYl6?{+z*|Gx&1`f6m~~8T>heKWFe~`HlmB&fw1({5gX^AO6+* z!77ErKX*So2A*}mpAY}C{qWq@_hDJT8hFw<{Ok3Di#hzW^}}P<2RjP*a{+%Y;Lip8 zxqv?x@aF>l3=g~o{JDTX7x3o-{#?MH3;1&Ze=gw91^l^yKf~{y0{&dUp9}c&^Dp); zKkydt=K}s*z@H2FbAkEi0{#p?e+&3?0e>#w&jtLsfIk=T=K}ux{8QEI9|iE|0{#pN zQox@J_;Ue&F5u74zcIf4_JBVZ@aF>lT)>|T_%mQw0e>#w&jtLsfIk=T=K}s*0Bj3L zT>+vg@Y@_rw8*bAc^sGLF!=(O&MO}|dadCL3;el&KLd>y@aF>lT)>|T_;Ue&F5u4v z{JDTX7x3o-{w#MW_;Ue&F5u4v{JDTX7x3o-{#?MH3;1&Zf0jlC{#?MH3;1&Ze=acp zTwwmW!2ELoe=acpTwwlr{i_tdt}4twSD1gUF#lY^pDXxt1%IyK&lUW+f24|@3}Cy(&*>?U8@(yirVO7GA5GQkS|49s1@pDXxt1%IyK z&lUW+fGxq&}7@aG2p+`yk3_;Uk) zh9{5){@lQy8~Aere{SH<4g9%*KR58_2L9Z@pW#8Yfj>9!=LY`Vz@HoVa|3^F;Li>G zxq&}7@Mriv(!ie^_;Uk)Zs5-i{JDWYH}K~M{@lQy8~8K)EN$S=4g9%*KR58_2L9Z@ zpBwmd1AlJd&kg(;bfSSjH}K~M{@lQy8~Aere{SH<4g9%*KR57aK&l4*+`yk3_;Uk) zZs5-i{JDWYH}K~MFx)@{!77_rkRX8k`jf|gdES#Rdg<`;(WduweG>&B>jwVZz@HoV za|3^F;Li>Gxq&}7@aG2p+`ymLZ#KAbI{0%3f9~MV9sIe2KX>rw4*uN1pF8+-2Y-hC z(ZQcP_;Uw;?%>ZI{JDcackt&9{@lTzJNPqvjdbwm4*uN1pF8+-2Y>G1&mH`^gFkoh z=MMf1PZJ&dxr0A<@aGQx+`*qa_;Uw;?%>ZI{JDca!$V~Uf9~MV9sIe2KX>rw4*uN1 zpF8+-2Y>G1&+yx#gFkoh=MMhd!Jj+$a|eI!;LjcWxr0A<@Mrjm*}ZI z{JDcackt&9{@lTzJNPq5LkEBE;LjcWxr0A<@aGQx+`*qa_;Uw;?%>Y=P96NYgFkoh z=MMhd!Jj+$a|eI!;LjcWxdSGPI|?I;9|;`DFGl&PAkT>Ma3J3b(her?gU9<1fBF2U zufPBD`SZue+oTQe4th*&3b;FHZg=M0L310W?hcyUvv7CN+}|MB9W=Lr_U@p$T~Brg z&5f$>4w}msUJsfi-`zoSM@*vcu9DmllkB^zBzMFl{O&5r9WhD2yGn9LOiJ!+rAf-& z9V9(s5_5Nzq(@A0?yi#bh)K}hRgxYtNxH9U?kd3@@tB-z-Bpr1 zLd^0pIj8!1dSaH3$w}2+CHU5OOwOwAD#5qLV{%$`R|&o~9+UH`ua(3sA7Yk|$@$aW z=}C{6oIu@Gk{&TRgSx9EJz{bSbyrDxgqY=Ha;o(8^u#P5lXIoJO41`HCrfvgq(@B7 zmhLJ^kC>b;eXS&B`4F>wOiqjLPEUHoN zrzd9ln4ALLRgxYtIS0C{Bt2qs5_DHddc@=`=xZf0%ZHfdV{*20cY4wzCZ{`hm83^Z z&UfxANspME@Z43B9wBD=n4H*rJv}kY$K=fBu9EbK$*Ij zSw6%pACr@qyVH{%F*%F5t0X;QavF12NqWTOJm#*F^awG_$K-tF>*{(Sq7Q23}Ti+%rb~s1~JPZbCyBOGRT}|5VH(2 zXBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZbCyBOGRT}| z5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZbCyBO zGRT}|5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Ti+%rb~s1~JPZ zbCyBOGRT}|5VH(2XBosSgUne5G0Pxk8N@7um}QVT%OGYMWX>{(Sq7Q23}Tj1%rc5u zMls7MW*NmSqnKrsIm;+!8D-8gidjZ6%P3|U#Vn(kWfZfFVwO?NGKyJ7G0P}s8O1E4 zm}L~RjAE8i%rc5uMls7MW*NmSqnKqBvy5VvQOq)mSw=C-C}tVOETfoZ6tj$CmQldBxae!ER&dJ60=NVmPyPqiCHEw%Oqx* z#4MATWfHSYVwOqFGKpCxG0P-onZzuUm}L^POk$Qv%rc2tCNaw-W|_n+lbB@^vrJ-^ zNz5{dStc>dBxae!ER&dJ60=NVmPyPqiCHEw%Oqx*#4MATWfHSYVwOqFGKpCxG0P-o znZzuUm}L^POk$Qv%rc2tCNaw-W|_n+lbB@^vrJ-^Nz5{dStc>dBxae!ER&dJ60=NV zmRZa)i&V%rc8vW--ew zW|_q-vzTQTv&>?aSV%rc8vW--ewW|_q-vzTQTv&>?aSV%rc8vW--ewW|_q-vzTQTv&>?aSOEMk^L%(94C7BR~rW?956iOEMk^L%(94C7BR~rW?956iOEMk^L%(94C z7BR~rW?956i|&N(%(9DFb}`E? zX4%CoyO?Dcv+QD)UCgqJS#~kYE@s)qEW4Ox7qjeQmR-!Ui&=It%PwZw#Vos+Wf!yT zVwPRZvWr=EG0QGy*~Kiom}M8U>|&N(%(9DFb}`E?X4%CoyO?Dcv+QD)UCgqJS#~kY zE@s)qEW4Ox7qjeQmR-!Ui&=It%PwZw#Vos+Wf!yTVwPRZvWr=EG0QGy*~Kiom}M8U z>|&N(%(9DFb}`F7X_n#rhrfLO)7RgB`TY4~c$+lK-9eAveEH#rumAA-Pk(;@{g+RF z`1t%^e)~Sex94K%kB{(p{`da*FYgWta!{0mk{p!fpdtrVIjG4&9S)i_%hxw|(kyoe z$sI9imb*%FM@*XKu9DmllV-WABzMH5S-w`9G|SyV(jz9#a#u-u#H3m7DoKx+G|OEj z=@FA=xvL~SV$v*MD@~f^?jY$AlV-WABt2r%EO(WpM@*XKu9EbKNwa*dG-;N*gQQ1H zn&qyN^oU8b+*OhuF=>{&O41`H&2m>sdc>qzzE+wv%iTfJBPPvqS4n!rq*?ANNspK` z%Uvbu5tC;5T4~ZOcLzz2m^8~>CFv29X1S{*Jz~-IX_mW# zq(@Ae<*t(Sh)J{DRgxYtX_mW6(jz9#^0m^WS?&&!9x-W_yGqg{Ce3nJNqWSjS?(%H zkC-&eT_x!elV@+=PX}e2r^-`Iwxu+?}5Eh{-w2T_x!elXI54 zO41`H=PY-Xq(_KZJ|^cZUr$fW@-aDQxvL~SVsg%MS4n!r}WSw1G`EO)0TJz{dsa#u-u#N?diu9EbK$vMkiCFl{) zLCbYo2x68&%rZ=_4S#tdf|zBPTpPZt1U({5t_|N+f*uhj*M`4V60>}c*1~NhW*NjR zgP3KIIm;ks8D!2fh*<`ivkYRELCi9USq3r7AZ8iFEQ8Eh1~JPZbCyBO@;OltA9pd! zAZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8%OG=>LCi9U zSq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8%OG=> zLCi9USq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gBW*NjRgP3IyvkWq48N@7u%vlC8 z%OG=>LCi9USq3r7AZ8h4&N7Hu2AQ)AVwOSXEQ6S3kU7gJW*NmSqnKqBvy5VvQOq*R zoaJ)`{rV67D07xk%rc5uMls7MW*NmSqnKqBvy5VvQOq)mSw=C-C}tVOETfoZ6tj$C zmQl!1JQzuroS&t2t0 z_{abJ;m5BZK79O_PhUTMe6FMXx1aWi``vH;{nJ!*j>} zi$dT3@yEZ*`COdB-{SxD%iREf_siV?L-}bpz_(xQJ9sd~G&4%|9N$~8PU zxOI+b!k%kTHK-W34uwfnOI!6*V ztOH#KUg{${8=cyboDGkG+xp1OhIOFp9I4r`4s@L(GaJ@{u5%=2qdM@i9U0rO40N3% zVH?(gkHV3!4eLPHInuRZ9q2kowl=H-T?bx*Ba9oJ+L6T#kAbdpByqz!@bNivxM3aW zI!6jOtOH%=$lykG;Bt=CZdeAo&XL&->p<5z61!m?_{bf3-LMXHog=Lq)`6}Ar*_19 zqfb!k?alYz{hlRy%nK38butQ8{9h3+>T}!N2hi)x;Q)rZk?mS z#bF(|b&kdshjrlAIT~6V){*xVZXG!UNbqRJar6=#jW`aEfiJA10moq-_`*6GZyeTv zZ-t}b#$lcH`(XWp4XSgv=6i54hfBVP$H?WZ-)x8Ly@%(vezS$6$;n}z^_wjm%}oyL zz|FS)z#G7y57&l|F6U^>a(E2fI!8m6!#Z&59F15G>%gsZG+;Tb1Gf%*vZYfU4P=fk z2mJYP3Hh+j`qRSLT>rY3Ai^oTG;8P0z9KfFs7n=_+N3I8M9q{MF zh33QSfv$5jvN@~+T?bw^@aMy2>7&a5e?DB4KCC0J0eoSBKOZhgA6^f1oukptQ5|>* zz@HD-uMbZRzD&WN4;QZw&rM!8_`(8zK3upyydLN}a5>=5hYQ_DmjnKMxXgW62fEJD z!051!yw>oA1^#@vz{P5hM>l_W14(rJK17BE2E8$1y z24%pX50}mlPYrGz@aMyI^TTt4Tjyxi{ICw(I!9~fhjri!OAcB0=fgGjqssw*K3rix ztOH+IN9*f{b>Iu@Xm$Ot4zz=#we^EK>%V2;r}^Rf{n3dXE#Ds=v)-o;7w-@2tlw;h zOZSI$)^E1Mh5N%g>o?osvi(t=b$>ow=szqYb>P;4`RBt${=@58|B5?Y;yl|$dFsuVz=V&v4VIAl?M_U05>p<5z+6Z7&2fpLv zOAh?`aN~gC<;eBGtpomixM{%fdZ6ooKOgQGFgiDQ*}$I{FFSw21B&xd;vj9!AHtq6w4K-W3ih+tR;Zk?lT2!?f_>l|%DFsuX5 zI`I7q{(QJ;!RT_ppAWYz7}kNV1O9xtU%~L);MM_uKHRKebZ&5J;LnG<8w^hkzOcZb z54ScLo*Q%>_#RpB1?wLJc>Xxr;b`!RLHZ33AF%f7XlJ9*wXFBsqg{%VA@c1;>pS?|aYY{R-LSXKq8_WDf; znKmq`I@$|<@J>RYeY6k!sLJ~N0%>AMF-DDzcsrL5zL0PyFb_ z*1wM+!-gePkYK|Csx801yC>Lg|F|X^ADXo zw*BAUN_p-N_sBKA{ks3#-S>9p_`klx@4x@@=?@>jz1u(U0{3`s)OWTE-1>3fhG^Cg z{MLci5B!EG>j!>&+F3vFTTfa)@Y^@p`hnkml&l~4?df#=z;BN!>j!@OzFIy|-^MM| zUN5M3+_t)Ey`tW6+dg0G74?qWcKlkdsF$dpDZN1bMCk`gKTqF2PBTsZ;{VUo_y5N) zpTB(m{s(;w7<~V~$|MD>)hLg=;_3-na zK2`m^mrNag-cqIxKkqD4hkt7@|I^;WTmR6^=l`Gdga7T!u0Q|JzufYuzxe#;|MC2v z!mpqITW{>-!T%KZBWA_PkYnw$kVnoJo2<7 z4Uas1+8G{s`n)qd^7M&kc;x9%h|!UJBW!zmtbb0nzn}(3^3AtRSwl^}`L-RWp(fva z+wRj)lW)FlC+hW@{C1xIf*sxO+uk5>vVOMQ`ObgE4zH6t-}&#@VNLFQ+b-7du5jn$ zH)WgaUO(Awx*Lwd%Y&VwA*ABl;p4aZB7en z@`r4j+Jc(g`L^kCsL7pg+esU0a_8e0XdCldKiO^C3y$Q@x6OV*P5yXplVDJjJKr`J z1~s|!ZBt_FHTg2PnK3BIoo|~UgPPp=wq3iSCV#NE=`yIvoo}0Fhnn2^_++;MwDptS z=Fs3s?tI(CJJjUPx9$E7HMu2h6KhbDJKr|HwqBDwE)Q>TzjoWSz z%Qp^ZjoZ!;>lOLM(H_S+Zo5jXU!wN$ZHI~Viu|f- zkK=5S142Dhjt94mC6?a}4hOeQCe|xztJ*f4Sg*)$hdz#REVyk%v3!ksrkn|KB)Dx* zv3`l#s-xXH$6a>t5&Q3pSRZfm>wo`g?(p-5J9+%=f8acG zpFD%}3}EsfIDcB5{0GjTAtwKU^QYIzf8e~sPyPevPqUN%z z3d6}0xP1n9@8pYRhm)6Z_fEc8ggAKyckkqjC5e+~aQ9BWSfDs}26u0Ri!p%76S#XP zUkn9Ip26Lod@&+0c?NfT^2Nf&$uqdylP{JzPM*Qto_zORyoey@uHYhyocsswei$#J z$;mUg+mkP%%E>dh+mkP%%gHmi+mkP%%(*kT`zBmOo0BJSwz+J=yLa-%n%BuQxO*pWe^i1KzAY2if8gdf^Ic88T8}&R7KFE( zE&XbB?&KNV{2*Md)tx+pn;(R$mAjK?aPxz3wT^f43~sjMi$#ueCvZ0+3>RyBC(q#S zhxu+q7%mq6PF}*@JNaT6@Z=fXy^}8%1y7#A-8=d2ZE(A(-~KG!jR>!n56`^`cO$~9 z#l(|maPtS_)zae0Gr0MC?P{U%+!@^cX1yB`UadZ!yn?$Q#=8;W)sp1NOSs#UFIF{9 zp26Loe6h-L@(k|wqzu$1W3C-L~a5o|h7po%Y&fxBSc(``(?dxL9vK_3^tqTXC`ae5(GZPR|ILSo zyAu`p=EK9?d5W8te|MVVVqyH$+kbbK;$oTnT>YEhUKfkz=jz{m|873}-kqYjSWrK8 z{Wnkl?g+)*35tuw_H&niv-@5wy`QUpv-@5w#Gk8w_x-=weeX_A+$?{0ZsKCe{?yBV zcWUBd0smb6o89+fIsaV!o89+fasOQXyZ6scdANJ{&0&eVvl4elB`$UYn0ou}4oY0? z4KP>#=Iwj2Q@~vPo44;aBk}iGs{J>qF|+>vpLOB?w==$4|NnS~2#@gg|NZ^n`u0Em z{%?%GuK)j=yy3fl^uG`H{PQpV{_o>4|M!1K$DMZC;emeSX)rOYd77;ak34-I9v*r6 zC^0qj;D?L42B8J6Um?|eRHSd%;7`9#dHCU?H`W%9$C-1*KI#t&<9 z=i@i!Jd_=s?0FnJJd!^u=Mn6%CU?H`1@6O|-1*L<)?rQVeCP4%s3yO(=aK5LBzL~^ z798huzVo!+8ov7%RG-Whb6i5oky6%n%w!$7l03I@(25T$@j1(cfRv@a#)i) zAD`@b7&$uG^B8h?BzL~^rQ5@r-1*KIYY%I3OE_PiJ*>%{?>tr<)#Q@rQR1*9cfRxZ za9EQ&-}y4@VNLFQ=L@TcHMyCbFQp#VfTPPi5C4Wo^38W1_zi3F&3C>Q zdRUWhzVp@3!z>Gv2b-^B{&!9`vyZ5|%!m#H`H#VY3E+3HPuv2J--Q*YXfmCD1K zeADVz=fz(f9-Zv@YUJUOeDiTKaJOERMZ&|H`a|VnS@5u?{%W{b2t2CEUq_sbT&(#Wo-BVf%xrj3uMm?N(liJXkY2j6_0jKuRTSx2`J zuNjG)j6_~D5;+-(yk_KlN3zjN%gIROWF&Gj5(9TWUNaH{cRpS-5(9TW{?!lzcRqeo z{0rN=t$$QF8Hwi`_KiNCyk;bFG7@>sNaSQB@|qEUX*n5ru0YpkAx=i(`KEiLTZq?; z#Pf~zhBf(_kCTzeYepg`BmU{+WF&Gj5;+-(yk;bFG7@>sNX&fmaWWD)8Hv1R#2Y*( zBaxGl$jM0LWF+#Mk;utNo% ziJXi?PDUcH8Ht>XL|!uzIT=yD=ij=Claa*9NaAE9aWazL{H0YNOmF%_C2=y6I2lQt zj4+oZPDTL^y`WF&Jkk~taS04Q@Z zk~ta4oQz~nMlvTOnUj&s$w=m8By%#7IT`U!3MV6(lab8HNakcDb25@S8OfZCWKKph zCnK4Y5pTAfjATwmGAARMlab8HNakcDb25@S8OfZCWKKr>`hj6IT@*(j8slWDkmeAlab2FNabXtaxzjm8L6C%@N-+`WTbL3 zQaKr^oQzaXMk*&Gm6MUm$w=j7q;fLCkN%aDk;=(PPX|iu>I$eKim3)iGQnjOStiV>fafuoQ!Z7 zQ#l!_oQzaXMk*&Gm6MUm$w=j7q;fJ+IT@*(jQCy4$w=j7q;fJ+IT@*(j8slWDkmeA zlab2FNabWidoB09#>q(IWTbI2(l{AuoQyP1Mj9t0jgyha$w=d5gugl)CnJrMk;chL z<7A|9GSWC1X`GBSPDUChBaM?0e)?*hj5JP08Yd%-laa>BNaJLraWc|48EKr1G)_kN z0lslE(l{AuoQyP1Mj9t0jgyha$w=d5q;WFRI2qyJfQ^%p#>q(IWTbI2(l{AuoQyP1 zMj9t0jgyha$p|w-<7A|9GSWC1X`GBSPDUChBaM@h#>q(IWTbI2!V=Xu8EKr1G)_hu zCnJrMk;chL<7A|9GSWC1X`GBOW;RYn8Yd%-laa>BNaJLraWc|48EKr1G>$168#8-& zb0Kuz@!#hD!^)qE{gKAMkGz@OxDz`5pBNaJLraWc|48EKr1G)_hu zCnJrM5xr^o*6W;%bWTP(CnKGck70yoPDZ$UbxuY)CnKGck70yoPDVN>Bm4!}IT`7kjC4*$IwvEYlabEJNatjvb28F78R?vi@H15B zWTbO4(m5IFoQ!l%Mmi@Wos*Hy$w=p9q;oRDkKvt@k70yoPDVN> zBb}3x&dCV>lIxs|bWTP(CnKGck70yoPDU65IwvEYlabEJNatjv zb28F78R?vibWTP(CnKGc5%#3c$w=p9q;oRTIT`7kjC4*$IwvEYlabEJNatjPNwRY? z(m5IFoQ!l%Mmi@Wos*Hy$w=p9q;oRTIpA>BcAj=ybQtnq_5PF0pQrs{$iKG`s!L(Q z?ojVdOL4-ks`sX)Kw($ad(%>+u&e65X(?2At-2Hr><;zbv=k5Qs(No)3J7*py*DjI z1iPxX0{>lA?@deOzpLuKX$k#zRlPSYvHxq;CBEMs z>b+?R@OM?cH!TtVuB!K@CB)xV_1?6^_`9m!o0dHOwdxYc?+*3ev_$f|s@|KHP<~g{ zd(#rj@2YxlT7vo4s!PDWJJfsA60z^9dT&}n_FYx)O-szatLnXJ3EFp6y*Dk1`D@iB zGT$BQy=e)}cU8SNEwTBos`sWPINw$E-n2yLuT_@_e0Qk#rX>X5RrTJq#NfNC-kX*n zd{@UWb{_+x1f|Mi63!XHbM_`9n7P4`%u#otxsZ@S0QH2$tCf73md=J8*vx`jX7!XHbM z^}7@H-n2AZzpLuKX=%ECSJivd(tQ1{s`nN<#$!RH!V%e@2Yxl zTAG*NRrTJqG%^2L)h+zt7XDb8eczq1_ok)k_gz)*O-u9dyQN z*tLnYUE&Q=GZT@<~ZsCumdGlRW?@db+=ew%jo0ewIcU8SNElr)j zR&@)1xP?EK=Erv@?7eAef_zuid(+Yk`L3$>rll$JT~+T*ZsCumdGOa0b_;(jO@!~N zdT&~q3Ex%q-n29ozN_lJ$>+j@TX=8_4{qUMX%m~5S2(zZhox<7c2)Uq3QHT=?5gtJ z6qdHKd9CUe9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe z;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@Ej+q~ zN4N0k79QQgqg!}%3y(e*9^JyD&xJ>~@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyD zTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KT zx`ju#@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQg zqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytSoZsE}_ zJi3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK` z!joHgatlvx;mIvLxrHaU@Z=Vr+`^MvcybF*ZsEx-Jh_D@xA5c^p4`HdTX=E{Pj2DK zEj+n}C%5qA7M|R~lUsOl3r}w0$t^s&g(tW0=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B z@az_z-NK7ocyS9aZsEl(ytsuIxA5W?UfjZqTX=B`FK*$*Exfpe7q{@@7GB)Ki(7bc z3omZr#Vx$Jg%`K*;uc=q!i!sYaSJbQ;l(YyxP=$D@ZuI;+`@}ncyS9aZsEl(ytsuI zxA5W?UfjZqTX=B`FK*$*Exfpe7q{@@7GB)Ki(7bc3omZr#Vx$Jg%`K*;uc=q!i!sY zaSJbQ;l(YyxP=$D@ZuI;+`@}ncyS9aZsEl(ytsuIxA5W?UfjZqTX=B`FK*$*Exfpe z7q{@@7GB)Ki(7bc3omZr#Vx$Jg%`K*;uc=q!i!sYaSJbQ;l(YyxP=$D@ZuI;+`@}n zcyS9aZsEl(yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cb zg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0 zTX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj? zx`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-L zt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA} zyt;)~xA5u~Ufsf*TX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E z!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*Jku zExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY z+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W z%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i` z-rT~QTX=H|Z*JkuExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s z;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F z7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ zZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2` z?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1 z?{4AUExfyhcen8F7T%XEJiPz#m(PFt`ui`RKYt8wOBTL6^zoZ7Km73ZA3pr<(;xr% z>HYU#KK<$fnX!JvqADaEp;)hm0wE3Z(4_&hG z*IQ!A!gq)I-Lz!kyQ+RSEm`=ks^3jZ7QUsCRrTJqWZ}E2-kX*zd{@XvhZD1?@dbb+@cE__$j zd(+Zf_^zt=rlq;?*Q##e54Z5g(p>oNguOQ{&4ur(dT&~q3*S}s-n29qzN_lJ$u0b` zG#CDQ!fxS@rMd83RqstpbK$$H-kX-@!gp1@H!aPDzgBe%f4GG|mgd5DC+xjxX)b(M z)qB&@T==f4_ok(}@Lg5!O>W_jrMd9e6Lt%KEX{@Qs(No)nhW1m_1?5J7rv|Ny=iGK z{I#lE_`@yyu{0OHJ7MolOLO77s@|KH=E8SXy*Dk*h3~3*Z*mKNEX{?#p0Hc^V`(mY zSJivd(p>nis`sX)x$s?8?@dc{;jdNQ!XIwokEOZr-3fbdTAB;rRrTJqG#9?B>b+@c zE__#&d((3;TtPdyg$K9r;1(X1_DFeog@apoSlT0HSC#Lku(U_YuBzWnZsEZ#Jh+7i zp9>Fe;lby^gIjp;x$xi?9(*o5xP=F|@Zc66+`@y;g$K9r;B(=@Ej;*KcyJ4Uu2kZ0 zI=ArP79M;qJh+7ip9>Fe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r;B(=@ zEj+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y;g$K9r z;B(=@Ej+k|2eFe;lby^gIjp;x$xi?9^Ar%TX=8_4?Y(j+`@y; zg$K9r;B(=@Ej+k|2eFe;lby^gIjp;x$x)~9^JyDTX=K}k8a`7 zEj+q~KlhnYzKL$((dWXWTX=K}k8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW z=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K} zk8a`7Ej+q~N4N0k79QQgqg!}%3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju# z@aPsE-NK_=cytSoZsE}_Ji3KPxA5o|9^JyDTX=K}k8a`7Ej+q~N4N0k79QQgqg!}% z3y*H$(Jef>g-5sW=oTK`!lPSwbPJDe;n6KTx`ju#@aPsE-NK_=cytR-ZsEx-Jh_D@ zxA5c^p4`HdTX=E{Pj2DKEj+n}C%5qA7M|R~lUsOl3r}w0$t^s&g(tW0=vHg!n0d=b_>sL;n^)b zyM<@B@az_z-NLh5cy=vHg!n0d=b_>sL;n^)byM<@B@az_z-NLh5cy=vHg z!n0d=b_>sL;n^)byM<@B@az_z-NLh5cyK0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y} zZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m z>K0zz!mC?&bqlX<;ngj?x`kJ_@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~ zuWsShExfvgSGVx$7GB-Lt6O+=3$JeB)h)cbg;%%m>K0zz!mC?&bqlX<;ngj?x`kJ_ z@ah&`-NLI|cy$Y}ZsFA}yt;)~xA5u~Ufsg0TX=N~uWsShExfvgSGVx$7GB-Lt6O+= z3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!p zxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%o za|>^7;ms|)xrH~k@a7iY+`^k%cykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsf zH@EQS7T(;#n_GBu3vX`W%`LpSg*UhG<`&-E!kb%oa|>^7;ms|)xrH~k@a7iY+`^k% zcykMHZsE->yt#!pxA5i`-rT~QTX=H|Z*JkuExfsfH@EQS7T(;#n_GBu3vX`W%`LpS zg*UhG?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5x zTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~ zyM=eR@a`7g-NL(Dcy|l$ZsFZ6yt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$ zyIXj73-4~>-7UPkg?G2`?iSwN!n<2|cMI=s;oU8~yM=eR@a`7g-NL(Dcy|l$ZsFZ6 zyt{>WxA5*3-rd5xTX=U1?{4AUExfyhcen8F7T(>$yIXj73-4~>-7UPkg?G2`?iSwN z!n<2|U$XG{{=;8B|LN=RzkL4uF}^KX`0mihZ@&ES!`FZK@Vifc{Ntzh-+%e^hmU{# z-~ai2h;Pr$K|VenZ;wZP|E#h*H29&>4^4h(_Ct#wTK&-Ghju=6$--Z6i6sl)9qM<} zl7;W8`rWi-;k&ASH!WHCuBzWnOBViGb;-hahk9>XvhZD1?@db?CR6I#=464 z23q7<-)k%v1bD20X9QK|%%w8e)dKqN9fsV4vw=4p=l{S447evPpgZHNOa@mbpWohD zk6QTssgGLt@uB)|dep*?r|P@uQ42qws_&*pE&O<@zMCGk@Z+iaZhF+h?@xWy!jBKt zchjR5emqs*O^;gm@l<^`J!;{{Q}x~SsDbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxC zJXPOKk6QTgRDCx+YT?II_1&bm@JnyuugtAB)9cZ>@Y|Q^dUP)Q_)z)XbUiv3emqrv zH(ig;g&$9q-%Zz}bK&==>Mi`zTln?pT=+4t{GIN4bT0gOs{EbqdUP)Qc&hxJ?s{}C z{CKMTo$k_G`1R;q_Cw6H?dUP)Qc&fge9-Rw6o~rLAy@g+o&V}Cx)?4`X=v?^mRDCx+ zIv0LCRo_jI&V?UO)pygQbK&==>Mi`zTln?pT=+4tzMCGM3qPK!@1{rR!jGrwyXn!n z@Z+iaZqi%$_2^vqePF$XUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6d zkIsc31M9o#(Yf&BsrqhubT0gOs=k{ZoeMvns_!PfgCw6H zF2^tZ{en&3pc%m zziuk2bZdGGH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1r zKNoI#3pf2-xalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0* zw{X+Xg`3{OO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@Kp zy@i|J!cA}Crnhj@&xM=b!c9LHZh8wh{am=|E!^}LZh8why@i{8F5L7MZu+@!(_6Ud z=fX{I;ijJpfBljawGg=8!d-9SuD5X4Te#~j-1Qdz`aLuHACByFuAd8cy@k8p!d-9S zuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7 z>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1Qdj zdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX z-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8 zw{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ois~;i0$i&|7%u zEj;uV9(oH8y@iL~!b3k79(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`s zxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%u zEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^ z3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~ z!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0 z@X%X$=q)_-79M&F550wl-ojIF;iMcC=7M^+w zPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;in*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#> z-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Q zt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&eDoGR zdJ7-Dg^%9CM{nVyxA4(h_~MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfN zeDxN-dJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85 zU%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-dJA8@g|FVi zS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85U%iE|-ojUJ;j6ds z)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-dJA8@g|FViS8w5~xA4_l_&#dk z@#U9){rKk}fB*U8$G7u^y1rgle|bIS_)yb7)b$Sy{XbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxCJXPOK zk6QTgRDCx+YT?II_1*NSh2Nk0sD&RNs_&*pE&O<@zMCGk@Z+iaZhF+hkEiOp=}`+m zo~rMrM=kvR)JHA+_)vW}J!;{{Q}x~SsD&R-)pygQ7JfWc-%XEN`2DGmTKMsy`fhsE z!jGrwyXjF2Kc1@ZrbjLOc&fge9<}h}srqhu)WYviebmB_57l?mqZWQVRo_jITKMr) zeK$R7;m1?;-K4khOK;(?%&j)l>(ROJ+n4EjbT0h(Q2E_-JvtYDJXL--U60O%A5WFv zP1mDy;rFNNE&S43`1R;q_%X2jo$h*cF8p|^{GIN4bT0gOs{EbqdUP)Qc&hxJ?$TTM z_2^vqePF$XUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6dkIsc31M9o# z(Yf&BsrqhubT0gOs=k{ZoeMvns_!PfgCw6H?(p&iT z=v?@HV7-N3kIsc3Pt|wRqjTZMQ}x~S=v?^mRDCx+Iv0L_s@}pcy@g+o&V?TX>$~aE zx$xtu`fhr3F8p|^zMCGM3qPK!?>rr!cA}Crnhj@&xM=b!c9LH zZh8wh{am=|E!^~T;ik86(_6UdE!^}LZu+@!(_6Ud=fX{I;ijJpH@$_wZYrsCYkCVe zy@i{8F5L7MZu+@!(_6Ud=fX{I;ijJpH@$_M-oj09;ik86)6a#Q-oi~k7jAkBH~n0= z=`Gy!7H)bAH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1r zKNoI#3pf2-xalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0* zw{X+Xg`3{OO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@LU zy@k8p!d-9SuD5X4Te#~j-1Qdz`aLshzHz;UyM8X*^%m}W3wOPRyWYZGZ{e=DaMxS7 z>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1Qdj zdJA{Gg}dIuU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX z-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8 zw{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE*IT&j zE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJBL3!f-XWhTg(MZ{eZ0@X%X$=q)_- z79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M| zg@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~ z;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$g zc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV z9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8 zhu*?NZ{eZ0@YGv)>McC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew z-ojIF;iMcC=7M^+wFTI7A-oi_7;ib3m(pz}x zExhy=UU~~Jy@i+F!b@-ArMK|XTX^X$yz~}cdJ8YTg_qvKOK;(&xA4+ic-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_q zTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu z)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mf zy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*lky@ik7!bfl6qqp$U zTlnZLeDoGRdJ7-Dg^%9CM{nVyxA4(h_~MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwM ztGDpgTlnfNeDxN-dJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R z>MeZr7QT85U%iE|-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN- zdJA8@g|FViS8w5~xA4_l`06cu^%lN*3tzp3uinB}Z{e%A@YP%R>MeZr7QT85U%iE| z-ojUJ;j6ds)m!-LEqwJBzIqE^y@jvd!dGwMtGDpgTlnfNeDxN-k6L(s`Q=|f{`tq> zfByLK?e(9|{Q8%lzyJQnpMUw=_uqc|{^i%7-~aLL-~aosU(CP0e#6JN>-u_K{pI!l z_4v?B|4`FE)b$Sy{XbvPt3qPK!@1{pB{CKLqn;y0B?dep-2Pkq$Fj}O&%)1wxCJXPOKk6QTgRDCx+ zYT?II_1*NSh2Nk0sD&RNs_&*pE&O<@zMCGk@Z+iaZhF+hkEiOp=}`+mo~rMrM=kvR z)JHA+_)vW}J!;{{Q}x~SsD&R-)pygQ7JfWc-%XEN`2DGmTKMsy`fhsE!jGrwyXjF2 zKc1@ZrbjLOc&fge9<}h}srqhu)WYviebmB_57l?mqZWQVRo_jITKMr)eK$R7;m1?; z-K4khOK;(?LasK`>(ROJ+n4EjbT0h(Q2E_-JvtYDJXL--U60O%A5WFvP1mDy;rFNN zE&S43`1R;q_%X2jo$h*cF8p|^{GIN4bT0gOs{EbqdUP)Qc&hxJ?$TTM_2^vqePF$X zUysg(A5YbH)1!0Y$5Zv)^ypmp@l<^`JvtYDf2!WXFTI6dkIsc31M9o#(Yf&Bsrqhu zbT0gOs=k{ZoeMvns_!PfgCw6H?(p&iT=v?@HV7-N3 zkIsc3Pt|wRqjTZMQ}x~S=v?^mRDCx+Iv0L_s@}pcy@g+o&V?TX>$~aEx$xtu`fhr3 zF8p|^zMCGM3qPK!?>rr!cA}Crnhj@&xM=b!c9LHZh8wh{am=| zE!^~T;ik86(_6UdE!^}LZu+@!(_6Ud=fX{I;ijJpH@$_wE;*@mYkCVey@i{8F5L7M zZu+@!(_6Ud=fX{I;ijJpH@$_M-oj09;ik86)6a#Q-oi~k7jAkBH~n0==`Gy!7H)bA zH@$_MelFbf7H;~vaMN43>F2^tZ{en&3pc%mo8H1rZ{eo5aMRC)o8H1rKNoI#3pf2- zxalq2^cHS<3pc%mn|?0b^cHUVxp324xasG@O>g0*p9?p=g`3{OO>g0*w{X+Xg`3{O zO+OcIdJ8xGT)62i-1HW1dJ8wbg`0jZ-1HW1`nhn^Te#`x!cA}Crk@LUy@k8p!d-9S zuD5X4Te#~j-1Qdz`V}>5zHz;UyM8X*^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7Vdfr zcfEzX-ojmP;jXuE*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIu zU2oy8w{X{6xa%$4^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE z*IT&jE!_1M?s^M%y@k8p!d-9SuD5X4Te#~j-1QdjdJA{Gg}dIuU2oy8w{X{6xa%$4 z^%m}W3wOPRyWYZGZ{e=DaMxS7>n+^%7VdfrcfEzX-ojmP;jXuE*IT&jE!_1M?s^M% zy@k8p!d-9SuD5X4Te#~j-1QdjdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?N zZ{eZ0@X%X$=q)_-79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kR zTX^U#JoFYGdJ7M|g@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_- z79M&F550wl-ois~;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M| zg@@k4LvP`sxA4$gc<3!W^cEg^3lF`8hu*?NZ{eZ0@X%X$=q)_-79M&F550wl-ois~ z;i0$i&|7%uEj;uV9(oH8y@iL~!b5N2p||kRTX^U#JoFYGdJ7M|g@@k4LvP`sxA510 zJX1Y-oO%mSy@jXV!c%YIskiXdTX^a%JoOfydJ9jzg{R)aQ*Ys^xA4?kcMcC=7M^+wPrZew-ojIF;iMcC=7M^+wPrZew-ojIF;iMcC=7M^+w zPrZew-ojIF;in*(X z7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8 zg}2_qTW{g5xA4|mcn*(X7T$UbZ@q=L-ojgN z;jOpu)?0Y%Exh#>-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qTW{g5xA4|m zcn*(X7T$UbZ@q=L-ojgN;jOpu)?0Y%Exh#> z-g*mfy@j{l!dq|Qt+(*jTX^d&y!95|dJAv8g}2_qM{nVyxA4(h_~`!E0d&mX`1^6h{6{>S%k*H`;rzWwsI@4x-_{jcAC{`mRh*Wds0zkdHi`Q*O7 z{?F_D=bv6zJzxJ3EdSHjuh;80zS!&ke*Lf4f1mB@>rdC~xBuEJ+q}-~{ORlUYRmSg z|M;pr?CHn+xBvRb_n-gqAAkDskG1Q~2mkupfBk=Do;M@>Kk@(c??2%$zyAFGkK<4K zi@pBy%3tf-b-n(O?92c8hxO%`fBpF9AAkS(Jp^U!dp<{OA7x?+@PxLnm1H0`z_K=Es`Pz65W6xcTq}=sWq%4>})C zK;Ox4e(3pd0{Tw=A3p%e3-!&BfDb5f0Nu%N4taby0bK`g4t#t#0o}=O4u5<&0o}=O4uX6( z0sRuZIZpE70CXq6Ia>1J1av3AIcDn`1X0PC$1u{&*@QZw~T&_9b|8oae(Apzq{2M|(b; zfWDL89P{~b0{TvVbL8j43E(>serKjN+1{K!`sfQ_Z_Xfn_yYJ#0RJM`n^Q?2ehTm} zg1tGR^x*{XFM_=}t@Pmp^e+PZ(ZDDX8YMz|a|-ISuOTHudvhY{!wKj+`OWF54=14S zWJ-kg=I-!kp8{QIc&Sq&v^TerKl~EVolJ?)-rP_A@Kb>QV6-=Pl|P&S{(H^d+*|%^ z0{W*&iO?t!zE04wlPgAv(B9mN{_qch?&LQ&q(7X1?&LSOr9Yg2{&WHRlTjkHH}|hU z`w~zhv^RILKb!!65$QXb5~01hqy6F6fbQfs_q9KpfPM`r5gH{zdvgQ)!!H5-zVzlc z_=gkVKLz^J1tmgzb4&cguL0f3^h-dA(B9lT|LjXZiO}BMLH}?9x|84BNB?jF{KrUt zx}Zd8Z||1@BhP3fxeU9{0@K*C!p`-H@^?y!wKj+`OWVJ_-F$7jg>Yyr$p$K2w(SHS;X@< zzp~)7KLSdG{^r*gd^iF8i}1RqO23HkFM_}MwFaMk4d6m`N`y{{&?yl*B|@h}==2t$ zQzCSFi_j?%IweA?5>AQGDG@p)LVxpXi$B{2ln9*?q0?K0PKnUzzt@}+A>}d0Kb}w` zbo`f*e+}S|*-mc}IweADG@roMd*|Wo!%mJN`$Z<(Q*-#2!j$~P$CRUgh7cgC=mv|MHrL_gWe(x zN`y3_1tr3uL>QC^gA!p-A`D7|L5VOZ5e6l~phQSpZcri&N`yg)FeniQCBmRY7?cQu z5@Apx3`&F)6@n6BP$CRUgh7cgs7?h%fuJomXaWmb9)kXZkLp(7AGGn$H~8BM{@cvI zi13_$P$CRUgh7cgC=pU-4N8PTiSYGbLSe8Hln8?oVNfCrN`yg)FeniQB|`j{nG#`8 zA`D7|L5VOZ5e6l~phOsy2!j$~P$IrL z;|(RkphOsy2!j$~P$CRUgh7cgC=muF!k|Qmf6k^v7?cQu5@Apx3`&GSi7+S;1|`Cv zL>QC^;Xj(`zxR?7VNxPYN`y&?FewoxCBoN#I+XpRIVlk)CBmdcNW()?B7FU~T;U%A zCBmdcn3M>U5@AvzOiF}Fi7+V<(gK#02$K?FQX+i)Cz9dcB}#-zi7+Vu(hL$v4P@GEqPe%NcI{pC(e_z7ufd47bolJ=^DG??mLaL-mi7+VU5+VMkK#4FZ z5hf+Vq(qpM2$K?FQX))Bgh`1oDG}nIPACy3CBmdcn3M>U5@AvzOiF}Fi7+VluqY80CBmXaSd<8h5@Asy zEJ}n$iLfXU(r!?c2#XS7Q6el#ghh$4C=nJV!lFc2^cG=JBBTMUC=nJV!lFc2ln9Fw zVNoJ1N`ys;uqY80B|=(KixOc`A}mUTMTxK|5f&xFqC{Af2#XS7Q6i*CzbFwFCBmXa zSd<8h5@AsyEb3!LS)ynSE*jyeEftO*_}`rPM}7Pg7XHSD_X+=Fgh%O$5@Asyq{vy6 z2#XS7Q6el#ghh$4C=nJV!lFc2ln9FwA^xjGiLfXU7A3->L|BvvixOc`A}mUTMTxK| z5#pUriLfXU7A3->L|BvvixOc`A}mUTMTxK|5yBsj=+72SiLfaVHYLKQMA(!Fn-XDD zB5X>8O^L865z-%Wn-XDDB5X>8O^L865jG{lrbO732%8dNQzE4Q+G8O^L865jG{lrbO5j*qXXV)0|9csBy-_^#uQ;75`fS|A>aaGvbBB-v{vb z#xx~DYLrchuqhEXCBmje*pvvH5@Ay!Y)XVpiLfaV;=c)$2%8dNQzC3igiVRCDG@d$ z!lp#nln9#=A^e^|H}X&-97=>kiEt8282!|5kP$C>kghPpNC=t?sEDa^X zp+q>82!|5kP$C>kghPpNC=m`N!l6V+|J6Q}2!|5kP$C>kghPpNC=m`N!l6Vsln93s zAx1ln93s;ZPzRN`ym+a3~QDCBmUZ zIFty75+M!hLy2%G5e_B7p+q>82!|5kP$C>kghPdHD2!0q862c>2gLaW|Em}OV*~$; zhrhMrjmF z65&!JTuOvXiEt?qE+xXHM7Wd)mlEMpBBVcJE+xXHM7Wd)mlEMpB3w#@ONnqP5iTXd zr9?>ot+SK}mlEMpB3w#@ONnqP5iTXdr9`-t2$vEe{YUpwB3w#@ONnqP5iTXdr9`-t z2$vG!QX*VRgtY!FCBmgdxReN&65&!JTuOvXiEt?qE+xXHL`XB_QX*VRgiDEVDG@Fu z!lgvGln9p+;Zh=8N`$nBFD1gIM7Wd)mlEMpB3w#@ONnqP5iTXdrNoC}2Ga^I+BhWQ zeuMwnjQ_QQe@MjNoAF9i-igMeorcJcAr6!v*Q);o>c7Ym;vueMbC~I@Sars?3e-XNk!1^GbjXhyaL{n3W6Oo z;614@*f9g%lL~|#GvGa`P}ng8-jfPu-DglV>v#pcCl${+X25$=5v^keyeAdYI%dFo zQccgenwz_>5mvY_ecm?{Nyp#)9#|-p6c_~+}jv45C z@=`8c9W&tfBzBxjxi@wHEU@ET%FU@`2Kv4GQtnP2GtlqdmvVdRn1O!pzLfh@_ZhI` zT-b3gQdXT!K1gzX-rVN$fb6a+m4;SzyPxl-o?l40ul} z_nD3v@Sap|G#xYGJ*nJjy3c?e=faM2Dc6#Y&jRmB0^Z&jLHnrQ9$&X25$=xnp$9fcKOadlEa&rQG?se-_wrF6GwGF$3O{%Dtas2D~Sgn?J`4 zcuy*Kf9^A2$GNcMT*~#G_ZK;~2h=W7u&F-^VfRIEEd^u;UnZ9K-i< z3_FhD`#6Rj$MAg|!;WM4K8|6>G3+>o9mlZa7`~5V*l`Ts$1&_UhVSDTb{xZwW7u&F zJC5P|IEEd^@O>P^j$`;fj$y|!d>_ZK;}~`v!;WLvaSY$bG3+>o@8cMD9K-i<3_Fft z$1&_Uh8@T7eH_D%WB5LfVaG9iAIGrc7`~5V*l`Ryj$y|!>^O$+;}~`v!}oCvJC5P| zIEEd^u;UnZ9K()d_&$zd$1!{#$FSoVzK>(raSY$bG3+>o9mlZa7?j$_Ah>^P1c$Fbu$b{xl!? zj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!fgLBX;{X8xaRNI|V8;pUIDs7} zu;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5% z0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlP zC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8x zaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t5 z9Vf8k1a_RjjuY5%0y|D($4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck z*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trs zi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhH zlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7B zIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{ zj+5AN5<5;}$4Trsi5(}g;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF> z>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB z!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8 zDeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbV zoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0= z$0_VMg&n7`;}mwB!j4neaSA(5W5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNS zcAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^L zW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5 zGt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*= zPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4 z<1}`h#*Wk2aT+^LW5;RiIE@{rvEvMOoWYJW*l`9s&S1wG>^OrRXRzZ8cAUYEGuUwk zJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC z20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrR zXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7 zaRxiiV8^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA z9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkI zv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXBEe>FTecj$3Or0`_CUgzS&pBagJBG{_^wp z-~agYFMs>~+i%~${QC3zKfe9@fB*H{&mTX3{QCPB^RKU88usnFzFux$Ue7#U!SE|M zeucoVkoXk}ze3|z82k!LUqNx4`#VZ;oZ}Vnds10 zIQJP8$2ndB?@7gRjv4TtR2=7+0q;r0agG`Ao>Uy?K7-;o$1C7HsW{Ft1KyL0;~X>K zJ*ha(F$3O{isKwJ;6150&V2^OagJBOds10IL8clPb!Xc%z*c#;yA|)cuy*hbDu$RoZ}Vno>Uy?m;vue#c_@q z@Sap0=a>QSN$fZmcAS^Zz;1sj_i=7t$xFG9bG!n5PhQG>oMQ(1p1hR%IL8e1J$Whj zaqcr<$GNcMT*`f%cDR95diOsocjoX25$=xsP+70Xxox9p`l}gMRnNj&mvZagMJf-jm9G zoMQ&OCzbm+#|(H+V#m3Z`#AT{0z1y7+{Za)zQSN##DyeFp3} z7j~RWxsP*v7Wn5$0dM&jLHnrQF9kX25$= zxsP+qfcK?@8r8&V2^#I2U%DOSzA8d=_|5D)(`Y8StJ|?&BOY;616_$2n%e zdlEa&rQFB4e-_wrF6BPXF$3O{%6*(;2D~Sg`#8r8cuy+#aqcr<$GNcMT*`f%^O!U$MAg|!;WM4K8|6>F?=7#u;UoMk7L+z3_Fft$1&_UhVSDT zb{xa^aSS_-;rlp-9p`n+m45HWj$_zy3_Fft$1!{#$FSoVzK>(raSY$bG3+>o9mlZa z7^O$+;}~`v z!;WLvaSS_-;rlp-9mnu}9K()d_&$zd$1&_Uh8@SS;~2h=W7u&F-^VfRIEL@z7^O!U$MAg|!;WM4K8|6>F?=7#u;UnZ9K()d*l`Ts$1&_UhVSDTb{xa^ zaSS_-;rlp_9mlcbICdPzj^o&I96OF<$9etwI#~7`JC5V~IF231vEw*)9LJ91*l`>? zj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlP zC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8x zaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t5 z9Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~ z*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8> zfgLBX;{X8xaRNI|V#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhH zlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7B zIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{ zj+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN z>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R z#Ez5LaS}UDV#i7BIEfu6vEvkWoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8 zDeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbV zoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0= z$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG` zcAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5 zVaF-#IE5Xju;UbVoWhP%*l`LwPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5 zGt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*= zPGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4 z<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7Wtu zJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{r zvEwv$oW_pR*l`*=PGiSu>^O}br?KM^OrR zXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7 zaRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN z9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkI zv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5 zj^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cLBC@h`vp>&HL;`1{WvKfd`_#c_^Txc>6< z_uv2c^Dlq<{@ZWgzx?|1`#-+@`+xuS+s_|AfBgFU7xS;LUmEu9y1rg+UtZ5VUcvAy zIDUn|uaNi^3co_*R~Y;XOJ6~8oclXUah&57@Ox5moMQ(3o>Uy?m;t{h6~{Sd!0$=L zaqcrHj&r;M-jj;s95diOsW{Ft1KyL0;~X>KJ*ha(F$3O{isRg8P#ouY1-vH}$2n%e zds10IL8clPb!Xc%z*c# z;yCvi6vsJU0q;r0agG`Ao>Uy?m;vue#c_@q@Sap0=RSktIL9mCJ*ha(F$3O{isKwJ z;6150&M^btlZxXUGvGa`IL>_r#c_^TzQSNyTxF z8StJ|9Osw;?@8=97j~SN&A@JdDfe-1U&%|kk8`{NeNSG>eVk(k`kuU$`#8r8^gVeg z_i^qsV8^+z<6O#poa3{g-@7m6KF%=%{oZ{k_i>IH==bhRxsP+qK)-ii*l{l9KFae%_i>IH@Sare;~X>KJ*nKsIcC6nQn`J|B;J$C zeVk(kyeF0WIL8clPh!Wpl>0dM&jLHnrQF9kX25$=xsP+qfcK?@8r8&V2^# zI2U%DOSzA8d=~iUN##DyF$3O{%6*(;2D~Sg`#8r8cu!)-xs>}j_s;@5&ZXSPIcC6n zQn`^K*8oJ+Znb9@$fPb&9ujv4TtRPN&(GvGa`+{Za) zz}ey`dw1AR}L z@_W^e8Sr}&JC0$;G3+>o@8cMD9K-i<3_FhD`#6Rj$MAg|!;WLvaSS_-VaG9iAIGrc z7`~5V*l`Ts$1&_UuUoFrPz*bcVaGA-IEEd^@O>P^j$`;fj$y|!d>_ZK;}~`v!;WLv zaSY$bG3+>o@8cMD9K-i<3_Fft$1&_Uh8@T7eH_D%WB5LfVaG9iAIGrc7`~5V*l`Ry zj$y|!>^O$+;}~`v!}oCvJC5P|IEEd^u;UnZ9K()d_&$zd$1!{#$FSoVzK>(raSY$b zG3+>o9mlZa7^O$+?j$_Ah z>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH7 z3G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=F zoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D% z#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrL zcAUVD6WDPAJ5FH73G6t59VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UD zV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBl zBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j& zPGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g z<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<* zJ5FN9N$fa@9VfBlBzBy{j+5AN3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xj zu;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi z3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxT zr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4ne zaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f z9jCD46n31#j#Joi3Oi0=$0_VMg&n7{<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR z*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1 zjUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ z)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;Ri zIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3 z!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo z8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR z#~JK6gB@qE;|zA3!HzT7aRxiiV8^O@ZXR+ff zcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQ zEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5jQSNyTxF8StJ|9Osw;?@7gR?lUNkbG!oHlZxXU zGvGa`ILUy?K7-;o$1C7HsW{Ft1KyL0;~X>KJ*ha(F$3O{isRg8 zP#ouY1-vH}$2n%eds10 zIL8clPb!Xc%z*bKcAN`4&dX+Cx4)G8IJd9lrQF9kUV*+RFXcYYF#~;1Udnx(V+Q)3 zyp;Pm_ZhI`T-b3g}j#|(H+D)(`Y8StJ|?&BOY;616_$GOjd9p}Q1^E#J7zx!jyxs>}j$5#^X zN##DyF$3O{%6*(;2D~S+<6O#pocm{i9p_T+;~X>KJ*nKsIcC6nQn`?@8r8&M^btlgfRZV+On@vEy9IeVqGefgR^k?&BOY z;616_$2n%eds4ZNbIgGEq;enUJ_B}~3p>uG+{ZaS3%ncDR z95diOi5=%s?&I7)3+yQdX+{Za)zG3+>o9mlZa7`~5V z*l`Ts$1&_UhVSDTcAVEOS7<1P9mlZa7_ZK;~2h=W7u&FJC0$; zG3+>o@8cMD9K-i<3_FhD`#6Rj$FSoVb{xZwWB5LfVaG9iAIGrc7`~5V*l`Ts$1&_U zh8@SS;}~`v!}oCvJC5P|IEEd^@O>P^j$_zy3_Fft$1!{#$FSoVzK>(raSY$bG3+>o z@8cMD9K()d*l`Ryj^X<_h8@T7eH_D%WB5LfVaGA-IEEd^u;UoMk7L+z4By8w>^O$+ z;}~`v!}oC?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$ zb{xl!?j$_Ah>^P1c$Fbu$b{xl!^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_Rj zjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g z>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH7 z3G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=F zoWPC~*l_|oPGH9g>^OlPC$QrrcAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;} z$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$Zxs zcAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UD zV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBl zBzBy{j+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j& zPGZMN>^O-XC$ZxscAUhHlh|<*J5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7` z;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6| zJ5FK8DeO3f9jCD46n31#j#Joi3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xj zu;UbVoWhP%*l`LwPGQF>>^OxTr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD46n31#j#Joi z3Oi0=$0_VMg&n7`;}mwB!j4neaSA(5VaF-#IE5Xju;UbVoWhP%*l`LwPGQF>>^OxT zr?BG`cAUbFQ`m6|J5FK8DeO3f9jCD4Gt28aqy7$7$?1jUA`4<1}`h#*Wk2 zaT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S z9jCG5Gt28aqy7$7$?1jUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR z*l`*=PGiSu>^O}br?KNScAUnJ)7WtuJ5FQAY3w+S9jCG5Gt28aqy7$7$?1 zjUA`4<1}`h#*Wk2aT+^LW5;RiIE@{rvEwv$oW_pR*l`*=PGiSu>^O}br?KNScAUnJ z)7WtuJ5FQAY3w+S9jCG5Gt28avKl#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEs zjx*SC20PAR#~JK6gB@qE;|zA3!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE;|zA3 z!HzT7aRxiiV8^OrRXRzZ8cAUYEGuUwkJI-Lo z8SFTN9cQrP40fEsjx*SC20PAR#~JK6gB@qE<1BWZ#g4PsaTYtyV#itRIEx);vEwXu zoW+i_*l`v+&SJ+|>^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ff zcAUkIv)FMKJI-RqS?oBA9cQuQEOwm5j^O@ZXR+ffcAUkIv)FMKJI-RqS?oBA9cQuQ zEOwm5jn}fl|NW0Y|MIu*zy0?8%dbDb|Kr=g|My?N{rvIs$FIMCG5`AdrD5N$>+9wA<@L_r#c_^TzQSNyTxF8StJ|9Osw;?@7gR?lUNkbG!oHlZxXUGvGa` zIL0IQJP8$2ndB?@7gRjv4Tt zR2=7+0q;r0agG`Ap2UuGVaIvd4D9xoav$gRmAsVuIL9l{_vEGA$2n%8@5xKKk8{jG z-;4@7^PTlALp0>?@8r8&M^btlgfRZV+On@mHRmN8L;DA*l}LxGU#`I>^PTlALsZ= z;ytO{$2n%eds4ZNbIgGEBzBxjxsP-IEU@ET%6*(;2D~Sg`#8r8cuy+#agG`Ao>cDR z+-Ja!b79B1l>0cxXMum7RPN&(GvGa`+{Za)zIH@Sare}j$7g}}q;enUm;vue9`aSS_-VaGA-IHvqwwcDSCVaGA$_o^K; z(D$S%zgO*;0lz1);}~`v!;WM4K8|6>F?=7#u;UoMk7L+z4By8w>^O!U$FSoVb{xa^ zaSS_-;rlp-9mnu}9K(+Dy5$ND#jxWTb{xZwW7u&F-^VfRIEL@z7^O!U$MAg|!;WM4K8|6>F?=7#u;UnZ9K()d*l`Ts$1&_UhVSDTb{xa^aSS_-;rlp- z9mlZa7_ZK;~2h=W7u&FJC0$;G3+>o@8cMD9K-i<3_FhD`#6Rj z$MAg|!;WLvaSS_-VaG9iAIGrc7`~5V*l`Ts$1&_Uh8@SS;}~`v!}oCvJC5P|IEEd^ z@O>P^j$`;fj$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$b{xl!?j$_Ah>^P1c$Fbu$ zb{xl!fgLBX;{X8xaRNI| zV8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k z1a_RjjuY5%0y|D%#|i8>fgLBX;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|o zPGH9g>^OlPC$QrLcAUVD6WDPAJ5FH73G6t59Vf8k1a_RjjuY5%0y|D%#|i8>fgLBX z;{X8xaRNI|V8;pUIDs7}u;T=FoWPC~*l_|oPGH9g>^OlPC$QrLcAUVD6WDPA zJ5FH73G6t59Vf8k1a_Rjj+5AN5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6 zvEw9moWzck*l`j&PGZMN>^O-XC$ZxscAUhHlh|<*J5FN9N$fa@9VfBlBzBy{j+5AN z5<5;}$4Trsi5(}g<0N*R#Ez5LaS}UDV#i7BIEfu6vEw9moWzck*l`j&PGZMN>^O-X zC$ZxscAUhHlh|<*J5FN9N$fa@9q0dO?`?MN$c?mJjeQk$18uFv-^`)w2MsjPID_Ls z&jeMqaBzUOtD#aE=(|75_RekXEGGH#eJFK*eYOTJRLNunxq?AvJP~BZ94BLrlQGB1 znB!#3aWdvO8FQSBIZnnLCu5G2F~`Z6<7CWnGUhlLbDWGhPR1N3V~&$C$H|!EWXy3g z<~SL1oQye6#vCVOj*~IR$(ZA0%yBa2I2m)Cj5$um94BLrlQGB1nB!#3aWdvO8FQS1 zIZnYGr(lj#FvlsF;}pzs3g$QkbDV-XPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVx zj#DtlDVXCF%yA0lI0bW@f;mpX9H(H8Q!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvlsF z;}pzs3g$QkbDV-XPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVxj#DtlDVXCF%yA0l zI0bW@f;mpX9H(H8Q!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvlsF;}pzs3g$QkbDV-X zPQe_fV2)ET$0?ZO6wGl7<~Rj&oPs${!5pVxj#DtlDVXCF%yA0lI0bW@f;mpX9H(H8 zQ!vLVnBx@8aSG-*1#_H&IZnYGr(lj#FvqEw<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld( zRLpTI<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G z6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgS4 z#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5IZnkKr(%v% zF~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgS4#T=(%j#DwmshHzb z%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLX>cMf| zy#D#0Fa!Vc>wo;$?UAznF5E)+r~mx;;fEjIegFQ``*-(S__udI{PX)i{ptPpzyJ65 zpMbKr$Dc>8=9@?5?c>%1wX$<NG$M-)TzxLY@Zx6io z?tZ`BQ+fN>AL;E6fBEp|Pk;RQ;lsQ8??3+h^QYg-yXEe-v<=}JuYNyRC)ZeY*wQw>Ym7RSX&c`)HXX{ejqe(h4rSWLca23yGVP!9 znxhUy+6I5kO@}gV&v(s9hca!?cg;nIGHuUy%|VAUZO>=_DA&Mrr0g{)9k#TW$~71r z%CtS-H3%Kbv_0Q7_#Dc#J>NCx9Lcn&_L__iMcSV4nuHEz+KcR(d=6#Wp6{A;4rSV& z@0x55W!j$4o}g<4I#Tu;eGXgNp6?oU4rSWQ^BQdqW!j$a8f6Y;+Me$kU5;eh!@Opl zLy@-UyJnk1nYQP2o_QJkqmqVGh=euT=Lz%Ycvz5Junj>YeVdk)q4`k zwzlzI7nTiW+QxTXNH&yd8{c)|*ifcze6}y~eWq{lHW>-mm1Lu-waG}ht{fZ6bU#$W zb*0!)ru)?pt}DYvGHs7wlaXMPkw?0WiN1qPM#6Qe*l=oX&v#uKHk4_5zUxx3p-kKJ zxdDh^laX*;D>fRYO-90XZP-wzKSQ?h*<>VK*M1GhX?wowTCb5zdxC5-5^OROu8YBj z!?Zp8b@A6wra!m#wri7-a9!Lr9H;I1>|xquBwSa2jfQEHk#Jq@HI!+4zU%6)p-lf* zvA12DjD+jztxBwW{T4Q1M%@48-VDAV?Q*Y#OLnYQs=*JF)j+WYl&0oPEZi{*k%M#6QW z)=*p9_^u1HhB9sAyDr2U%CwEoCL``{WCvQJO-7#ELclaXlGj6|D^M7w4r+GHf!H6zg`BhjuI zvBSO5CL_@%Bhe-!(Iz9&CL_@%BhjuIi8dLD_E$r+$%su1qQ7C=WF-1a1&q_)cI}#x zXp@m>*NjA)j6}O;#D-4MCL_@%Bhe-!(Iz9&t{I8fx8#k^LN*zRHW`U_%}BJ#h`%~* zG7@bv5^XXP?V6EjlaXlGjKu3}@J429laXkXk!aV9_zvDCBhe-!kBdCqZ#kQcM7w4r z+GHf!H6!u*p1YCR+GHf!WW+xs*kmNyWF*>TB-%A2(Iz9&t{I6o8HskyNW8wtZe+GL z8S#&qHW`UF8HqL-i8dLDcFjn%$w;(oMxsqdqFpl*Z8GA2sn}#B+BGB5CL_@%BhjuI zi8dLDcFjn%$w;(oMxsqd+&F^$t($Bzl58@PY%-E;GLr0?kz|vRWY>%&n~Wrzj3k?k z*x{07laXYTkz|vRWRsC(laXYTkz|vRWRsC(laXYT5j*0RY%-E;GLmdEl58@PY%-E; zGLmdEl58@PY%-E;GGYg9lTAjFO-7PUMv_fNk{!NJcI-9TfwN>sJ(B&&n(XflJMN$S z)1trC`+nMAWMGEe-gCL_frBgG~o#U>-gCL_frBgG~o#jY7C zHW{%)7sVzc#U>-gCL_frBgG~o#U>-gCL_frBgG~o#U>+m^sCrpq}XJn*kq*GWTe<+ zq}XJn*kq*GWTe<+q}XJ{4xkpBj1-%U6q}3`n~W5jj1-%U6dM^7JKkIDU|q2zEp`mP z_}|I?M~;6&^^X_+-rz56@T<7lFvTV##U>**#wj)#DK;4?HW?{487VdyDK;4?HW?{4 z87VdyDK;7L?cF9L#U>-gCL_frBgG~o#U>-gCL_frBgG~o#U>-Z%e2WzvB^lW$w;xu zNU_OCvB^lW$w;xuNU_OCvB`*gM6fsAYLk&_laXqZk!q8XYLk&_laXqZk!q8XYLk&_ zlM(yeR&6p;Z8B1AGE!|aQf)F)Z8B1AGE!|aQf)F)Z8BmX{i{tzs!c|!O-8CsMygFl zs!c|!O-8CsMygFls!c}hug7YWk!q8XYLk&_laXqZk!q8XYLk&_laXqZk!q6>I{;B_ zGE!|aQf)F)Z8B1AGE!|aQf)F)Z8B1AGE!|aV#lzmO-8CsMygFls!c|!O-8CsMygFl zs!c|!O-8CsM(i+XwaG}e$w;-yNVUmGwaG}e$w;-yNVQ=@wIjvV4)fWO^y&v`{4Z?( z^T*Vo#9Z?nnBW|NW4CL^0oMmC#_ zY&IF$Y%;RhWMs3+$Yzrfd+Xe6GP2oZWV6Z0W|NW4CL^0oMmC#_Y&IF$Y%;RhWW+vw zZ8jO%Y%;RhWMs3+$Yzs~%_bw8O-44GjBGX;*=#amAK*8ejBGX;*=#bh*<@t1$;f7t zk^2$MZ8EakWMsF=i0!?0n~dx>8QEzElabvfBfCvTcAJdsHW{%uz}+SzyG=%Rn~dx>8QEzElabvf zBfCvT>@(DElabvfBfCvTcAJdsHW}G%GP2ubWVgx4Zj+JSCL{JSe7DKSZj+JSCL_B| zMs}Nw>^2$MZ8EakWMsF=$ZnGn`%7-O$;fV#k=-UEyG=%Rn~dx>8QEzE zlMy=@u-jy0x5>zElabvfBfCvTcAJdsHW}G%GP2ubWVgwP9Z%YAGP2ubWVgx4Zj+JS zCL_B|Ms}Nw>^2$MZ8EakWW)|h?lu|OZ8EakWMsF=$ZnI7-6kWuO-6Q`jO;cU*=@k# zN45R%v>#ja14I5-z5hw(pQru9kiV1pZfMGe?r(qi%ZERI`s2qBAKu+>Q>5b5^gaOt zPfdg0bmnQ`lhm1~x=u}J-l{(}oq5dV)O6;yvs2TVa-dVw8D93X=@fc6HTA7&3O<~q z`qngsA5KzzYnlQOC#k+QO(BSrRNtDWSi(!GQ!wGw)b~wOIN>DK_f1nk;Uv}fO;bqW zB-Qs#Q&8ch)G0V{YU=x@DLinJ>iecCKyZ@k`=%*GaFXi#rYT5plIr`Wsc8R8sZ-(p zQ&ZnJO$Gciedti1|yYQz7$HQ{OjD z1H^D+B@BSDjWYK)!ymuQ~CHWrTVe(yB`a` zPi5Ah6!v}7RBruAs_&bovg=P$ecv>dUw@M7`zAjYexJ&ef2pt^3%^h0%AchAzG*63 z{v_4+O;h>uC#k+~n#!1eDbiedt4EU2& z-#7WO@cUFQ`%8uWSonP^oBbr!_f1pz>?f(dZ<@+zKS}j{(^O9TOR0V={O-rX?^D_7 zCxw0AG?kxzlIr`WsSNd#RNpsE<*1*e`o77Jh2N*L&0i|)$HMPZ`Q|67zHge!I6q1C zebZFV`AMqpo2IhPUrP03;deh4exJ%8KPl|{rl}0_lT_a~P34fEr24*TDvSIi)%Q() zEc`x|5B^eNKNfzU$_PJ6^?lP+PWVZx@0+Hw!cS6t-{j|o2R{}b{8)JKW8q=y5}Ow@ z9Q;^#n7YR1B-OU2Fm;j5Nvds4Vd^TIms0&$c<^K4!H!h;_R z4}M;F@MGb@&kGNJEIjym;lYoE2R{}b{8)JKW8vY*3xD(a=YQ!8{L8QZ@n5$R;=9N3 zI{edre*Eym5AVKz|LOgs`ZN67yC44f{h$8y{`+?yKYaY~)6c*E_xGQiX?WC;-bzYu z^5Z?=hp0EV+dV&g+~c2*Ke0TX#jbDeDdq5Z-T3iuZ*Gss)V;j<=H>{SZS(6dpWc7` z=9@PketcXq*J=FIpMLo&`gBzI5`XpgU-<1$AK(9Y`nBIaHotl+@9qyvxZU6W^|$)G zIQTLf>d9CJ&9Aem#P+y@>l8mxgX^?Wv4iV?nb^T~phN87I(Q~_aQ&Goc5od?6Fa#6 zWEDHO4ytJ#P&?{;{)!4<4X7n|K8VF3P)qK79E%!IOYVFqiyBZ%?tC2XHV(bJ0L=C7< z?gRxy4X97<1PDY8s88+$3p5SrkI)G@hzd}j+zCI38qn3;Ny`&8pgy^iq9JSNsbgXpgy^iD5+^c73ic}iV9Gl+)2F@HK0DZlZGj3Kz(v2B~#RZdbCb@ zrld>%L@8sxeQ$P`6FJD*G0Dds`a(6`y;0I$bk5|+H zey{a%dNmEGKca}Rmme&SfG$Rg2zwdB;t;4$?qm;(8c?6y$s`svpgx(p6N(6XxyjlT zP(=8gr|f1k28swn=Pqk;4yaG=+-ogrKz(xOj%!T=>J2C&3=|QD&P^fW6wrOCbAz_1 z0sa-JB~wHgIyY;Jb3lDEodSvoL+5@HZ3-wN44r$sMGff2*15x5)ByjC^mIWHVd&iL zt<3=)0Y!v?BErzQAw`@5>XSP+hl?6epWL}cT+{&D0X$h483T zW!0#WBEs0Y{zjVv=ujg?gt2p#jyM8p$+U_vQbZVO72%_59U3C7B8(IfMp{MKxw}NO zBZ>$kMTC(e!q~aeN1OxdlRMY@h#F8!?p*aFY5)%>v2*Q@rU5;j;NuCcB8+%3QbZU# zmkNnL0t|gbiU=dEB8(IfMp{LPe*}sMW9RxJ%?v0ajK@_*E+UK+5k`s#BdsEg6cI*R zMHnd}q&3BnBEm=!VWfyK(kjA85n-fNgt7DBuI3IXB8(IfMp{LPw5KRuM*u2qUc`d|ZD$kMTC(e!bqzKBSnOfRuM*u2qUc`jGae^ zwOxTCLVQrCh%iz_7%3u*6cI*RMHnd}jI@d{QbZVO6=9@^5PvaJL>OrmVWfyKQbZVO z6=9@^Fw!c*ND*PARfLfuLKq39k&8qTVWNmIb>6*@w#7sdVd}hrA!-1Fc!^dKCW;6X zMTChWLK;F#6cHwh2otR$OcW6&iU<=$goz@;$7R{}B1{w!;$4Lz!bA~aqKGh2 zM3^WdOcW6&iU<=$goz@;L=hoA-cUrCC?ZT05hjWV6GeoHBEm!wVWNmIQAC(1BE;ux ziU<=$goz@;L=j=4h%iw^m?$Dl6cHwh2optw@S~Z2?`4VzGev}%BEn1&VWx;M(<;Kp z)1mC6Ia5TKDI&}i5z@dzrid_8M3^Ze%oGu3iU>1Bgqb43Oc7zGh%i$`NF!jGBEn1& zVWx=i@kBCoXcQ41BgpVho=^Vi9=u8nI4aH`P2s1^5nIghW5n-l?FjGYMc(@!I zB1MFmBEn1&A!P!YBEn1&VWx;MQ$(04BFq$TWl9w?4d!MVL(4RDLE%)!pN#mVjt@w9 zU&8Ky{|eM6Q$(04BFq#KQc9XBBFq#KW{L1Bgqb43Oc7zGh!AfI6cJ{M2s1^5nIghW5n-l?FjGXBDI&}i z5oU@A@#%yj!b}lirid_8M3^Ze%oGu3iU>1Bgqb43Oc5dcQlO{gLJ?u1h_FyZSSTVa z6cHAR2n$7og(AX25n-W-kbbTeiUK{(2m3J!kYZ%%yF$0sbjv0;D0e@2)}S12MZ6cJL$Stueb z6cHAR2n$7og(AX25n-W-uuw!;C?YHr5#psp5n-W-uuw!;C?YHr5f+LF3q^#5BEmuu zVWEf+`*ey33q^#5BEmuuVWEhyP()ZLA}kaU7K#W9MTGEpM9&tLBEm`$VWo($QbbrO zBCHe*u32rET|l_J7Q5n-i>uu?==DI%;C5mt%_D@BC#YpYU3 zSScc`6cJX62rET|l_J7Q5n-i>uu?==DI%nw{gooZN)chDh_F&bSScc`6cJX62rET| zl_J7Q5h0B~Rf-5JMTC_i!b%ZgrHHUnL|7>ztP~MeiU=!3gftLZDI%;C5mt%_D@BBr zBEm`$VWo($QbbrOBCHe<(ujPeh_F&bSScc`6cJX62rET|l_J7Q0b8Y9qtb9PMMD*b z@o@A6f3)In1$;!qJ0o^T+z#NqF_j`h$|x&Egq0$~N)chDh_F&bSScc`6cJX62rET| zl_EmC5-1|96cJX62rET|l_J7Q5n-i>uu?==DI%;C5yCxzdgP5F!i^%rjUvL0BEpR# z!i^%rjUvL0BEpR#!i^$AdNkN5BHSn<+$bX4C?eb_BHSn<+$bX4C?eb_BHSn1iU>D~2serdH;M>1iU>D~2serdH;M>1iU?`=XrqX5qlj>$ zh;XBbaHEKDqlj>$h;XBbaHEKDqll2kF*k|`H;M>1iU>D~2serdH;M>1iU>D~2serd zH;M>pKz*Z#aHEKDqlj>$h;XBbaHEKDqlj>$h;XBXZlhp?lAR3)q;VV&hhOklFaFrT zXFR;MVvoiRX=krvP{g=VM7U8zxKTv7QAD^=M7U8zxKTv7QAD^=M7U8z2p0mi_!kr?*og%`WBEp>_!kr?*ogzZ&PhSAX6zCj zOT54R;V&Ql{OOM$KYVz1zd4ZZ)WdxqxSx6mxQB>)NVtcLdoZ4cJk6wWbL^=HqpQQxDiC9pHA-0o$a5+)g@Rn{=StNe66`4t6`~fNjzNXD@Yd$l0j}>?a*| zcG3a+Nr#@DbijVn;b$iuu%C1Y+DjcA1a|5H`$-3aopiu{(!pRS9k8EtK-ftK>?a)* zcG3a+Ne5=V)WM-yryj7Mba>WD2ka*uqIJ>%`$>msopiu{(xF-}b#SoMsR!&Q9WZs$ z0sBb@O`UYWe$s(cCmpb#bnw(k2ka*u!1PiFhcKObz<$zUOeY<%pL8hGNeApF9nN&p z0sBdZG`-ZpK}Dw?u%C2b(MbpFCmmdL(gFKP2N<1nz<$y}MkgJxpLC$lOC22QbLs*6 zNr(HKbijVnAwMS_u%C3;&q)XDCms6pQU?d$oO-~1(g8Rp9k8Et5Y9;l>?a+FbJ79( zNeAPcbfA9n0dgRHxI5KWFGg{9%B@a4P@B9v1y?5>s7>CTlB<&r)F$sv(bY)@Y?GMd z+?~3qm!rTO=k8Qaophjk_uZ+TI_W_7?z>Yxb<%ZJ~tXFxjQ9Lr%_-( z=@dbobijVnDT6xcfc>OX2zAl{`$^1k?oKV!%TZvCb9btlPC8&e>C`iwbijVnsc1Us zfc>OX)AUjY%yI6R69j&bijVnDNZ`+fc+%qICrPM=;bId z$GJNdMkgJxpLA-BPC8&e=~Nk=bijVnsWW=11Lin)%yI5csnBT@*iSmeLMI)tpLEKF zPC8&e=@bl|bijTRbDXD2zb)B$sx zJLWidr+nu$3hXDH0-lo&*iSkoJSQEnpLB|NPC8&ei8;>Qsl$0W3e0itP9@Gs2ka-E zTAY&(*iSmuI42#jpTzYz0dt&yIZnVFCph=!z4$Ex<~YH*Iq#$cwaMVzop;iK+GKEU z&wHr@<~RX!oPaq_z#J#wdYphcPQdjz0dt&y>v00+I018v00+I04t=1k7;)uEznB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@Ij zVvbWW$Eld(RLpTI<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S> znB!E;aVq9G6?2@5IZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI z<~S8|oQgS4#T=(%j#DwmshHzb%yBB_I2Ci8iaAcj9H(NAQ!&S>nB!E;aVq9G6?2@5 zIZnkKr(%v%F~_Nx<5bLXD&{y9bDWAfPQ@IjVvbWW$Eld(RLpTI<~S8|oQgTlhB?lL zInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT z&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8 zhB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lL zInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT z&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8 zhB?lLInIVT&W1V8hB?lLInIVT&W1V8hB?lLInIVT&W1V8jycYbInItb&W<_GjycYb zInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb z&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYbInItb&W<_GjycYLaGW>)fBW+< zzy8O6-5ysyz6-Yy{^>tIe)!>sci+GN^#0xb7XIzszyA93pMUu0Km7jR-+uxVb9?-G z+;#TmadUlqhuhBn>Hy*d5ym|cfqpau6H#Z6fpfPe+9>@mGKUh2Q@4@%@j-ul+W}+oL@F-Ti(`xA69_ zztP(t{_^3^pZ@sq!-seG-+%o1=TE8j ze%bYZe>jKVuK(NX`agc7FZs{kuH$b%U;p>|oArOYGQ3g4OV2TCcHCcHw;@|ZVSVfmpj6+<>h8D zYMb<2x{?A=5U#18W*GZR0yI=DbY% z=RCNlA<{O!gL4`(ZO?abO+%(_LI;I3WZEWlP{(6afWZItZsPr;q+Mdr=_9zLPSN13cGg{i7?ZR4|jiSILydan6l+I%A%^;?Ea_d_Kd^;(8Z_d_MvWF#DQS%$W@ z@!1~1CL`e}+?pSzO-8~|sAb5sjn5_{;V8&5w6#6oagm-O(>6YPYHczSj+^%8hiQ|M zaNMkC$n-W)p*7@ZO>;9(SAImBj6}QgBidvn+La&CCL__V{IJ8l(Iz9&CL_@%BX(^1 zxI1iqRoiaQ-Ky=3eLE~|=j*$hi5-)+L(+Cc+73wDnfk}WF4LxJN2Bdvw4J4Ihoarp zXa}P0IJ6yxw)6AtAheyGf4tT*ZK`$z+73Y5nfb08x1-N?@Y#+%+o5MWC*KY{+Zp-C z6D-rFYDb;zptJkYV~3pWh_fAVwlneVaI>9+4pvc+0MPU1I%{jy&Yb5qsw-1+0MGRL(6t#*-p8)>-ss9m&KrOj*PnxCy{S`YYE209_k~`>F)Bw)`^~s&`A#n)QCwHK&r~$R) z4#d?opg%$f>WT_bOYT5kQ3Gnp9q21+Kz(ut0*e~Zb8-g?iyF{#GM&Q?EY?QQfyQD7 z^nlcX$f5?+9dw|wr~&oK9mp(dKz(utI%^uxDd<3GQ32|cJ5XBGfcoSPq!u-x{-gt~ zMGdG=?m%o&1L~9M2s&_E8$kzhiycs(+=1Sr2Gl2aAh@Ujbx0j3E^0u1atD%Y8c+o~ z&|Fl2`s5Bo7d4d`vTUDSa3WZa&Tkq(sCrl14o#SW+?cVNA! z0kz}~ycac~mfV5)q6W|s;m%B>$-R5^qzUL|F{dY5+eNdshUC8o=+hKoMc*GDmF$6cP4r5fn9`i?LI;DQZA1 znIgj8MT6oHs88M0zo9q+>XRuV44ryYaR~TVpr;Fp2zwVIigQ4HGMxg72z!?$YEwWFVejfh zQ3L9eJN2xh2KZ;BrwfV*dzUO~b3jKx5n=DT@*>=;@?WuPZ7* zBia-Z_HKw2hd?d4Q`akMKrOjb=PPPJE%~VXb!!bE-l8$M-UXA=4EFAs6gz+}J$7!L z6g7Ygp?3$Rr~zCEy&EY-4d6oP-A}1$03B-Ywn|X}tO2!TiU@l*S&DN2kJ-I@EkzCB zF}rumrKkZsT+qU$-qn}d2q+@#U4$uWK=(CTMHoBphKWOxN75v-nVn9t0o_MU%2^Dg4Vh4RT@6!XPxU`HTlr{Qg}wo z>pEA%YU79Aw{uafBp=G*^uBQQP*&Et zidGsvEvBQOjF!?-OhyaoC?un0bQF<6>!*N>me5f=*16?YT0XRXj%INqFCYH=>5m^je0X<>iAL=%%aVr;{g%G6moRIn?d8FD*z)p=ZP@ZM z)H7^(`IS9vdHI1eY4ZFsiRv(3(Rd9KmfHg}EP2Zm!? z+;t7-NTO?T*I0cd(Y3g1j6Ra+THG}@A4qi9|1~Bb33Q#@b&kqNqCG~};;t)XN2`asibiau)S9ssVn`ADL>9Ir|FNTTcGt}9GO5?vp6ed+8#qC3QE{yh@t`nYT2 zJ(B49xa&(~M-tt2d`-1S5?vp6T>(0h==wNU(`#fs(Da&Bj~co@?z*CLB+>P8*F1V8 z(RBdV1bQUV^>Nn~ngfZhz-!7p66pH4Ypy(!==!*8l01^=`nYR$Jd)^oj%!*xlIZ$4 zyPeA-u8Htqh}S51)X=rKYxp~o=vv%0?j1>VE$$ldjwC)=jz-u1=l{PX{`-_O;9}rD z{|zPF@@M?_{@}kg)Ytbvzl!lR_-`XaB;IultTn&(qhfp9!SxY9)ZqH?DRyw}pv4ZZ z52IoS*A83k;QDYXc5v;$#SX5|j$#MbM**z^YDXQyEGmFCpqAXh&f*ZLC3hgSr~$R) z4w4o%pqAVL)S3p=3_9pgRDfD?2PKLcP@jBVx%<7S0rkn(?|-TqP@jBVxvOeGeKP$O zJ4jOd6(hCe4x$t_z;i%-atB?CL!dsngEB=8s88;oO-%#(BXm%wr~tL(4*C=|pqAW0 zp`r%VCwI`Or~&oK9aJi6Kz%Zu!wy2#M$kd2Vh8kq)IqDF2GkvNP^+i`^~oLdDr!J| zatFm~8qg`|pjlA?>XSRDR@8v{(Zwi6yHf;*Tlm>a3`HzlMl_e zliaS!hvwT!b=TxW^X(+QYx3dYfi{Opn4P3}Y51Moc&$A&-%h5yCLfw_CvRSp56!oe zMX$+!vcIpA>HI3BH3R+p|Nr~{{qz6xA0PgjBmM_B`TrrbpZ|Zmhui(L{QvOC|1TxI z-v8G6xt9O8fBeF4fBN|T$9Mnu_dh(}19!_?yj>Ik{Nw*W+x}_quse8yK6d*j-*2~n z`f#+{Kly&U{nLk|-Tuk<+wGr@zIOXp-@kk@8y(92|7k;awt<2FzvUEP`u}hX_w;)I zr}1-6H|Z?j^AYZ`4Wxa38<4sgJ9DX-&Z1L?2- zd%2hT+4_%vJO4ed1pemsH74TMUp~G6_{}$OKK!_cdq?0;fBNOC=+jZ*OZ?UK`v3N` z^WT2U(+hvpet7;HcEEdh3ZMCtaJ;?>dKfyJ;XDjalEWT`XUSm?!_(xjhv9j0*u&F_ z(*G^6IUKc|Kn1SDa4#KATlUKrQje@$@yImUv`&+8R)Qa^!jX3edgf$n^9zz;i$? z`AGKkhd?d)NcZ$Lpq6|TrP>n*`M|Zj`UBz1A4kRic)}{Qhg1mPd<`BeGRBjK8jLp4d@gciJ-m$ z)F&UQpuPswCm+e2z6SVLpf2^u=k$j_T`C>Hk`q?+>QayVPG1A+QjZKzUjuqXJ90dI4X8&uvOIkas87c2 zDQY<~J?$wtQa$|+s3jlCp1uaul8=bLm^@^5oo_AsCS^R3p+c!Lr9S=Q0`>?LY6{+bXw8t-6Y zN8_&xv7_;hCU!Lb+7LS$?{H#A# z1xcSpKf92=psBNH+Yyo(G<{ah&!XKz$Z*icwP;xg`3{;si7CWfZZqTNEs%aHV0G(AF=hNjM<-9pIO(DYffTO8Ml({BqQ6GR)= zs^5LlZXu+HXyaP6TPzxukTW6;OGq8j`dPGF2#F+`K8tn>A+1EyXVJ0{l1wyx7VQ>7 z%88`UB6WlW6iuB)yM>UBqUp0}w-Az3G<_BwdWBRKO`k<>RY+XX^jWl9tmT=l4IP`THM6?T1cy*a7chc&-`hFg)lFdl)+HVGqN@ z{ji6jqaOA!JkSq&7&_-+55rUQu!rFRW7GpSsBw12PzA07HtO*W62nnoqaNQNG1LJY z_37JvE-laW27V5aTR@VGsEDG0q$q>VVzD zI9p(-1NPM841u8z*i(#F*d@d%&K0Oznp{U{5_J^+O%7iyG7Up$^znkBR(92du)F!Vguz zo_b8)hdN+SJ*MqL9k8b!6ZWAF*vXBl`cMb#sd)z&zKrSlXd1@ceAojv>M<)H>VS=U z%*Tg1V51&0@u3dXCh5M7qtxL>7scZxtlxk9`R7l+vrm$bs}pb!bWwyGJ-&n+T@>L) zk1ydy7e%5nWiANQOH$YD^>pCXxXY$$-s)`+7_y z!-7#@PmPIW7*}BrHvWK#WEfXo4|TwvdR%Qi(gFXNm`DapBm*XrA@X^^o*EO$5V5Dm zL^4Ed)R;(e|AL8RNci}HiDXFFs4kZBOe90bo*EO$kg=!6M3SGvFp&%edumK1L&2UJ6Ui{HJ|3MVF_8?INCr$KL&2UJ zZ#S4o223PF#hw}y$xyMU#zZny?5Q!43>AB7OeAskY`{b^Y}iv{A{jR9sWFiZ8$JqR zA{jR9y88}`(^0}NjyGuWS#_!x0n7h>2vxL^5I`88MNJm`LInbHqe4Vj>yu^h_Qxk&Ku~Moc6lCXx{o z$%u($#6%KfkBEt6#6&V;A{oa|RgXM1CI%4`$%tcN5fjOXzw#m`l9ywPl1VK#6&V;A{jA}jF?D9Oe7;Fk`WWhh>2vxM3Q?4 zOe7;Fk`WWhh>2vxL^5I`88MNJm`FxUBqJu0e8a*-GGZbbF_DazNJdN~BPNm&6Um5) zWW+==Vj{`UP?$(YOe7;Fk`WWhh>2vxL^5I`88MNJm`FxUB>Ax(6Um5)WW+==Vj>wa zk&Ku~Moc6lCXx{o$%u(0|I*wkk&Ku~Moc6lCXx{o$%u($#6&V;A{jA}jF?E$;0KO< zBupd|CXxvg$%Khy!bCD*BAGCeOqfU}Oe7N~k~kcfFp*4{NG41q6DE=g6Ul^$WWq!; zVIqm6vp6`5W3xCkizBl*FpJ}|I4n!^sBlmg$7FFx7Dr@pKo-YiaX1!7V{tGR$6{&b zHIBsMKrD{K;xH_Z!r~w-j=|y(ERMk904&Wb#o<>ReZ|379DBu~R~&i8fma-N#bH+* zb)}UkIOd8&t~la~1FksUio>lq+KPj%IM#|otu)Ub2U>BQ6^B`IlobbAaf}s*SaF0E z2Uw5zYUjbM|7CwAzyJ31qMh>$T>t&I`pDY3efIuaesgu7CaI)BBI# zeDmhRk9)Xx1pf4=U%rYy9TmRBUv(}TJilRh|LgDg_HY05!(Tr9`O_aie)#ZiTnDOk zGe%`%Kg&8=HnMT0h&Z%yIhokem;#9%jRRa_N8|W{*wOg&PV8uWx)wVcA8xdcR@tM# zDnx~rX|!sE2mnJI+Nu>I;0#ftRVze*8=^+5R)|o1rD?RvjD%7wQK3~UL@3M>HCnZY z2xVHLMyvJ^p=e9gXw@DflyHd}t=dCY{rW;(mo_q?yi4q8)#4Y5y+n;x?IA*Ohp5r2 zJw!-i7ByP6hX~1fnntUBG$Bz+RA|*6A|xe<8m;moLXv{0(W*T}NLmmzTD6A=NerS! ztM-spb1ft{Xd@Gn9K?=R?IA+agQ(FecO)c1h#IZhLxiLVQKMCRh>#?qX|!sJgro^k zp;dc`kVGMBv}z9#k}5=vR{1p{$wJg<)gB@wU5Fa3+Cx^2Oi0GiMkXX>h#jrkLxdy^ zQKMCRh>)})YP8Bh3P~KIMyvJ^A*n;tXq7@jl830!sy#$V`Vci*wTB2vAfiUA_7EW{ zMAT@NrxlV!M2%MMAEXRVzeDE)g|awL*ks6H%j8D?~^>5j9$5 z*^5pht7wSwI-)c|$|H$lN6V&Y(Lz&RP85f>XrU?ZD2f^_T4>6vilRoV7TThtQCNlM zl@}MaDH4hb#g1035TV3S)M(WT5eg1PjaID?;X+hVqg5+pm7`s@83~uAYE!fd%?IJ? zR8gZvAN@JNp?T$DNo|T&p?T$*Nl~L^lf7z%tU~k36O`f{t=dC` zdj>R(R?YP)G_Sl;DUNK_9mhwL(^* z`M9cTUU}nGoTF8Hi16a6sL`rDWEGlUg`JhxP_-#qRW%=%E&g?LwCa?#s%l<&H&y)A zR_!6H(7f`Psy4J$KiVoZue`7-j%?K)B3$V&YP4*!SDms}p?T#kR&kD2?IEks{4#H} z3e79ewQ6%MJP{yvv??khJQ*Nrv}%P2PY8$_t=dC`Cj~@}R(*%8I*6`9^UB+=+7zuq z^U6!GqDHIskX2}2c^+0A+Nu?@3e78T#%e=bHL_J`UU^7X9NDT<)+#iwye=yaZPgyK z3e77|&Wb}@b;??W=9hgKt*V+=UZvIMdR5iD@>MGw=<$|k_#HwP!MXPHS zk63ky@2WzT#H#yySJeov;t)rL;Fox-_e=EIfB*T9?|=P+^WyVMP5bXZ z-){95K70SUyt&OKJ{i)xEM=9W~yu06T;a)DDdY)+U z6b7GY@pLwxXz}!MIML$iygSk2=|g{_#nU&?M2n~6;Y5q4os(I{aQ%P#71n>Lzghn& zzP|s?ep#*c=l1sP=j%TPVf~L5N< z43RBAqRDKnbggB}t4J+vk+#H^bCOhT`6#Jj<3#kW)Uf5_q=qe5CpA2KJhoo`x3wPn z|L=g~f10em|1Y_u^bh}kzy0m|@A03$xqXev{`Hqn?>~O?&6^KD?&01M_|u<$`6~K! zRQM8q^|>?t?z8h>yea3uQHzGhA2xB?H1>y~oQ9howrP0iVVj0?9=2)tq7)Op_I!7kolx~LU+zrz?Qt_sAGfd}rmS#$hVLHao zb7aWPsCGOdGu6h?&G0(MMKe>n8Kx5quXEfKGo_p1b&mUAX5<)CeO$sfCC2bN$6YN` za-8uPUgx;pU`jW`bfV#Pj-tRR-3+f|OxsZ;GNam&Hb2$I@H$7X@01*84h*kzTsShN zn_)W1@H)qhAv3xeQ*h+cPKhzR&XFTKCCBhONAByC9B1APuXE(DPU&Wt&XJcoBgYud zk#9OB#xR{Dk910oVLHX|I!7+(ly1&k8(!zQcw$O7W5Y63J908-R6Fu7r`i}B)^YX2 zlpMo!s^N8x+{h{2oZrXrI>+S;GrAdKj=aSwF^1PU@)4)x7+&YdGn|rRn9h+uI3>q0 zog*)BN{-=moF+y{@W|tv8P1WjH`T^4og)`-N{(SVM~>Z;9K&>u+_@<^^L8-5Cm2zk z=U3_{2J`$N{Zt!gIP=E#{G$AnZu7?W{7(FooOxq=e*Jw)j$v%`ThH_J?K7&~9XW>S z81d(DJheVG9>a8u_;a`$renmP!%@pUGY7`c<9I3~{v3|i%BO~7cpW4D{QTVbly39i zWY3R?Psy1-@jgEdJ|oANY9s#q{I>U$YKB=K*Md*Ung1pWM*KM(Pi{}?W_TSV{v4vQ zVHwkA#GjuZy`Gu2<06ZxHpWso?vV;ZNyiY*dz2C*;h3kQkrl&rh+=D0W=!I@M<0Pd&e- zIwfb`*q&cVosu(eY|rnWPRW@!w&&MOXXMQLkLNc^r^GmN4AU{<&(H6PPK{^&boBg6 z=#-rK)9drwpHp(?_bVe&G#c^e=XW}1hGWE^Iw)p+WpMU=J zyQ%RQUdPCPHsZC&IQq3?OBmX%X@#lElVLUY+*IqvG6l4G28jFn)-pP%0XoEeT0e|~=9Z%U5gd5!q<^Amkjx*4Wp z#Gjwv*qhPKP|b)xKR=Q;rJAu}8S&@mSMH{CGrq8l`1A8KbyK<-8W;?K#*e@@36Yg6Mfj>*T{X)|(+k3S>+oQ(T7((%^W)NtnWC?{|$ua=y)9_L7bGb2j47 z`8L1B<=gz}DBql^p3j8HxA`MTzRmAF`8L1B8Q)6Th(BlJ{*7$JpR*Bv&c^*4*|`5X z8}a9C+`o~H`!}+2|Az6&oQ?Q%Hsa6Oh(Bi|{+x~Yb2j47*@!=9BmSI?_;WVm&qm}V z8}a9C#GfBeB2K4`8$lf-relP3jEIgA&@tjU^P8v<%`t*GMl8n&t&InoIcX{qMiM|5obl_WJ(Y@f&@~f4(3UzkN?J-j(-1ztbAFB70&>(6m+H zE=p~EafwY^kwUR)D_|%#ZN&}6rmZg@v1#iNEH-VOhs36>tx;?0TSPO$C<+BqeLHN1 z9YuwGJ8T9aMXA0WHbau4RNoGp0ZL7(|Fbs3m7-AJ4x7PCQL66`o1sims_ze*flX1W z?+=?{PEo4w5B=Y!8T-`qZH7R_rvAcdCgh4zeSg?Y&lRQm{;-*>D@yhKVKa4Clj=`! zGm%#m>iffHTCXV8UvteQUs0;>51WaOqEz1>HWPqFslGq-XQ`R+py}HL-eObVA2xxP zDAixCO~@ol_5EQJI*C$!f7pajnpA(NO(-P__5EQJQi)Q1f7papqEvsSHzAfN)%S-@ zs3l7E{h_aK6Lx9(Hldf;)c1!?2qsGP{b3V|iBf$h(S&58RNo&qp_wMt7utkqqEO!- zHldm*)%S-@$R09v_bMO6wBLdh_4OBy4`M>|f)r6<-yb%w zOA)2|{;+v@iYV3hhyFtMK}`E$No}Y;hzZSWRz#^_ntVI-K}`DzN^z{dKWtVUYf}AL z@ zHmit4so=-)_hlc%w4ch<#_H?qgP8XFnWDbFKlDLN`%z6%Vc#D%tCU2k;CJ=+Wgo=& zS!%%tG401VwF&k?OlVd)iBf%k*sOXIrTYG`Sp_9Z_3f}(6{Sh_cl2hJlql4XTKXWS z{m!STuy2RWYAR8xZ->q5Dp9I$hex&5d_{~Mw(+Aj?Po%zIf~8Oa>S6WRe#Ei*{;+xDk0{mmht2zcG^zfM4z_f^ zA|`@`0E$h0-|vH%_EWB+!v4POgP7R7j!jh9KOg!- z^+8Pg?N@E6K8R_*1S?AQw+$b}w4a9+754XKAH=lZjMWtO_4Pqa`yp9TUw>crK}`E~ zSy5qsU-m&v`^i~RVSiutK@2#Q`XHwLDy=q4K8R_*Q7cOI{h<$H+7H)?3j6-WuZU^C zW~(Xe@8~{=X+Lo*>g)T%<~4SrRNoGL5Yv7IS5(-yL%$-X{WPwmusy&2*K+&4Tuoaa z#I#?}6{XrAIH~!Tfhg79(AzKTic)O@ZojiDO10f#^Kn5zT8X9-M`zc2eBru`_fI9A^u`XHwHQn9A54`SNy7K>8-ec7*wX+LHxD(u@~^Bo*f zs_zed5Yv9|SX0eGrqH@9t;{`}+DI zrv0L_sIPB_K8R^Qvn(p?`$HeZwBKG9754XKAH?|glqMgIf{?M<8 zu_wv@N@+hFEzME;{b;eNZNTlGYAfooB!9RP1XcP&cw z?a+TCru_!CsIYH`K8W#yaqai9wW0bTru|yBDAl(^AH-xI#AN?!vh2SRlYJ25=gIpI zNBF^6KS|yX&H9f<*he%!F57(0Tv}>=db}T$^`DFIL$dy35zU9swYjyo2|pZbM@#%* ztp7|z^NDn6YW+xT^TBjYrhQED!?6AX5zWWcwQ<@JEZg4w2yFAAb!nJ>{MEmZ$bT5Z z55D@(Lim>v`H@%uDk9rz{jjV5AcTJnksovQUxV;d-~E8Ae*=-9_kKiMzvOG*zwLYY z{`>df;rAzT{rBHP4JEy~r}X$Je#8my_cynDjw!sp|Nh%wYyE%u{I;v_--gH4MYreh%14BIq9^}{xe z!``q>_goQ(`h}uK9pmaPV2Gt zp&Y|>TA}li9OLI{RV@s~7^c&Dxnn5D@H(x^grOY6>$F1PLpg@mX zK8;js1-6H646|-s?lhERc%4@8dML;6I<0W^P>$hsT925Im6+GZbTZofh30$}zl7i|7pH7)!22afWgXuhYt;AIdSjj-gtM z(~MMW5t?Be!|SxD%utTuby|;g59Jukv_)TratyE2%6cEkF~qbe%TSErby{R)D97+R zEt)cvV|bkwK^e+1mUfGp4CNSJ$7y1O1Y2}uG@KR}8MZM@r^P~satzaH@sFV#!*p8A zV<>0d4(9g+BdXJU;d(Hb=F`^0HqLP7jjj2L^-#BYV{5)!J(M$VY|WRdhjI*Ko8Nkx zk5Z3RYrRH2Y-5;?5r1wzJU!ISFr8LD_fU>uI<3d0hjI+lF@7G$Q?;_RN5e7V&&?;J zhjQi**3CzvhjQi**3D<3hjQjmyv>K8M{*1YZ^WOQZ$1xIGtAns0>gh8Heh%U!vf}g z$NcYa{QL%eXgx47Fc^b9w9@BCQs(WYl`cP$GH)-f^!SmKd3%{(UAnb*re3Icm9JHz@MpEYOrByF6k}_{E|2-8F>vQh^ zC-pe4|9Glr17#rn`j5xOJ+*vR{}CSbAEng#TL1Ai?BqrLN27ExRiz9>YuNI{VoT7p z1#(2Gt%#@Cv~_qCo3;)GV$;@PQf%6C`eM`8;Zkhc+62U=t)qa})VGLcg^4H>NcHWo ziTy-{eLHLxp@>p_J8YJuh*Et!Y!;|!QvIK`i3>%cz8yBiffHd5kF4_lM158Bwb551XYknpA&+ zn@~#>>ifecv{Hue2svxrEP>iffHNs%bkcM{D4BT=gF51Wuslj;j?LPJrg z?+=?0QIzWY!)9TUDAo6e%`zoXs_$Q#MN6Vo-yedOejK|ACAFb8;iTBqx5Fl^6s7uh z*sOUHrTTW*tbh`w+SX+6a(?u%T^%J2v|S`6HU&eq4Y*x7B`RziaJ!C5lxiDryQ)f* z>Km}VwYE#GG<};DS7KA&4t)^QF2fQP_U*7)lqE{_?XX#*B}(<}(EnM1D{YoyUIDoPuw4`M>IN=lUK z`@?3{lqePaIR3uugP72)s?x^l>+6G<;DeaQ&Hlgt`18-7em9?F9DEQHnpIfh1pEH5 zS(PP91;4AmFZ&?I&r%CMhzZRqE^UH+5EGhJU7}RqA2zGJM5(?%Y*u}VQhhsYJ-YL~ zCe`23ThH#OLj9IT1=cJ-wvDAW1>{w4x80vqEz1wkLt4d&B{Ky`%#;Cvq@sS z*#;bM_J$sBV3uqHjyHQlk2l+ZACKs`=bm`84LIIxcj)J0N53K_`XDCWeLM6)OuYMc z=vTx7J2=vTzV;QK@WTO+n! zJJ-&5KAebPO9x&UEF3ac-yixFG0_Jx(XWV!K8T5aMT}3nq7P!C4`Lp#HrfXtAH+nz zA|@u^ANn9B`XDCy6*18VF<`a&AO@^+f4lKd-}d3#cB1|g_gA>T!2R{@FK>T!`-|IO z+y2t_SGMi`{B`Z~RUfbVWo|xP^^4rH9eMD{st;EE0yle@K2`Ohs?St?r0SQp`9Re# zY%BJ*>(f*prrOH-DAgyaK1lUBs*h3qayB2L`o(P3KJ)nm)fVaVQy-uD^wfu^ei56G zPW=)#ADsFHY(6%%zf^o^>KCv1$kZpMe&w3aOZ~bvpO*SnYX>X+8aEWa%J`Bq(7ONg zU%z{IzlDE$_x=C%>yQ8O;a`9K`OklNf-v4Cp#A$lZ?}@e^ZlPC*T?;zwcPUS{hwd* zcR%|6{^#R2e*4qM_dhm%^S9x_vv1|y{eCOA+r@35w40~6G41AwsnKqpLUOd5r{D_h z=IJx}_{G-#v%CJEZQ~E#!hceAu>K#0b^FKqFSozm{~OBd`d|A)U-b4H$+!!2ku zgy9}E>R`ADjXD_aLZc3b+t8?k;XX9#V7L*DI(XWNY&$se|NIW9AsxAZz6R6|s3lWF zrutJerdCXi_`mHmCGP)UGX4|qkC@Lrr5tL${eAzhCB5$dUt{}!({VY!O}s8)pFaj@ z-HcBIT0i4Mf!5F1rEC3+9jn&Q*uiT3j2*4k&)DH={fr&2*3Z}hYyFH56H-5m%;%_T zpsQ3k;%LKKHLgX=Vo^7X7T2P+wPap=d0|Z|K|$P&VS#1!T8VPX=#mhV1~|D^f&+I#5d|-c+?wpFx<>W9SpahQ3u0~XVk%P z%Ncbr+-yc247Zt42g40!)WPt`Ht2ww!T69iQh-|WQHE+S=5YXOGz4nNM`5Zz1Zv4g zk*co&wdA8<)z*Oeqoa7$SAbgbQON3Rfaic(@=+}34}n_pQReDvKrQ(wd9^j5Kf+NP z=PN)h`KXlhHK3M!)Xn)C(9^|HMdxckPZvi`ov#5sUC=o^3hnF>9QAg72lRk+RNwg; zP_MU9o09cBn7VQ=S6V=AGXjuq^RMThCvJiNwq|c(COQ5HkI*XQtz*04R z7A*^btZMo!Iz$PaRnuqDAxfaGnm&sTQH!QoK(W%W1R|^Tv*>Ur@L5ftMeawSwVFPQ zb_;>sYWghNEd-J)>9c5h1g@*8vuL*vD6gi^qTNDZzM4LZ+?YUsHGLNC76K2}^jWl9 zEE<*oiKSr)tXS)3(QYA-V@;n$yM@4!HGLMjLxC!5`YhTl1ja1svq&9*IBV)G+AReB ztm(68w-9Kwrq80?LSWOHK8xI{K&mx;7VQ?Rx>>|61d1(9j{vi^eikhY0c~sgELs)< z=+^XEv@8Vdt?Bb*&tHQ*zRGx=f!7&$oq^XGc%6aQ8F-z6*BN-7f!7&$oq^XGc%6aQ e8F-z6*BN-7f!7&$oq^XGc%6aQ8Tc|Y@c#i*3=5S2 From 135fcd2539184f5491c0004228a57cfd799b7065 Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 27 Jul 2023 13:55:50 +0100 Subject: [PATCH 30/50] Adding file that compares Run2 and 3 data --- .../HiggsTauTauRun2/scripts/compare_Run2_3.py | 499 ++++++++++++++++++ 1 file changed, 499 insertions(+) create mode 100644 Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py b/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py new file mode 100644 index 000000000..75388d196 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py @@ -0,0 +1,499 @@ +import ROOT as R +from UserCode.ICHiggsTauTau.plotting import * +import numpy as np + +def MyCompareHists(hists=[], + legend_titles=[], + title="", + ratio=True, + log_y=False, + log_x=False, + ratio_range="0.7,1.3", + custom_x_range=False, + x_axis_max=4000, + x_axis_min=0, + custom_y_range=False, + y_axis_max=4000, + y_axis_min=0, + x_title="", + y_title="", + extra_pad=0, + norm_hists=False, + plot_name="plot", + label="", + norm_bins=True, + uncert_hist=None, + uncert_title='', + ReweightPlot=False, + output_file = None, + outputfolder = None, + integral_with_lowerlimit = None, + integral_with_upperlimit = None, + do_integral_stats=False): + + objects=[] + R.gROOT.SetBatch(R.kTRUE) + R.TH1.AddDirectory(False) + ModTDRStyle(r=0.04, l=0.14) + + colourlist=[R.kBlue,R.kRed,R.kGreen+3,R.kBlack,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] + if ReweightPlot: + colourlist=[R.kBlack,R.kBlue,R.kRed,R.kGreen+3,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] + + hs = R.THStack("hs","") + hist_count=0 + legend_hists=[] + if isinstance(uncert_hist, (list,)): + for i in uncert_hist: + if i is None: continue + if norm_bins and i is not None: i.Scale(1.0,"width") + else: + if norm_bins and uncert_hist is not None: uncert_hist.Scale(1.0,"width") + + for hist in hists: + # print hist.GetName() + # for bin_ in range(1,hist.GetNbinsX()): + # print hist.GetBinContent(bin_) + # print np.sqrt(hist.GetBinContent(bin_)) + if norm_hists: hist.Scale(1.0/hist.Integral(0, hist.GetNbinsX()+1)) + if norm_bins: hist.Scale(1.0,"width") + h = hist.Clone() + objects.append(h) + h.SetFillColor(0) + h.SetLineWidth(3) + h.SetLineColor(colourlist[hist_count]) + h.SetMarkerColor(colourlist[hist_count]) + h.SetMarkerSize(0) + hs.Add(h) + hist_count+=1 + o=h.Clone() + objects.append(o) + legend_hists.append(o) + # hs.Draw("nostack") + + c1 = R.TCanvas() + c1.cd() + + if ratio: + if ReweightPlot: pads=TwoPadSplit(0.39,0.01,0.01) + else: pads=TwoPadSplit(0.29,0.01,0.01) + else: + pads=OnePad() + pads[0].cd() + + if(log_y): pads[0].SetLogy(1) + if(log_x): pads[0].SetLogx(1) + if custom_x_range: + if x_axis_max > hists[0].GetXaxis().GetXmax(): x_axis_max = hists[0].GetXaxis().GetXmax() + if ratio: + if(log_x): pads[1].SetLogx(1) + axish = createAxisHists(2,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.01) + axish[1].GetXaxis().SetTitle(x_title) + axish[1].GetXaxis().SetLabelSize(0.03) + axish[1].GetYaxis().SetNdivisions(4) + axish[1].GetYaxis().SetTitle("Ratio") + #if ReweightPlot: + # axish[1].GetYaxis().SetTitle("Correction") + axish[1].GetYaxis().SetTitleOffset(1.6) + axish[1].GetYaxis().SetTitleSize(0.04) + axish[1].GetYaxis().SetLabelSize(0.03) + + axish[0].GetXaxis().SetTitleSize(0) + axish[0].GetXaxis().SetLabelSize(0) + if custom_x_range: + axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + axish[1].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + if custom_y_range: + axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + axish[1].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + else: + axish = createAxisHists(1,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.005) + axish[0].GetXaxis().SetLabelSize(0.03) + axish[0].GetXaxis().SetTitle(x_title) + axish[0].GetXaxis().SetTitleSize(0.04) + if custom_x_range: + axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) + if custom_y_range: + axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) + axish[0].GetYaxis().SetTitle(y_title) + axish[0].GetYaxis().SetTitleOffset(1.6) + axish[0].GetYaxis().SetTitleSize(0.04) + axish[0].GetYaxis().SetLabelSize(0.03) + + hs.Draw("nostack same") + + uncert_hs = R.THStack() + if uncert_hist is not None: + if isinstance(uncert_hist, (list,)): + #col_list = [12,6,4,2,3,4] + col_list=colourlist + count = 0 + for i in uncert_hist: + if i is not None: + i.SetFillColor(CreateTransparentColor(col_list[count],0.4)) + i.SetLineColor(CreateTransparentColor(col_list[count],0.4)) + i.SetMarkerSize(0) + i.SetMarkerColor(CreateTransparentColor(col_list[count],0.4)) + i.SetFillStyle(1111) + uncert_hs.Add(i) + count+=1 + uncert_hs.Draw("nostack e2same") + else: + uncert_hist.SetFillColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetLineColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetMarkerSize(0) + uncert_hist.SetMarkerColor(CreateTransparentColor(12,0.4)) + uncert_hist.SetFillStyle(1111) + uncert_hs.Add(uncert_hist) + uncert_hs.Draw("e2same") + + uncert_hs.Draw("nostack e2same") + if not custom_y_range: + if(log_y): + if hs.GetMinimum("nostack") >0: axish[0].SetMinimum(hs.GetMinimum("nostack")) + else: axish[0].SetMinimum(0.0009) + axish[0].SetMaximum(10**((1+extra_pad)*(math.log10(1.1*hs.GetMaximum("nostack") - math.log10(axish[0].GetMinimum()))))) + else: + maxi=1.1*(1+extra_pad)*max(hs.GetMaximum("nostack"),uncert_hs.GetMaximum("nostack")) + if not ReweightPlot: axish[0].SetMinimum(0) + else: + mini = None + maxi = None + for h in hists+uncert_hist: + if h is None: continue + for i in range(1,h.GetNbinsX()+1): + lo = h.GetBinContent(i)-h.GetBinError(i) + hi = h.GetBinContent(i)+h.GetBinError(i) + if mini is None: + mini = min(lo,hi) + maxi = max(lo,hi) + else: + mini = min(mini,lo,hi) + maxi = max(maxi,lo,hi) + #mini = min(hs.GetMinimum("nostack"),uncert_hs.GetMinimum("nostack")) + mini-= abs(mini)*extra_pad + axish[0].SetMinimum(mini) + maxi*=(1.+extra_pad) + axish[0].SetMaximum(maxi) + axish[0].Draw() + uncert_hs.Draw("nostack e2same") + + hs.Draw("nostack hist same") + axish[0].Draw("axissame") + + + #Setup legend + tot = len(hists) + if isinstance(uncert_hist,list): tot+=len(uncert_hist) + legend = PositionedLegend(0.35,0.15,3,0.04) + legend.SetTextFont(42) + legend.SetTextSize(0.03) + legend.SetFillColor(0) + + + for legi,hist in enumerate(legend_hists): + legend.AddEntry(hist,legend_titles[legi],"l") + if isinstance(uncert_hist, (list,)): + count=0 + for i in uncert_hist: + if i is not None: legend.AddEntry(i,uncert_title[count],'f') + count+=1 + else: + if uncert_hist is not None and uncert_title: legend.AddEntry(uncert_hist,uncert_title,'f') + legend.Draw("same") + + #CMS label and title + FixTopRange(pads[0], axish[0].GetMaximum(), extra_pad if extra_pad>0 else 0.30) + DrawCMSLogo(pads[0], 'CMS', 'Preliminary', 11, 0.045, 0.05, 1.0, '', 1.0) + #DrawCMSLogo(pads[0], 'CMS', 'Simulation', 11, 0.045, 0.05, 1.0, '', 1.0) + DrawTitle(pads[0], title, 3) + + latex2 = R.TLatex() + latex2.SetNDC() + latex2.SetTextAngle(0) + latex2.SetTextColor(R.kBlack) + latex2.SetTextSize(0.028) + latex2.DrawLatex(0.145,0.955,label) + + #Add ratio plot if required + if ratio: + ratio_hs = R.THStack("ratio_hs","") + hist_count=0 + pads[1].cd() + pads[1].SetGrid(0,1) + axish[1].Draw("axis") + axish[1].SetMinimum(float(ratio_range.split(',')[0])) + axish[1].SetMaximum(float(ratio_range.split(',')[1])) + div_hist = hists[0].Clone() + objects.append(div_hist) + + for i in range(0,div_hist.GetNbinsX()+2): div_hist.SetBinError(i,0) + first_hist=True + for hist in hists: + h = hist.Clone() + objects.append(h) + + h.SetFillColor(0) + h.SetLineWidth(3) + h.SetLineColor(colourlist[hist_count]) + h.SetMarkerColor(colourlist[hist_count]) + h.SetMarkerSize(0) + + h.Divide(div_hist) + if first_hist: + for i in range(1,h.GetNbinsX()+1): h.SetBinError(i,0.00001) + first_hist=False + o = h.Clone() + objects.append(o) + ratio_hs.Add(o) + hist_count+=1 + if uncert_hist is not None: + if isinstance(uncert_hist, (list,)): + ratio_err_hs = R.THStack("ratio_err_hs","") + count=0 + for i in uncert_hist: + if i is not None: + h = i.Clone() + objects.append(h) + h.Divide(div_hist) + ratio_err_hs.Add(h) + h.Draw("e2same") + count+=1 + #ratio_err_hs.Draw("nostack e2same") + else: + h = uncert_hist.Clone() + objects.append(h) + h.Divide(div_hist) + h.Draw("e2same") + ratio_hs.Draw("nostack e same") + pads[1].RedrawAxis("G") + pads[0].cd() + pads[0].GetFrame().Draw() + pads[0].RedrawAxis() + + if do_integral_stats: + legendstats = PositionedLegend(0.2,0.15,2,0.01) + legendstats.SetTextFont(42) + legendstats.SetTextSize(0.024) + legendstats.SetFillColor(0) + legendstats.SetHeader("Integrals") + + + for legi,hist in enumerate(legend_hists): + legendstats.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(), + (hist.Integral()/legend_hists[0].Integral())*100),"l") + if isinstance(uncert_hist, (list,)): + count=0 + if uncert_hist is not None and uncert_title: legendstats.AddEntry(uncert_hist,uncert_title,'f') + legendstats.Draw("same") + + if type(integral_with_lowerlimit) is float or type(integral_with_lowerlimit) is int: + t = R.gPad.GetTopMargin() + r = R.gPad.GetRightMargin() + legendstatslim = R.TLegend(1 - r - 0.2, 1 - t - 0.2-0.2, 1 - r - 0.05, 1 - t -0.2, '', 'NBNDC') + legendstatslim.SetTextFont(42) + legendstatslim.SetTextSize(0.024) + legendstatslim.SetFillColor(0) + legendstatslim.SetHeader("Integrals >%.0fGeV"%integral_with_lowerlimit) + + + for legi,hist in enumerate(legend_hists): + legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()), + (hist.Integral(hist.FindBin(integral_with_lowerlimit), + hist.GetNbinsX())/legend_hists[0].Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()))*100),"l") + legendstatslim.Draw("same") + if type(integral_with_upperlimit) is float or type(integral_with_upperlimit) is int: + t = R.gPad.GetTopMargin() + r = R.gPad.GetRightMargin() + legendstatslim = R.TLegend(1 - r - 0.2, 1 - t - 0.2-0.2, 1 - r - 0.05, 1 - t -0.2, '', 'NBNDC') + legendstatslim.SetTextFont(42) + legendstatslim.SetTextSize(0.024) + legendstatslim.SetFillColor(0) + legendstatslim.SetHeader("Integrals <%.0fGeV"%integral_with_upperlimit) + + + for legi,hist in enumerate(legend_hists): + legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(1,hist.FindBin(integral_with_upperlimit)), + (hist.Integral(1,hist.FindBin(integral_with_upperlimit))/legend_hists[0].Integral(1,hist.FindBin(integral_with_upperlimit)))*100),"l") + legendstatslim.Draw("same") + + c1.SaveAs(outputfolder+plot_name+'.png') + #c1.SaveAs(outputfolder+plot_name+'.pdf') + if output_file is not None: + output_file.WriteObject(c1, plot_name) + for o in objects: + o.IsA().Destructor(o) + c1.Close() + +USEBYBIN = True +LUMI22 = 38.2 +LUMI18 = 59.7 +DO_RATIO = True +file18_dirname = "output_2018_all/" +file22_dirname = "output_2022/" + +output_folder_name = "output_2018vs2022/" + + +variables = [ + + ["n_jets","N_{jets}"], + # ["pt_1","p_{T}^{#tau_{1}}"], + # ["pt_2", "p_{T}^{#tau_{2}}"], + # ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], + # ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], + ["pt_tt", "p_{T}^{#tau#tau}"], + ["m_vis","m_{#tau#tau}"] + +] + +selname = "medium_vloose_medium_vloose" +types=["OppS","SS"] + +for var in variables: + for chargetype in types: + +#-------------------------------------------------------------------- +#Reading files and creating histograms - 2018 + + file18names,files18,file18_dirs,hists18QCD,hists18Data,hists18Diff = [],[],[],[],[],[] + versions= ["v2p1","v2p5"] + for version in versions: + if chargetype == "SS": + file18names.append("datacard_" + var[0] + "_inclusive_" + selname +"_trg_doubletau_"+version+"_tt_2018_ss.root") + else: + file18names.append( "datacard_" + var[0] + "_inclusive_" + selname +"_trg_doubletau_"+version+ "_tt_2018.root") + + for f in file18names: files18.append( R.TFile.Open(file18_dirname + f, "READ")) + for f in files18: file18_dirs.append(f.Get("tt_inclusive")) + for f in file18_dirs: + f.cd() + if USEBYBIN: + hists18QCD.append( f.Get("QCD_bybin_nosub").Clone()) + else: + hists18QCD.append( f.Get("QCD_nosub").Clone()) + + hists18Data.append(f.Get("data_obs").Clone()) + hists18Diff.append(f.Get("data_obs").Clone()) + hists18Diff[-1].SetName("DATA_minus_QCD") + hists18Diff[-1].Add(hists18Data[-1],hists18QCD[-1],1,-1) + + uncertQCD = hists18QCD[0].Clone() + for bin_i in range(1,uncertQCD.GetNbinsX()+1): + error = uncertQCD.GetBinContent(bin_i) + error = error*0.1 + uncertQCD.SetBinError(bin_i,error) + + uncertDiff = hists18Diff[0].Clone() + for bin_i in range(1,uncertDiff.GetNbinsX()+1): + content = uncertDiff.GetBinContent(bin_i) + uncertDiff.SetBinContent(bin_i,content) + error = uncertQCD.GetBinContent(bin_i)*0.1 + uncertDiff.SetBinError(bin_i,error) + + + SBstatHist18 = [] + for hist_i in range(0,len(hists18Data)): + SBstatHist18.append(hists18QCD[hist_i].Clone()) + for i_bin in range(1,SBstatHist18[-1].GetNbinsX()+1): + if SBstatHist18[-1].GetBinContent(i_bin)<=0: + SBstatHist18[-1].SetBinContent(i_bin, 0) + SBstatHist18[-1].SetBinError(i_bin,0) + else: + SBstatHist18[-1].SetBinContent(i_bin, np.sqrt(SBstatHist18[-1].GetBinContent(i_bin))) + SBstatHist18[-1].SetBinError(i_bin,SBstatHist18[-1].GetBinError(i_bin)/(2*np.sqrt(SBstatHist18[-1].GetBinContent(i_bin)))) + SBstatHist18[-1].Divide(hists18Data[hist_i],SBstatHist18[-1],1,1) +#-------------------------------------------------------------------- +#Reading files and creating histograms - 2022 + + file22names,files22,file22_dirs,hists22QCD,hists22Data,hists22Diff = [],[],[],[],[],[] + trignames = ["trg_doubletau","trg_both"] + for trig in trignames: + if chargetype == "SS": + file22names.append("datacard_" + var[0] + "_inclusive_" + selname +"_"+trig+ "_v2p5_tt_2022_ss.root") + else: + file22names.append( "datacard_" + var[0] + "_inclusive_" + selname+"_"+trig + "_v2p5_tt_2022.root") + + for f in file22names: files22.append( R.TFile.Open(file22_dirname + f, "READ")) + for f in files22: file22_dirs.append(f.Get("tt_inclusive")) + for f in file22_dirs: + f.cd() + if USEBYBIN: + hists22QCD.append( f.Get("QCD_bybin_nosub").Clone()) + else: + hists22QCD.append( f.Get("QCD_nosub").Clone()) + + hists22Data.append(f.Get("data_obs").Clone()) + hists22QCD[-1].Scale(LUMI18/LUMI22) + hists22Data[-1].Scale(LUMI18/LUMI22) + + hists22Diff.append(f.Get("data_obs").Clone()) + hists22Diff[-1].SetName("DATA_minus_QCD") + hists22Diff[-1].Add(hists22Data[-1],hists22QCD[-1],1,-1) + + SBstatHist22 = [] + for hist_i in range(0,len(hists22Data)): + SBstatHist22.append(hists22QCD[hist_i].Clone()) + for i_bin in range(1,SBstatHist22[-1].GetNbinsX()+1): + if SBstatHist22[-1].GetBinContent(i_bin)<=0: + SBstatHist22[-1].SetBinContent(i_bin, 0) + SBstatHist22[-1].SetBinError(i_bin,0) + else: + SBstatHist22[-1].SetBinContent(i_bin, np.sqrt(SBstatHist22[-1].GetBinContent(i_bin))) + SBstatHist22[-1].SetBinError(i_bin,SBstatHist22[-1].GetBinError(i_bin)/(2*np.sqrt(SBstatHist22[-1].GetBinContent(i_bin)))) + SBstatHist22[-1].Divide(hists22Data[hist_i],SBstatHist22[-1],1,1) + +#-------------------------------------------------------------------- +#Outputfile + output = R.TFile(output_folder_name+"/"+var[0]+"_"+selname+"_"+chargetype+".root","RECREATE") + +#-------------------------------------------------------------------- + for histtype in [[hists18Data,hists22Data,"Data",None],[hists18QCD,hists22QCD,"QCD",uncertQCD], + [hists18Diff,hists22Diff,"nonQCD",uncertDiff]]: + # legend_titles = ["2018 %s (%s)"%(histtype[2],chargetype)] + [ + # "#splitline{Scaled 2022 %s}{%s (%s)}"%(histtype[2],trig,chargetype) for trig in ["doubletau trig","all trigs"] + # ] + legend_titles = ["2018 %s"%(ver) for ver in versions] + [ + "2022 %s"%(trig) for trig in ["doubletau","doubletau+jet"] + ] + if var[0] == "n_jets": + MyCompareHists(hists = histtype[0]+histtype[1], + legend_titles = legend_titles, + title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.5,1.5", + x_title = var[1], y_title = "Events",plot_name = + var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, + outputfolder=output_folder_name,uncert_hist=histtype[3], + uncert_title= + ("Systematic Error" if histtype[3] is not None else '')) + elif var[0] == "pt_tt": + MyCompareHists(hists = histtype[0]+histtype[1], + legend_titles = legend_titles, + title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.3,1.5", + x_title = var[1], y_title = "Events",plot_name = + var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, + outputfolder=output_folder_name, integral_with_lowerlimit=None,uncert_hist=histtype[3],uncert_title= + ("Systematic Error" if histtype[3] is not None else '')) + else: + MyCompareHists(hists = histtype[0]+histtype[1], + legend_titles = legend_titles, + title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.5,1.5", + x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = + var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, + outputfolder=output_folder_name,uncert_hist=histtype[3], uncert_title= + ("Systematic Error" if histtype[3] is not None else ''),integral_with_upperlimit=None) +#title="59.7 fb^{-1} (13 TeV)" +#-------------------------------------------------------------------- + # legend_titles = ["2018 S/#sqrt{B} (%s)"%chargetype] + [ + # "#splitline{2022 S/#sqrt{B} (%s)}{%s}"%(chargetype,trig) for trig in ["doubletau trig","all trigs"] + # ] + MyCompareHists(hists = SBstatHist18+SBstatHist22, + legend_titles = legend_titles, + title="S/#sqrt{B} %s (%s)"%(histtype[2],chargetype), extra_pad=0,ratio_range="0.5,2.5", + x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = + var[0]+"_"+selname+"_"+chargetype, output_file = output, ratio = True, outputfolder=output_folder_name) + + +#-------------------------------------------------------------------- + for f in files18: f.Close() + for f in files22: f.Close() + From c0dd828eb40a57eb116d1b76c1a910f3126e2103 Mon Sep 17 00:00:00 2001 From: Endre Date: Fri, 4 Aug 2023 13:28:05 +0100 Subject: [PATCH 31/50] TnP 2022 --- Analysis/HiggsTauTauRun2/scripts/TnP.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP.py b/Analysis/HiggsTauTauRun2/scripts/TnP.py index 270e82f0f..cef8e6acc 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP.py @@ -973,6 +973,8 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] elif options.era == 'UL_18': data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] + elif options.era == '22_preEE': + data_samples = ['SingleMuonA_rereco_preEE','SingleMuonB_rereco_preEE','SingleMuonC_rereco_preEE','MuonD_rereco_preEE'] if options.channel == 'tpzee': if options.era == 'UL_16preVFP': data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] @@ -996,6 +998,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent elif options.era == 'UL_16postVFP': ztt_samples = ['DYJetsToLL-LO'] elif options.era == 'UL_17': ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1'] elif options.era == 'UL_18': ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1'] +elif options.era == '22_preEE': ztt_samples = ['DYJetsToLL-LO_summer_preEE'] #Formula: abs(eta_2),pt_2,m_vis[0,0.1,0.3,0.8,1.0,1.2,1.6,1.8,2.1,2.4],[10,15,17,19,21,23,24,25,26,27,28,31,34,37,40,45,50,60,70,100,1000],(40,70,110) (wt)*((m_vis>50&&m_vis<150&&pt_1>28&&abs(eta_1)<2.1&&iso_1<0.15&&id_tag_1&&trg_tag_1&&os)*(1&&id_probe_1))*(os)*(1)*(!(trg_probe_2)) ROOT.TH1.SetDefaultSumw2(True) @@ -1093,7 +1096,9 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent ana.nodes.AddNode(ListNode(nodename)) ana.remaps = {} - if options.channel =='tpzmm': ana.remaps['SingleMuon'] = 'data_obs' + if options.channel =='tpzmm': + ana.remaps['SingleMuon'] = 'data_obs' + #ana.remaps['Muon'] = 'data_obs' elif options.channel == 'tpzee': if options.era in ['UL_18']: ana.remaps['EGamma'] = 'data_obs' else: ana.remaps['SingleElectron'] = 'data_obs' @@ -1104,7 +1109,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent # Add all MC background files for sample_name in ztt_samples: - ana.AddSamples(options.folder+'/'+sample_name+'_'+options.channel+'*.root', options.tree_name, None, sample_name) + ana.AddSamples(options.folder+'/'+sample_name+'_'+options.channel+'*.root', options.tree_name, None, sample_name) if options.embedded: # Add all embedded files From c536d79b152b1bb3520ff2dbfa7c0a969e42edf9 Mon Sep 17 00:00:00 2001 From: Endre Date: Mon, 7 Aug 2023 10:50:43 +0100 Subject: [PATCH 32/50] Update HTT src --- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 137 +++++++++++++++++++- Analysis/HiggsTauTauRun2/test/HTT.cpp | 4 +- 2 files changed, 136 insertions(+), 5 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index f506a49ea..693cb18eb 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -383,7 +383,7 @@ void HTTSequence::BuildSequence(){ if ((era_type == era::data_2018 || era_type == era::data_2018UL)) data_json = "input/json/Cert_314472-325175_13TeV_Legacy2018_Collisions18_JSON.txt"; if ((era_type == era::data_2022_preEE || era_type == era::data_2022_postEE)) - data_json = "input/json/Cert_Collisions2022_355100_362760_Golden.json"; + data_json = "input/json/Cert_Collisions2022_355100_362760_Golden_lumicorr.json"; //359571 and 359661 removed https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun3 if(js["get_effective"].asBool() && js["make_sync_ntuple"].asBool()){ std::cerr<< "Error: cannot run effective number of event module in make_syncntuple mode"< muon_probe_id; - if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL - || era_type == era::data_2022_preEE || era_type == era::data_2022_postEE){ + if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL){ muon_probe_id = [](Muon const* m) {return MuonMedium(m); }; std::function MuonLooseID = [](Muon const* m) { return MuonLoose(m) && m->is_global(); }; @@ -1531,6 +1530,138 @@ for (unsigned i=0; i MuonLooseID = [](Muon const* m) { return MuonLoose(m) && m->is_global(); }; + // low pT mu leg of e+mu trigger + BuildModule(TagAndProbe("TagAndProbe_EMLow") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(muon_probe_id) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsMu17Mu8") + .set_probe_trg_filters("hltDiMuon178RelTrkIsoFiltered0p4") + .set_extra_hlt_probe_pt(8.) + .set_extra_l1_probe_pt(5.) + .set_add_name("_em_low") + ); + // high pT mu leg of e+mu trigger + BuildModule(TagAndProbe("TagAndProbe_EMHigh") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(muon_probe_id) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsMu17Mu8") + .set_probe_trg_filters("hltDiMuon178RelTrkIsoFiltered0p4") + .set_extra_hlt_probe_pt(23.) + .set_extra_l1_probe_pt(20.) + .set_add_name("_em_high") + ); + // mu leg of mu+tau cross trigger for runs C-F + BuildModule(TagAndProbe("TagAndProbe_MT_CtoF") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(muon_probe_id) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsDoubleMu20") + .set_probe_trg_filters("hltL3crIsoL1sDoubleMu18erL1f0L2f10QL3f20QL3trkIsoFiltered0p07") + .set_add_name("_mt_c_to_f") + ); + // mu leg of mu+tau cross trigger for run B + BuildModule(TagAndProbe("TagAndProbe_MT_B") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(muon_probe_id) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsIsoMu20Tau27") + .set_probe_trg_filters("hltL3crIsoL1sMu18erTau24erIorMu20erTau24erL1f0L2f10QL3f20QL3trkIsoFiltered0p07") + .set_do_extra(true) + .set_add_name("_mt_b") + ); + // single muons trigger measurment + BuildModule(TagAndProbe("TagAndProbe_single") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered") + .set_probe_id(muon_probe_id) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsIsoMu24,triggerObjectsIsoMu24") + .set_probe_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered,hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered") + ); + // low pT leg of dimuon trigger used for embedded selection + BuildModule(TagAndProbe("TagAndProbe_DiMuLow") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(MuonLooseID) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsIsoMu24,triggerObjectsIsoMu24") + .set_probe_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07,hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_add_name("_dimu_low") + .set_probe_trg_objects("triggerObjectsMu17Mu8DZ,triggerObjectsMu17Mu8DZmass8,triggerObjectsMu17Mu8") + .set_probe_trg_filters("hltDiMuon178RelTrkIsoFiltered0p4,hltDiMuon178RelTrkIsoFiltered0p4,hltDiMuon178RelTrkIsoFiltered0p4") + .set_extra_hlt_probe_pt(8.) + + ); + // high pT leg of dimuon trigger used for embedded selection + BuildModule(TagAndProbe("TagAndProbe_DiMuhigh") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(MuonLooseID) + .set_tag_id(muon_probe_id) + .set_probe_trg_objects("triggerObjectsIsoMu24,triggerObjectsIsoMu24") + .set_probe_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07,hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_add_name("_dimu_high") + .set_probe_trg_objects("triggerObjectsMu17Mu8DZ,triggerObjectsMu17Mu8DZmass8") + .set_probe_trg_filters("hltDiMuon178RelTrkIsoFiltered0p4,hltDiMuon178RelTrkIsoFiltered0p4") + .set_extra_hlt_probe_pt(17.) + ); + // use to measure DZ filter efficiency for embedded selection selection + BuildModule(TagAndProbe("TagAndProbe_DiMuDZ") + .set_fs(fs.get()) + .set_channel(channel) + .set_strategy(strategy_type) + .set_ditau_label("ditau") + .set_tag_trg_objects("triggerObjectsIsoMu24") + .set_tag_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_probe_id(MuonLooseID) + .set_tag_id(MuonLooseID) + .set_probe_trg_objects("triggerObjectsIsoMu24,triggerObjectsIsoMu24") + .set_probe_trg_filters("hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07,hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07") + .set_add_name("_dimu_dz") + .set_probe_trg_objects("triggerObjectsMu17Mu8DZ,triggerObjectsMu17Mu8DZmass8,triggerObjectsMu17Mu8") + .set_probe_trg_filters("hltDiMuon178RelTrkIsoFiltered0p4,hltDiMuon178RelTrkIsoFiltered0p4,hltDiMuon178RelTrkIsoFiltered0p4") + .set_extra_hlt_probe_pt(8.) + .set_do_dzmass(true) + ); + } else { muon_probe_id = [](Muon const* m) {return MuonMedium(m); }; std::function MuonLooseID = [](Muon const* m) { return MuonLoose(m) && m->is_global(); }; diff --git a/Analysis/HiggsTauTauRun2/test/HTT.cpp b/Analysis/HiggsTauTauRun2/test/HTT.cpp index a6315804b..1debda258 100644 --- a/Analysis/HiggsTauTauRun2/test/HTT.cpp +++ b/Analysis/HiggsTauTauRun2/test/HTT.cpp @@ -132,9 +132,9 @@ int main(int argc, char* argv[]) { (channel_str.find("tt") != channel_str.npos && output_name.find("Tau") == output_name.npos) || (channel_str.find("zmm") != channel_str.npos && - output_name.find("SingleMuon") == output_name.npos ) || + output_name.find("Muon") == output_name.npos ) || (channel_str.find("tpzmm") != channel_str.npos && - output_name.find("SingleMuon") == output_name.npos ) || + output_name.find("Muon") == output_name.npos ) || (channel_str.find("zee") != channel_str.npos && !(output_name.find("SingleEle") != output_name.npos || output_name.find("EGamma") != output_name.npos )) || From 51ba76ca710889c8f7260a10f18a5cc96653c0d6 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 8 Aug 2023 10:06:11 +0100 Subject: [PATCH 33/50] Update files for creating 2022 scale factors --- .../scripts/create_ntrueindist.py | 18 ++++----- .../scripts/hadd_22_preEE_output.py | 14 +++++++ Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 39 ++++++++++--------- python/plotting.py | 5 ++- test/get_filelists.sh | 2 +- 5 files changed, 47 insertions(+), 31 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/create_ntrueindist.py b/Analysis/HiggsTauTauRun2/scripts/create_ntrueindist.py index 31a16049c..b5e27fe56 100644 --- a/Analysis/HiggsTauTauRun2/scripts/create_ntrueindist.py +++ b/Analysis/HiggsTauTauRun2/scripts/create_ntrueindist.py @@ -12,15 +12,14 @@ def load_files(filelist): file_names = [os.path.splitext(os.path.basename(file))[0] for file in files] return file_names -year = "2016" -split = "post" -files = ["DYJetsToLL-LO"] -channels = ["mt"] +year = "2022" +files = ["DYJetsToLL-LO_postEE_postEE"] +channels = ["tt"] for file_ in files: for path in glob.glob(sys.argv[1]): - print path - hist = ROOT.TH1D("pileup", ";PileUp_nTrueInt", 99, 0., 99.) # for 2017UL + print(path) + hist = ROOT.TH1D("pileup", ";PileUp_nTrueInt", 100, 0., 100.) # for 2017UL chain = ROOT.TChain("gen_ntuple") for channel in channels: chain.AddFile("{}/{}_{}_{}.root".format(path,file_,channel,year)) @@ -30,9 +29,10 @@ def load_files(filelist): if not os.path.exists(os.path.join(path, "pileupDistribution")): os.makedirs(os.path.join(path, "pileupDistribution")) - if year == "2016" and split == "pre": new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_preVFP_{}.root".format(year,file_)), "RECREATE") - elif year == "2016" and split == "post": new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_postVFP_{}.root".format(year,file_)), "RECREATE") - else: new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_{}.root".format(year,file_)), "RECREATE") + # if year == "2016" and split == "pre": new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_preEE_{}.root".format(year,file_)), "RECREATE") + # elif year == "2016" and split == "post": new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_postEE_{}.root".format(year,file_)), "RECREATE") + # else: new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_{}.root".format(year,file_)), "RECREATE") + new_file = ROOT.TFile.Open(os.path.join(path, "pileupDistribution/pileup_{}_{}.root".format(year,file_)), "RECREATE") hist.SetDirectory(new_file) diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py index aa4a492ae..5d5bb5ae3 100755 --- a/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py @@ -55,6 +55,20 @@ def list_paths(path): 'TauF_postEE', 'TauG_postEE', + #Muon + + 'SingleMuonA_rereco_preEE', + 'SingleMuonB_rereco_preEE', + 'SingleMuonC_rereco_preEE', + 'SingleMuonA_preEE', + 'SingleMuonB_preEE', + 'SingleMuonC_preEE', + 'MuonD_rereco_preEE', + 'MuonD_preEE', + 'MuonC_preEE', + 'MuonC_rereco_preEE', + + #MC postEE 'DYJetsToLL-LO_postEE_postEE', diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index 693cb18eb..54cf46476 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -1395,7 +1395,7 @@ for (unsigned i=0; i muon_probe_id; if(era_type == era::data_2017 || era_type == era::data_2017UL || era_type == era::data_2018 || era_type == era::data_2018UL){ @@ -1531,7 +1531,8 @@ for (unsigned i=0; i MuonLooseID = [](Muon const* m) { return MuonLoose(m) && m->is_global(); }; // low pT mu leg of e+mu trigger @@ -1541,7 +1542,7 @@ for (unsigned i=0; i("TagAndProbe_DiMuLow") @@ -1615,11 +1616,11 @@ for (unsigned i=0; i Date: Tue, 22 Aug 2023 11:30:48 +0100 Subject: [PATCH 34/50] Tnp and Zpt update --- Analysis/HiggsTauTauRun2/scripts/TnP_SF.py | 97 +++++++++--------- .../scripts/hadd_22_postEE_output.py | 43 ++++---- .../scripts/hadd_22_preEE_output.py | 27 +++-- .../scripts/zpt_control_plots.py | 60 +++++++++++ .../HiggsTauTauRun2/scripts/zpt_plot_2022.cfg | 18 ++++ .../HiggsTauTauRun2/scripts/zpt_reweighting.C | 99 ++++--------------- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 53 ++++++---- .../HiggsTauTauRun2/src/HTTTriggerFilter.cc | 45 ++++++++- Analysis/HiggsTauTauRun2/src/HTTWeights.cc | 30 +++++- Analysis/HiggsTauTauRun2/test/HTT.cpp | 2 +- 10 files changed, 291 insertions(+), 183 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/scripts/zpt_control_plots.py create mode 100644 Analysis/HiggsTauTauRun2/scripts/zpt_plot_2022.cfg diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py b/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py index 2ec4a7514..4342f061e 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py @@ -2,6 +2,7 @@ import UserCode.ICHiggsTauTau.plotting as plotting import argparse import os +import ConfigParser ROOT.gROOT.SetBatch(ROOT.kTRUE) conf_parser = argparse.ArgumentParser( @@ -16,9 +17,9 @@ defaults = { "channel":"tpzmm" , "year":"2018", - "input_folder":"", - "embed": False, - "run_systs" : False, + "input_folder":"/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/TnP_Plots", + "embed":False, + "run_systs":False, } if options.cfg: @@ -29,9 +30,10 @@ parser = argparse.ArgumentParser( parents=[conf_parser] ) -parser.add_argument('--channel',type = str, help= 'Name of channel') +parser.set_defaults(**defaults) +parser.add_argument('--channel',dest="channel",type = str, help= 'Name of channel') parser.add_argument("--year", dest="year", type=str, help="Year input") -parser.add_argument("--input_folder", help = 'Name of the input folder') +parser.add_argument("--input_folder",dest="input_folder",type = str, help = 'Name of the input folder') parser.add_argument("--embed", dest="embed", action='store_true') parser.add_argument("--run_systs", dest="run_systs", action='store_true') options = parser.parse_args(remaining_argv) @@ -43,13 +45,15 @@ if channel == "tpzee": file_name = "electron" # Open the source and destination root files -f_nom = ROOT.TFile.Open("{}/{}/{}/{}_nom.root".format(input_folder,year,channel,file_name)) +f_nom = ROOT.TFile.Open("{}/{}_nom.root".format(input_folder,file_name,channel)) if options.run_systs: - f_sig = ROOT.TFile.Open("{}/{}/{}/{}_sig.root".format(input_folder,year,channel,file_name)) - f_bkg = ROOT.TFile.Open("{}/{}/{}/{}_bkg.root".format(input_folder,year,channel,file_name)) - f_tag = ROOT.TFile.Open("{}/{}/{}/{}_tightTag.root".format(input_folder,year,channel,file_name)) + f_sig = ROOT.TFile.Open("{}/{}_sig.root".format(input_folder,file_name,channel)) + f_bkg = ROOT.TFile.Open("{}/{}_bkg.root".format(input_folder,file_name,channel)) + f_tag = ROOT.TFile.Open("{}/{}_tightTag.root".format(input_folder,file_name,channel)) +if not f_nom or f_nom.IsZombie(): + print("Error opening file f_nom") -output_folder = "{}/{}/{}/correction/".format(input_folder,year,channel) +output_folder = "{}/correction/".format(input_folder) if not os.path.exists(output_folder): os.makedirs(output_folder) @@ -141,6 +145,13 @@ else: content_nom_data = h_nom_data.GetBinContent(xbin,ybin) content_nom_ZLL = 0 if num_only else h_nom_ZLL.GetBinContent(xbin,ybin) + error_data = stat_error_data + error = stat_error + error_mc = stat_error_ZLL + if content_nom_ZLL == 0: + ratio = 0 + else: + ratio = content_nom_data/content_nom_ZLL if options.embed: content_nom_EMB = h_nom_EMB.GetBinContent(xbin,ybin) if options.run_systs: @@ -221,7 +232,7 @@ f_tag.Close() destination_file.Close() -destination_file = ROOT.TFile.Open("{}/{}_SF.root".format(output_folder,file_name), "READ") +destination_file = ROOT.TFile.Open("{}/{}_SFs.root".format(output_folder,file_name), "READ") plots_folder = "{}/plots/".format(output_folder) @@ -231,37 +242,37 @@ types = ["id","iso","trg"] for name in types: - h_SF = destination_file.Get("ScaleFactor_{}".format(name)) - if not isinstance(h_SF, ROOT.TGraphAsymmErrors): continue - if options.embed: - h_SF_EMB = destination_file.Get("ScaleFactor_EMB_{}".format(name)) + h_SF = destination_file.Get("ScaleFactor_{}".format(name)) + #if not isinstance(h_SF, ROOT.TGraphAsymmErrors): continue + if options.embed: + h_SF_EMB = destination_file.Get("ScaleFactor_EMB_{}".format(name)) - for j in range(1, h_SF.GetNbinsY()+1): - histo1 = ROOT.TH1D('ScaleFactor_{}_1D'.format(name), '', h_SF.GetNbinsX(), h_SF.GetXaxis().GetXbins().GetArray()) - if options.embed: - histo2 = ROOT.TH1D('ScaleFactor_EMB_{}_1D'.format(name), '', h_SF_EMB.GetNbinsX(), h_SF_EMB.GetXaxis().GetXbins().GetArray()) - bin_contents = [] - bin_contents_emb = [] - for i in range(1, h_SF.GetNbinsX()+1): - bin_content = h_SF.GetBinContent(i,j) - if bin_content!=0: bin_contents.append(bin_content) - bin_error = h_SF.GetBinError(i,j) - histo1.SetBinContent(i,bin_content) - histo1.SetBinError(i, bin_error) - if options.embed: - bin_content_emb = h_SF_EMB.GetBinContent(i,j) - if bin_content_emb!=0: bin_contents_emb.append(bin_content) - bin_error_emb = h_SF_EMB.GetBinError(i,j) - histo2.SetBinContent(i,bin_content_emb) - histo2.SetBinError(i, bin_error_emb) + for j in range(1, h_SF.GetNbinsY()+1): + histo1 = ROOT.TH1D('ScaleFactor_{}_1D'.format(name), '', h_SF.GetNbinsX(), h_SF.GetXaxis().GetXbins().GetArray()) + if options.embed: + histo2 = ROOT.TH1D('ScaleFactor_EMB_{}_1D'.format(name), '', h_SF_EMB.GetNbinsX(), h_SF_EMB.GetXaxis().GetXbins().GetArray()) + bin_contents = [] + bin_contents_emb = [] + for i in range(1, h_SF.GetNbinsX()+1): + bin_content = h_SF.GetBinContent(i,j) + if bin_content!=0: bin_contents.append(bin_content) + bin_error = h_SF.GetBinError(i,j) + histo1.SetBinContent(i,bin_content) + histo1.SetBinError(i, bin_error) + if options.embed: + bin_content_emb = h_SF_EMB.GetBinContent(i,j) + if bin_content_emb!=0: bin_contents_emb.append(bin_content) + bin_error_emb = h_SF_EMB.GetBinError(i,j) + histo2.SetBinContent(i,bin_content_emb) + histo2.SetBinError(i, bin_error_emb) - # Set the titles and axis labels for the new histograms - if name == "id": histo1.SetTitle('ID Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) - if name == "iso": histo1.SetTitle('Isolation Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) - if name == "trg": histo1.SetTitle('Trigger Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) - histo1.GetXaxis().SetTitle('pT [GeV]') - histo1.GetYaxis().SetTitle('Correction') - if i == h_SF.GetNbinsX(): + # Set the titles and axis labels for the new histograms + if name == "id": histo1.SetTitle('ID Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) + if name == "iso": histo1.SetTitle('Isolation Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) + if name == "trg": histo1.SetTitle('Trigger Scale Factor {} < |#eta| < {}'.format(h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) + histo1.GetXaxis().SetTitle('pT [GeV]') + histo1.GetYaxis().SetTitle('Correction') + if i == h_SF.GetNbinsX(): # Draw the new histograms canvas = ROOT.TCanvas('canvas', 'canvas', 800, 600) histo1.GetYaxis().SetRangeUser(0.9*min(bin_contents+bin_contents_emb),1.1*histo1.GetMaximum()) @@ -273,10 +284,6 @@ histo2.Draw('same') canvas.SaveAs("{}/{}_SF_{}_{}_{}.pdf".format(plots_folder,file_name,name,h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) canvas.Update() - del canvas - del histo1 - if options.embed: del histo2 - del h_SF - if options.embed: del h_SF_EMB + canvas.Close() diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py index 1d2e99446..e5d299907 100755 --- a/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py @@ -56,27 +56,28 @@ def list_paths(path): 'TauG_postEE', #MC postEE - - 'DYJetsToLL-LO_postEE_postEE', - 'GluGluHToTauTau_M125_postEE_v2_postEE', - 'GluGluHToTauTau_M125_postEE_v3_postEE', - 'TTTo2L2Nu_postEE', - 'VBFHToTauTau_M125_Poisson60KeepRAW_postEE', - 'VBFHToTauTau_M125_v2_Poisson70KeepRAW_postEE', - 'WW_postEE_postEE', - 'WZ_postEE_postEE', - 'ZZ_postEE_postEE', - - #MC preEE - - 'DYJetsToLL-LO_summer', - 'GluGluHToTauTau_M125', - 'TTTo2L2Nu', - 'VBFHToTauTau_M125', - 'WW', - 'WZ', - 'ZZ', - 'ZZZ' + + 'DYJetsToLL-LO_postEE', + 'DYto2TautoMuTauh_M50_postEE', + 'GluGluHToTauTau_M125_v2_postEE', + 'GluGluHToTauTau_M125_v3_postEE', + 'TBbarQ_t-channel_4FS_postEE', + 'TTTo2L2Nu_postEE', + 'TTto4Q_postEE', + 'TTtoLNu2Q_postEE', + 'TWminusto2L2Nu_postEE', + 'TWminustoLNu2Q_postEE', + 'TbarBQ_t-channel_4FS_postEE', + 'TbarWplusto2L2Nu_postEE', + 'TbarWplustoLNu2Q_postEE', + 'VBFHToTauTau_M125_Poisson60KeepRAW_postEE', + 'VBFHToTauTau_M125_v2_Poisson70KeepRAW_postEE', + 'W1JetsToLNu-LO_postEE', + 'W2JetsToLNu-LO_postEE', + 'WJetsToLNu-LO_postEE', + 'WW_postEE', + 'WZ_postEE', + 'ZZ_postEE', ] diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py index 5d5bb5ae3..0251bf85d 100755 --- a/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_preEE_output.py @@ -83,14 +83,25 @@ def list_paths(path): #MC preEE - 'DYJetsToLL-LO_summer_preEE', - 'GluGluHToTauTau_M125_preEE', - 'TTTo2L2Nu_preEE', - 'VBFHToTauTau_M125_preEE', - 'WW_preEE', - 'WZ_preEE', - 'ZZ_preEE', - 'ZZZ_preEE' + 'DYJetsToLL-LO_summer_preEE', + 'DYto2TautoMuTauh_M50_preEE', + 'GluGluHToTauTau_M125_preEE', + 'TBbarQ_t-channel_4FS_preEE', + 'TTTo2L2Nu_preEE', + 'TTto4Q_preEE', + 'TTtoLNu2Q_preEE', + 'TWminusto2L2Nu_preEE', + 'TWminustoLNu2Q_preEE', + 'TbarBQ_t-channel_4FS_preEE', + 'TbarWplusto2L2Nu_preEE', + 'TbarWplustoLNu2Q_preEE', + 'VBFHToTauTau_M125_preEE', + 'W3JetsToLNu-LO_preEE', + 'WJetsToLNu-LO_preEE', + 'WW_preEE', + 'WZ_preEE', + 'ZZ_preEE', + 'ZZZ_preEE', ] diff --git a/Analysis/HiggsTauTauRun2/scripts/zpt_control_plots.py b/Analysis/HiggsTauTauRun2/scripts/zpt_control_plots.py new file mode 100644 index 000000000..f097b3324 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/zpt_control_plots.py @@ -0,0 +1,60 @@ +import os +import json +import numpy as np + +DO_ZPT_CONTROL = False +DO_CONTROL = True + +DO_SS = False + +if DO_ZPT_CONTROL or DO_CONTROL: + variables = [ + 'pt_tt[0,10,20,30,40,60,80,100,120,160,200,280,320,400,600]', + 'm_vis(20,0,200)', + 'eta_1(30,-3,3)', + 'eta_2(30,-3,3)', + 'n_jets(4,0,4)', + 'pt_1(20,0,200)', + 'pt_2(20,0,200)', + 'mt_1(30,0,300)', + 'mt_2(30,0,300)' +] +else: + variables = [ + 'pt_tt[0,10,20,30,40,60,80,100,120,160,200,280,320,400,600]', + ] +first_column = np.concatenate((np.arange(50, 91,10),np.arange(100, 181,20),[200,300,400,600,800]),axis=None) +second_column = np.concatenate((np.arange(60, 101,10),np.arange(120, 201,20),[300,400,600,800,"inf"]),axis=None) +if DO_ZPT_CONTROL or DO_CONTROL: + mass_selections = [None] +else: + mass_selections = np.column_stack([first_column, second_column]) + + + +for v in variables: + v_tt = v + for sel in mass_selections: + extra=' --ratio_range=\"0.6,1.4\" ' + extra += ' --v2p5' + #Factor out wt_dysoup if it is wrongly not 1 + #extra+=' --add_wt="1/wt_dysoup"' + if DO_ZPT_CONTROL: + extra+= ' --folder="/vols/cms/eb921/output/output_zmm_Zpt_2022/"' + extra+= ' --extra_name=mvis50_Zpt' + extra+= ' --sel="(m_vis>50)"' + else: + extra+= ' --folder="/vols/cms/eb921/output/output_zmm_2022/"' + if DO_CONTROL: + extra+= ' --extra_name=mvis50' + extra+= ' --sel="(m_vis>50)"' + else: + extra+= ' --extra_name=mvis%sto%s'%(sel[0],sel[1]) + if sel[1] == "inf": + extra += ' --sel="(m_vis>%s)"'%(sel[0]) + else: + extra += ' --sel="(m_vis>%s && m_vis<%s)"'%(sel[0], sel[1]) + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --cfg scripts/zpt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) + if DO_SS: + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --do_ss --cfg scripts/zpt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) + \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/zpt_plot_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/zpt_plot_2022.cfg new file mode 100644 index 000000000..c78665d9f --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/zpt_plot_2022.cfg @@ -0,0 +1,18 @@ +[Defaults] +analysis=mssmrun2 +paramfile=scripts/params_2022.json +era=22 +sm_masses="" +draw_signal_mass="" +year=2022 +norm_bins=True +ratio=True +lumi=7.4 fb^{-1} (13.6 TeV) +vbf_background=False +wp=medium +channel=zmm +method=8 +outputfolder=zpt_plots +#scheme=noEWKZ +#v2p5=True +#qcd_os_ss_ratio=1 \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/zpt_reweighting.C b/Analysis/HiggsTauTauRun2/scripts/zpt_reweighting.C index 932df3d3f..b236105ac 100644 --- a/Analysis/HiggsTauTauRun2/scripts/zpt_reweighting.C +++ b/Analysis/HiggsTauTauRun2/scripts/zpt_reweighting.C @@ -1,5 +1,6 @@ -void zpt_reweighting(std::string outfile="zpt_reweighting_LO.root"){ +void zpt_reweighting(){ // initialising binning + std::string outfile="/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/zpt_reweighting_LO.root"; double x_bins[17] = {0,50,60,70,80,90,100,120,140,160,180,200,300,400,600,800,1000}; double y_bins[15] = {0,10,20,30,40,60,80,100,120,160,200,280,320,400,600}; int n_xbins = 16; @@ -7,66 +8,21 @@ void zpt_reweighting(std::string outfile="zpt_reweighting_LO.root"){ TFile *fout = new TFile(outfile.c_str(),"RECREATE"); // datacards (var pt_tt with mvis cuts) std::vector file_names = { - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis50to60.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis60to70.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis70to80.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis80to90.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis90to100.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis100to120.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis120to140.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis140to160.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis160to180.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis180to200.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis200to300.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis300to400.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis400to600.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis600to800.root", - "input/zpt/LO/2018/zmm/datacard_pt_tt_inclusive_zmm_2018_mvis800toinf.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis50to60.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis60to70.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis70to80.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis80to90.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis90to100.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis100to120.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis120to140.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis140to160.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis160to180.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis180to200.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis200to300.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis300to400.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis400to600.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis600to800.root", - "input/zpt/LO/2017/zmm/datacard_pt_tt_inclusive_zmm_2017_mvis800toinf.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis50to60.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis60to70.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis70to80.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis80to90.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis90to100.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis100to120.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis120to140.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis140to160.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis160to180.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis180to200.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis200to300.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis300to400.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis400to600.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis600to800.root", - "input/zpt/LO/2016_postVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis800toinf.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis50to60.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis60to70.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis70to80.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis80to90.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis90to100.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis100to120.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis120to140.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis140to160.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis160to180.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis180to200.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis200to300.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis300to400.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis400to600.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis600to800.root", - "input/zpt/LO/2016_preVFP/zmm/datacard_pt_tt_inclusive_zmm_2016_mvis800toinf.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis50to60_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis60to70_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis70to80_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis80to90_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis90to100_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis100to120_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis120to140_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis140to160_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis160to180_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis180to200_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis200to300_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis300to400_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis400to600_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis600to800_zmm_2022.root", + "/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/zpt_plots/datacard_pt_tt_inclusive_mvis800toinf_zmm_2022.root" }; std::vector data_hist_vector; @@ -154,18 +110,8 @@ void zpt_reweighting(std::string outfile="zpt_reweighting_LO.root"){ unsigned x_bin = i+1; TH1D *h = data_hist_vector[i]; if (i != 0) { - TH1D *h_2 = data_hist_vector[15+i]; - TH1D *h_3 = data_hist_vector[30+i]; - TH1D *h_4 = data_hist_vector[45+i]; h->SetDirectory(0); - h_2->SetDirectory(0); - h_3->SetDirectory(0); - h_4->SetDirectory(0); - h->Add(h_2,1); - h->Add(h_3,1); - h->Add(h_4,1); } - for(unsigned j=0; jGetNbinsY(); ++j){ unsigned y_bin = j+1; double z_pt = h_data->GetYaxis()->GetBinCenter(y_bin); @@ -175,23 +121,14 @@ void zpt_reweighting(std::string outfile="zpt_reweighting_LO.root"){ if(x_bin==1){ content = 1; error = 0;} h_data->SetBinContent(x_bin,y_bin,content); h_data->SetBinError(x_bin,y_bin,error); - } + } } // filling mc TH2D for(unsigned i=0; iGetNbinsX(); ++i){ unsigned x_bin = i+1; TH1D *h = mc_hist_vector[i]; if (i != 0) { - TH1D *h_2 = mc_hist_vector[15+i]; - TH1D *h_3 = mc_hist_vector[30+i]; - TH1D *h_4 = mc_hist_vector[45+i]; h->SetDirectory(0); - h_2->SetDirectory(0); - h_3->SetDirectory(0); - h_4->SetDirectory(0); - h->Add(h_2,1); - h->Add(h_3,1); - h->Add(h_4,1); } for(unsigned j=0; jGetNbinsY(); ++j){ diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index 54cf46476..d06bbe888 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -466,10 +466,14 @@ if(!is_data && js["do_gen_analysis"].asBool()){ httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); } - if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { - httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive - httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); - } + if(era_type == era::data_2022_preEE ) { + httStitching.SetDYInputCrossSections(1.0,1.0,1.0,1.0,1.0); + httStitching.SetDYInputYields(27309719,0,0,0,0); + } + if(era_type == era::data_2022_postEE) { + httStitching.SetDYInputCrossSections(1.0,1.0,1.0,1.0,1.0); + httStitching.SetDYInputYields(96294972,0,0,0,0); + } } @@ -774,9 +778,9 @@ if(era_type == era::data_2018UL) { scalefactor_file_UL = "input/scale_factors/htt_scalefactors_UL_2018.root"; } if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { - scalefactor_file = "input/scale_factors/htt_scalefactors_legacy_2018.root"; + scalefactor_file = "input/scale_factors/htt_scalefactors_2022.root"; scalefactor_file_ggh = "input/ggh_weights/htt_scalefactors_2017_MGggh.root"; - scalefactor_file_UL = "input/scale_factors/htt_scalefactors_UL_2018.root"; + scalefactor_file_UL = ""; } @@ -792,7 +796,6 @@ HTTWeights httWeights = HTTWeights("HTTWeights") .set_era(era_type) .set_mc(mc_type) .set_do_tau_id_weights(!is_data) - .set_do_tau_id_sf(!is_data) .set_do_em_qcd_weights(true) .set_ditau_label("ditau") .set_jets_label(jets_label) @@ -807,11 +810,15 @@ httWeights.set_scalefactor_file_UL(scalefactor_file_UL); httWeights.set_is_embedded(is_embedded); if (!is_data ) { httWeights.set_do_trg_weights(true).set_trg_applied_in_mc(js["trg_in_mc"].asBool()).set_do_idiso_weights(true); - if(channel == channel::et || channel == channel::mt || channel==channel::tt) httWeights.set_do_etau_fakerate(true); - if(channel == channel::mt || channel == channel::et ||channel == channel::tt) httWeights.set_do_mtau_fakerate(true); - if((channel == channel::et || channel==channel::em || channel==channel::mt || channel==channel::zmm || channel==channel::zee)) httWeights.set_do_tracking_eff(true); + if(era_type != era::data_2022_preEE && era_type != era::data_2022_postEE){ + httWeights.set_do_tau_id_sf(true); + if(channel == channel::et || channel == channel::mt || channel==channel::tt) { + httWeights.set_do_etau_fakerate(true); + httWeights.set_do_mtau_fakerate(true); + } + if(channel == channel::et || channel==channel::em || channel==channel::mt || channel==channel::zmm || channel==channel::zee) httWeights.set_do_tracking_eff(true); + } } - if ((output_name.find("DY") != output_name.npos && output_name.find("JetsToLL-LO") != output_name.npos && !(output_name.find("JetsToLL-LO-10-50") != output_name.npos))){ httWeights.set_do_zpt_weight(true&&channel!=channel::tpzee&&channel!=channel::tpzmm&&channel!=channel::tpmt&&channel != channel::tpem); } @@ -873,10 +880,14 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetWInputCrossSections(1.0,0.1522,0.0515,0.0184,0.0103); httStitching.SetWInputYields(82360950, 47850048, 27411802, 18297679, 9130068); } - if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE){ - httStitching.SetWInputCrossSections(1.0,0.1522,0.0515,0.0184,0.0103); - httStitching.SetWInputYields(82360950, 47850048, 27411802, 18297679, 9130068); - } + if(era_type == era::data_2022_preEE){ + httStitching.SetWInputCrossSections(1.0,1.0,1.0,0.0156,1.0); + httStitching.SetWInputYields(87900584, 0, 0, 8214147, 0); + } + if(era_type == era::data_2022_postEE){ + httStitching.SetWInputCrossSections(1.0,0.1651,0.0528,1.0,1.0); + httStitching.SetWInputYields(348456687, 42838501, 36384428, 0, 0); + } } if ((output_name.find("DY") != output_name.npos && output_name.find("JetsToLL-LO") != output_name.npos && !(output_name.find("JetsToLL-LO-10-50") != output_name.npos))){ httStitching.set_do_dy_soup(true); @@ -908,10 +919,14 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); } - if(era_type == era::data_2022_preEE || era_type == era::data_2022_postEE) { - httStitching.SetDYInputCrossSections(1.0, 0.1641, 0.0571, 0.0208, 0.0118); //Target fractions are xs_n-jet/xs_inclusive - httStitching.SetDYInputYields(96055748+101373493, 60368985, 27494377, 20466041, 8885353); - } + if(era_type == era::data_2022_preEE ) { + httStitching.SetDYInputCrossSections(1.0,1.0,1.0,1.0,1.0); + httStitching.SetDYInputYields(27309719,0,0,0,0); + } + if(era_type == era::data_2022_postEE) { + httStitching.SetDYInputCrossSections(1.0,1.0,1.0,1.0,1.0); + httStitching.SetDYInputYields(96294972,0,0,0,0); + } } if ((output_name.find("DYJetsToLL-NLO") != output_name.npos || output_name.find("DYJetstoLL-NLO") != output_name.npos || output_name.find("DYJetsToLL_0J-NLO") != output_name.npos|| output_name.find("DYJetsToLL_1J-NLO") != output_name.npos || output_name.find("DYJetsToLL_2J-NLO") != output_name.npos )){ diff --git a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc index ac9fd73e7..b33627479 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTTriggerFilter.cc @@ -261,7 +261,7 @@ namespace ic { leg2_filter = "hltSelectedPFTau27LooseChargedIsolationAgainstMuonL1HLTMatched"; extra_leg2_filter = "hltOverlapFilterIsoMu20LooseChargedIsoPFTau27L1Seeded"; } - if (run >= 317509) { //2018 post hps + if (run >= 317509 && run < 355100) { //2018 post hps alt_trig_obj_label = "triggerObjectsIsoMu24"; alt_leg1_filter = "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07"; alt_trk_trig_obj_label = "triggerObjectsIsoMu27"; @@ -272,6 +272,20 @@ namespace ic { leg2_filter = "hltHpsSelectedPFTau27LooseChargedIsolationAgainstMuonL1HLTMatched"; extra_leg2_filter = "hltHpsOverlapFilterIsoMu20LooseChargedIsoPFTau27L1Seeded"; } + if (run >= 355100) { + alt_trig_obj_label = "triggerObjectsIsoMu24"; + alt_leg1_filter = (era_ == era::data_2022_postEE) ? + "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered" : "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p08"; + alt_trk_trig_obj_label = "triggerObjectsIsoMu24"; + alt_trk_leg1_filter = (era_ == era::data_2022_postEE) ? + "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered" : "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p08"; + high_leg_pt = 21.; + trig_obj_label = "triggerObjectsMu24LooseDeepTauHPS27"; //https://twiki.cern.ch/twiki/bin/view/CMS/TauTrigger + leg1_filter =(era_ == era::data_2022_postEE) ? + "hltL3crIsoBigORMu18erTauXXer2p1L1f0L2f10QL3f20QL3trkIsoFiltered" : "hltL3crIsoBigORMu18erTauXXer2p1L1f0L2f10QL3f20QL3trkIsoFiltered0p08"; + leg2_filter = "hltHpsSelectedPFTau27LooseMuTauWPDeepTauVsJetsAgainstMuonL1HLTMatched"; + extra_leg2_filter = "hltHpsOverlapFilterIsoMu20LooseMuTauWPDeepTauPFTau27L1Seeded"; + } // -------------------------- // Monitoring paths for checks if(run >= 271036 && run <= 284044){ @@ -439,11 +453,15 @@ namespace ic { singletau_trg_obj_alt_label = "triggerObjectsSingleTau140"; min_online_singletau_pt=0; // don't know what this would be at the moment so just keep as 0 for now singletau_leg1_alt_filter = "hltPFTau140TrackPt50LooseAbsOrRelVLooseIso"; - } else if(run >= 294927) { + } else if(run < 355100 && run >= 294927) { singletau_trg_obj_label = "triggerObjectsMediumChargedIsoPFTau180HighPtRelaxedIso"; min_online_singletau_pt=0; // don't know what this would be at the moment so just keep as 0 for now singletau_leg1_filter = "hltPFTau180TrackPt50LooseAbsOrRelMediumHighPtRelaxedIsoIso"; singletau_leg1_filter_2 = "hltSelectedPFTau180MediumChargedIsolationL1HLTMatched"; + } else if(run >= 355100) { + singletau_trg_obj_label = "triggerObjectsLooseDeepTauPFTauHPS180"; + singletau_leg1_filter = "hltSelectedPFTau180LooseSingleTauWPDeepTauL1HLTMatched"; + singletau_leg1_filter_2 = ""; } } } else { @@ -470,7 +488,11 @@ namespace ic { singletau_leg1_filter = "hltPFTau180TrackPt50LooseAbsOrRelMediumHighPtRelaxedIsoIso"; singletau_leg1_filter_2 = "hltSelectedPFTau180MediumChargedIsolationL1HLTMatched"; } - } + }else if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + singletau_trg_obj_label = "triggerObjectsLooseDeepTauPFTauHPS180"; + singletau_leg1_filter = "hltSelectedPFTau180LooseSingleTauWPDeepTauL1HLTMatched"; + singletau_leg1_filter_2 = ""; + } } if (channel_ == channel::et || channel_ == channel::zee || channel_ == channel::tpzee) { @@ -589,7 +611,7 @@ namespace ic { alt_monitoring_17_leg1_filter_2 = "hltL3crIsoL1sBigOrMuXXerIsoTauYYerL1f0L2f10QL3f24QL3trkIsoFiltered0p07"; alt_monitoring_17_leg2_filter_2 = "hltSelectedPFTau35TrackPt1TightChargedIsolationL1HLTMatchedReg"; - } else if (era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + } else if (era_ == era::data_2018 || era_ == era::data_2018UL) { alt_trig_obj_label = "triggerObjectsIsoMu24"; alt_leg1_filter = "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07"; alt_trk_trig_obj_label = "triggerObjectsIsoMu27"; @@ -611,6 +633,19 @@ namespace ic { monitoring_18_trig_obj_label = "triggerObjectsMu24MediumIsoTauHPS35"; monitoring_18_leg1_filter = "hltL3crIsoL1sBigOrMuXXerIsoTauYYerL1f0L2f10QL3f24QL3trkIsoFiltered0p07"; monitoring_18_leg2_filter = "hltHpsSelectedPFTau35TrackPt1MediumChargedIsolationL1HLTMatchedReg"; + } else if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + alt_trig_obj_label = "triggerObjectsIsoMu24"; + alt_leg1_filter = (era_ == era::data_2022_postEE) ? + "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered" : "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p08"; + alt_trk_trig_obj_label = "triggerObjectsIsoMu24"; + alt_trk_leg1_filter = (era_ == era::data_2022_postEE) ? + "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered" : "hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p08"; + trig_obj_label = "triggerObjectsMu24LooseDeepTauHPS27"; + leg1_filter =(era_ == era::data_2022_postEE) ? + "hltL3crIsoBigORMu18erTauXXer2p1L1f0L2f10QL3f20QL3trkIsoFiltered" : "hltL3crIsoBigORMu18erTauXXer2p1L1f0L2f10QL3f20QL3trkIsoFiltered0p08"; + leg2_filter = "hltHpsSelectedPFTau27LooseMuTauWPDeepTauVsJetsAgainstMuonL1HLTMatched"; + extra_leg2_filter = "hltHpsOverlapFilterIsoMu20LooseMuTauWPDeepTauPFTau27L1Seeded"; + high_leg_pt = 21.; } } else if (channel_ == channel::em) { @@ -740,7 +775,7 @@ namespace ic { leg1_match = (IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_objs, alt_leg1_filter, 0.5).first || IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_trk_objs, alt_trk_leg1_filter, 0.5).first) || (IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_er_objs, alt_er_leg1_filter, 0.5).first) || (IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_er_trk_objs, alt_er_trk_leg1_filter, 0.5).first); } else if((channel_==channel::mt || channel_==channel::zmm || channel_ == channel::tpzmm) - && (era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { + && (era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { std::vector alt_trk_objs = event->GetPtrVec(alt_trk_trig_obj_label); leg1_match = (IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_objs, alt_leg1_filter, 0.5).first || IsFilterMatchedWithIndex(dileptons[i]->At(0),alt_trk_objs, alt_trk_leg1_filter, 0.5).first); } diff --git a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc index c5bc4e83c..2272553ca 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc @@ -127,6 +127,8 @@ int HTTWeights::PreAnalysis() { w_ggh_ = std::shared_ptr((RooWorkspace*)gDirectory->Get("w"));; f_ggh.Close(); } + //This if statement excludes almost all scale factors in Run3 until they are created + if(era_ != era::data_2022_preEE && era_ != era::data_2022_postEE) { // tracking corrections for electrons and muons fns_["e_trk_ratio"] = std::shared_ptr( @@ -955,8 +957,22 @@ int HTTWeights::PreAnalysis() { fns_["ggH_mg_ue_down"] = std::shared_ptr( w_ggh_->function("ggH_mg_ue_down")->functor(w_ggh_->argSet("ngenjets"))); } + } + +// These are the factors that are also available in Run 3 + fns_["m_trg_binned_mc"] = std::shared_ptr( w_->function("m_trg_binned_ic_mc")->functor(w_->argSet("m_pt,m_eta,m_iso"))); + fns_["m_trg_binned_data"] = std::shared_ptr( + w_->function("m_trg_binned_ic_data")->functor(w_->argSet("m_pt,m_eta,m_iso"))); + fns_["m_idiso_ratio"] = std::shared_ptr( + w_->function("m_idiso_binned_ic_ratio")->functor(w_->argSet("m_pt,m_eta,m_iso"))); + fns_["m_id_ratio"] = std::shared_ptr( + w_->function("m_id_ic_ratio")->functor(w_->argSet("m_pt,m_eta"))); + fns_["zpt_weight_nom"] = std::shared_ptr( + w_->function("zptmass_weight_nom")->functor(w_->argSet("z_gen_pt,z_gen_mass"))); + + // UL Scale Factors - if(scalefactor_file_UL_!="" && (era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)){ + if(scalefactor_file_UL_!="" && (era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017UL || era_ == era::data_2018UL)){ @@ -2329,7 +2345,7 @@ int HTTWeights::Execute(TreeEvent *event) { double tau_trg_mvadm11_down=1; - if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + if(era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL) { if(e_pteval(args_1.data()); if(!is_embedded_) mu_trg_mc = fns_["m_trg_binned_mc"]->eval(args_1.data()); else mu_trg_mc = fns_["m_trg_binned_embed"]->eval(args_1.data()); - + if(era_ == era::data_2022_preEE || era_ == era::data_2022_postEE){ + if (trg_applied_in_mc_) { + mu_trg = mu_trg / mu_trg_mc; + } + weight *= mu_trg ; + event->Add("trigweight_1", mu_trg); + event->Add("trigweight_2", double(1.0)); + }else { double single_m_sf = mu_trg / mu_trg_mc; double t_dm = tau->decay_mode(); auto args_2 = std::vector{pt,m_signed_eta}; @@ -2668,6 +2691,7 @@ int HTTWeights::Execute(TreeEvent *event) { weight *= (mu_trg * tau_trg); event->Add("trigweight_1", mu_trg); event->Add("trigweight_2", tau_trg); + } } else if (channel_ == channel::em) { Electron const* elec = dynamic_cast(dilepton[0]->GetCandidate("lepton1")); Muon const* muon = dynamic_cast(dilepton[0]->GetCandidate("lepton2")); diff --git a/Analysis/HiggsTauTauRun2/test/HTT.cpp b/Analysis/HiggsTauTauRun2/test/HTT.cpp index 1debda258..24b085556 100644 --- a/Analysis/HiggsTauTauRun2/test/HTT.cpp +++ b/Analysis/HiggsTauTauRun2/test/HTT.cpp @@ -127,7 +127,7 @@ int main(int argc, char* argv[]) { if(is_data && ( (channel_str.find("em") != channel_str.npos && output_name.find("MuonEG")==output_name.npos && channel_str.find("tpem") == channel_str.npos)|| - (channel_str.find("mt") != channel_str.npos && !(output_name.find("SingleMuon") != output_name.npos || (output_name.find("Tau") != output_name.npos && do_singletau))) || + (channel_str.find("mt") != channel_str.npos && !(output_name.find("Muon") != output_name.npos || (output_name.find("Tau") != output_name.npos && do_singletau))) || (channel_str.find("et") != channel_str.npos && !(output_name.find("SingleEle") != output_name.npos || output_name.find("EGamma") != output_name.npos || (output_name.find("Tau") != output_name.npos && do_singletau))) || (channel_str.find("tt") != channel_str.npos && output_name.find("Tau") == output_name.npos) || From d4a6ebbbd4ec9a6e6d07d4c6f7c5c0bfc2ef46b9 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 22 Aug 2023 13:49:10 +0100 Subject: [PATCH 35/50] Add lumi, scale factor, filelists and pileup files --- .../Aug0223_2022_Data_preEE_filelists.tgz | Bin 0 -> 32334 bytes .../filelists/Aug1123_2022_filelists.tgz | Bin 0 -> 3276800 bytes .../input/json/2022_postEE_lumicorr.json | 240 ++++++++++ .../input/json/2022_preEE.json | 197 ++++++++ .../HiggsTauTauRun2/input/json/2022_runB.json | 21 + .../HiggsTauTauRun2/input/json/2022_runC.json | 128 ++++++ .../HiggsTauTauRun2/input/json/2022_runD.json | 52 +++ .../HiggsTauTauRun2/input/json/2022_runE.json | 86 ++++ .../input/json/2022_runE_lumicorr.json | 68 +++ .../HiggsTauTauRun2/input/json/2022_runF.json | 138 ++++++ .../HiggsTauTauRun2/input/json/2022_runG.json | 38 ++ ...ons2022_355100_362760_Golden_lumicorr.json | 435 ++++++++++++++++++ .../input/json/lumicorr_note.txt | 5 + ...leup_2022_DYJetsToLL-LO_postEE_postEE.root | Bin 0 -> 5225 bytes ...ileup_2022_DYJetsToLL-LO_summer_preEE.root | Bin 0 -> 5183 bytes .../input/pileup/2022/pu_2022_full.root | Bin 0 -> 4343 bytes .../input/pileup/2022/pu_2022_postEE.root | Bin 0 -> 4371 bytes .../input/pileup/2022/pu_2022_preEE.root | Bin 0 -> 4360 bytes .../scale_factors/htt_scalefactors_2022.root | Bin 0 -> 59007 bytes .../htt_scalefactors_2022_noZpt.root | Bin 0 -> 49939 bytes Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg | 8 + .../HiggsTauTauRun2/scripts/TnP_SF_2022.cfg | 4 + .../scripts/htt_2022_postEE.py | 28 +- .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 45 +- .../HiggsTauTauRun2/scripts/params_2022.json | 168 +++++++ 25 files changed, 1636 insertions(+), 25 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_preEE_filelists.tgz create mode 100644 Analysis/HiggsTauTauRun2/filelists/Aug1123_2022_filelists.tgz create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_postEE_lumicorr.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_preEE.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runB.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runC.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runD.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runE.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runE_lumicorr.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runF.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/2022_runG.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden_lumicorr.json create mode 100644 Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt create mode 100644 Analysis/HiggsTauTauRun2/input/pileup/2022/pileup_2022_DYJetsToLL-LO_postEE_postEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/pileup/2022/pileup_2022_DYJetsToLL-LO_summer_preEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/pileup/2022/pu_2022_full.root create mode 100644 Analysis/HiggsTauTauRun2/input/pileup/2022/pu_2022_postEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/pileup/2022/pu_2022_preEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022.root create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root create mode 100644 Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg create mode 100644 Analysis/HiggsTauTauRun2/scripts/TnP_SF_2022.cfg create mode 100644 Analysis/HiggsTauTauRun2/scripts/params_2022.json diff --git a/Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_preEE_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_preEE_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..df708f458060196483d9c7b1b5f379981e267387 GIT binary patch literal 32334 zcmeHw2{=`2+y6N^hXzBXG9{%VDkMW0i&6=@LMjiL+eX}WocivYxt@lNG$NgewqS)EVJF%e*UAqh! zd=DJ5*n4xbZbVDU2)B{+>|7r=X)eih+q|(O5ltFr5qBhoU>xzoW6lI@+vF}1VKm8w zREi-cjggYXiA0Rcytm6dwiGo!JUXS6G$YS+)SvtJb z5}Q$H*nq<1*1C*81*To4W6pDZAt(&V`mEg~8sC9l>`HJHSDPPBLQRMhv7Tej_^g8vA(etEy5{`uw!IDoRwoQ7oIFs-!B$`~Y-i0T_2{$pl3tUY! zS#zW z^ForiDhXZE~z>Sg5&Sr`492>Q8k!Wx0Cl+O9R4;BaH;us4e(e;) zu~+6fVNszD_;&QB=GOk2xuPhuPFus&jOr*evA0!GZrwG<%myBvuspL{XsB)@(g3BYaPv;@Ifk*0j^_+^&u8y()aKky^8n=6P7J z0ee>Kg+%Meqmnfvdj*8=RXsdi?+aq+ltvC7OJ?W8Z?zOY*YW9c2K!qRlwOCNd4_-c zOuZg^R@((EutM>S9H0>{2RS7Bi!8$$3w3t8<_qbV_iz10Mh~Eb@6}UxzjZq?x>rv4 zo_w_{^O?L(>h4sx%n=T&mJ6!Zj{}&Cv??`xOGHa$ANoRfCcv~yaU`b%N%geuG@fn z=067R8F!yDez$$AU~65cm}iOI3%=1&3%yXm?0PUZ=7yU+X?e}4=vAH*HS;beeFMV? zNfch{Rcl*+jYf*!o7vfuGjqFzjtFQr18Zt;AHH;OuM0KzKQSJ)7#M6V({aEp~y zaP-n}G6*t|++1c14^xX)GHo+8jga&_D{Oh~t)yqMlqPt(8m6p(&cH*&1!wPPG0#2W zK5SWVgcp~4j7Z>8fpt4i5i=pA@Xhk*2iAdr;dJ#W>2A}*ST3jqUzG9!loUn_k@|4G} z6vYuH%D0@g@%OLtzm0#PNcJXJuaPyO#=o*;D^Xc5ax>$rJLK_^uAJYX1WGBgcH^vR zRP9DSMpvo*HG01>`kZ>PO^>gJEMnlMzh2~aDuvXDEmR86U8VULy`=Wn>M2YgQCjoI zvh|go0B5kzeH}7UdMYXfNwUV8Q~Z3F0KDb9kMWfUd3=dZ)5E#E51w2R0`+F z5Ev#psTV24`063~W+yi?s)kc!{57Yj_%5x$S;r_>Mqnz=UwcZH?-DIl!x^&GuqEvQ z`Te63WbbND9p$^Ug{t9uSZ4G{_i)*X-#-kWvSr?wMAl`sH<$Wulk2$9R#gg!^l9Kh z5F_Kpj~lwIA`^yB1zd9NWT&t{zGGk~jjMU`6eE-B9P@KmiC*S=xnzDednc*Sbh?&> zh>m~faJvsV>)0tsr=`|CROFFAh56(uxjkj&WGC(RveWeTx z$Fm>K_DNzbO*r4nDLuS%rv5%F!}EmumC39JlkV9bPOZ6Llgz4;aPJalHe1rbhlJ-g zO#=@LK6Xl`&`DbhXi;o-eh*I!CAyxTp0Be}TSNS=Ai4ieFnXGtNfec+YzK^%H zNkGe-Y9C5cX_87Mai5Lxi0BRnJMI2U){%Q*tH&B(>6SCVt~kothcX$c$5L_dg{VZ= zAbEh4v~sB!OeIUaSrsHp+8#{^fNOnY$s28tJ`40FQe_=>&_0E2eUt-V7)q{zk0Unc z=?;{s2%9%OY=5`kW^@fynzl||VX-}<=M9DHS|7em-~R@NH!NS)`hB*Je#fkDeC|fu zS~$S^c1dxS%?k8GS^mtBS^wzsgoh?k17)_tyqympWb6l_bA|6TJ+yqYzjyFF)guFI zYvVGmUz&47X0Lqu)HD)#*H?t`P;WW29WS2TkKM*n$>N+1zl~NCbBonE>yBELDrPU6 zbKM<&wrMSAAz^c%lewd@-Ot~qx0m^(9i$vR%seP0{AQoZ*!d>mx|xTTdHdJEa-65? zIC?uq1GoXyFA>)`nwORC$1kHEwULyIG0oNV&d)@b(kD^$H8|^3_ z=elN+$MvbxeI5DeotLM>Z8uWs{lI2#k2YxsZ>KASn9FP_*1!PSeQTIidI5xs0|Y+5 z2|2A?T86PRCBkdrz)M5cp0F}o_PSQDx7Mt0!pBx zTlqTdvhGSuXk= zt^Vkl8^QqgCPMaDA-^0}`rtAZcJn5$cB|*sqKMYPCtjhBtchV|y^k2=*tka~gH^t! zWK51MG777uNivA3>G3tQ@-c#`@pgJWut8?|4c0R9%57m7lPJk~G{L2nyB2zX;zOt! zr`#>&;}X2Nk0`kh6mID#&3VMmZOOuIzwO5PD7q^H?mO)FxvQ>$decO$AK4Y%TID8S z7KM47@<@eSt7%Kij06sN@7&^rljzQSWcwl^*uBVM--PPE=03-l72LUMn zJbP0g$d(Iet36BMXek+~;1xL77V31pBu0zrEq6up6C?jwZHAD?#u52PZpo(}Z3xgd zl1}$ofQ-_wz(&?Xu+e}cWE2tx8x>B$M)t6gPc>|Ga2_@~2pfIwg^j{tBjqQsk>r>* zgF|*k94_^NXh&PK!}XGItT8t4$So93V2ooBjdDLA=|r>3%F6&krce zry8fi@f2s_coneGvliH>(jK1K4cJJ27&bD3jjG8Gy&Lq;cm2=8mi$s^f}7HsK8(EMaX4D3y5)Zgy0sYcI8f;%6^!r)=8>m0 zsn0T2s{ZdI8J@FAHfY@oro8OG&w%%gtjDYJt^EJH$QvzGub;LUYR}#X%DbwQ^nVbn zgMdzwPmAHL+19}SgG=jRt&#$mMm=MUYB>tM?|QJ=$#x~5RjDBm*G1)F=BDv2b2weZQ3rz{n2ojW zx54FU{op2EATmBhxt*;rvz*6-_dy6{4+2vGcRaV8(v-I_WMo%H`G6_!LdXLm+Y9sx zTpq3*hfGX_LI7CB!7w%C(`u7d*2{3@Q)YS5ZQf&{tDLXn2&A!!UCt6D4B4+_34>L7 z0OmxQ{E+!_>{TIQSUg~QY(e<}an}p)Il@v#s z9n-t{cfyg+Ma7Qh$0BZ4veQkK7n{i5e85kKue#%{KcLB&9q7Ro6SW?+KG&mpFPr{3 zm&YsbeM2j-V`Ele9+ys%cgwKmZ1&#+Thp87G_U6xw+(BzV4vK4HY!*CX8@{69guP_ z38~y>;L0rzuH4d_;L2?lsoYfIat}CO*9g>__kbR#HP0Zm=5yd8)`97=OTH1)Wng+i zLs=3C+GHx90PPXK_FaV)yw+cg>M`03!W+`5#z49HYnumdO1sU&2KdP^F3dS{>)iYF zE)~d6+c+0gMl*F*2N>UKhb!D;Sh&KahqSTA4}dnPa7%!;{|8urLOc`BAJPDYcn|C$ zp%r*YXoWo}j=~;9tl@Zjpm>5kDIY=;c=|ajvo>2K{Ro>>H*!EK>BB+4wTR>;L$s>>`&}^AZk~i zzx%wF#yV7w9NL7sD+hyFRaWP|!W zM#{@>`wV!_P1Q%R8PH#wlt4jSf!vlV|6rJzLX5zqf zb-*zys+gz(K0Yvk`Wp3RYW9gFLQUXXt3#82%>~wf|eH(|rcF?zPfC7w~xH1K{fx zdP9MdV4oD7RS*=342ISv!C@&nKPeJxnpf(@zXsPSDAzAD{{?JIM=(_Ag2WfCtoLhu zU*;~w?^4%15lBzX=Hcemr7kEzP444%x<|d{1U(-FJ2svSM6Kag4gU#jX7+KL?^PFr z?EC!x|AEaukKkE(P|xa57HqZRIm7&bpW;?k!8Hq>&$}P+v)`&Jzh=SvIdla^gjTY% zPnDNDn)614ju4l?DsDZf7fQ*a1Kh-TUEu^EK-CSn@FE)P$VC;^L(j`lXsbE&lG9VlQh?b z#}NA3)Ld{qHkfA_bN%Atn=!=kMbHp~#i8c{#+>hxO8P0VZ<-e3e4dF;PPuR$3`q*K(ryq%ui=5|bZDz@Z*GT*Qdi2{gqQ59K(Mit@AO7VGhS-8j@_h&M*O z(Ui-XbQcYgM2I8;(q&V#vXRaipLBdcm8Do_d&f>qTz~1E?x7onq~Ukyhp2wb%a=M+M03+)X#rmb+kwclADqd%?!lAPTUv!G-r-O z_Hk&~pn?b+Y<=IUIi)Us>Mnfs#|JpnZ4F@kiJ~SM(j>EN1|I4~RB6UFVLHRg7>=OL|5#p^V04UmF~AR4c?An#VgM#4ZT2yY&L1gU1#Mm`!1YxkE#6 zSd&P^uF5jRyKxGd`lywIca=Ed3wa(A;B^L^I}=U-UJ6kU!(&K zF+2fm8l5LS>@;YsCKb|*uUrmP*ul2b{lZy|Z*VAxH|~%O=Vt%=AEKZ0tbtczH>}IU z+N?7-ZhiB!$|Ve=J1f_Twlp*z+)5iWdpAy0!vGby2EIDXDev&1A)MzOyUggOHE@qr zxyg?v%Z~PkACi>NH$Vlq`p3*h$BC|mw zT+a13L!#}5^*)}953siCya0Q{5qj?s=b}A6=G|r zb@=iaWKE^&LsmmeiypJ%HV646C#oEGL^70`mP~}C%;~6SGYA@aSOsSd3D~3yS}8_% zPQ(iy7@Cn_{)7duDt%4V@s!x0>TR!BTAn=Dk-mKV<*T484Kf@CF+2F>?+0_7t%7Jj zp_sMQYRx$R^d-gB?6N)UOyc`L^F8NPmGj9&`m*55S0Ps#s`@u(m&ez0Q;v3$|m5qV3HO>0t8scB^Bv2z8e9t_cIGY>shQMnu^m^)PU!2YRx65Y_5?r`1XVN&&t;zp|-t?~(=lD{!L*k?gk zc!|KXL!7dhMsi{qdb>1*o{X)X*5`9#l#P(8{|;JC4GHn-pFi>-xyqiyT3 zh;CIsSLI9r-wtuAVwB`W{Uri`fQy-LFXr2(9=wr9_BS57$oeyX=!@ALt2)OXQ%+Ow zXsH=&4PVR;6!Ecy@ti*yf5{Fu4u_Que$m{$1=o7aB8o8-kv}e5Kt*-E+8NrSD32+VwawHlY8-<^6x6q8iqRbepWhz_Rb zN@z4JPw?wXy%DCYT16SqXz*E;iV7C8h@c`zt`Omah$=)-QNUwgNfieChDqdqz=91C zQi#w&geFn@UGO`llcdxeRjmn;F4y1aj4D1wLm9?bkQ`?cGM%CMDDDGPb#p?c6FjXb zJe;lh3_QEvhk^g2Nsqx5a8#J$AoZ@O%6Rtb#jO0#ee4Qs<17~-3 zpu*s|;aLvL%bQi6NYK5kSp~l~`m)>vCh{ICs*5`cfMfoHU(Rl_y}Uv7$scszV1SZ1 z?QJMfBkFfpe?j$0KHbZ)vx5$o*TS#;XXouMJF7m4p!+95yP0Qm(9%j{yz6k!r}GXu zaVK@Qg9QWmw6#HV<(TJ|CVD?6J?}*y`n#a`6N2Ys(xpijX`*Dg%b|IigQTe5^~e#i zCmo)t_)FF-AF+}xPKR=6v~f{?O4@w-Yo6B)_b(-5ACnX&BczG)pRQ35)Qe~0YorPuBA2yti^)DM-w_#S^6yVSCdKrkIp$5Ji6IEgG5v@QNyW#E zieZ&T&;$Mz9bF2@Y)TA*1 zb-0()P8@$59LoO_uj|M9?`E+%YSP4j$E26NE*$eefk_`-98-ikRiBb7hUj!hQx}S_ z=e%|{`^=S~7W!^I3Mw)`lHlqu2ddTHDgB@Lt4k2{?s@j<%N>!gOfD%19*Sq$(MWZF zi2SUT+kYTEsrH0GcaU_p+~x9Lg8we{>ED)T1pUTFDhVsMOC5U^1pgvb=-8_$c)pS9 zij~`c5?rU0{|lwL+EaqkL6Ty*i{j*e6m-)3hsyPJ%iiVk@h{el|7B76Z=*2w5u1~W zPaFYt-wI4{Am%(KC1RJEzg#~4gC+DoUWET+9)4csf(j)H3#wrvc!fpvy1dGn^&BFX zv~r8eF1Xa8{>p?$L6AP4iL#N(<3E~K1dX~(GL2L*L*(*SZgJTK3LWb4COrQMbUFB| z6Y#es;IBsH{|?A~kaV$}bY&9#gz!HNt6~{ zSm;6+Uo>@|8cjmuCvr?HlnGN2ef>>vV}m7VY`E?){Lb0ng|;t&5OLA_f%qaWf)v5< z!in?UY=l^)(nb7qED1YWFKDXkT-2}TLMZgbERI(RM&y%5`!kYJL>n|dL)`J{SpQ*{ zMS|AEF!!hJ5lJLxp^LdrX3uPKz1A6hPFz_k#l$x@sK|_jPEoVYM0?!V8SBOz?g!x7 z>2$8j40cP`XuOTuFJo7uVuzhNGJ*P0KE|=bC8L}`BoqU2Y3wi}5{f$Fas1uZJA-|2 zGhMKFhX^Y~@I!)X`aK#&osm#;Di1}Ok3ati||hAFej+3Zt-7sPhFkr4lkx0&xqlpvcS zsyM-cUFaaSOJkUKK#i&aZ!-uDyXP0+OuyzpnJg;fOq8Nr?MYYj+7$I7J4xqBqnyw_ z1okBI{2axB2z!zV8XiICjKO)0^&y5iONJ(SIf{DWo#>O$un*3(1Pn{{EQX8$zqPg` zog84z*NM);TJH>^nl$=-``1&?cb|Vk=4HP3@l~G{eH@P@Da;2>QTq_Mmk`)l zU_+Kvq<7P)CVtn>TylHQ?E}SIYHx!b4Fqz>h0l<=uk307Z*{=$@MRma$-$319~fH8 zuztT0!YZ8+%SEDYrzu#2HCrACZ?&UfHJz1ySOz0xw}WpxA^SNYJnMV0ZADrd}_u-0gWea?`sub6BRrztG=L zld(YvcJzjG}loc(B>L|`2&>+ZAP=eNqV#gO-h^p}S}btdjZCbZ0~n&n8C z$WIOB_MEo#QSwVviXPrMXn!_abuAp2M6;?Soo_l^H*?=IZ!PqrRQ#FY&OsrG!qp~v znXIIQjdq;bkCO(>-#o|lf{hFu`ioUnTTVVpk1T6Vd= zO;5>a0zaH~xU8eAYHeFkx|M3jQVu%eyVlJH&M`z*WO=YGktuc9V zbK&h^e*tKx0rR!+g?G(5Ho}vLxs+J#&kTXPdx=6zdT<`FiS6k5CLxLNhl#y@KiltM zBtoL3&2PdQ+V6n3-H+1dKp}JaZD=?9nyM9G2%cclb%ztbu&eO3=`%Jrev> zpzRVmBHH~_{ANTn+!1KSuwBLZ(t47vs663cB6t- z+ZPPnvH5O7{m*IL~F3Rho6sPzcS#p!+tH?CL#O1 ziQVLxaFK13atG|rGqTI?vF4~wY-$cMpZ(;W_arS%MEFV9(vC##B6h5(@G^h)$zCsP zpK)Xqa@LaI5L2vm$XbLP>QLEs0-OCPhpRVnpw)h#jY^pcoq3acyA^-~Sj=*?ZIMTM z6Ibc3hTAyP_{p^^FEzXK=6GnDer&<>gH1|QnbIS^P8P>crXLLn(9Wrz0>2WYb-JF8 zmr;8*D%J>5Gl24kC?i0Hi^IR3+TRcV`l}EAwGver{FAY`Dd;C-0@mXq2(XK)2-trCujf0wz=u5w%Um4f+iNyc#n;^<5X4b zm`l!ck$KD_7PwT*k4Pd|otz|2YPs0`Qj)2fkni%aQ+a{-D?01y(W{sld=fX*o&2=r zCV^;J1-g~h%mnDrr0g`%y&T|IRXm0c962h0N(+|5afkfsaJwrvtC_Od&3gd!;=bQ= z^AggN+-+}~Vi(MEGaR|R;skdE2aLi!z?pZEKIN|js8P2s$o~BXnBRK`G#TrHCgWeI z;GW-KHp2A#yLrWZ1%9uoBtqDQ2MbtHa){fc_(>bl6qPh)aNM_RDN?RdL@m z?u$;!a?3JxD$*y6LRyxwTuAG2zZcRkjBbVdg|T)B&3qe*1GOw0o52w?FPI=b&6P+` zGkG>}YzOs1AFpwMTb4iNA^~ENmgSsTq-B`~X<5duYFRcxBbs4M-%epHx5#RH{sZB>nmSeO0{SQx`^SnGH1Hp#l+Q9D0j+h;wM-Otb8b-_g zzRZhcKDDw)v43A_8NAXu?Qj3)SP%!&FRc~Bvj$!<)%kvi*5Si6<4k(}bTCgIn@rNC zdczNEpp;5epek)l)7?RS4SQJxUf|Mrd@->1d7_i7`6mCH9~As~=1&uH`V7Q9envAB{uaCso1Zwq!qKTl`rDA^HUf8;5!l8=l_eo*7ZCA zrt5P1EA+Ka`W%V%`^uLZD)p?s%$yM-hpHmhF#2Mf9zlt`%|68gJUA18KJx$%L%7$4LsY-~Jm z*I>H@f4qv%)2ou#8+p$1EBQ6v+(+-7G&CBKm6jJTpD)DPL8cQ^|HRke<2nAXFM=nd z_HfIK#dEMUexoig_csH2=npWDEtbbF@Y_r!;9mEc5WlrmC&#fhE6^InZxU$yEyUoCk8Nfp|K;NaF+u9} zGRgXE&3v>*!J7oCehbkNv#qV9;10fUw(ogPP-TORjse?oe*d80a+xZv7#&{u<3VvS z%^P3;(=lMeAYin<9pdi6MZq;bjp`m42)aG23cPeYV1&()&+5X<=TP0 znw>9cXJJ{%3_N!AtCe@AM*ZrjbxPq@-JGhq@X&v^z8FPWF{y+ds z7w7V!Rue3KK`~7-^@cHn{NOu8UySuuCtmiajlZDnxUXAt{a$0F1^Jj#64aQyP6p&0 ztI~k7tBSq36xF_pFR$cKGhd!gu*3+fq4yeVW5~9)oMFDkvT!5$s(24vyFW3|o zjJJ_1L@=5mS7y%n3yq=XaNlzzBBBxT3K6e?_#~55;s^I3_aTD(F?_{_2q{FwJcP*- zMD!to+!xVAgoihL6@!QpMD!to`~f_sa}O3Ch=@T%2_pIsA?1!}BEka^F^HITjYx9d zIS=}G-{yWKfL`Srs_sOfel+O{)a3F^DFx}4)Qqt561 zsrct3`G<12KVrTAGE8zN@99r?`ZqO7{4Grt{}f%&pS=_AxBhz@SMCmxM`fRWWwJG% z>3A87*tVgHpq*8klt%qxw>t9p$8 zLHO62M5Hkxb-0-6JPs$*zXAReI+}mhOo1om8yI^@lcC26T-~yWD5f6>l;Qfs`lL^@x{w`D<;G{Z;(z9!HE;XX;T?v zmC6Zirep#E;$q$-Zvsffp8bx7^F6c`pC?QEz21EFMbRl&ute~uKNEK>OwAy4;h*Jw z9qut7A80C>Cn>pLa4z%nkGat&NCDz#QibmnscCMZt!G?GZTBCG#>NqIW1mGudN5qQ zhvx5MDQUj@gCOo!4eUP()qIG#d|ub2`S&I_W=qMQm8st?viewaGDKjCBHjg8P~q~r6Tiv zlY%QIjNEx@=bXxgF9Dz4_v7Bv92E~3@1n&V6$|(c{MnQLzL3s#ZUYUAvmUMQrS5Ig z#E$OR;}i8kgbM|_zln@B>u$iys7GviedO{){q>1jFKzbZk@0%EXJPMCX{l&72t>VS z+tGaYc~_UA?HuEtd=F0=QXn%8%hj~^2D_MP)JhARCdRFZufKE^CekJE&WjF>3%Yq2a?7@yY`5^Zk;|^@Ziz4ceDxC`L$89BVAsiBA9_1wrA5t zkHfFk(OwjK_G$^)?-G${{zA*-sOg3>8uy|SoAAFwC6-daE?|2kX^xBkNIJbyN|R<{ z@xcA6o&JaO_fyLoza;y^i*5_I&W(lrn$g8l-d?-593{Uok`}0&@<}taSm2_|nImcR zIw=*J&x$#{FYgLD!gl>gD!taA&Ha# zyno$=KisEuB#K^QLTG_->-XY~_o;SBvRTVi1`hWe&m~#qTZ@tKxWz>ptA=|O{Vt`- zq&dPEI25ISV6m;b3)f6qqzM7f{$s(WVbd=Y9QGD&rAe6~Od?|1rY7Ta4S87wJ@Rv% za*xl|wdiC)}YQ?M#6pN~2TrC1HOn3lpLZAGn3_w+%g>d7Z2XPzt!Zkr;5LM5wKat=k|#rxY|Eb=X}U9Ntj@9l zA`@3gx_i*Nw#>fMMJpP?=_L)?ETkui;)`#=IXaEDnC^!bJ(bE5k$bsP*Fsn$1*^pW|EwYX@wE*bmYB3FjFH*m&qUt^Hk-e6& zJq?otXpybqi|K%zzIBM^t}glxxU+V9Mey!MAxvdtT`ftvZEf#A`N`g`cGiWT31e2r z*~4F8&$L}>m@VLe2-6DLX#CW6R=5YDHCi*De4ehqVsN8CdJBbqQd3>NY`Wc%nKoMC z->o-}P&RK%rrk?%N{o=6(88(nBG6b`tP;0T*?s;mglrGXTejpa3!>$}=WSLr3&c?1BYIHj_ue^^< zIiy$IRM}rvHl44fMoZYgN+zARrA&*-UslFCYqxlar%`)~acK;*vb9n3e8jvVhoCd5 zCuxG)nNZP$qM7c&kmlw|Dy`sOex=c*LfW~}kDjsEwx=|x){Mg};fbb7Vj`EJ;q6Wtk5QN& zDchXw)iphwh@eKqqzz1dw#nEo9_BmTIVw#s?cVf(>~24WFHQI!5fMx4@!v$S**04S zdquFBh)74oTSTM^ZW&CQ$SmwU8cmCvW4o8*KBo)NiR~DOII#s0zhRC<(+u@YJ7heP zYwx+{2n!KJ>_xv$KA4f53U0ibU@5qehFN4!XZvHbsmWp@9sH;xQa%^ zJwzBGq6QMX7v)$45g$tJuq&H3SOl~Jk9JUUAAu{qssRz1hzNzmZq;+_ zSTplH<@4;=iF4!FU3Fd#q1t1R*sTc(d_<5c>7wH(*yX5q3SEyOc?)z7y(B%XCgFXF zc>es(lUFfW%Fo{|Qs!n5COBLy@;XnEe)Cn66cDr}+(-rQ>!v4FRD00rM&J$4uLHgD z`JwlBRZIJqiJWKP)wz36vcQD`yvG_!;P+UZFZ5w_zOo;Fk44L2jnzxPT=)uJ>)^FI zlm)+5cUnT9aa8;O{0>p5gWnCh6Bk4~V6EWnELUer@J@_-jrdYQe0>1EBJQ#)TEo_y zqlk4I5*BRRU?){_IEb0*3cNNb*2Mo?G^LN1zM*aw>#kkl4%P3H|E0c@5{({ z59E30xj@ekYWcr?4E+PiUxqz?&j0aERN{DPjyqI@TUH}`^d>_ zX31aF^9l@H9p~QcyvCVKw=gS&QSEC>aCGo9O_~@znD00@`g?v}entRpcBoUez0J_U zLEkiKWYj$`FEM~7A}>CJZe}*PQ?*V!3+-T<=S28AcY`K*w>tkR;@syAM}EJyDS4|p z^LySu6o2vl1H78y^W z#z^3_Jd6vei8Ql_!qjnBjs1cjY;$%b;gr2HCW{v_5hT*Zq#zcYiwk%|h!wkpqq)N; zxjnd*2~-OtyVEJT zP(nAMOef~igcBr}r%CLdW0-u3IMbe)0M|FhSX7^KTYE%(MtYX`J5%F&B2#FWfG^2q z0iQ=YY&<5CwzOk! ztc1Sk+3tVIf~UG(d4$ zoO~hkv*$ap_|enMvyUhp&Ul0sCHvD`Z!eV7Y`#D#?4`k8E4B$f+%1N=r~#^6-ns=^ zZ>^`+96J3r_6+`jf^d1GocTNdo1+Jm7WcNEer>%qfw{) zX10C|j-89@2Om7}kwClZv)i>^2)BM58`irD#!-~ZrK*~;+aU+Oh4pH$hVx-e6LHb|TiV!tf8}nD@obp0tV#6Z#~_ ztP}e%Ri2_H?$$`nK5IQkf%{Y7T(pNtKEzz)Tr??g1RywlO|Kp~eNB1>J~j!4v8`J`hHH@F7j1~^S99<%bT*v63vzPX z00udBZV__r$PA8a!~Wh3Q)asFk<;Puzkws^z^QEQ{K-(T=PZ!YS)kM~0hNC@geFSh2AdX!wy)g;`Z zJOY8}TW5%$TVzrDIy`Y~CV`uVZ5$tg{fx;!)Nb+x?cPRrr;XV}Z3FZXna5ynJG7#~ z=i)bqoWfCM_Z;SFe>-)G#Z#Shvyj$tQ=1x8pA!n*cA7;AN3{q(E!4OUf;EMcb*Aap z4B>&O{IMQbn07`#%U(Mqd=V6{?!;0ZWIzZv#?N}?Vw(W%N%P$tUejUu885si5r1=VhQhVUK^8E(W~*ql+=v3Ra?4#cWD!a@oWT#zt8yMh6t13b`& zh);+}hlRFoot)d%p-fUHNOCrEqe_80UDXZ5RX6%qEXXbd57qA9@z+BxqG}v19T|MsCAV?p1K6$~ew2QjQwZ zVuTE+&&RzJ`{5)1vGAd+? z@=?pCNG#aP5*(%i@SJpXbo)9mB^87JeWANUCGKTA-hO%u{=Ls zS+((K($F)d8FqYpqHFL6@IS?-_wk16jr_?&jMuEFUT2eERUv!#z<|DyEB?Ad!YirE z#?OP#@aqks1oa*??26;KaxvQDJf2o>L&JtwrhQF!Ud^N0!eWGlJsGiY+w{}x4PtBM zyhF$ZM~#EqMg${MWG@DJ@Q!K)m%lXwyZzjXHoH*qNQe225Tn)GK}W(w80oQEjti-u z+eLlTB12>ZTh|1J#Bf~--#tc}2H*9w^EvZ#cyaiUT0(}4d_rE;u!fV1Nk>~B@uj^* z#4RRfd^r|##t3|a@V*7#G9mZDcZ*t+fMB+ZQ(OB0(aHpT>ony65|ck-Y-zB^m)W2{ z|AqXyGV&4dwKKG_MZL4i2Ylf$fxnrkjoYu)L$=R>DU9)jkFO_i3dZM>%lf2ZA3pN& zeYiyIEngy@!o~k$q7vRK*P3FGmCyiKO}G#9D^Ed z+R?lEJ-<5GKe#6N~6&!kP3o+{)YLBPb|jb=Sx-UI%tB^|`ZspgGMNq*c~| z7>RkLfiF%^y&lPv2(e)i@uH4K=0p7lGQW%+OWFDxw;LoQW1roY##oW5WoBqtytrin zO*^w+!}Ntbrlv%6E8^EAz8RU0fAP}v*^J=@%JjYkCzs*`Eh8>y$(5NlvLazTh&}c} z3v55p75m1ATDCThF?A{f{2h*vW#lN~Yg&~LHM5?u3x%=83rULBPikku-K%j;pAxJC zDxeeyE|u4J?jMVVW1f5(ZcTjE3g;o;nKl*h8B)3%YVU6quQo2{jG1q{4QD6!az0F)J_A~nUWh(yzD(bWeFp`msagu$XG2_Q zM*;&HRkuw0=7EhOfctmgfm@C`0;0~o2DcV=Z-KaPkhJ8i8Y67Vg>#IpBYeUXgSj?r zGmn2YMu-ECsvOm9T*QdNWz76>TaX6hi2Odse(p9XlBFf*-7!Mel9K6w!bZ%zJftL4 z8$Q$|?9u^6cXNUkp&U^HcLlg}&YM!2K-K_K<1|H*1T=06(0nbP;RN};*;5%a;0n4S zFY~H=9*TbUq<$MF{skl+MP}SzJr7bCIMp^k^@jr!bVC;H`%TH=XZU1ek`3|E7i3)k zowQ|{Mjd<|h8D?0Ru>8^7PPVulh%=$Wly z(4x$mtt?8@0r+zlx}Z1zDIyTblJhQ$1IZRz{+%C@TPJoSe=3#((c~Nwc1bcv96Wa( z`7i+8KL2OPT*1SIwg5Ho(!XFR0f_B_#*>70ukj)LBNwSTDkIMurvU=MvKM% zliY>RpIF+UEAW|!6$C+{yR`4q(#PhR1@f_B8HD_}S{v*^K~MCTZ$T5nS8@@bS*FDs z_YB4Hxx{OPO4G+~E{XfYEM6`2BVFuJag^u0Le7b&Tyjsn<-58SGEO`_DyQfzU)!ya zcH-#~YEhBcJH>ITW}Hf)@jGKRi{q}EaVmy#?u?Zvj*~MRC>2uVkUM){-ltpP`3c2C za=+h~cj{IMKcUDjSL`K;`4q=z7B3UJnKm}NDDH?^ymaXO?Xkf{aRWPVrNb!8Jf9ikZO(dGOo}CT9{IdC%{|CmNZ^i%s literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/filelists/Aug1123_2022_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/Aug1123_2022_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..50b610d5cc0e000ad994cdefa97915a8ab0cb8c7 GIT binary patch literal 3276800 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

^#E#Ag*n^{>=yqA|`fk5nn+qHr9SCk$=>oB% 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%0DVQB(D7uU&4Vrs~;V zyWB=ySHIjwO`B(X?Q$D6RnPX?O&-Pl@Ms2K(+Lq@=T^;*vd2ZCSd9>GV%X6cq>d{`i zEzgabsz-b6wmdg#svhmN8*8IB)<$j1bEB@0J!_-3<+)K)_3XEHd2ZBHJ^QU)o*Ok) z&wguJ8?`OZjk-QKtc}{1=SEG{qch}fd2ZBHJvu|)mgh!I)uS`yZFz3gb@i-`+E^R4 zEzgab4h}m*UY;8@RnPX?<+)K)^=z+Qo*Ok)&-Pl@Ms3S;qplAQYooU1xlvQ~Y_DCO z8#PtW_S)sSQB(D7uU(!SbzMDcqc+w?ZOe0`rh~)w+U2=XQ}t}GU7i~?RnPX?<+)K) z^=z+YZPd0rH|qM}ur_L2o*Ok)&-U8oxlvQ~Y_DCO8#PtW_S)sSQPg4r`;f<+)K)^=z+Qo*Ok) z&-U8oxlvQ~Y_DCO8+BbhYoj*SMs3S;qo#wy_S)sSQB(D7uU(!SHC4~{+U2=XQ}t-C zJqAaS0XN3lC}VAuEq|xp)u}xuVX?;^{ni?5qip#*^`>Kw_F7y1PQB~uSsP`njWX6o z8Ed1AwNb|AMj30PjLnTQ)%ZIrP#%2*p^tc@}@H_BKWWo&Mgu{O%s+$dvhl(D%{#@Z-j zZIrP#%2*p^Y;KgXHpZXKj?THp*EW<*bcz)ZXKj?T zHp*EW<*bcz)eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^ zs9eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X))Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_ zQN`M*Vr^8hHmX<~RjiFF)Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~ zRjiFF)Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~RjiFF)a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~id zjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8 z>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30G ztc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~id zjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8 z>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc@D1jT)?t8mx^P ztc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1 zjT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t z8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^P ztc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1 zjT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t z8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^P%Wagu{^FOXw=WOxpPnB5u-ryXo8LZr z|NQ*&yN8FD=P$qhV1Iag`0)1W^KbHT^LO>|^zGxj=fC{;^uwp`{`&IcPjC9`@87@q z?(zIzzcxP{Q*0g&M^ABx*T-t7%^SOUXEz`0=9Argv72w~<~zIjfo^`ejk^9?Ew@qA z=GkxUavL>O&wgu{+o-8}_FKE$MorbT-`eFi>bm;nHfq{D+iREGsHu9k*DkkFQ}t}G zU2dbM>e*hq+(u2+v%Pk?jk>OWxs94O&-U8oHfpM#?X}Bo)Kop&YnR)osd~28F1JzF z)i1YE)8^S;yWB=i)w8{Jxs95tXM62(8#PtW_S)q(YO0>?waabPb@j__)Ue*hq+(u2+v%Pk?jk>OWxs94O&-U8oHfpM#?X}Bo)Kop&YnR)osd~28 zF1Jxr^=z+QZlkWNUv8tO&9l9Bxs95tXM62(8#PtW_S)q(YO0>?waabPb@j__)Ue*hq+(u2+v%Pk?jhd=wd+l-?bzS{(8#Qg7?X}Bo)Kop&YnR)o zsd~28F1Jxr^=z+YZPdovsBL*})YY-ymgh!In@4-?wmdg#svhmN+w$C~sd}{6Zp(9{ zrs~mNyRkNEV{O#7JU8n4*t0fjTb>&=RnLBFm*+-J)wAE)<+)K)_3XEnwNcyh+^Fk= z!`i5Ad2ZBHJvu|)mgh!I)uS`yZFz3gR6ROF-j?S^U02WAsExHz+w$C~>EN(4g z4r`;f<+)K)^=z+Qo*Ok)&-U8oxlvQ~Y_DCO8+BbhYoj*SMs3S;qo#wy_S)sSQB(D7 zuU(!SHC4~{+U2=XQ}t}GWo^{9JU8n4;IKAoTb>&=RnPX?<+)K)^=z+Qo*Ok)&-U8o zxlz~Evo>mDZPd0rH)=XKY_DCO8#PtW_S)sSQB(D7uU(!SHC2!HT4QaLu{O$B8)eJi zsdsg1k4ac$xR5P>r`}XO+G}n3JN2gO(OzrI->G+9J!_+kwNb{}C}VAuu{O%s+$dvh zl(D%{#@Z-jbEAy4QO4RRV{MeNHpZXKj?T zHp*EW<*bcz)ZXKj?THp*EW<*bcz)ZXKj?THp*EW<*bcz)%wNb&^s9%wNb&^s9eHY!*f z6|9X4)+NfY{RIoNGSQ{0rjSALA z1#6>%wNb&^s9eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4)Fo4wNb^| zsA6qYu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~RjiFF)Fo4wNb^|sA6qYu{Nq$8&#~0 zD%M67Yom&_QN`M*Vr^8hHmX<~RjiFF)Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_QN`M* zVr^8hHmX<~RjiFF)a30G ztc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~id zjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8 z>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30G ztc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~id zjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjq0q8 z>a30Gtc~idjq0q8>a30Gtc~idjq0q8>a30Gtc~idjT)?t8mx^Ptc@D1jT)?t8mx^P ztc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1 zjT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t z8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^P ztc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1 zjT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t8mx^Ptc@D1jT)?t z8mx^Ptc@D1jT)?t8mx^Ptc@DWZB)Ge;+LnlFAwjZo*v_{+(u2C-#&Z){QUB}hliKv zFTeg^e|UWO@b>BRZ}M^TclGe}?c=-Wzx??0!>8~5`tsvXZ~E)+-@p0p@%&%EHa{Fw zY#t9sPjQIX$7-j|8@qXDHy`Zglihr=n{VvqJG=RTZhpCqy8c=%w^7sP*>CM~8#PtW zeruQ8sHuAPTf5vwP1UpC+T}Lty87idYT7*8YnR)osd~28F1Jxr^=z+QZlk8^*_{cx~_h?jhZ&k_S)q(YO0>?waabPR6W~km)oeRdbZatw^7&CFSk+C=Gk7m z+(u2+v%Pk?jhd=wd+l-?HC4~{+T}KCs-Eq&%Wc$k^~-J4w0XAIF1Jxr^=z+QZlk8^ z*_{cx~_h?jhZ&k_S)q(YO0>?waabPR6W~km)oeRdbZatw^38|Y_DBz zqpqu8Zlk8nv%Pk?jhd=wd+l-?HC4~{+T}KCs-Eq&%Wc$k^~-J4w0XAIF1Jxr^=z+Q zZlk8^*_{cnyP1e?Q$D+UHx(!HEo{lwaabPR6W~km)oeRdbZatw^38| zY_DZ))W+JVZFz3g)v@1}=SEGNM|d{`iu{LUB zZPd0rH|qM>vo>m5o*Ok)&wgu{=SEG{v)|g~xlvQ~?6;P+QQPv|sOy8n+Nf=LZq!sg zIz!%;=SEG{qch}fd2ZBHJvu|)mgh!YSI^q0jkQtR^4zHD;IK2~<+)K)^=z+Qo*Ok) z&-U8oxlvQ~Y_DZ))V4e~>iXcYHfmd*8#PtW_S)sSQB(D7uU(!SHC4~{+U2=X*VVH& zYGZBGwmdg#Iyh{vU7i~?RnPX?<+)K)^=z+Qo*Ok)&-Pl@Ms3S;qplAQYooU1xlvQ~ zY_DCO8#PtW_S)sSQB(D7uU(!SbzMDcqc+w?ZOe0`rh~)w+U2=XQ}t}GU7i~?RnPX? z<+)K)^=z+YZPd0rH|qM}ur_L2o*Ok)&-U8oxlvQ~Y_DCO8#PtW_S)sSQPYi;>E^``34UTe$WsdrsHYom;{QO4RRV{MeNHpZXKj?T zHp*EW<*bcz)ZXKj?THp*EW<*bcz)ZXKj?THp*EW<*bcz)%wNb&^s9eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4)+NfY{RIoNG zSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4 z)+NfY{RIoNGSR0kBjY`%=C2OOS zwNc61sAO$avNkGN8Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~RjiFF)Fo4wNb^|sA6qY zu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~RjiFF)Fo4wNb^|sA6qYu{Nq$8`W4F)mR(V zSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(? z8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F z)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(V zSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(? z8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F z)mR(VSR2(?8`W4F)mR(VSR2(?8`W4F)mR(VSR2(?8`W7G)ma{+sAj$fBEt0hfm-A_2tK(-t^bszkl=He*hq+(u2+v%Pk?jhd=wd+l-?bzS{( z8#Qg7?X}Bo)Kop&YnR)osd~28F1Jxr^=z+QZlkWNUv8tO&9l9Bxs95tXM62(8#PtW z_S)q(YO0>?waabPR6W~km)of8>X+N7Y4dEaU2dbM>e*hq+(u2+v%Pk?jhd=wd+l-? zbzS{(8#Qg7?X}Bo)Kop&YnR)osd~28F1Jxr^=z+QZlk8^*?waabPR6W~km)of8>X+N7Y4dEaU2dbM>e*hq+(u2+v%Pk?jhd=w zd+l-?HC4~{+T}Lty87idYT7*8YnR)osd~28F1Jxr^=z+QZlk8^*5dtqqgO_QP&5DwNcyh+^DH~bcVbw&yAX@M`y^} z^4zGYdUS@oEzga*uAa3~8*8Js<+)MQ!C_~}%X6cq>e*hqJU42pp6#{EbEBr}*?waas(uB&Hl)W+JVZFz3gba2>S zyF52)s-Eq&%X6cq>e*hqJU42pp6#`)joOyyMqM8q)<$j1bEBr}*biQ?Ms2K(+Lq@=O$UeVwaas(rs~;VyF52)s-Eq&%X6cq>e*h)+Nf=L zZq)U`VQtj5JU42pp6#{EbEBr}*?waas(rs~;VyF52)svhmN#@Z-jZIrP#%9g)V@9NYZld#BeAzS`Vy{US%*V^)T z>P^+7z1Eh$Q}4QZ)$9E}`KS?@^ zmz>2*&f+C!@shK6$yvPQEM9UJFFA{soW)Dd;w5MClCyZpS-j*dUUC*MIg6K^#Y@iO zC1>%Hvv|o_yyPriauzQ+iZXKj?THp*EW<*bcz)ZXKj?THp*EW<*bcz)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4)+NfY{RIoNGSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4)+NfY{RIoNG zSQ{0rjSALA1#6>%wNb&^s9eHY!*f6|9X4 z)Fo4wNb^|sA6qYu{Nq$8&#~0D%M67Yom&_QN`M*Vr^8hHmX<~ zRjiFF)Fo4wNZ7lQLp~}=l{GT@E;$3*f#S=JD7d??)m4JFTQyE>hs6#VE^^_@W(&@^!CHg zFVFU+ef{CHKfQVR*XlnU|5U`Q<8L9yHv{>r!(lrTV>|xy*FVRslZsc{F$bw_+c8wK zy*g}FwY~b}@UQLexBac-_};w#L|LXc2KR$eT`}FxY z`MCMJdU*Qw@!j)Zeti1j(|3P;`SGVW{q^_n-+VWHEMD93z3__x9 zJwHW*ucGJ2Y4mG6nWJLiXo^ms(Go%7>FdOV`pj_6~3evSzrw(|o`dOxDe_4yGe zJs#0)=lsx<9*=0Yb9xL)KXEy)6{U}x=&~dFxSbcN!iVj=T9w|9=(2NOzeEkAv?VK08(&G_bc0?b8^D0~Tu$`CN()$rzcFqfM>G6mzJLe_2^ms(Go%14H zdOV_MJLhG)@OVV0=e$gq9**eQ&UxW5Js#0b@OddQJswe;J1;J#$0M5UoR=HZ;}Okv zM2GFX&KW*z=LOI7enhjK^Ac!!Jfhjoc~LYy9#K0zFO#OnBbx1;7f!?D5e?_OP@5i( zXtr}+x=oKqG}}2Z=BCFZn(dsIchln$we9nQZ+JYK$&RLHi+(*nFQ#Enjp(=Y^WqwK zG@5D7d9e*V8qFl9;ONHQb zqnX%YH{2cBKpBl}z<{b76k4AGFCHjT@90Cm=G|jx`916{j zM)L^}{WvcAZTuWb4WAm#wdNdA4Ub0jNz>dziGCG7M_9w>M)SNzb81Ath@S(r*;6C> zJ^UP~4Ua}MwLJ%H!=n*>pf&eUqF=(#0o?4l(Ht|;&)}k8!O!vE@Tt+vYtC`t@Mtvi znsYojJQ~sWMsp7(`t@5g7}0Ov=dg12gC_dr`y5^lk47`EIft3UqtVQ3&f(_pXhdI6 z%{`Q8FPeOubHqCP2{=cs!@JSUYtGT@@MtvinsXF8JQ~fs<{ZrqkLKf5;4(+-pUQvx z^6L-w2Ppq-+qUKx`EPdkHUF(0{+<7Jd77~Q{k$6aZ|C^8CA0nQuUzE6d9;6&{|4=4 z?mN_ORQs77DK(y%!cqH~TO75Yc|J|;XKr%Te&!i9wV%1oQTv(a)YN|F=`OS%(bx1Q z|BV`sYCNLL&Q1Osb=*XkotykOYCNLL&Q1OsH6GDr=O+IR8jtAfb0gTP;fO9fH-?=W zk7%}YlmAAIM>N~H$$z89Bbx2p;4jr}|%}(t{bh*CCf1}1Dn(f?( zc4|DL+0IS=8#Nx$Z0AO`L*o&B+-_VuH5}1w=SH?u;}Nxm8{1BeM>N~H(e2cDM6;cn z{5NVmqS=nJGCFt zZ09EbjT(<=wsVvJMvX_*PH*zxsPTwqJ2wIz8jol=HwK;>j%c=Xqu{CWh-N!C`ES&C zM6;cn{5NVmqPBgL|3-~RG}}?_M#KegJUn!IZa_S>AJJv!hQw3j5nXm}P&_pr(Pig` z#Z%+aTn{w&3L>>*2hGLJ4w^ZY9aN`Bb8)kS=2p%Qnv0tqG`Dhg&|KW?pt<+4gXrQW z`kIO?wB5W5o9R8ai7q=L3vHX|vLmw4wuvq~A`5Ms=&~cS&?3`os#(=doHumYksUYD zY)53F?IzNjIzOVz&P}K{H6GDr=O)%08jt8>Ewa!ive0%D?Mj_CA=EVSK3e?zB7 zWTEXQ{F@q&Xtr|`|4ofY^|=<^WQi=a-9&&x=SOtdL>Aga7TRuNz^T(Cn(f>Kfm7oV z&3100z^U=5zCWUyERls4rG=QtLfcIsIP`H7S!lb71gFL$n(f?#f>YxW&30~L!Kv|x zE<0Uxlcm~?hzp7=w23UV4bf~zWT9<{W;-GaZ9_EM5m{&(n(Kk)Q!V=W+(j1JMHbpc z7TOQ0kAY@R5#8m8ZgNETIGQ_9(H)NH21j&%Bf7m2-Q9?8 zZba|ADb0gi(JD{TB2UdR6D{!+t?(2r@D#o4Mzp+B^rjop;!e?fZkpzKjc8@3W-y|4 zouXx(qE(%uMV+Ge+lZEQir#J`TF@zaw~c5yr)Krm&@AQ@t>qLgY9e z;}osp6fNRBt>Jw2PyG3h4?k?1`Q!2ZC-&*P=bvA`_~P-a&mXsg{nz8ecW>VRk3T%V zeER*5Z{EIr`rnW7KmXTfe|q!sPi*$;KRF!#RK%-ndHg}vUmXrx9;1Md|NQk&9JUs( zwuoxm7G~S4)m7Dr`!B{?E5tBzr()ocxgGWf4;}C?>X)} zUQ*9%r|)sh?|4Z)ud%+zxbJvLJ+H;S$GGo!NjaRJ-^4e?>I}n<5%pwZv762{JfU^9{avy8#}Lg zzsI=mI7_|buJ3p;zvJ}yj+gQ~PLA()A-~@><&HDsa}bjLYIetY@i{K(4x_%`b@Uvn zbca#j?>c&pUb@4m?{^(N2Q=wNeZTqe9jC*0oDHADp6+m}?|827cO5I3f zUw>Xdeuq)t@4o(ipR)7XbN%r?uSdVbuJ89C<-BhF4x_$byFRaPzr(2SHy=H(gTKS5 z?>8Skub0=4`hKVSysrKZgTCK<^t}H54x_%`eDu6d{|=+R-%R1Wp8pP`zTbTGyzc)F zqrTsK^nSFJM8*?^U-tOz#T??zxn7nm*5VgzTYI}oL_K0 z_(%C4e|-19j|myi_N9IO;a|!A__df{^B?~E{Es|jUgm!sb3wMYmH#{c<2RkifAK&5 zHUH!C9RGI-95F)O!$O~~%S9{rzJ!;k%VjC>xODSSp?tZ_kEV~G@Br#Q zfkO3ing2|mE8QgiGT)gVm2R$kncobLO7~e8au=a?xy)atPnGao=^if#rHkvXOG4-3 zy6ciqx#&KCLgNy;#|lE>61wY>(6@x{k%CaSgzkZY(6)r`9$)vV5W*IrYf0UGoKUr- zu3ZUDOX}uJLeY}C`I6AH=uVYTvy^VWB(yB0n=c6^OX)hJ(6N+mz9dvErJFD5j-QaQ z2n9>i&6k9JrRnBNLcP*-O;~7Gnr^-%lqAHR| z^eSC9UlQ&~hgF1DMMzbK?z$v|DnoZ&y39v~e>)wz>(XWZDLtx>SBrl!q7nUT|78B> zmtTLdKOp&^+g9oMYKy40ZDHoW=6{;yzwuKms;u31?9|Dm;~+31?9|D=5p(p5XQ+oJH-dpWwzNoJH-dpy0+OY|A@qD7bM6XHh$=D6nw}hqbeg zf*Y1_7PYgIf*Y4`7PYgMf*Y4`7PYgQf*Y4`3b3=Df*Y4`7Ny*kkZ$g*slZOx&Y}u# zU&2e&&aw(_T*6D#&cX_AT*6D#&e95QT)OLq?jA*`qU@l%7}`NMU$cYqbm=aJcF^5Y z+Cg_Qw1e)J(hj(428JdHsN(+6J9rjxZF13bwh~DZ4+KMgt*)`;dMiZ z%Y`u7l+&o4jD2d(YtmyVoZ1L+`Eh;mXYZe%Uw$W8|7t>9ZaYc)+~-huiQ389$Hpc6 z$P00~330jY31?9|IsDwXl%GT4 zvnU}hx1B70?tBSnQNq(D#O1b=$B&&ZAuhL_M1F2u!dcW#COgUEKyhQD!^<(1_-ct^trxfCH6XJ5)iR|Y-8p2D| zPG~ECU5LwFh|67w%Uy`e zU5LwtQptsm-Gz?bg^t~Yj@^Zh-Gz?bg^t~Yj@^Zh-Gz=_2pnDL*j?z@UFg`|gtI82 zV|SrrccEi@IZdE(}Tc(D4QrI(8R2b{B@EyU?*KyO+?hyU?+_(6PHPB;AFM-Gw3P zp1R)-UFg_d=-6EtlCGTe3LU!(9lHx1y9*t=3q#Uf=-6EtlJ2ELqAqmoE_Ce5du5?x zccEiCMYO9^>Kory^cu%cHaLSBJxv z$2SBV|M|B+$5#{Ot1Y71wuSxr?~iY8IsW65!$02i|M&mm!_O~o-hcARtEcaVZGUHT z-~ah%Nj-n31ma)ap5uoPZ=XK@CLcF{R}W9$KE8YY%a2b#eEROMFF*eDroaCF{hROp ziBHCBJ1$P&w#UQRa;w+Bp6J(K{POhn<>CF))8ohYdEIB{A7AiwpPhePhIpTyfBfJ|9?*n{=t=5^RNG2|NrCm`=^(mAD)j{ zj-P({pa0yw{$AC8xBnmW(xNW=e|vS<>i96=-~E5@Sg!v6{qf~*r#F5*(~sNlALqOO zKfn3Y5AWZ+`|+zUzq)<|aQ)%9==Iwn|C?T~+1JPXUD3|8d;9p@L^QUKQzX&eK2C^4 zd;2*35$)~cWJk2Ok5e1b-abxbM0@)vjsm6b(&!;W`CkipD0Lah*ajMPrlBxK6>C zqOnP5T&HkM(b%LjF6kHG6p^Vpkf)GL(cYvj;1rZ88k=;+b&4AkjZHe^I)#9U#wML{ zokBA;W0QU)PeBZ#p-E?4r#J@D*rW~T6v`kPn{>u?ie?avO*-Q`1vH4pCY^CfKP0E5 z2F-yyg*AxwCY^DeA{#_wleV{0aD!-U(izt&zCkoL>5S_X;-DFu^t7F#97IEt&bUs2 z4x+J1XI!UP2hrH1&GZ!RAR3!=#&wE#5RFYbVUQy7G3Xwn(iDH1|7HtCG(6bvC6n{>u?iiZ%5 zO*&CHg+z$PCY^Cr@#o!X**>`i1sGEaGjDPL}Qa)xK8;IqOnOYT&ENX(b$yN z66O7kRB;{GmwxvC`T6B{l9Of!q`W9gmA-A#3zt;s+a|qmNtM3TmLCJWlwSaoUbw_Z zQaa<3Dt$BQj7zHY&7?CfsnR!-&bXvs0IAY9snS12E-Ej|Ql)P$opDK(zMbCht9g7O zRr+>%OQL9O(hHaLBPmt-c6wu?=CnzbzMbBiC>opgQzD&lNtM2x-k~TuZ_-=E)0-4E zW0QVJq)OkUO5aXzRTP~z=}h_bZbi}9w4X`oGcKvpx6^wTMdwXAsnWO8I~O&l zO{(Eq|dmdO5aZJV$_^B>4B6geUmDEJH3}tblRjduG8BY zMPrlBxK8hA6pc;$eUsiQN|nC$cL%A`x6@l2H6KZ-(znyQ8%1N2&bUr*a1@PAI^#OM z$5Avk>4od`Hb>3ar1zz#cRGrOCgl)PrEjN~JBp5^^ul#|#iM9!(hJw=MUSGfNiSTd z*F8$cro7{jVhEQieU~bImnwZfXg?&%i=<1HzDt$<@l_~7pmTgbr*v=1376DWxm4-9 zRO$PsG-EDR`Yu)aE>-$2Rr)Sf`Yu)aE>-$cqUlnl?^31jQl;-EopDK(zDt$9OO?J$ zmA*@#mb+BxOSQLaZ%nnbNo@-dpEv2PqEzX-RO!1^>AO_vyEIE*x^Tp$O5deQ-=#|5 zrAptWS^6GIdf`%~?^31j(ky+KDt&EtlPZ0eDt(tKeV1nGyHx4BG)v!8`3t5?mA*@r zzDu+8wG(Bj(s!xScd62MsnU08mcC1szDu+8y`;Y?N|nA#mA>|#TPoRInm6xK$?np; zd6!Cdm*&lTlac|cWY<38l1g@$N_Lk@c9%+am*&m8RI??PdGper@IxxuLn_%rD%nFS*+VMXLn_%rD%nFS*+VMXLn_&&8YrZa zJ*1L7q>??Pl0Br7J*1L7q>??Pl0Br7J*1Ld3JXIj*+VMXLn_%rD%nHIhC^!oLJD+3 z`m1_Kf94D6vw5je4($^)?QO7j?y7A#;!lZEvWHZ%hg7nMRI-OuvP+jcgjBMJRI-Ou zvWHZ%hg7nMRI-OuvWHZ%hg7nMRI+RPja0ISRI-OuvWHZ%hg7nMRI-OuvWHZ%hg7nM zRI+QQuF|~ukmk*YROyFQ>4#M5hg9i@ROyFQ>4#M5hg9in?}DXDKcq@Oq)I=eNq^h2ujL#p&cs`Nvu^h2ujL#p&cs`Nvu^h2ujl|SG} zAI+y!>8Dibr&Q^uROzQw>8Dibr&Q^uROzQw>8DibOMm4{snSoW(od<zg6 zrVqF7162vDM0)DPJ7d>ohfVEoA@)S%$rZC(od<JrORDrs zs`N{$^h>JrORDsxKjD{D>6cXLmsIJOROy#g>6cXLmsIJOROy#g>6cXLOEpkQm3~Q; zeo2*nNtJ#{m3~Q;eo2*nNtJ#{m3~Q;z7!UgROy#g>6cXLmsIJOROy#g>6esym(*yM z6jqf~Lr9HsX@A4i{_voETByCn*Urne%~bpiXrH}*et!AgA77ro{QASE@%yKjpC7m1 zKR$eT`}FxY`MCMJdU*Qw@y~Dm^uzl%?|%I1%db9t_t%#ne|pnjfB*i?caMMEe*G&C zfBV~C{^x7+L*KT?!`QY%zCIlPy#C^sr?)Q;@1LF?ORDrss`RDH9ZIV7ORDrss`N{$ z^h>JrORDrss`N{$^h>JrORDs>*JP>EFR9WmsnRd0(l4pfFR9WmsnRd0(l4pfFR9Yk zPVb~jzobgPq)NY}O24E^zobgPq)NY}O24E^zobfEdCM)mQEXDB-=s>vNtJ$+D*Yx^ z`c10zn^fsHsnTy!rQf7VU;50cNtJ$+D*Yx^`c10zn^fsHsnTy!rQf7Vze$yTlPZ1b z`c10zn^fsHsnTy!rQf7Vze$yTlPditRr*b;^rgRqHL22XQl;OdO20{!ev>Nw zCRO@Ps`Q&w={Kp;Z&IZ%{ZYM1m41^d{U%lVO{(;pROvUV(r;3w-=s>vNtJ$+Dt)QX zX;P)%q)NX@m41^d{U%lVO{(;pROvUV(r;3w-=s=kO8uHt={Kp;Z&Ib-q)NX@m41^d z{U%lVO^VB#RD?Dub7-GUY9AuKZQl;OdO20{!ev>NwCRO@Ps`Q&w={Kp;*Ip&1O20{!ev>NwCRO@Ps`Q&w={Kp; zZ&Ib-q)NX@mA-N=DV=Y1snYLKrQfAWze|;Vmn!`(Rr+13^t)8)cd63vQl&4wb?Z{4 ze~d8^K27LSrQfAWze|;Vmn!`(Rr+13^t)8)cd62sJ_YJhrQfAWze|;Vmn!`(Rr+13 z^t)8)cd63vQl;OeN?-awxl5IPmn!`(Rr+13^t)8)cd63vQl;OeO212$ewQkJ>2FhA zs`R^5>36Bp?^31TrAog`m425h{VrAdU8?lEROw59=I&CZ-=#{wOO<|?D*Y~1`dzB@ zyHx3SsnYLKrQfAWUn*w0ROxrA((h8G-=#{wOO<|?D*Y~1`dzB@yHx3SsnVC?yDnAw zU8?lEROxrA((h8G-=#{wOO<|?D*Y~{>|N?lrH;32)tHugXn&v8{-~mT5~_WCp}ptO zP87u7?xEyI+MOMwLz6l#snYLKrQfAWze|;Vmn!`(Rr+13^t)8)E3aG9#YID^^oLaG z52?~0Ql&qnN`FX|{*WsDAyxWAs`Q6c=}Xrs4yn>VzGqZ8mmE^1Kcq^3NR|GOD*Yi< z`a`Pphg9hgsnVC;Obw~hA5x`1q)LBCmHv<_{UKHQL#p(LROt_?(jQW#FMTdEq)LBC zmHv<_edz-(>GLh=<1OjaE$PFp)3dEt|3CZlA0K|$HuFb2n0@;0`RA7}zIgoV^T+LA z|MmDs`~B0)&kxUEe*NLoFaPtiKfQVR*9Lz${;7ypdCX5P^H+z%mgaW+=kbrl@vUg} zYKy4j{}SehSBI^l{M9Fie{FZa?Qebf`Q^>~Pd<6|^xbh{_ILj3_kaFbQqSKhf%sQ{ zeEHkyjbG37qy7Hz;ltaf&%epX&EM6-)3=X*e)Fdv-oJVG<5ypP_3696zWn&poBsOy z_iw(NJ{+%)=k2&|{_$|UE#JoLUr+4oFMfG?`||Mq>FIIrP959V-cL;2&a`{e9!T4H zz``9#m+md3drRrwO1ihbml|`QlD%*yZf|=(GGTj@ez|v_)pA4Aj!k;u+I?2b9ZBhh zYxh|#H#X^oYxh|#H#X^oYxh|#Ha6+kZTDF%H#F&mYxh|#H#X^vYxh|#H#X^vYxh|# zH#X^vYxh|#H#X^vOZo-aeO8Md$lYhP+}@-uU^h{P8=G{-wVSBIjZHe^+D%m9#wML{ z?Ix;VW0QU)cN0~(p-E?4yNN2?*rW|-H&KNfn{>vto2bH#O*-S+O;q8=CY^CfKP0<} zD%gSCO;q9bCY^EZCaQ2_leV|rL=|pq(izuoq6#-Q>5OYPQ3V^D^tA0Js&GS-&bW3H zRk*Q9XI#69D%{wl&2%?Wg&Ui6#vto2bH# zO*&E7O;q8=CY^CyX%Ru)3&<^klUN|!nM2Lgd3am!nM2Pgd3am!nM2Tgd3ak zTB5wakt#0RO;n*yn(Zd4aC_69HswXqb`w>&BdNSd+HRr>H#X%((smP7xUoqulFC~* zlPZ1NO;o{7+is!?w>Rm9Yd2Aa8=LgPwVSBIjZJ#t+D%m9#wNXRN#_aL`Q2`!3U=D0 zO5b)9Rk*P!e+aPML=|pq${zx3H&KNfoAPP7?Ix;VW0Q7nsnR#8(mzHn2p0yMRO#F9 zdr!HKq;$r$``%M-Y|u1_mmr(_ERFga7mT^ zF-S<+-lR(3cHeu7eI}(J5~6=vP z+wOZ$xzi?{aqYhMlpC9L#s`Oo|^nLfer_{&aci(%;?M*qm^WFEJa${3oBz^b2 zr`*_-7fIiJ?RO!1k zOW&nR-=$gl(uE@~Rr)Sf`Yu)aE>-$2&C>T!(hHX=eU~bImnwaiDt&EtlPZ0eDt(tK zeV1nGyHx4BG)v!8`fy&V^j)g-U7Dq@ohVC{zDt$9OO?J$mA*@}^j)g-U7DrurNpi- zRr)Sf`r3PLsnU0;(s!xScWIWsOO?J$v-Dl6^j(^z?@h`fq)K1=_)eAO_vYkvtCN~P~orSDRu?^31jQl;-wrSH-#eU~bImuBg^ zROu^!=a&Aa7*eGlQl%eKr5{qIAJQ!SkShI4!8+Kcq@u$`eAW^h2ujL#p&c zs`Nvu^h2ujL#p&cs`Nvu^h2ujrP3*+NWtIb60J{5r0aQ zN4#M5hg9i@ROyFQ>4#M5hg9inAE-%{en^#mNR@s_ zm3~N-en^#mNR@s_m3~N-en^$R@&_F0qxqC7{gf*Glq&s{D*coy{gf*Glq&s{D*coy z{gf(w>92e#Rr)Da`YBcVDOLI@Rr)Da`YBcVDOLI@Rr)Da`cg2EQl+0#rJquzpHiit zQl+0#rJquzpHiitQl+0#r7yKdDOLI@Rr)Da`YBcVDOLI@Rr)Da`YBcVDOLI@Rr*rK zm{O&mQl+0#rJquzpHiitQh=ROHJMWClv1CN(jOJ2BKrSj?|ybHNveH8*O;f^1&R!} zKWmu{uTV`;6);FqcNR(@L@}T;m6e6W+joGvLTB6EI^BJ@+1F~RbHd?}8RkFVvE7&Z z`h0n}tpI!f&R%reO4**?@b9FYrQfO2?^Nk`s`Tl@6`d;mPL+PAO21R3->K5?ROxrB z^gC7hohtoKmA*X#P^I6g((hF1cdGO|Rr;MO{Z5sBr%Jz5rQfO2x5Xq?`kgBMPL+PA zO21R3->K5?ROxrB^gC7hohp5MT}qXHr%Jz5rQfO2?^Nk`s`NWm`kgBMPL+PAN?+cY zq<6T2D*d2JKd90Vs`P^@{h&%esL~Ir^n)t>ph}ms`P^@{h&%esL~Ir^n)t>ph`ce(hsWigDQR6!VjwSgDU-?Nph};@!k|h& zsL~Ir^n)t>ph`ce(hthLgBs1CuqvpAphh`t57Rat?A=0piErz2dosn}fc(wpj~~DM z>iaJrzy1BsU$@`AeEI3Q{Oph`ce(hsWigDU-?N!eCQsnSoX^ph(6q)I=j(od@NlPdkBNgC(od@NlPdkB zNC*=gXfpYk(WejS!w2-)1N!Izee!@lctD>! zppPBUrw-^t2NRxQ=pzU8i39q;0e#+pK5jstHlPn1&}R+kqXxe`Y4Fwm|L6Z>d*FZk z{I}~W^|?Hi^7W^WKYjV;o9FL-`+Pl>|M~p=e;tDGo4CozT3-M2>8ZTp^4C|PeRZ|=`b7TK{`3F8UMH(Pef8_7|IPLOAN{kRfBN#_ z^RIvX)ytn}x&E7f`ImqEM7HO@*@P4S)6IyC|NHYX{_AhXe;JSQ)c%+87}uTJ;>bEr zY$3Oj+j)iUy~Z`>E6wfGb`P@&^fXa`{Lex#^+2Vmx&#W z?mpLZX790s(cR~H&SYW-qr1=XoXNxvMt7gzIg*Keo$fxjb0!iy7~Oqd=S(J68QpzO z=S(J68Qpz8=S(J68Qpy@=S(J68L?mTyU*er*?D)L!#T4OJCxsj{^m?3RvF!W?&eG; zRvF!W-sVguRvF!W&gMua_N#aI`IqgxtcSX*h%B=^E78NvC8P~b2Mi%vC8P~ z^D}2MvC4@3Lfn03=E%;w`@GDVl~`qT_c@s}nb_&+?(;EcGO^0&?sG9`GO^0&?(;B5 zGO>^8?sG6_BC*Qo?(;8aGO^0&?sG3^GO-ik-RE7-WMY-k-RE4+WMY*O+j)1NZ8@^@ z?mpLYW+he`-F=?rOeR(t-F=SbOeS{9z5D#inM|xQy8Cp;kxVSo-RC;aL}HcE-6uNE zWMY-k-Df$@WMY-k-KRLtWMU`xyU%Z&$;2unw-7^*cc0lf@-f|gVB^e6>|k{FQH?X1 z*um)TLmFo?v4hdw$1~1kQpX5&oxzk*x%=ja6CYB!`__juE4hzJ9rViGH$9x$d+MN9 z?!MvSOeS^ED|g@Qa3&Kw=&4Jm!lZY(`zD7YAJg5pIGkCD9gOb2z2QtIb}+j8)`l~g z*um)T+ZxVfVh1C3Zg(}<-M2Fw`IwmWE_dI`a3+(wQC{x8jp0ltb)&r8eG9{xOzN(3 zx%>8oBbnG4mr3u!r1$G%@aU1!!lZY(`<8_>zj~}Py8Cv8GnrUrboZ?aXEL$Mh@A(S z^e%VbqHyG6V$!?ZeS5;0Ozt;=9gLXtE_dISaOQJjmC@a|Bpk`aej%9jE=+otyKhA} z^D(gs_U_vd&SY}Gd+aieN$+y^?FVN*CsrA;kBLd|a`$ZqM?NMdz02LV9GuC-Dx0R!=z2MBp#44k^Z!I{JiB(2--&SxYllwlg z%QPmv+4Pmdq<6VHzW>Ot9+TeX?%@72nOJ3XcVz#WOsq1xJFNdqCU!8oJEs3gCU!k| zcR>G{NX$+#>0R#5Y!Jj)a77h(z`yX%fZT|cYRWY5wky)N$<*}cV*JMvYFnMN$<*LdRHdB zE1T(Ene?t~rZ?k(l}Yc)q<3Y~yE5rr*-Y=sq<3XAy(^R6mEBdYOnNgxT-^nstM=TX z9DYvhGL6mju1tDYHq*N@>0Q}OZ}yNuWzxGc>0O!hu1tDYHq*N{cF%}O@5-ciWi!1i zliu#^#H4p+(z`P0UD-_U%A|K?Gren9UAxMpcV*JMvYFnlfMwFVGU@&L;%f9jZe`ND zvYFnMN$<*Lde>mxG$y?(liuzcmr3u+q<3Y~yRw0O!hu56}vWzxH{nckI2@5*L+S0=sPopL6CHq=W74}Z>D`$0ZcKVNCcPVz-i=A`#-w*+ z(z`L~&Cp(B(z`L~-I(-lOnNuQZ5y+6jX{~ly5NnqxEi~E&0KGDcciU7Ndx{y zDCymp^lnUgHzvIslirN}HzvIslirO<@5ZEeW74}Z>D`$0ZcKVNCcPVz-tL^iq<3S| zyD{nAnDlN;dN(G$8D`$0ZcKVN zCcWL2CzIZdN$D`(1?o4`jCcQh8-mD4Une^^VdUqzhJCoj>N$<|2cW2VOGwI!# z^zKZ0GbhuT^zKZ0cP70%lir<4@6M!mXVSYf>D`(1?o4_!O4ph6?o4`jCcQh8-knMB z&R}n6YOgbr(^N$<|2cW2Vu9m$#W?o4`jCcQh8-knMB&ZKu|(z`S1-I?_6 zOnSRwk4f*&q<3f1yEEzCne^^VdUqzhJCoj>N$<|2x4Rx>(z`S1-I?_6OnP@Fy*rcM zok{P`q<3f1yEEyn?(DHUM!}?aFzFpkdIyuth3JyY`DIiyD9JPxVg(| zS1Y>{A^a`R-+cb~@yoBi|MKzM-~aq|``yczpPt|U{Nu}S|Ja|e`YGPO{OS20AO8Bc z&mTVh@ZGoHef{ZQUw-)ehw<(&pFjNh`TKwW_4ohzm*4*3U8zswx}Klr_0;COr`JF4 zzWL|Nk6+$@etCHgCcT46Z^q<8&nt*+p71>77h^CzIaEq<1puolJTslitascQWanOnS5XILV}UGU=U6dMA_K$)tBO z>77h^CzIaEq<1pu&2IH3litascQWanOnN7i-pQnQGU=U6dMA_K$)q>y1|^f;$)tBO z>77h^CzIaEq<1puolJTslitasH)|LtlitascQWanOnN7i-pQnQGU=U6dMA_K$)q77h^CzIaEq<1pu&DdEo>77h^CzIaEq<1puolJTslita& zax#gSj2SVRnhp`T4xzjK@9yon3wKwQyHhUwJ`MDMOET%r@Om=oolJTslitascQWan zOnN7i-pQnQGU=U6db^_@litascQWanOnN7i-pQnQGU=U6dMA_K$)vZc^;lgrnDib@ zdJiVO2b11|N$33SyynDib@dJiVO2b11|N$|oM+FzG#*^d3xl z4<@|_liq_#@4=+^VA6Xq>CJjHgGukfr1xObdobxenDib@dJiVO2b11|N$CK)?dwqi+s=y|b-jhl1$)xvW(t9%LJ(={L zOnOfyy(g32?1E-8={=eBo=kdACcP(<-jhl1$)xvW(t9%LJ(=`o_dF((-jhl1$)xvW z(t9%LJ(={LOnOfyy(g32lSyxOTXZt%J(={LOnOfyy(g32lS%K%r1xafdot-gne=9z zlgXs_WYT*w={=eBo=kdACcP(<-jhl1$)xvW(wj9`CzIZjN$<&|_hiz0GU+{;^qx$5 zPbR%5lirg_Z{{y1lirg_@5!Y1WYT*w={=eBo=kdACcP(<-jhjhMzkiA-jhl1$)xvW z(t9%LJ(={LOnOfyy(g32lg;#Yiqr8*XQv#Da9vN=(s1`H-OUJhrQynmqsNHr-8cVy z`SHv9&o3{}*V9oMy)1R|d5~qPa*$XqOI5d2b4zu%RJf(mEp>8S{_-1m@_CKhrH<0& zWhr;GIEt5-RPJbTlrJx-+|lAFU|v$Wqs39eyrgnRi=(#qHq}vFye#Evi=(`FN#$yb zqriAcNYKx=D_%_v1{JSjWYKx=%cS+@Hi=zN|N#$ybqXc+K)lq=DEahs8qXczH`LT1I*;}?m9w0e zvz*t_NwLcgbhX9NS+PqhS6dvN7Q3W!wZ+kSu}dmfTR6*k9i8NQy91r&ypGOtT~fK) z;^;KjC6%i!j?QykQn}jV=tS4sRL*i<&T?KyXRR(f(A5@4r>!ojTy1f5-s+Od)fPu5 zt}dxuZQ(5Eb#xZ$?GAL7^Ex^WbxGxFi=*>UmsGB{I64t^N#$ybqcc%&Q#s3dIm>w+ zomRT+Kv!EFomaY~a<#?LiKR;_S6dvNS-PZhwS}{s*U@RBw>!{T&ggSTm z)fUcjUPtF~-tItWIj^G=IhRzfwm3SIb4lfDi=$IHmsGB{aC13}vz*0Q&f+X*d1AFi zah9_@vD%_I%UPaSZBd-%EKjVqD9&;gXE}?roW)tr;^uM|XE}?T%UPV|EN(7mah9_< z%UPV|EY5NkH%UPY}tj=;)XF030oYh&* z>MUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH! zEN69=vpUOJo#m{~a#m+KtFxTdSIm21baF#QiIm21b zaF#QiIm21baF#QiIm21baF#QiIm21baF#QiIm21baF#Qi9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nM zXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+ zS9o9L{nMXE}$noWohp;VkEH zmUB4EIh^Gj&T!XhqIi+SCpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v? zIj6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge z&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BV zb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>Cp zoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMC zr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&F2qn5M0`{ti7 zKYn@t`Q_!gJRP;1%Tm{GK7ai9rJ7r+yQRV{m2RowmYQs-qn7jbD}2;)E=#$i#Zk+-q;f}#qn2|? z<&G9dE$5QT9W9Pp&f8Q+E$6b7t1XUN&Lx$rEsk2wC6%i!j#|zom8&g|TFxbvt1XUN z&f8Q+E$6b7t1XUN&Lx$rEsk2wC6%i!j#|zom8&g|TF%>4M=j^Fl&dX{TFxbvt1XUN z&Lx$rEsk2wC6%i!j#|zom8&g|TF%>4M=j^Fl&dX{TFxbvt1XUN&Lx$rEsk2wC6%i! zj#|#!R7Wl6vXrYWj#|zom8&g|TFxbvt1XUN&Lx$rEsk2wC6%i!j#|#!R7Wl6vXrYW zj#|zom8&g|TFxbvt1XUN&Lx$rEsk2w+f+v_=dzTmEsk2wC6%i!j#|zom8&g|TFxbv zt1XUN&Lx$rEsk2w+f+v_=dzTmEsk2wC6%i!j#|zom8&g|TFxbvt1X=6yqx8{j?U%0 z`K+#^b2*o#SZ(pjRu$U2j?U#=b|5=iTu0|}E~(hj;yOB)^EQ>UoR_nl*U`D0%MNr$ zi=%TnmsIRZ*j?U#=Qn}jV=v>Yvm8&g|&gEQEx!S^6 z&g*!q0We2+2;^Yvm8&hB<-Cs0 z<-Fa2&T?Ky=W;HoTy1f5F6WZU)fPwRaxSS{ZE_B$3 zC`aG1zNB(T3uiftvz*0Q&f?~B7H2t&o6A|8MUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH! zEN63;vpLJzoaJoJayDl!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nM zXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+ zS9o9L{nMXE}$noWohp;VkEH zmUB4EIh^Gj&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v? zIj6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge z&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BV zb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>Cp zoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<}W)Ni|DS*P?H}Hi`t&-v@A>Ifm$musHN~=2 zaZ6RVRC7ypw^X>L(k(UIQj;xp)NwZ&1(xukNn#Zk+-q;j>zQOmica<#=#%eka-wZ&1(d7J8} zwZ&1(xukNn#Zk+-q;j>zQOmica<#=#%XypXsO4Oia<#=#%eka-wZ&1(xukNn#Zk+- zq;j>zQOmica<#=#%XypXsO4Oia<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOkLo>Zs*h zmU6YlQOmica<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOkLo>Zs*hmU6YlQOmica<#=# z%eka-wZ&1(xukNn#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=#%eka-wZ&1(xukNn z#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=#%eka-wS}{sm$RJL(Yc&ApVf7AF6Xio zt1VvHszQ6$(Yc(<4rE7*>*!q0B^5hbTu0|}-llSv^KzE+Iy#qg*@5n8ada-{l8Rl4 zTu0|}E~(g+$aQos=aPzDiCoTdUPtG0-tItWIj^I0IhRzfwm3SMb4lfDi=%TnmsGB{ zI69Z}HkGrSm$RJL(Yc(<4s^A}(Yc&UDpy+^oy)nTa<#?LxtvQXS6evCc^#e0dAkFh z<-Cs0eSUe0n}N9S@bJJ8h@N9S@bsa$Pw zbS~$T%GDM}=W;HoTy5bj=XG>0=j{%3mh(C~mvc$wYKx_Asr9G%O#q;j>z(Yc&UDpy+^oy)nTaP^+_?)mhH!EN69=vpUOJo#m`MUn{~Ijggr)mhH!EN69=vpUOJo#m{~ za#m+KtFxTdSMUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn-ma{p_ z*_`EU&T=+qIh(Vb%~{UoEN63;vpLJzoaJoJayDl9o9L{nMXE}$noWohp;VkEH zmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o z9L{o1XE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMC zr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs( z=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4 z&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo% zvz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(dDL>Yci;T;<;O4YKfk;@x2L0)b6M*8 z&F7CFzx?X^FCV}C{m);w-@SbK>G}Q7Kfe6-kNx?opW^+?pPv8m;je%D{Nd9N-+lYt z*Ps6N<%hq281Me_`NN-|zyJ4NfB&C<`RyOxmHPBLx$pVuRhPB-?lr}-RB=mHw^VaW zb+=TwrP3`m+)|S*b<}d+eua-(&Sfcgv^Z)xmsIX(any1ysoc@xsO4NzxueBV%XypX zsO4Oia<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOmica<#=#%XypXsO4Oia<#=#%eka- zwZ&1(xukNn#Zk+-q;j>zQOkLo>Zs*hmU6YlQOmica<#=#%eka-wZ&1(xukNn#Zk+- zq;j>zQOkLo>Zs*hmU6YlQOmica<#=#%eka-wZ&1(xukNn#Zk+7o9d|LT$XaR#Zk+- zq;j>zQOmica<#=#%eka-wZ&1(xukNn#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=# z%eka-wZ&1(d7J8}wZ&1(xukNn#Zk+-q;j>zQOmica<#=#%eka-wZ&1(d7J8} zwZ&1(xukNn#Zk+-q;j>zQOmica*{VW& z*U`D0%MN5mi|goI&LtH)T3koxa^9wLmh*C!^Ex`0bJ>CJXmNBd=aPzDiCjnLaxSUZ zmB@8;F6WYpU5Q-Ia$ZO0a^CJhXF0EU zoR_nl*U`D0%MNt4#nHK(ODb1e9G%O#q;j>z(Yc&UDpy-L%XuB0%Xzy4o#nia&gEQE zx!U6BT+Stxt1XVsYvm8&g| z&gEQEx!U6BT+Stxt1XVs<-AShEa&Ac=XG>0=duG`ZE}XMrzGHn!<&GB4au#Pfi?f`? z&E+i4auzq2vpCCH++5D$EN5|ZIg7KL#aYhcEN5|+v$(mO#aYhc=5iKiIg6XiS)Ap3 zowTo>R4UGL7H2t&o6A|8MUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+K ztFxTdSMUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdS!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nM zXE}$noWohp;VkEHmUB4EIh^Gj&To%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81T zmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v? zIj6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge z&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BV zb2`g8o#mX)a!zMCr?Z^XSiW&+j~~DM>iaJr zzy1BsU$@`AeEI45{m(zX{PvIi`Kq7d{mY-8|MB6kfBXF5(+}T$``y={{`KXDzke9- z{_^?5pP#?~_g{bipMUx7AKsPv^g6lk`RP@cwfXKf#j;d!OI5d2b4zu%RJf(mEj8Ry zlPz`Ba^8N0k6O-UDR;CuYB`rw?r3q;axSUd(c-A(TvEBC#Zk+7o9d|LT$XaR#Zk+- zq;j>zQOmica<#=#%eka-wZ&1(xukNn#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=# z%eka-wZ&1(d7J8}wZ&1(xukNn#Zk+-q;j>zQOmica<#=#%eka-wZ&1(d7J8} zwZ&1(xukNn#Zk+-q;j>zQOmica<#=#%XypXsO4Oia<#=#%eka-wZ&1(xukNn z#Zk+-q;j>zQOmica<#=#%XypXsO4Oia<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOkLo z>Zs*hmU6YlQOmica<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOkLo>Zs*hmU6YlQOmic za<#=#%eka-wZ&1(xukNng|nQOvz*t_xtuqj)pc|(=du*5EneBGLVMTIxtz-mWJinZ z=v>Yv6+2p7N9S_hrgE0^a+dQtI+t_Vf$nH=bS~$Tid~6ZN9S@bso0gsb#yN0l8Rl4 zT+VV{N9S_h?m%ZbucLE0msGB{I69YeN#$ybqjNczRIau-I+yb{m9w0evz*t_xtz-m zbhX9NxtvQXS6dvN%eka-wZ+l7oJ%TKTR6*k9i7X0y91r&ypGQ0TvEB(;^a*RL*i<&T?Ky=W;GP(A5@4=W;HoTy1f5F6WZU)fPwRaxSS{ZQ(5E zb#yN0?GAL7^Ex`0b4lfDi=%TnmsGB{I69YeN#$ybqjNcLQ#s3dIm>w+oy)oGKv!EF zoy)nTa<#?LxtvQXS6dvN%eka-wS}{s*U`D0w>!{T&gMUn< zma{s`S)Jvq&T>{~Ijggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~ zIjggr)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn-ma{p_*_`EU&T=+qIh(Vb%~{UoEN63; zvpLJzoaJoJayDl9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$n zoWohp;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{o1XE~>{oYPs(=`81TmUBAG zIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In z(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Y zbe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8 zo#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&Di zXE~>{oYPs(dDL>oyKnya^5d8HpI=^{Z^{0P*`Qh&$#=F0K{_yAL@BjVR z-~Z=de*1@ar9Qn*?t6ZE)n#qIdrh${Roqh5E!Eso-7OVvsdP&Xx71`y9kradU*V&c zb6LtAEsk2wC6zl`9JQQFDtELvYB`rw?r3q;a^9voYB`ssTy1gGaxSS{ZE@6cE~#8? zany1ysa$Pw)N(GVTy1gGa^9voYB`ssTy1gGaxSS{ZE@6cE~#8?any1ysa$Pw)NUoR_nl*U`D0%MNt4#nHK(ODb1e9G%O#q;j>z(Yc&UDpy-L%XuB0%Xzy4o#nia z&gEQEx!U6BT+Stxt1XVsZ?^s__xub=%oW)tr;w)!zb2*E%oW;%MEY5NkHMUn{~Ijggr z)mhH!EN69=vpUOJo#m{~a#m+KtFxTdSMUn{~Ijggr)mhH!EN69=vpUOJ zo#m{~a#m+KtFxTdSMUn9o z9L{nMXE}$noWohp;VkEHmUB4EIh^Gj&T!X zhqIi+S9o9L{nMXE}$noWohp z;VkEHmUB4EIh^Gj&T!XhqIi+S9o9L{nMXE}$noWohp;VkEHmUB4EIh^Gj z&T!XhqIi+S9o9L{nMXE}$noYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~x zEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E z%Q>CpoX&DiXE~>{oYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX) za!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{ zoYPs(=`81TmUBAGIi2O4&T>v?Ij6In(^<~xEa!BVb2`g8o#mX)a!zMCr?Z^XSo%vz*ge&gm@Ybe3~E%Q>CpoX&DiXE~>{oYPs(=`81TmUAAp zocZpXf4=}4tUvwc^T&^0e)avAkKg|O=dauEUcUVF{Ql=3Uw-??{(RL> z@&4sc&;R)F*S~%K@ac!|zWwg&PyhPz!{0xQcYpc(;m^_I z_x$uqzS?~E`lFYnF1J*1OI5d2b4zu%RJf(mEj8RylPz`Ba^4;-j#|!TDR;CuYB`rw z?r3q;axSUd(c-A(TvEBC#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=#%eka-wZ&1( zxukNn#Zk+7o9d|LT$XaR#Zk+-q;j>zQOmica<#=#%eka-wZ&1(d7J8}wZ&1( zxukNn#Zk+-q;j>zQOmica<#=#%eka-wZ&1(d7J8}wZ&1(xukNn#Zk+-q;j>z zQOmica<#=#%XypXsO4Oia<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOmica<#=#%XypX zsO4Oia<#=#%eka-wZ&1(xukNn#Zk+-q;j>zQOkLo>Zs*hmU6YlQOmica<#=#%eka- zwZ&1(xukNn#Zk+-q;j>zQOkLo>KDuT)&J{%{>RUMyRK57%Tp;|fBN{-mv6p#{_eNW z*HihQ&)->MyX#tJzc%j^7@~ze@e~z`hQ=oMP64crGNGG z`d@ne>eo+?Fa3Z06Mp{b%ZJau{`FTce}0`&^xypTzx?ATvOWLJCY<=6zW@Gz0f@Kg z@caKF4NGnRmWEIN1vUP1+I#fJ{30VC{yE!z(6(g16!#BD`{iW(@DKW>Fn{<5{c<9G z_y_$`R6qQKemMy~{DXceh#&qzzns7x{Xx5aAKzHv!yB}1i*|iO-oW3((RO`9-mu=o zTeRyN@&@f5-lARKkT)dv=oanzHF~3T4{y+}Z^#>idw7d>okQLT+rwM5>m2gN&mP{Q zUFVQDI`;4u?K+3-`t;xU*rUnbaM;5?XxEqj4R$@eMZ3-+Zz${GE!uSsc>`4sZ_%!E z$Qy=wbc=Rm2e%gdX0aUFVQp z`}&OuJ(}zd0X_VKcAZ1s0MEl)wCiy6hHoC;qFv{ZH#qa~7VSERyrGvzw`kWcdZRH9 zZ_uuD$Qx^Uc#C$OL*7Wr!&|iLxc0_L9^Rr|=a4rF^6(bzI*05^_QpXTP4j2kknC zybVTrc#C$OL*9lOJ-kJ`4%u%5i5}ddO_j*5Zb*5Xe)MRrxA#;&{DZdbqD`lw^7aPF zhofye6_vNQKR&!gn@&aL?ahr3Z_%bx$lJTk9^If_t@-jc&*$MS+Vu_D)tWDFZ%uqS z+OBWN+Zzub-lARKkhixLKDMF4}dTeR~Vq!&|iNQ`=Q#?P|@Jx3`ZyypMLB zLw4<=U9I`@_I|NPchRoae0h5}*uz`2>m2g-UayC@XxqoXtIFEdnlEqf(|U9t?Mk+* zHD7kM=F8g~vmV|>yUrnRZ@YSUi*}tu-riL8@D^?RJ=#@e?P|^MQvGFDYred_N9xfJ zZC7i)yuAbJ;Vs&A4taZj)5BY|>m2g-?xlyfXxBI7?Y&8lZqcr4?d^&Dhc{>wUMag; z^JQ0SzP!EF=;3{|>m2g-MxuweXxBO9?QKF2Z_%dT>`ev4u6w<8S8KlRYR%WDO*f6} z)3$xR=~PsoHht0RuGV~g+Vn+xeI?bN8|(FH*B5Qmfxqr*&DUM6`Fid8hU{w1*Iljo zy6dU=x~nx`cRe*3qF!AML8Lc0Dy;ceUp0uBYbfuGW0r_0;?>Pf>TZ z=IgH3eBITWue)0Fb=On#we7kN+0~k_yIS*g*HiO#S8IOT(P&p|zV2$x*Iljoy6dU= zx~nx`cRe*<`=*=5bysV??rP1~T~Ez#JI(HD&DUM6`PZ4Jo2sl`t@*m^srkCAHD7l< zHD6=by{uiW`MRq$zpZ}U)taxnTJv>RYyNeX@TRZYuGW0r_0)Xb)taxno|><@>u&F^ z*8H{$qg}1}x~nx`ceUp0uGW0r_0)Xb)taxno|><_TJv?+Q}cCKYku1m|E|`2-SyOb z-PM|}yIS*gS8KlRdTPGzYR%VOPtDg|t@*m^srgO!A9vl!YP(wVZC7i)?P|@pU9I`H z>#6y+t2N(twdUKd)_mL5ns2*W^Sf@*wq33HwyQPYcD3f)uGW0p)tYa+TJvpJYrgGj z&9_~x`L?SyzpMAqcD3f)uGakPYku}zr?*|L`L?Sy-*&a;+pgAp+tr$HyIS*YS8IM( zQ?2c4&9_~x`L?Sy-*&a;+paEe+tmzfyLtv~*R9pI>kd@gb)mkiTimu?&}^&www)fg z9Yyx->`krt*O%&TI?wKE&9_~x`L?Syzl%Y%U9I`Ht2N(twdP;n#<=O%Xjf~#?P|@p zU9I`Ht2N(twdUKd*8H}E$gb9W+tr$HyIS*YS8KlQYR$J@t@*aAHUIj8*G)%}U9I`H zt2Mvv?6|8n-*&a;+pgAp+tr$HyIS*YS8KlQYR$J@t@*aAHQ#o%=C_r7yIS*YS8KlQ zYR$J@t@*aAHQ#o%=G(5;eB0HUZ@XIaZC7i4+x5(@)_mL5ns2*W^KDmazU^www_UCI zwyQPYcD3f)uGW0p)tcXQQ)Jh5df(NW@4H&_eOGI~?`qBWU9I`Pt2N(uwdVV-)_mX9 zn(w<>^Sf?9^V@@Pt@*yIHQ#r&=KHSJeBafY@4MQ?eOFhl?`l5u zUH54Fu3K5Vn!J76CI7Z7qiqG`w)5<^!_mG^Z4+MUyIS*oS8KlSYR&J`3w>8>zVB+y z_g$^|zN^L^P8^Jc3p+UuGW0) zYR$*4)_m-0&Bw0ReC%q?$FA0V>}t)&uGW0)YR&JuypCP1`PkK(k6o?#*wvbkU9I`p z)tZl8t@+s1nvY$r`PkK(-*w+8cD3eXS8G0YwdP}2Yd&_h=3`fDK6bU{V^?cFcD3eX zS8IOP4bj-unvY$r`PkK(k6o?#*wvbkU9I`p)tZl8t@+s1nvY$r`CWJVV^?cFcD3eX zS8G0YwdP}2Yd&_h=3`fDK6bU{V^?cFcD3erwXkAWYd&_h=3`fDK6bU{V^?cFcD3eX zSKm2ywdZ127bAAv?A_Iyjcqr@w%t3}c8RsE65V#f-gaEu_wjFfYCd+g=3`fDeiu53 zU9I`p)tZl8t@+s1nvY$r`PkK(k6o?#*wvbkU9I`p)tcY-mEF~vk6o?#*wvbkU9I`p z)tZl8t@+s1nvY$r`PkK(k6o?#ZRet0t@+s1nvY$r`PkK(k6o?#*wvbkU9I`p)tZl8 zt@+s1n%`7D?y9kJS4TZ}b<}fLM?H6S)N@xyJ$H4~b5}<_cXiZrS4VwU&7ZqE>ba|< zp1V5gxvQg|yE^K*tD~N~I_kNrqn^7u>ba|a^LUKrdP!0u8#Vy7Ju&Q zsOPSZdhY6|=dO-=?&_%Lu8w-{>Zs?gj(YCusOPSZ`nGS{u8w-{>Zs?gj(YCusOPSZ zdhY6|=dO-=?&_%Lu8w-{>Zorzr|mj}j9m}Ak6o?#v8y#dcD3fmuGak6)tVo>TJvL9 zYkur%&5vEJ`CX;a*wvaJyIS*OS8IOkYR!*bt@*L5H9vN>=Ettq{Mgl+AG=!fyK4Ti zt2IA%wdTjJ*8JGjnjgDb^Zy5X_qSuYape2HuKg5xfmSbOL}oHCJ=(p`#z6Ae*agd5 zH-(a1kOYjn8`aew`0dYWO3klPsrfZ3HNQrs=GUmy{2G;-U!zjMhM0 zm6~6pQuAw6YJQDM&970Z`86svzec6z*QnI|8kL$~qf+xxuOHW_)chKinqQ+*^J`RU zevL}auTiP_H7Yf~My2N0sMP!#m70%wuf9g5=GUmy{2G;-U!zjCN? z8kSfId;c8vnl9{ZM%bb+Y;GJjg$V0u<8H|I>HV8G55N2J%bV->ukSwlW4>AJZMnYt z^Ud48KYaK7?fUYY``fQ?zWnlKveP-qaC2%)GJknG|9Sc9Z+EXBuJ7;eZlY5BYgB4} zjY`e0QK|VgDmA}GrRLYD)chKinqQ+*^J`RUevL}a2R&#}&qs?&&9|u3e2YrWx2V*7 zi%QM6sMLImO3k;Z)O?Fd&9|u3d{oEZqEhoMDm8x|d1FTF7L}TBQK|VBm6~r+sreR_ znr~65`4*L$kDAf6sMLImO3k;Z)O?Fd&9|u3e2YrWx2V*7i%QM6sMLImO3g=2)mv0* zzD1?xTU2VkMWyCjRBFCOrRG~yYQ9CK=37*1zD1?xqt>7;DmCAtQu8e;HQ%CA^DQbh z-=b3UEh;tNqEhoMDmCAtQu9$SS6WnRzD1?xTU2VkMWyCjRBFCOrRG~yYQ9CK=37*1 zzD1?xquv^}sMLImO3k;Z)O?Fd&9|u3e2YrWx2V*7i%QM6sMLImO3g>T4sTJZ`4*L$ zZ&9iF7L}TBQK|VBm6~r+sreR_nr~65`4*L$kIM73sMLImO3k;Z)O?Fd&9|u3e2YrW zx2V*7i%QM6sMLImN~wn>FvC)hVHujR7ujL&`@&v}gsmRKCfQ+gk+3d%&Hhj)6ZiXNhu$W6xNTAB$W>_h4tejY2`yqVg2|>V)+nLSU*0J zT0X=S){l=Qg`dYXk`+E2DXbqK$qOH13hT#5GQ)?M!us)%-0&f$uzq|bJN!JRk+kmN zNMZf>NMiR8Q&>MflG;7Q6xNTABzF%nh4tej>D@z2Vg2|>V)l7VBbnL5k;3}%k=*Pd zrm%i|Bs+VEDXbqK$Mfl43o?6xNTABuAgeG?E=X94V|HAIXm%VhZcWM>3>`n8Nz;ksRqErm%i|Bun}{ zrjhjK;YeZq_(+2D5K~w`K9b@*#1z(#k0dz{F@^QxBWcb3jET-RG?f%X2OxmAi+S zqUI{gNbT++rl`5fGE%*Jh$(8WvTXIcSHJ!FC$7Nn-+#NDx0<<0r<7j2ee>?&)vKE? zKD#-O7k|0=@~cn(di(HC9OM`NCqM3DQ{1oe`TLC}+12T^n3${@ugv{U@JX-FVvOzxstO ziN4xzN#yHsOQLNOK6;pK$~1hOumgp)Y+FGOH*K4E4IgM5lZFqpO}mBQ?AhiMct2m<~AHqSVU1zNT0S1H!bQ3>65nMh@zg5K4lw@DC!B>CTzn) zQPgeJecR|I>b!0EKw(Xb8bkVqE5l8T8bkVqE5i{*jUj!*mEnk@#*nCAzw5Zsmh}x+ zh7T0=g!Bzph9im^L;8j*!x2S|A$`M@;fSKfkiOx{XhcyzTDNt>0Y%NS`i3jR5k>VP zeZ!UEh@!@jzTwJnL{Vc%-*9C(qNp(>>RNZ1H`=nk;mYuVqQ;QE;mUACQQcABaAi26 zs4=8(xH243)ELq?Tp5ih>JoL=HylvZ7}7Uf8ICAw4Cx!L3`Z2zuk{UAh9im^L;8j* z!x2S|AyF;sDsZ%AeZ!UE14WG?eZ!UEh@!@jzTwJnL{S}N-*9C(qNp*XZ@4lVQB*+P z6b=UzHHP#JSB4{s8bkVqE5i{*jUj!*mEnk@dfL9>%5X$cV@TL>qB4ek!Ivx*aX6x&J3DA55|s@}okb2_pww05@PWcEQP6{yI*A-^ zTF`@*I*1&ODCj{;okI>s6!oA5O^s4iYCd&SIeLjYsT@8~)DzM-jv0<9>Iv!F#tcUk z^@Q|IV}>J&dP1T)+OWYWDm9<_w@^l}b>DYp_&`Am{?vD!8ICAu!Jqn`Gs6)Dt*=wx zab`54sQxi3HJ_qV^JnS%SPnCMiNdZ?)DsewnooVpn&E2{HHP#JYlb6=8bhLfw5Zg4 z>bu^IUZSYfeCm7N3`Z1pv7=^LQK|XV_q!RsMp0u(-|c2JqNr;fm6}gcsrl5m%o)B! zQDaEoFlRWTuwN}|mKBwnPkpnT;cFB%hD2SWsMLJwJMN5LqNvn->ig{sM-(-N^xbxb zBMSTZqh?uAsrl4*+8Mn@Q7wx~&8Mi;eCpfv3}2$CF{E$SGaOOW7}B@u8ICCIK8l)U zMWyDWRDX&}&8NQG&*+a9m6}g|ub<(FqQ;QE)6Z~3QDaEo=Vv&gs3)ZF@-rGy)NHM9 z7Bn1CRE8!hHJ|#oP==cp^@Q|qp$tb9^@Q|qp$tb9^@Q|qp$tY8G=YeE*K1L!d5cQT zTi>r}^h%$?u659ZW~ZRZnnk7N?G!Xwv#8X(oq~pts3e9(rRFUvHE&U=d5fx=x2V*- zMODpPRBGO$s^%>!HE&T>^HJG3i%QK~RBGO$Qu7v-nzyK`d5cQTTU6D&MWyB~YJF`{ zsrjgia0{ERg^g-q4}aV>ikf9brRFUvHE&T>^A?qwx2UT5{t=+j$$C_3-l9_T7L}T} zsMNegRn1%f7|rmn7PR2EsMNegRn1#eYCfztib~B}RBGO$Qu7v7HE&U=d5fx=xBexY z(MK&RHE&U=d5fx=4;yBqQu7v-nm_M(8Ur9LDm8CWRr3~=nzyK`dF!9S8GY2EQu7v- znh%>lMy2L0Dm8CWsdVQHx5=hb@evQu7v-nzyLb zyhWwvEvjnXqEhn~RW)x>sd@pb4Azg$<8ky-3`}4kE(mkLm@Dvr(yek4nvZRBAqoL3mVZ-lJ0U z9+jH+sMNeirRLAyhYY&0qf+x8m74dc)VxQf=EFLXsMNeirRF^Nd5=oXdsJ%Pqf+x8m74dc)VxQf<~=Gk?@_6Fk4nvl zP5Yu!^B$F&_o&poN2TUHDmCv>sd~SQK|VHm70%wvznt) z^EoOtpQBRqIVv@uqf+xZDm9;@Qu8?~HJ_tW^EoOtAC)r5QK|VHm732{srek0n$J~SQK|VHm70&rh2^N!e2z-Z=cv?tj!MnvsMLIpN*Cv-tXhsrKIEu( zv^nZkR#cKVhb{TTRz_hH$gpuXtUHSP)q?O!j!MnvsMLIpO3g>~S zQK|VHm732{srek0n$J~SQK|VHm732{srek0n$J|6TB${?LP}I>zC@+wOH^vUM5X3S zRBFCNrRJlSj!`SesD)$Hx-n|m7`1AQS~Nzj8KahrK}TG>S{?4s6nQOmlhRbAAgF6aw0QA@h06Z?!xdi(IN9q-cr`gHzN+^^1Wb|MSN`>HME^wVX@U>$05pb2XXx@gGK*$@83P#-hcAR)!o-EEgw1fH$S|S#Pg95h=29fFYMj=)mJam`LkZj za&u~no$Te0KiSJyf4h7AaD9Jwck}pR#o@!8{!tn_ew?rag|+N)tE2IzJ$}h<{6LR; z9F8C8u_9yqK#%W_#t-zkb{jv?<7{{QK#%i`;R8k8kDJLK4=606s3&AI`QuHCdP1UF z7WL>ywJYkuk9zK-9{Z@LKIowjx_!1HgVE<=t1%cpPE@;s9*eEOV7OgDkHuDAFdR?N zW3d$%4964nSOop-TV=s$v$n#5;o}577F$`ta6Cby#a2`>98b__v6U1I#}hPKYy}0Q z@dW)`TRFjSI6?Ent(agqo}g}HDVPj5cd4 zAs9YR&}gw05Ddo?)ctJb1HbF&t0OXc5$`4S$R_Yr`MI#|auOHvBOhPta(w;g8{Xg1W;E ze+F(ia5nrg98S<^vEh&5c!EZY4Ur7T6Es?Eh-5gPpl)?TB*XCpjTTXd z3Cdb-h-CEgY=~s|I6;rahDe6v33@CxL^2#t&||S7lHqtB?`J|9{C3R$8?V4~|8sx0 z<3Io7|NQ&i!@KJ@pMU=1^Z&Sc_x^_;?(TmT2>OwX{H*^;C#$DZ_dmjv7 z|54m8Pe1a_7ccVZ=KB5XyU+fZZx(x7uJ8W*;)mP6etUoW_PZ}W|Ki2lzdwBU{q6el zoBP|ZZ=U|*)7|kzg-+*>5Bv-jdism}86SsL=_zNN^KmvTZRg{HQhLtE>4fy0j|)}l zIUlDf(sMp8fTibroc>79`M8pmp7U{9r99_^E@6{p(q_(R=Y+0rqixb_JE7~_HnEkq zb3)g*ZH+5!=Y+0r+i+Le&Iym_ChVlmoY3`cn*&SRIbqhfi9l&PC(QabX((;ygjwGv z7^Ur;FzcJ}sBDT-d1*IsDLv zo0OF{bHc1|6S&fLP8iBI*(+`5gjwGvhNbPCFzeeSvb3EOW_=TGp-n?8FYP9$rRSV5 z>)S-Ow4D=%&rNzu+c{y@w+V7-J15NgHkqz$=Y*eg6YtVyPMGy=l3v=*3A4UU=u6u< zVaVR(zqFkbW_?>lfwY|yW_=Sb?N-&GytG>dg!G&fW_?>_g|wX$W_?@5hP0g%rU_dm zh_sy(W_??QiL#v&nz>c3NSirf*0)u}NZUDK*0)vKNZUDK*0)vgNZUDKYO+-ZN!vML z);Hsn6G-z`$)x-_x2h-UIVW^|TQ!xmofEpgtx8MU&Iw)LR{bSyr@kN3ugNB;zVmL# z|JVsv_+zH+BRA4>&iFa?oo(8_vLn5=`p!0;^h@k?(s#D$q+ffc(}d1ezw}HK>PONt zqn#7Fz6tdsY0jHH=%wcr3tgX3H2i>O_=pfcvL3TkE99pBj*nu=@<4B>PM1InDtGlA4xW0);FPk zB-w;n--P;+86)PKe0znD-zlFEcx--P;+R3^;& zCe)9lGGWM`P(PB&gjwH&`jJ#7%=#u=+6na|X+r%-suN~?6Y57&oiOX0P(PCDgjwH& z`jJ#8%=#wOkIcyCOsF48>x5a~g!+-RPMGygs2@q|gjwH&`jNCwn3_zeA4%(kS>KFP zP9V(_>POOq`jONobbS-*M^c;6^-ZWBNo_*cH=%wcHGMy%e^MsU7MoB%ViW2|?4(~} z+iAuvq+ep&N#EJpg!&PiP(NZ5>PKus{m2AiXA|m2Y(o8rEfc!F3H2j3p?<_B)Q{MN z`VpH@KVlQ=M{Gj<$OPzX6Y587Lj8zMs2{O3Vb(W6quPY}5u4yIY(o8rO~^Rdg!+*Q z^#(R$kv(H}J7ZXx@_SBL@J^^7u?h7fHlcpRCe)AEg!+*QWluJte#9o!kJyCz5t~py zViW2|Y(o8rO{gES3H2j3p?<_B)Q`*W+ ze#9o!kJyCzkr|Wt3H2j3p?<_B)Q{MN`VpH@KVlQ=M{GjW+e#9o!kJyCz5t~pyViW2|Y(o8rO{gES3H2j3p?+k>E6oY@BQ~La#3s~_*o68K zn@~Su6Y587Lj8zMs2{Nj^&>W+eq=^wrRnQOY(o8rO{gES3H2j3p?<_B)Q{MN`VpH@ zKVlQ=M{Gj$;uGped_w(*PpBX93H2jBp?<_C)Q|Xt`jH9R%_r24_=NfqpHM&I z6Y58NLj8zOs2}kO^&>u^e#9r#kNAZ8kqPM5C)AJlg!&PmP(R`m>PLJ6#PPLJ+{fJMfADJPLJ+{fJMfAMpwGBR-*i#3$5`_=NfqpHM&I z6Y58NLjA~$b^V0;5uZ>$;uGped_w(*PpBX93H2jBp?<_C)Q|Xt`VpT{KQiO>;)MDU zpHM&I6Y58NLj8zOs2}kO^&>u^e#9r#kNAZ85uZ>$qED1fNOI%}^&@#g{YairKawZZ zkK_sUBY8soNS;tXk|)%U9O zH*X$(_dov6zu!H)yMFWe=Qm%x$fuj@_pk3h`(wUY>}|Qe`}2z*ZvXo2{q5WDzWDr$ z7jOUm@ZI;f>&tKMZ@<2I`in0<|Bst@?|=B=?*3&uf7X0iZcgoVE~0pOI{$h3>Th?i zAFl83?r!pg`jI@Lek4z*ADK`Nlqb}WMzl?nADc|!e2o=`uMC)AJR3H2j+Lj6ddP(P9<)Q{u|^&@#g{m6{T?S%S~ zJfVIhPpBWs6Y57MtX1?Y&j~A)2@918>y!!0lnJYp35%2oYm^B~lnE=82@8}ef73Q$ zc`{*jGGTEtVQn&DX)=WwPCzP>IsA8W`#6F>heL@NQgbMZv1?*e>`qki{-@pHM zS(4qPQ%W!1-rv1?b@Rn%H_Ivg_YZHrcz^!KcQ;?0(bHdVAO7Vt{^&u9 z`_(!1VI|qs>9m}STGIKSKmJLl^GB1emh-00by?2e!#e->OFe%~_VpLkk})2vHvvrgPU(W?H9``#Yv6ZfQw`o#V1ruxMFHG}%ZeZDU~@vO)Asis%m z;8{K9Q+2Pp#j|?Mr#fGCi)ZziPZhuF7SHN2pK5>AEuPh5&U%`jN`b{!`l%jRed1Yz z(^F-zy2Z2Rm`^pr>K4zMV?I?2t6My4j`>tKEN=0voBFAOSl!@RbIhk&Vs(pWjfziI z#p)K%nqxlI7pq%5YmWI;X{>JXtU2bad+Vw2SbU|Qs*lwto;AmOszX+{c-Cf;#oiOQx$-^!L#O=PZa^`7SEbvK2-;(TRdwX@Kh{1&^pvURZ2Y-<~<)iwMo^wV!AJ@pzc0Nw_r00BG8B5RkIK`8m^Kr2xJ?G)sU z`f(CEODtG`wK05C%+iFQBT<@)#WX7rI%}2M2k{PX@H(YO3B{Nz*Z$7$Jmdt4Ny!q%>T{5B7 z^M2~B!emCH=gmjADw7$lo;M%eDotjzdfrT7t2UX@>Us0gt>R=xtLM!}=Uwlu?qtIC z-o9foty_nJJdGpcjI~WsMJ+IN*cQIx(dft3= z`%cD;R?nM{Zr{zA(dv2g(d|1LGg>`wezbj8V@9jz%||Dmd7jzbzPmBur{2E5G2_(p z`qAxs95Y%yuOHpM&oQIb^ZL>4dmS@c{n(p@7I6$5>|^ym*Vk{-=jjjce^t@XE~X#9 z^6|6Z|5(nS1j%Jr|C7)4KiTZJ?|U!S-5`0+>nxzd}re}DMy``h*9H}|(+ z-&}9E#IC|8yZu~+4|42nOlA(w9(`LJF|lv&k(i@zLo;*q?QIZq^lgA;j=sIqVUE5H zlg!b#mlVv=x2ZdFbo60b(2ihXV@ErJ1?>nHv?Ey1j$lDMf(7je7PKQ+(2fAT-Fxj5 z(uXCqBj^=OOzdb!(Cd(x*wK!lR}(R@qa8u731VVLI|B5E?8Q6Ch3WM<%+b*q_eumNcC-WT^#n}p=$PHB0+`s*F}vG-BzE+&ccIUO zj*i*g*)y@DV|Lf_Ozdd)-pxA`J33}}xz5Cnj@jsi>BJnlFkO)|M@MG_-GVc*qcego zx|!I~p{cuUCU$g2&~-HuI~sa7(oE>+jG#+rCU$g2(7iGfJ31ri>X?Zg9r(H(W@1NY z1nj}lOn-O0$Yt+TmpMAx5p;0N#Ey0Zoy{__qa8uVuT1RZvr5i?(L8@Tk)2FBk+Y3- zVlO+{$)ppx>_{iFlSwCX*^y3UCzDR(+&!JpP6mCLP*<2xSC|&GBS2kYLS11(U1369 zVM1MDLS11(T_LLH5aWi<(Pg(;yk0@M|zgw6=i z8xnPe33Y|Z&=~>h3X`Er1Jo5JLzf1qD@=wi4NzCejvc5gOpY#VP*<27?SN5Nm>iuE zpsp}EIwL?`VRCdvfc~hcD@=XoW#avBLe*kI)ndx%i~v=O=PeY-g$Jq@Q$}Y5s9I!K zWT;w91)UL~YB3dbMu4itRM5c#Rg0;hGXhjCrh?80&RgMjsR7Qsgchrc|W4bLqpY~p=!}kwP+{yMOjHRg0*eGj`#@&Suyy629)}(g0P9hN?wF)uN$l(NMLB zLRUl8qM>ThP_<~NS~OHG8mblzRf~qIMMKr1p=y!s-BGn@s9H2sEgGs84ONSVszpQ9 zqM>ThP_<~NT4X0;s9H2sEuOzc1~OVh)uN$l(NMK$s9H2sEgGs84ONTmnh8~lhN?wF z)uN$l(NMK$s9H2sEgGs84ONSVszvto2C5bfRf~qIMMKr1p=!}kwP>hXG*m4bsum4Z zi|m`oMyf?a)uN$l(NMK$s9H2sEgGs84ONSVszpQ9BAI7Ga|Vv8MMu@5qiWGnwdm+x zi;k*AN7bUEYSB@(=%`vm(|eApMMu@5qiWGnwdkl?bW|-msumqpi;k*AN7W*liFZ^j zI;s{ORf~?QMMu@5qiWGnwdkl?bW|-msuoc+l`2rYyRhUt=m{GNuQMH&+ zwU|-0m{GNuQMH&+wU|-0m{GNezSYmDTFj_g%&1z-s9MaZTFj_g%&1yK(@bcV2~9Gg zIVLp4gl3q~1QVKHBEOe{W|z?95}I2=Q%h)O2~8}ac_lQhgl3h{q!Rh{0yL$BW|Yu` z5}Hp!(@AJH2~8%Uxg<1|gl3Y+?~S2(Bs7hLW|7b&5}HFoQ%GnA2~8lO`6D!aM1K7T zO&+1SBQ$k{W{%Lr5t=tb(?)342u&JoIisuJ{sdov-@pHMS(4qPQ%W!1-rv1?b@Rn% zH_Ivg<>vbO;f??4)4$$644(6J{!`qqa?R%rHtp(kT5_^<{^$A6`9oc2wsy6g%PZ=# zoU7`~)%jna7Q6c7GB>aV|l_i%gv$tPELU$?Y;U0;54fBW_0{qQoKKa;gAH>Y+gOM3a^ zPx$iH-|k*NT;Jc_-RwRf>wk(n>TcVp(8E&4r7pv6ciPbFu={pR=y7+O2!$SZm*x*W z?(P+E=y7*1mqL%bTegNCcQ+x9JTCND>@%jJ;ZpHJkMTY~8hRa|$9SI;4UHFijQ6{@ zgvJX!#`_&xBIAW_-~BEvq2WT0@qTBP(0HNIc)uG(Xf)od(a?CI(Rgn~L*s?I^}P@c zjTah?_bxOvUT8FiF2f#zMqY-!0S!GaG#c;aXK1|8XuS8Hq47e)#a?-a#tV(cd)pZq zFBI-xbcTitjmCS&85%D%8t?UHXuQy9yf>Sn@j}DUUTTKM3ysFqVIlspSDBHQcMmc{ zj|)A(sokQC1uMrwA)HyIy-vrsPwBJV~^78I?&;<7Hl)rTsU$LgQs#oTdGDxkBS* z-bAJSx40tXg+>d=h9$^`or{z{y?^uO;djARG6}L_Y5$$A(AxnTjrZTy3XK;UjrZTv z3XK;UjiFv0vSDfe-K@yV3)!%=|5jFLywvXoJ;sm?I~RsB-7jRr(taE2$om2M*&rL1 zARCtU8xe+HUTC(n-+nMOUg~~;Ce@G)OZ%+`L$5D18bg;CvSDeztzhKkg=|>bZzdQT zFEkqOw-5}Cm%7iO(HOE}X}?`yJ;wVz`9kA`9^-8%zTk`qGv|ZSO$OO8 zgKXG&i#_B$s_nnb6nOI*WW#L#HKx#bna;uXUtkK2m+2gA|J9|)c$qQNARA_o4Kv7w z8MJShK{m{weZvg0VFv9RW{?dtXx}ghQy65!46fjUhisTbHq0R#=8z3@$c8y&!yK|< z4%sj$3+s>#bI67{WWyY?VGh|ahisTbHq0R#=8z3@$c91a!66&wkPUOlhB;)z9Kt{j z=>&(;r4Hq99D1Sb&>Jqu7&*1(rWOIztc2<&vEPlcVGh|ahisTbHq0R#29Z98Y?wnf z%pn`*kPUOlhB;)z9I{~!*)WG}m_s&<>Lno?=8z3@$c8y&!yK|<4%sk=Y?wnf%pn`* zkPV|IC6Ens$c8y&!yK|<4%sk=Y?wnf%pn`*kPUOlhEZz($c8y&!yK|<4%sk=Y?wnf z%pn`*kPUOlhB;)zs3kXK!yK|<4%sk=Y?wnf%pn`*kPUOlhB;)z9I|1|i%IAOSB7j@ zhHO}dY*>bDScYs^hHO}dY*>bDScYs^hHM!0J~=}+EJHRdLpCf!HY`InEJHRdLpCf! zHY`InEJHR7O5bG2hGocxWypqQ$cAOehGocxWypqQ$cAOehGocxLD|v_*{}@RungI- z4B4;@*{}@RungI-4B4;@*{}@RFbF4P$cAOehGocxWypqQ$cAMI8D&U4WGD@rp}bIr zUQ|OCC{wS_sI@$`xS(b`RQHSB56ss18M0v+vSAsrVGzB`kPXX_4a<-X%a9GrkPXX_ z4a<-X%a9GrkPXX_4WoK9$cAOeaAnAFWyo-4$Z%!IaAnAFWyo-4$Z%1EJY={sWVkY9 zxH4q8GGw?iWVkY9xH4q8GGw?iWVom~HDtIlWVkY9xH4q8GGw?iWVkY9xH4q8GGw?i zWVo0&1keh$K!&S8hO0n^t3ZaUK!&S8hO0n^t3ZaUK!&S8h6{ROR3O7uAj4H4!&M-| zRUpGvAj4H4!&M-|RUpGvAj1W{pDmE#Dv;qSkl`wj;VO{fDv;qSkl`wj;VO{fDv;rV z(jf&hTm>>*1u|R(GF$~RTm>>*1u|R(GF$~RTm>>*Q1-DvhO0n^t3ZaUK!&S8hO0n^ zt3ZaUK!&S8hO0n^3rhAE$Z!?Na23dK707TE$Z!?Na1{s{6-Yf4D7{;td=q4A3iSq@ zdL>7_BcK*7)GUhX*0KAnBA+xUkl`wj;esezfecrH_V+4~4J(ihE07HTPWWx$%!wO`> z3S`3yWWx$%!wO`>3S`3yWW$)H1vI6ukPWMl4Xcn1tB?(=kPWMl4Xcn1tB?(=kPWMl z4TDy&6|!L!vSAgnVHL7r6|!L!vSAgnVHL7r6|!L!vSH8*qYBxu3fZs<*{}-PunO6* z3fZs<*{}-PunO6*3fVB|{cMG7ScPm@g=|=bY*>YCScPm@g=|=bY*>YCScPmDln$wo z4Xcn1tB?(=kPWMl4Xcn1tB?(=kPWMl4Xcn1gR+kmvSAgnVHL7r6|!L!vSAgnVHL7r z6|!L!vSAgnVNkNaLN=^IHmpK6tU@-dLN=^IHmpK6tU@TNLQ11TX=BLNR4S20y;-MT z^-=F0sKpR9JEMjR?EYO5I$9wc22r*O*{}-PunO6*3fZs<*{}-PunO6*3fZs<*{}-P zFsgTeY*>YCScPm@g=|=bY*>YCScPm@g=|=bY*>YC7&CW(#^M#SVJl?AR>+2}kPTZQ z8@56=Y=vyt3fZs~vSBM^!=S0}3fZs~vSBM^!&b+2}kPTZQ8@56=Y=vyt3fZs~vSBM^!=SXq z3fZs~vSBM^!&bvH}=#kMCzRewaB7oebg|7Jr@n3qYyb;AseSASc7a>gKSuXY*>SASc7a> zgKQYIB5aTiYmg0VkPT~)4Qr4MYmg0VkPT~)4Qr4MYmg0tUcfZShBe5BHOPiF$c8n@ zhBe5BHOPiF$c8n@hBe5BLGL>oWWyR{!y0768f3#7WWyR{!y0768f3#7WWyR{!=Us+ zgKSuXY*>SASc7a>gKSuXY*>SASc7a>gKSuXY#5ZyYmg0VkPT~)4Qr4MYmg0VkPT~) z4Qr4MYmg0VkPU;9=MA!94YFYkvSAIfVGXij4YFYkvSAIfVGXij4MJR$RiRi3mFK1s zZ&W6LdNoPCE1?!|)NGO(-U6Su<>jlt-MxOezQ4P>Sx$l8>TuvC45c0poTvjEbzr9s zoT&pB>cDYdF+JQBaa-UW4jktvpC34oNF5GLJ$Zph>JTyYbcmQ5^8$I(^N0f>(&50= zm={Qq4iQshULZy~L`;o&fgI@&F*W7|f}}&l)R-4&hn`0qh=&dbrpCNLK6Hqf8uJ1H z(IH}L%nKw$hlr^$FAxzuk2sL~91cv4d4b^P5HU681(Kgb#MGD1|^o<|%AVGakT#=JlZbBLH4^8zuIFPO!4or=Cfq3N*F*W7|@|8ox)R-3tSPl_WV_qO(IYbPNd1u7J zXoV$k)1YUUVhP+e=x|`@$y);V4LU>&J$Xyu&OwKWp(k$%+&kzHG4F)wh3oxVa=|KWZ5)2DyEeHdx%+1sCr`&F*lO0uidY01gb`Jd-M zUaKvqtHr(4W%2WHcXj^PZu#ny)5uBx*}wb#-NWtuC!bv1eSO}b?IVBbn;+gu;`vAj z#J}o4^3C=8*LR=&G2blqwp`!+`R47L|N8Fk+ZS*D{_x%Rx9iJq?r*<-x+PvFJDtB- zd~-VQftu^fAAiVwg~ij-^rssr^w_&~FK}@7=)0F%K~T3+Xob}S+{=)2cHU^H4b_Dxfj)B~~QHVn=5L=!MyrfW=>!{qD-Z(a{;fey3$1c63It-*p*?9UYqXJ1_&Wqcej2 zZp`tqqoMCB(tyy>8Nq&+W*~NSMzG(p8HgR75$tzw24Y7CzWq+lK0v?JIT%>l8a9l^eQ4u~D?2=;|^K}1luJ`lJvWG9pMm4ZO*WG9pMHG@FxXeUEX-4m)7)4o12{<80j6oI3o9l?IfZ6J2E zBiL`g4aAOi1p95cf!NWG03G+(`NqCnGXAooYBB9M{{~_wUqq(;HsC<)@T0EBsf^}pGRf`E#i^Ot= z#pGy5fU3ph?5~P;1gKg}`|Z->M^#iUrv1k0@v);nDykL}sut6JlXl>;qcgGncI`my z>^*}n4N$e1_FK3E*BzY^pqCw0i)p`IeEelc)neLj91p~f&ItBf$OEyncO<$rK-FT} zZz~^v-O&q!s>Ot=#kAkT9=Po2j9|Z+JrFxOBiL_i55&&i@94`yR4t;_*$GvPX}_6% z{4Im3#kAj6ABY{D5$reE2VzHO1pBS_f!NWGV87{peC+7DW52CG5ISlgP_>vEIwL^U zVruA&09A{rp)&$hEv803tK|KNCJzl&i-xL2+keX-yo0n8`=gSx4LgyYjG=1LPGl!@ z-Y^wRXWI$wWXKWwy!|hEVNkVbs9H31uSG-EqM>^&8mblz-D}ZMwP@&Gizvx4R4p2+ z77bO4hN?wF_gXYmEgHJlqM>Th(6@Ppszp@K8N2X6)uORoBz)b`r2(oI4ONSVszpQ9 zqM>RLg|3FGMMKr1p=!}kwP>hXG)LbNplZ=jwP>hXG*m6Jy*sKF4ONSVszpQhS~OHG z8oJk_WimBss9H2sEgHJlB0CX7)uN$l@%-^K@hU^R4ryyEoM|LW>hU^R4ryyEoM|LqHpyxsunY<7Bi|AGpZIdsunY< z7Bi|AGpZIdsunY<7SRM;M%7|Q)nZ1~Vn)?sM%7|Q)nZ1~Vn)?sM%7|Q)gqcJ&!}3= zs9MaZTFj_g%&1z-s9MaZTFj_g%&1z-s9Ho>OGedVM%7|Q)nZ1~Vn)?sMuA&K)l5cH z@fpqUWi)Ak3bf3=ie%q!u!|;kCdPK}@I6EBwU|-0m{GNuQMHI-(Tu9ajH<O_| z#f+-OjH<O_|#f+-OjH*SpheXw4M%7|Q)nZ1~Vn)?sM%7|Q)nZ1~Vn)?sM%5xa znL*WJM%7|Q)nZ1~Vn)?sM%7|Q)nZ1~Vn)?sM%5y_?m*RIM%7|Q)nZ1~Vn)?sM%7|Q z)nZ1~Vn)?sM%5zuW(IvjP*Am4P_A@%qyr` zET~#6s9G$jS}dqqET~#6s9G$jS}dqqET~#U-@6x7Ef!QQ7E~=3R4o=%Ef!QQ7E~=3 zR4o=%Ef!QQqA9Y1s>On;#e%BEf~v)Ws>On;#e%BEf~v)Ws>On;MKqgTP_On;#e%BEf~v)Ws>Ooxxq_OUf+qS4 znmt5~SYdM#?2AtJ?FqXiW9ND7-~r!}ixpLi6;+EBRf`o>ixpLi z6;+F9604$Wv7&0RqH3|CYO$hfv7&0RqH3|CYO$hfv7%}b%{Nz6Eml-5R#YukR4rCi zEml-5R#YukR4rCiEml-5qBNwUYO$hfv7&0RqH3|CYO$hfv7&0RqByUj;-{jF099O- zO-`~I5B4=G`)-C^@UgQx? z;)<$8bn3pMYVo{M16O-1suovNEv~3qTv4^SqH1wP)#8e(#T8YH=qh_f)#8e(#T8YH zE2x?;)<%p6;+EXsus~S(~7Fa6;+EXsuovN zEv~3qTv4^SqH1wP)#8e(#T8YHXhwKN)#8e(#T8YHE2x?;)<%p6;+EXsuovNEv_j2TTxGhI;)jc3T*0=&8M(0Y1ubF z>~fNwqp|}Z{4_N(UCti-gochf0#q%os9Ic6wYZ{caYfbQimJsGRf{XC7Ri19#mfy< ziw#wa4ONQ`Rf`Q(i|0xnaOh~LT5PCVY^Yjns9Hqp3>vBy8>$u?sumln78|M-8>$u? zsumln78|M-8>$x3$#p~3VnfwpL)BtK)nY@{VnfwpL)BtK)nY@{Vnfv;x(;rrT5PCV zY^Yjns9J2OT5PCVY^Yjns9J2OT5PCVL|<7oR4q1CEjCmwHdHM(R4q1CEjCmwHdHM( zR4q1CEuwFi8>$u?sumln78|M-8>$u?sumln78|M-8>$u?sus~iP(#&XL)BtK)nY@{ zVnfwpL)BtK)nY@{VnfwpL)9Xhvu&taY^Yjns9J2OT5PCVY^Yjns9J2OT5PCVY^Yj9 zc|}9jVnfwpL)BtK)nY@{VnfwpL)BtK)nY@{Vng>@WF-{Kl~@D8CRW*O4f_h1eXqnW zR@oUaJFJF3tIKY0=jFWBbFdRT96s6@9}b_`=#4$Rvxko+fQM^e*yy9bUVex^dYjS1 z;iEn9^TUTzy~E+zr#2kx9inHS+HkISh@O3F!@=GmdiJReCwqtJ*{3$#)jf|s9M&BU z&yKa>wC)f+JJyEdx{uI))(+9LV{JHFJ4DZpwc&8>5IsBAhSRm@ z(TDT0!{OPnHXN88qG!k2aAJ0do*iq$k=Y@7cB~C&W{2q6u{PX-J&!&dgB=dfj<~RW)`o+yL-g!e8&1Lw(X(T1I0}0neK_1Y9G)F(!|B!`dUmW0$6JT!*|9d9Zylm% z$J%hfb%>rFYr~b*^XS8w)#32$SQ`$l4$-q?Z8)_$M9+@3;n?aBJv-KhbF1gkhm)wo z;n}e^97P?XXUE!b7Ilc89c#m3)FFCytPQ78hv?C<_Kc%Q;j)BpjrQ!~Ea7{j9S)B^ zwM+Q!Xou+0r*;Y7AMFr5`qVDrJER?=XP;WuMlIp{m_5HZtc_a2cQQLfkIs;n@V(3q z(W5iuC44utL-gnjc?sXo?0NL8japb6wS@0FcDOj~SR20Y*dcm$tPS6J><~RW)`ssr zc8H!GYgrq$gzpgc{Nk`SY6;&X><~RW)`ssAc8H!GYs2>mJ4DZpwc$I3J&&HXQ44FM zmhk<&4i|?VYr}W+Iz-Qowc&eu9inH)+VEYy4$-q?Eo-Be@V&R5UmVs(E#bRw9inH) z+VK6i4$-q?ZTJpchv?a{Hhd4R=h3q^YGG~E624Q`;o`7kZTMbUhv?a{Hhj0NL-g!e z8@^xGA$oSKWo^_FzN^*qi^JNeC4672L-g!e8@{vEA$oSK4d2`95IsBAhVO3mJbKnf zEv$`N!uOy$TpV_+4c~?85IsBAhVMglh@Ks5!*`-OM9+@3tc_a2_ltUdaabF*gzp%2 zh@Ks5!}p9jM9+@3;k!m1qG!iicHgMP+Ni|ZsKnZ+6#n7JXLn9wZBz>XbmSp=^r=nZ zACEjlk3O|2{PU5|qi1bYVr^7nZB$}yRATpyO011a?7mTnwNZ)PH!86yu{J8P zHY&0EMkUrpC3fGa#M-FD?i-a@8yvHM0P)Age zsKnZ+#M-FD+Ni|t8AgesKo9Yl~@~<*nOiCYom;{QO4RRV{MeN zHp*BVWvq=dcHbytZIrS5Mj30PjI~k5+9+dfl(9C-SQ}-mjWX6o8Ed1AwNb{}C}VAu zu{O$B8)dAGGS)^JYom;{QO4RRV{MeNHp*BVWvq=d)ZXKj?THp*EW<*bcz)ZXKj?THp*EW<*bcz)ZXKj?THp*EW<*bcz)gsggcXMfB$i@hz^cYnTl`{uvCyZiRV+rK}2_x+orr^eC-VOIUD!4V8^{r-v);u(i<1>+?A&>db zH4FF_(DXI^>lSQlG&h=P{V7_0 z_HS#zKaHlZ>EGIbTccS+iB_Kd8yxUO)ATj{n;dLwG1+B|THw}b z<~9AREo^Hvjp^Trfg7Wl*Yt13z^&2DYx*~2;MQnX>;0QDaBDPUbpOT-+#1ciMsyZU z-C6&_4g1sdFWtbW(eyR_%QtXqG<{9~5)RxNO<&W$j03mku@~5CYX86V&yUrAe|>xZ zZ-2UZc=645x36E{{pXGU&;R|as=$9~|L2;QUH$iYU+AT}Ex*-&EAFG~3qSJDRe}F- z``34Gzkhw$4f?_Xb~WK^YCl&Ke&H|DXWquq38&uX@e@wHy+@dE>TL|3aO&-S!-P|B zWA%hnZ|@~0oO&D6C!Bg)@=rMRwgS+fdfsE*4eo?S&+A9K)t%7ldHrawGM&)sdHraw zMV-*=t`MtLM!}yV;)5>Us0gzPI{>R?nM{&b!OH z3)f%oZp9~@dft4roAL>*o;O_2n-k9K%I3`oKc1ZYh5X-_Z~t@r3$VYG|I4Ku@_(hC z|Eu4=|0+lT{+R#U|Hwa=fqVW1*u!7i<@?T`^8QG^k3Q2bzek^HH}9uUwHu%4Q|;#U z^r?2^4}GfLjEX+hZfv7ZwHwUnQ|(4C`c%7lH+(AHW3|th(T&peOZ$8n-6~zbw9j|Z ztN`+OGNDqX*{&sWi{()CNadwrjOg0J5`-$b8E*Rk*ONp!1p^QC>hh;Ef`zO>H= z(XGO2s?ejHst8`E=uOd&aMkzHIlLAH-lb;Ue5voLBWRUwzSQ^D;ajEqsrnu} zf=21)OS*AUcl&)j87Ij198dAj<^O)#<>*({{{48qkLUkVEqVX_SNpO4?_{Un@_)zQ ziunI``M-Z*E32n|=BK~3&;Pmoa{doH(}(##?o`Tiec0)8?fP&w$eruMWh!^B59fp2 zxjtNyaOe7Pn!%mx!y%bF*N1~Lcdic?tJt}Ok8=NR?4i5PSgk4ns zhOFWm3cD!bB@}k@!V4(u;)OlDu!9%&@4D_?_gGypCDfSJzlFs2ffq~()+$}UbitHh ztN7fcD(DqX*H!IWUF()CNad;Nkbp|0NrQ-YmJ*RfwPC0MI;^Q8->1Z$OUzI4Hq zV6D>4moAtRs#Urh@PaA98l_tcUoa(Dt8`E=rpObOO1-F!)R zS6nb9)b+byO0ZMu=1Uh$3DzpzaCO0yV6D>4moAtRtW~=C(gjmOwMzF>T`(nBqjdA7 z{{1HYRaVi>m-=^{1g+AIj74~}>*h=SyH0}NN;hB9UBCW~C;s~N?>q@krJFDH?>z}x zrJFDH?>-4yrR$ga_n!o<(#@CpccA!I=^E9)2PJ5fZobsN3ngfkZobsN4<%@oZobsN z6D4SsZoKc`ixRX-H(wH-N#|7i_oMiqs((XDa4KED)W0PqXqB#C>fe+Sv`W`6^>0fF zTJ_jl5dQxo^&fx!xBvOSuHRhWzCZux=8GleUt0k3@%oQbDyP$K|2IF^f0SH)`~DO0 zbANEm4}Ro-3I~7iw{|+XEk9QQ^1*qD#*8__jcDE^ti$pp*Z|fANv=|4aM#yN7qzZ_a6-7oY#f zuO0l)=l=NkpFJ)6@xS~y{-5Urztw+!dkT=Xb|${Lg9qnF>(NxgN)V(aE%Ddz@~F+V(gsi_Z2qFpJLiI5dmS_Bc3; z&h|Jwi_Z2qK#R`yI7Exi_Bcpu&L(}hx7tuq)3j}qc3fM9sOU;cJFZ3AaV^r0Yms(b zi?rifq#c*^aog%1HILg?`Y1Y^_DV`;Tw4vK=t@dEuB{SM)HZ3ywbet4+9vI|qz}MW z7^%6CTWzH1Y|@TvtB@46O*-S+>Lf*Nlg_xdYDrPsq%*FqW>V8O=`FccPKuf)T`F$% zlcKgs2b`^nQq(r-jBBf<6tzt{Y0??jR>LW3n{>vtRdR~jCY^C@^_-%%Nhb3Ea|5ZAG-Yokb&{s+t)xoQl)aVINGfkesgQK#Qby_{T{*%?b)+ljR#F@3%DI(P zM!IrtrMy3+EK;f>vvO`FHIZ34oJmDwR?e-Y9x^NER#FYA{K=#ivMA?PQVF?zjY9I0 zOzI$ua_p2U$fBHENeyIC&aISJQ3@cX{;?|OR#N>~m2)epeXPoXS}Gr_a&9GckIIHg z)#Iw1TS?91s(f!H6_2ZOZYA}Ot8!K#)sCxjZY4dJQVdC@qZB$eWp5>Aj!oHHNs(hy z_Eu8j*dBY3unmoWJJ7#$1wOX_chL6VAK(8wS352F>H8mc`f2~~({JDZ_?LdiU;96P z_CE0X{p-8W{+MqTdt0vW{(STEn}6?bjs4!=Kl|+u{ydjv2S|f1%4OzEmzGS-nJ&HE zVa{}E`oWy((t91|OqV7e%$Y8|(P7SXY0ANz>C!6?=1iBCE6AB-5AMZ%yqPBH+9d0Y zF7DmUTs>K5baBsarcJWW=;B`8Oq*n#(ZxNwkv7R5r;8P2Op|1t(Z%W#rcJV$(Z#*E znKsF0Mi=+sX4)j18C~3an`x75W+c1GFP4xX7w=;I2y-S`SAMZ_glUs(W^}P;glUs( zW^}PyglUs(W^}Pm1Zk7(*1K3C!Zb-XGrCwC!n8>?Xk4rcVcH~{8C|RgVcH~{8C|Rd zVcH~{8Od&liv=La#k*Mj!JJ7pGrCy!!L&&>JYB5#VA>>`8C|UPVA>>`8C|UMK-whx znJ(6MFin!pj4oDoFl~~}j4sx6Fl~|zgcqwhm^R5~Mi=Wim^R5~MzV`{v3vu$co%Co zm@~;{Mi;9#m^R5~Mi=Wfm^R6V+>4bOOq*mgql+~fNSkC$x>%jTG)Xoyx>%RNv`IEI zx>%9Hv`IEIx>$?Bv`IF&U#!Al+9aD9=}si$l@}{7ke}&d*#&bZS!Z;y;DTwBtTVb; zYQeNg))`$avS8Yz>LXO^44E>zyhk_VF++IuWHTd~^iD}OGm=T~lw>m_ne?>jAWB?ne76ca z`_KGNvSr%E4gZlg$!-Xl^iDGAoi1+j&-_fX8SKUF{h2oD?mgK%BboG07q|3heka+? zNcJxPd>@CfUsB;@164n{;=%Y?&sL-s$3Y{mAbmyLd9`on+EG zUEHFd`I%%hql=sKGi{R1j4p1=&$LPRJjs@6GU=^*CohxU>Eb5*$gL-n-s$4@`%If; zGoyHV8G55MDoq>~C)+DUgqs5(76sg{Fw zQgwQEQY{DVr0VqSq?#DX?2pN$x5=cpEwau?CcRB2y-g;)O(wlfCcRB2y-g;)WjxSi z(%WRx+ho$)l5A!qlinti-X@dYCX?PKd#h|R=`9n)rdtr|W_!A>T=+Z5mT9s*y-g;) zO}3}E$)vZ*_Vkt&8JJ9Zn@oC}OnRG4dYf!dZ*$o@BboFzne;Z1{IUZL&SR zt;n)zGU;tH>8)Gi%A~i+q_@eWx5@VOHktG`*`D4elinuV)7z>nwJ($2y4PSb>1{IU zZ8GU?GU;uyJ-tmPy-l{Kx5=cp$@cU%ne^7ZDVIralSyxrNpF)$Z` zCcRCzr?<(Zw<|yG(k!OnUoCck8LLb}p0NE|cCalin_q-m-MN%cQr< zq_@kYx67or%cQr<|yG(k!OnSRadb><| zyG(k!OnS@Ep39`S%cQrFqMFqM78ZLJIkbZmPzj{lipdjr+1b~ z?<|wvSth-+OnS>QTv;Z)vrKwtne@&w>78ZLJIkbZmPzj{lipb-y|YYu%aY((CcU#v zdS{vR&NAtpWzsv#q<5A{?<|wvSth-+OnS?lOqNOSER)_@CcU#vdS{vR&NAtpWzsv# zq<5A{?<|wvGD??a(mTtfca}--ER)_@CcU!^_GX#d%QBLaW%>3jOQy-RZPvXi*S!bR zEpl};Sl#d>y!TXldS{vR&NAtpWzt&)^0Q2OXPNZQGU=UV(mTtfca}--ER)_@CcU#v zdS{vR*7f8v>78ZLJIkbZmPzj{lipb-y|YYuXPNZQGU=UV(pxv#lS%I^lipb-y|YYu zXPNZQGU=UV(mTtfca}--ER){4^`K08XPNZQGU=UV(mTtfca}--ER)_@CcU#vdS{vR zR=wGiy)h~>>0M;fyU3(>kxB0&lio!py^BnG7n$@fGU;7p(p&aYxyYnCD0q<4`??;?}lMJBzAOnMiY^e!^#U1ZX`$fS3X zNpD$dy2zw=kxB0&lio!py^BnG7n$@fGU;7p(!0o{caceNnO-R}>0M;fyU3(>kxB0& zlio!py^BnG7n$@fGU;7p(pv`HicESJne;9)>0M;fyU3(>kxB0&Bg94K1B(p*6j^3p zW?+jhZ>M`HuY2RBTTbid%DRD2c$e2t@87(6_}!NeZ$AIS`xpN2cMtDwuHV1D`|OYT zX0f;B`tHv+KivNH+xy$M-+l4<7cbua{o%XsZ`YUK+~0nE^W~5K^Xs4f=I8(MGTCWe zmYY*Mop-8vc{=}j`RZ?XuOF`O@9u7jOnMiY^p-LCB9q=lCcTSHdKa1WE;8v|WYW9H zq<4`??;?}lMJBy<{i{rR7n$@fGU;7p(!0o{cacf&B9q=lCcTSHdKa1W)=j}=(!0o{ zcacf&B9q=lCcTSHdKa1WE;8v|WYW9Hq_=8`D_f*hne?tQ>0M>gyUL_@l}Ya^lipP( zy{k-mSDEy#GU+XQk5gsRyUL_@l}Ya^lipP(y{k-mSDEy#GU;7q(!0u}x9nAKl}Ya^ zlipP(y{k-mSDEy#GU;7q(!0u}ca=%+DwE!_Y*3X+?<$ktRVKZwOnO(D^sX}LU1id{ z%A|LdN$)C?-m-*ol}Ya^lipP(y{k-mSDEy#GU;7q(!0u}ca=%+DwEzaQ&MHpyUL_@ zl}Ya^lipP(y{k-mSDEy#GU;7q(!0u}w~U=tne?tQ>0M>gyUL_@l}Ya^lipP(y{il> zSD8etGG-)`sa1yvbQwb3>wn$5J>9}xH!If-xx(jZ6&1Ktne>+7^(vFzRVKZwOnO(D z^sX}LU1id{%A|LdN$)C?-c=^Ob-kWUdRLkBt}^LeWzxIKq<57`?<$ktRVKZwOnO(D z^j6LFWb>j`CcRgg^j>AsdzDG=RVKYxne<*|(tDLj?^PzfSDEydEuB`G^geGRAzHPs zGU>g_r1vV5-m6S{uQKVq%B1%ylisULdduFftTO4n%B1%ylisULdap9+y~?EbDwE!; zOnR>}>AlLNx9kP%DwE!;OnR>}>AlLN_bQX#t4w;YGU>g_r1vV5-m6S{%W^cUOnR>} z>AlLN_bQX#t4w;YGU>g_r1vV5-m6S{uQKT^OXIFG>AlLN_bQX#t4w;YGU>g_r1vV5 z-m6S{uQKVq%A~hUdaN?(y~?EbDwE!;OnR>}>AlLN_bQX#t4w;YGU>g_q_+%%tupDo z%B1%ylisULdap9+y~?EbDwE!;OnR>}7QM>Mqs)u0I?<%#3c6gRF43TSi>P}=pqu~e z26y3;+f-CWccPQ5Nit_7lisULdap9+y~?EbDwE!;OnR>}>AlLNx2i9a6`eGh^lmcg z-DJ|c$)tCaN$>M#)I`HzlS%I;lip1xy_-yW%j(jaOnNt&^lmcg-DJ|c$)tCaN$)0; z-c2UGn@oB)ne>(|XqrrVH<|QqGU?r9(!0r|caur)CX?PxCcT?XdN-N$mc8?6GU?r9 z(!0r|caur)CX?PxCcT?XdN-N$ZZhfJWYSyqTC~Zecaur)CX?PxCcT?XdN-N$ZZhfJ zWYW9Iq<51^Z&~J~$)tCaN$)0;-c2UGn@oB)ne=Wl>D^?~yUCeD$}x*ALhCcXv0-36;@@Q<3!`hf^g`_a07Vx>LFC zR3wi+T)?7hRn?t}+%Erc0m*ue=chvH^5Imv-U7wThgRu&3zRP(TBYkPP{4d>m9Doy z3G<;B0tLW_R_W#zC;>jSN;kJa5%8f^y150abDy^g<++Db>E;$F&^@$DH@85E z?x9t>xdn=J53SP8El{TWyj3WlJ)BB6w?F~yp;fxM1xjcStdN`GCZh;ci zL#uRi3lyOqTBVy?pbYiUD&5=yg{X&C>E;%w5PjY%l!zWqrJGxzNc7Mu-P{6YqK8)L z<`yUvJ+w+Uw?L`r^H!mR^KdHN+yX_MhgRw47AWI9v`RO(Kq2R$Rl2zaN;wa$lFcp7 zm{Y~u7Id52XBTim_qjcsO4eH}=uWqXR>^vc1>NiR&?;GPv7o!%9$KaAEp(Q1LHD73 zegSosb3u2aJ+w-;5?Ro_Xb-KDtwa`dH`+t1WGj&c-H-Npt8|ug(OJ#~-6{5P0d;c= zbg$S$t8{YdZ$w@PO@7oFu?(7jd<7f?61KzCa`v`RO(K=)fcv`RO(KzCd{v`RO( z&{@s}-3#^k1=Ly21>Ftx&??>B0^JYw&??>B0^Jey&??>B0^Jk!d8>4mbJ1DO1>LRm zZ~=953v|EIL#uRi3v|cQL#uRi3v|!YL#uRi3!UX$(A`9zUqGGZT+sbQ53SP8EzliB z53SP8Ezmth53SP8Ezn&>pSMb9ITxMfT+sbK4;N53w?KFNJhVzTw?Oy&JhVzTw?KFO zJhVzTx6oP61>KMH`32Nj&IR3(^Ux~Y+ydQ`^Ux~Y+ydQ|^Ux~Y+(Nf6XVO{Dq_dn! zXF1bJHn&JR%b8BHxkb`h&UBK^Et1Z1rju-Lk#v?b=`3f`S z=`3f`?aP^TmNV%rXVO{Dq_dn!w=ZYXSGtJJI?I`KmNV%r zXVO{Dq}!J>=`3f`?aP^TmNV)0GtJJ zI?I`K`*J3oI?I`KmNV%rXVUG< znRJ#j>GtJJI?I`K`*J3oI?I`KmNV)0x_vp5 z&T=N5GtJJI?I`K`*J3ox_vp5&T=N*zMM&CIZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0 zIZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCd zO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mex zXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0 zIZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCd zO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mexXE{x0IZbCdO=mex zXE{x0IbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MG zIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNt zU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6 zXE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MG zIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNt zU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIbCNtU1vF6XE|MGIkV1kW}W5C zI?I`LmNV-tXVzKHth1b1XF0RZa%P?7%sR`Nb(S;hEN9kP&aAVXS!X%3&T?j*<;*(E znRS*k>nvy1S+Q1vz%FHIkV1kW}W5CI?I`L zmNV-tXVzKHth1b1XF0RZa%P?7%sR`Nb(S;hEN9kP&aAVXS!X%3&T?j*<;*(EnRS*k z>nvy1S+Q1vz%FHIkV1kW}W5CI?I`LmNV-t zXVzKHth1b1XF0RZa%P?7%sR`Nb(S;hEN9kP&aAVXS!X%3&T?j*<;*(EnRS*k>nvy1 zS+Q1vz%FHIkV1kW}W5CI?I`Lmb2(AXVF>C zqO+VuXE}?`au%KCEIP|sbe6N|EN9VK&Z4uNMQ1sS&TCqO+Vu zXE}?`au%KCEIP|sbe6N|EN9VK&Z4uNMQ1sS&TCqO+VuXE}?` zau%KCEIP|sbe6N|EN9VK&Z4uNMQ1sS&TCqO+VuXF03Ra#o$? ztUAkCb(XX0EN9hO&Z@JVRcAS?&T>|r<*Yi(S#_4P>MUo~S|r<*Yi(S#_4P>MUo~S|r<*Yi(S#_4P>MUo~SUn)mhF}XE|4$`^bJbbSRcAR@o#kA0mUGov&Q)hQSDoctb(VA0SUn)mhF}XE|4$`^bKNZG)o*|PyIq0bzyEewlHH_JN-y5t-@STu^TlU3 z%PIZk=F2ZX{p;;Rzy&#-|D5+{yE=b*%Ff%(UY$-$PL|I9{OR8;r&_KS_w&vZi!Ui( zofc2ou0A;hock9K@&4Vz?foa8T-|-$((;l2^*2Aflf?6p5Qu;E<(D_t?_b}2_Q!m) z*xPb__vf3pe}DMy``h*9H}|(+pKpSf$xi19+0Ch)&il{4{P8Dy`RZ?XuOF`O@9u7v zPw(HndHCJ%VNOxU2|G|&%TiR+Eb2fWb)Xz|pb~YU8g-yG>Od{%KvDN&U&f6-`F)W# ze4wZ&q%W|BBZ_)L`r>FfqNpdNFKmV*ih4r&qGU9psN1M7U4{dSdS?5wV>qIyF=SgZ z3=jOhxNEp+QBO!O%o>g;>IvyZRihC_{rbK1YB->%C#0864M!AqjiSboUeGk$w5TVf z7b6Wv6!nDkLZZ=#qJFeqZZsTF)DzN6g@z-FdO~`c&u~Oh>yTceGaOOWI;5A^3`Z2T z4vD(fy~Jj;WxarA_&`w;$X@(198pwv)C*UJBZ?YBdeO;nL{Vc%FBln(DC!dRvXbF| zqQ;P35;7c7)ELssIff&O>eqTH#&ASYV@NNf7>+1v42f!4FQpi5Sud0rK2X#c(u*91 zBZ?YBdV#`lL{S}NFD@94C~6Gpg#n`xMFrH$2ZjTR8bdn$AC4$$4C!otIHIUAq?7yM zh@yJh&gF+AiW)=0juVwJ>>z&h5_RrAe4wZ&q*L|bh@zg5&di4+ih4pi5g(2y=*|wB zi9}^XQrG5#7bta0K763COBD2=rLMe(n-=t-r7pCGBMN%ZQrFeP5k);{K~tj?m6}gc zsrl4(^ysyYO3kM(n};KcdP2HN9*!vL3F)GEIHIU0B&wqg8;rUc9=$|Ssrl5s?{Gvx z3;q<9nooUK)#0W^Jt2KZ)ZvJto{*>+L{w@%^*v8VFHux#KK1=dha-x5LZVXhsqZ8@ z+_b1Cr0)Vc98uI067{1+rRG!L=X3NDMWyCb-=lLlqOgk{HOq=h&8NOM=I}KNdPkf3 zzLujAMP2Kt)O?Cc&8NO|U%K`M-(-N^nDbEBMSTZqh?uAsrl6RFC4u_Q7wx~&8Mi;eCj(C4qu|E zF{JMMnooV7x#6ZoJt2LMxZ#MRo{+x3+i*lt zPe|XJZ7`ys2}IPpUW-c2TU2V^`X+9pSGsS}HhiF<2hIBSYQqr)J!saqMjMVO=s~l- zt=VWqK^?zErRFUvHE&U=d5cQTTU2V^qN?UCDm8CWRr3~=nzyK``KauiMWyB~Dm8CW zsdC*2KOj269s0Xyi63AiQ32_3d=-oW6?hsI{0`+Ntq}p6EruB zVlq)mCJMZWTG~&hypTETUYdtUJgE9Q933l0Tg9pqG(K%jERCVQCn6-v6!e0 zE225^?UqNv-bOSa*FqMnd0*@h#E8bi8d8;&Sy z4C#_>IHIUAq)WEph@!@js9(QJw$YY#$u@kTsE5Bxw&94P#*i-Ah9im^L%L)ejwosj z>5^?UqNpFOJ&>P0$`8ICAw4CzE>IHIUAq$8Q(h@!@jsB7Jw%xKFx zlo>uy)ELsK%y2|e-BHIf!x2S|A)U(%M-(-NbTBg-QPd^sWM(*^s4=9Ync;|{#*oft zh9ipV*E*aTjwosj>2zi|qNp(>s%2fzjJB-vnc)LPjUgS-3`Z0-hIB$R98pvU*%8ff zL{Vc%)Nz6yw4j?Y>V;UZ>>T{PqF#sfy3Wyff*!G6)j1kZ&;!%s;vPt=RA zUKchRPtBwCHtVgYg7i=BW2wQLnptUD)X52^uYWUD#+mQNLHv zBr57fSFZ~jy*@#sMbPDmddb!6!Uiu-)GMxD7d9GC&}h-?!Up3Bn)~!RqtS4JdY@ir zG#XD(@6+pyM&pV4y@CeiUS~AeuAp#wozZAGL2uZ5ozZAKL61eRGa8L2=&|T^Mx*fr zJr=#rXf&RnK{@I$L5jN984X^ZUS~9VoS?^|*BOn*6ZBa0I-}8ef*y-rXEYkmRJ6yu0K=%GkloG z0cZF)kMpqM<2+{0hL7_&;0zzj}EVzbydSRlrBre?bet z)A>(vzsfaRNp^KQEjd{_|MRCmwVd|rztfNFKR^FhpPbmH|KsTI-#y&kfAY!I-PbKG zA35PSKfIH~^N|pUfA!UczV!BoZ*Cu6|L2<*Z~y-A-S@Za%Wv*)zrH#DFLzr()Wv>w zDfr=%^4A`*uL|Q1*=NFWhwP(&+#&l!DejPcu!=imAGqQU*$1(>L-qkJ?vQZKU|2#e|QsbhGe;%Kfu5nSuKaWof+PEm=pU0O^t28R zYxmQVIPQ?~9nsT5IWEfh@$qT-92aH$`1rJ_j*BvWeB28B1Lv#pKlmn}BZG_|A2$yj z8D)Imwrvg&8D;$V`2V(Z$0h&(APfZe-`Xl0yxlDz;R*#2cRO9C?C0a22!ttn%D%Jp kkbPgX-}=~Us7ZhT0RjXF5FkK+009C72oNAZfB*pk2Vyk%!2kdN literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_postEE_lumicorr.json b/Analysis/HiggsTauTauRun2/input/json/2022_postEE_lumicorr.json new file mode 100644 index 000000000..8d48db6d9 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_postEE_lumicorr.json @@ -0,0 +1,240 @@ +{ + "359569": [[1, 83]], + "359575": [ + [1, 13], + [15, 24], + [26, 35], + [37, 46], + [48, 57], + [59, 68], + [70, 89] + ], + "359595": [[17, 289]], + "359597": [[1, 94]], + "359602": [[1, 74]], + "359609": [[1, 25]], + "359612": [[1, 12]], + "359685": [[1, 132]], + "359686": [[1, 934]], + "359691": [[19, 139]], + "359693": [[1, 604]], + "359694": [[1, 1080]], + "359699": [[28, 1883]], + "359718": [[1, 199], [202, 368]], + "359750": [[52, 186]], + "359751": [[15, 1007]], + "359762": [[44, 266]], + "359763": [[1, 410], [412, 459]], + "359764": [[28, 1111]], + "359776": [[104, 432]], + "359806": [[42, 410]], + "359808": [[1, 46]], + "359809": [[1, 43]], + "359810": [[1, 183]], + "359812": [[1, 227]], + "359814": [[1, 366]], + "359870": [[2, 7]], + "359871": [[1, 228]], + "359887": [[30, 502]], + "359899": [[19, 305]], + "359903": [[1, 12]], + "359998": [ + [24, 757], + [759, 759], + [761, 785], + [787, 1918] + ], + "360017": [[42, 81]], + "360019": [[1, 153], [155, 1489]], + "360075": [[20, 429], [462, 809]], + "360090": [[1, 794]], + "360116": [[77, 432]], + "360125": [ + [132, 195], + [200, 262], + [264, 324] + ], + "360126": [[1, 35], [37, 370]], + "360127": [[1, 201]], + "360128": [[1, 163]], + "360130": [[87, 91]], + "360131": [[1, 378]], + "360141": [[25, 775]], + "360224": [[43, 259]], + "360225": [[1, 169], [171, 356]], + "360295": [[35, 771], [774, 1475]], + "360296": [[1, 519]], + "360327": [[32, 383]], + "360390": [[5, 36], [38, 76]], + "360391": [[1, 4]], + "360392": [[1, 61]], + "360393": [[1, 124]], + "360400": [[40, 119]], + "360413": [[37, 126]], + "360428": [[50, 123]], + "360432": [[1, 28]], + "360435": [[1, 37], [43, 53]], + "360437": [[1, 40]], + "360438": [[1, 6]], + "360458": [[45, 215], [234, 246]], + "360459": [[1, 1332]], + "360460": [[1, 1077]], + "360486": [[45, 322]], + "360490": [[8, 936], [940, 1187]], + "360491": [[3, 157], [159, 179]], + "360737": [[10, 27]], + "360761": [[34, 190]], + "360794": [[37, 713]], + "360795": [[1, 395]], + "360797": [[1, 5]], + "360820": [[1, 885]], + "360825": [[1, 358]], + "360826": [[1, 91], [93, 119]], + "360856": [[42, 97]], + "360874": [[31, 82]], + "360876": [[1, 341]], + "360887": [[12, 134]], + "360888": [[1, 289]], + "360889": [[1, 36]], + "360890": [[1, 216], [219, 506]], + "360892": [[1, 296]], + "360895": [[1, 700]], + "360919": [[39, 836]], + "360920": [[1, 4]], + "360921": [[1, 218]], + "360927": [ + [37, 331], + [333, 581], + [583, 1930] + ], + "360941": [[1, 72]], + "360942": [[1, 344]], + "360945": [[1, 91]], + "360946": [[1, 364]], + "360948": [[1, 119]], + "360950": [ + [1, 179], + [181, 468], + [470, 718] + ], + "360951": [[1, 190]], + "360991": [[41, 270]], + "360992": [[1, 99]], + "361020": [[41, 439]], + "361044": [[42, 166]], + "361045": [[1, 322], [325, 947]], + "361050": [[1, 10]], + "361052": [[1, 65]], + "361054": [[1, 461]], + "361083": [[6, 59]], + "361091": [[38, 418]], + "361105": [[41, 448]], + "361106": [[1, 31]], + "361107": [[1, 156]], + "361108": [[1, 7]], + "361110": [[1, 197]], + "361188": [[46, 186]], + "361193": [[1, 29]], + "361195": [[1, 20]], + "361197": [[1, 960], [991, 2177]], + "361223": [[36, 730]], + "361239": [[35, 1090]], + "361240": [[1, 1015]], + "361272": [[1, 125]], + "361280": [[1, 267]], + "361283": [[1, 26]], + "361284": [[1, 36]], + "361297": [[38, 970]], + "361303": [[36, 2275]], + "361318": [[34, 490]], + "361319": [[1, 162]], + "361320": [[1, 382]], + "361333": [[36, 337]], + "361361": [[60, 105]], + "361362": [[1, 31]], + "361363": [[1, 27]], + "361365": [[1, 489]], + "361366": [[1, 201]], + "361400": [[41, 496]], + "361417": [[38, 1659]], + "361443": [[40, 2313]], + "361468": [[3, 1883]], + "361475": [ + [37, 614], + [617, 836], + [838, 838], + [840, 1121], + [1124, 1273] + ], + "361512": [[36, 849], [851, 1573]], + "361569": [[35, 598]], + "361573": [[1, 305]], + "361579": [[43, 905]], + "361580": [[1, 422]], + "361957": [[1, 1163]], + "361971": [[38, 731], [733, 2381]], + "361989": [[37, 112], [114, 151]], + "361990": [[1, 204]], + "361994": [[1, 116]], + "362058": [[39, 209]], + "362059": [[1, 63]], + "362060": [[1, 83], [85, 85]], + "362061": [[1, 314]], + "362062": [[1, 207]], + "362063": [[1, 70], [77, 92]], + "362064": [ + [93, 218], + [220, 508], + [510, 1067] + ], + "362087": [[1, 13], [15, 146]], + "362091": [[1, 1418]], + "362104": [[33, 147]], + "362105": [[1, 179]], + "362106": [[1, 78]], + "362107": [[1, 785]], + "362148": [[39, 758]], + "362153": [[1, 140]], + "362154": [[1, 784]], + "362159": [[29, 35]], + "362161": [[1, 120]], + "362163": [[1, 65]], + "362166": [[1, 331]], + "362167": [[1, 646]], + "362437": [[1, 11], [73, 92]], + "362439": [[8, 34], [249, 1595]], + "362597": [[1, 139]], + "362614": [[1, 153]], + "362615": [[1, 149]], + "362616": [[1, 351]], + "362617": [[1, 244]], + "362618": [[1, 274]], + "362653": [[40, 305]], + "362654": [[1, 26]], + "362655": [ + [1, 140], + [143, 144], + [148, 338] + ], + "362657": [[1, 198]], + "362695": [[39, 372]], + "362696": [ + [1, 1112], + [1114, 1120], + [1122, 1124], + [1126, 1128], + [1130, 1132], + [1134, 1140], + [1142, 1144], + [1146, 1148], + [1150, 1152], + [1154, 1720] + ], + "362698": [[1, 374]], + "362720": [[52, 949]], + "362727": [[4, 7]], + "362728": [[1, 388]], + "362757": [[32, 93]], + "362758": [[1, 205]], + "362760": [[1, 728]] +} diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_preEE.json b/Analysis/HiggsTauTauRun2/input/json/2022_preEE.json new file mode 100644 index 000000000..d14f72a6b --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_preEE.json @@ -0,0 +1,197 @@ +{ + "355374": [[59, 84]], + "355381": [[1, 358]], + "355418": [[1, 41]], + "355419": [[1, 98]], + "355429": [[42, 89]], + "355435": [[42, 84]], + "355442": [[1, 22]], + "355443": [[1, 240]], + "355444": [[1, 153]], + "355445": [[1, 242]], + "355454": [[38, 118]], + "355455": [[1, 40]], + "355456": [[1, 501]], + "355558": [[122, 409]], + "355559": [[1, 162]], + "355679": [[27, 85]], + "355680": [[1, 1651]], + "355768": [[82, 126]], + "355769": [[1, 541]], + "355862": [[121, 133]], + "355863": [[1, 14]], + "355870": [[31, 67]], + "355871": [[1, 5]], + "355872": [ + [1, 738], + [758, 995], + [997, 1217] + ], + "355892": [[14, 197]], + "355912": [[43, 200]], + "355913": [[1, 106]], + "355921": [[38, 442]], + "355933": [[75, 448]], + "355942": [[24, 189], [193, 213]], + "355988": [[43, 80], [85, 90]], + "355989": [[1, 24]], + "355998": [[1, 35]], + "355999": [[1, 9]], + "356004": [[1, 19]], + "356005": [[1, 187]], + "356043": [[1, 65]], + "356071": [[37, 191]], + "356074": [[1, 26]], + "356075": [[1, 125]], + "356076": [[1, 153]], + "356077": [[1, 472]], + "356135": [[46, 71]], + "356309": [[61, 184]], + "356316": [[45, 185]], + "356322": [[1, 19]], + "356323": [[1, 67], [69, 650]], + "356371": [[41, 50], [67, 72]], + "356375": [[35, 77], [101, 125]], + "356378": [ + [8, 208], + [210, 219], + [221, 304] + ], + "356381": [[1, 1193]], + "356383": [[1, 33]], + "356385": [[1, 30]], + "356386": [[1, 122]], + "356426": [[39, 60]], + "356428": [[1, 300]], + "356433": [[1, 310]], + "356434": [[1, 13]], + "356435": [[1, 3], [8, 8]], + "356446": [[10, 623]], + "356523": [[32, 410], [412, 898]], + "356531": [[1, 56]], + "356563": [ + [36, 113], + [117, 164], + [168, 177], + [181, 191], + [193, 194], + [199, 343] + ], + "356568": [[42, 64]], + "356569": [[1, 251]], + "356570": [[1, 98]], + "356576": [[58, 240]], + "356578": [[1, 865]], + "356580": [[1, 51]], + "356582": [[7, 104]], + "356614": [[1, 10], [16, 19], [27, 62]], + "356615": [[1, 1297]], + "356619": [[1, 173]], + "356810": [[44, 163]], + "356811": [[1, 44]], + "356812": [[1, 107]], + "356813": [[1, 54]], + "356814": [ + [1, 305], + [307, 309], + [311, 366], + [368, 672] + ], + "356815": [[1, 54], [176, 219]], + "356824": [[1, 66]], + "356908": [[1, 26]], + "356919": [[29, 116]], + "356937": [[20, 138]], + "356946": [[1, 129]], + "356947": [[1, 350]], + "356948": [[1, 88]], + "356949": [[1, 94]], + "356951": [[1, 274]], + "356954": [[1, 364]], + "356955": [[1, 380]], + "356956": [[1, 109]], + "356968": [[81, 252]], + "356969": [[1, 236]], + "356970": [[1, 366]], + "356998": [[1, 5]], + "356999": [[1, 58]], + "357000": [[1, 50]], + "357001": [[1, 183]], + "357079": [[1, 22]], + "357080": [[1, 616]], + "357081": [[1, 759]], + "357101": [[54, 103]], + "357102": [[1, 13], [43, 134]], + "357104": [[1, 4]], + "357106": [[1, 60]], + "357112": [[1, 519]], + "357268": [[70, 143]], + "357271": [[1, 20], [22, 1570]], + "357328": [[44, 105]], + "357329": [[1, 668]], + "357330": [[1, 157]], + "357331": [[1, 23]], + "357332": [[1, 430]], + "357333": [[1, 207]], + "357401": [[48, 664]], + "357406": [[50, 174]], + "357438": [[35, 230]], + "357440": [[1, 354]], + "357441": [[1, 83]], + "357442": [[1, 1373]], + "357447": [[40, 50]], + "357472": [[34, 60]], + "357478": [[43, 50]], + "357479": [[1, 1046]], + "357482": [[1, 5], [21, 220]], + "357538": [[39, 63]], + "357542": [[1, 11], [13, 252]], + "357550": [[1, 36]], + "357610": [[63, 253]], + "357611": [[1, 412]], + "357612": [[1, 736]], + "357613": [[1, 256]], + "357688": [[1, 380]], + "357696": [[31, 319], [341, 410]], + "357697": [[1, 39]], + "357698": [[1, 63]], + "357699": [[1, 30]], + "357700": [[1, 757]], + "357701": [[1, 310]], + "357705": [[1, 202]], + "357706": [[1, 161]], + "357720": [[32, 92]], + "357732": [[30, 157]], + "357734": [[1, 300]], + "357735": [ + [1, 387], + [389, 821], + [823, 947], + [949, 1126] + ], + "357754": [[29, 145]], + "357756": [[1, 425]], + "357757": [[1, 9]], + "357758": [[1, 85]], + "357759": [[1, 70]], + "357766": [[10, 124]], + "357777": [[1, 85]], + "357778": [[1, 359]], + "357779": [[1, 74]], + "357781": [[1, 10]], + "357802": [[43, 206]], + "357803": [[1, 153]], + "357804": [[1, 23]], + "357805": [[1, 88]], + "357806": [[1, 56]], + "357807": [[1, 244]], + "357808": [[1, 17]], + "357809": [[1, 41]], + "357812": [[1, 50]], + "357813": [[1, 293]], + "357814": [[1, 212]], + "357815": [[1, 944]], + "357898": [[1, 313]], + "357899": [[1, 637]], + "357900": [[1, 516]] +} diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runB.json b/Analysis/HiggsTauTauRun2/input/json/2022_runB.json new file mode 100644 index 000000000..36b4f2084 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runB.json @@ -0,0 +1,21 @@ +{ + "355374": [[59, 84]], + "355381": [[1, 358]], + "355418": [[1, 41]], + "355419": [[1, 98]], + "355429": [[42, 89]], + "355435": [[42, 84]], + "355442": [[1, 22]], + "355443": [[1, 240]], + "355444": [[1, 153]], + "355445": [[1, 242]], + "355454": [[38, 118]], + "355455": [[1, 40]], + "355456": [[1, 501]], + "355558": [[122, 409]], + "355559": [[1, 162]], + "355679": [[27, 85]], + "355680": [[1, 1651]], + "355768": [[82, 126]], + "355769": [[1, 541]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runC.json b/Analysis/HiggsTauTauRun2/input/json/2022_runC.json new file mode 100644 index 000000000..156b37b12 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runC.json @@ -0,0 +1,128 @@ +{ + "355862": [[121, 133]], + "355863": [[1, 14]], + "355870": [[31, 67]], + "355871": [[1, 5]], + "355872": [ + [1, 738], + [758, 995], + [997, 1217] + ], + "355892": [[14, 197]], + "355912": [[43, 200]], + "355913": [[1, 106]], + "355921": [[38, 442]], + "355933": [[75, 448]], + "355942": [[24, 189], [193, 213]], + "355988": [[43, 80], [85, 90]], + "355989": [[1, 24]], + "355998": [[1, 35]], + "355999": [[1, 9]], + "356004": [[1, 19]], + "356005": [[1, 187]], + "356043": [[1, 65]], + "356071": [[37, 191]], + "356074": [[1, 26]], + "356075": [[1, 125]], + "356076": [[1, 153]], + "356077": [[1, 472]], + "356135": [[46, 71]], + "356309": [[61, 184]], + "356316": [[45, 185]], + "356322": [[1, 19]], + "356323": [[1, 67], [69, 650]], + "356371": [[41, 50], [67, 72]], + "356375": [[35, 77], [101, 125]], + "356378": [ + [8, 208], + [210, 219], + [221, 304] + ], + "356381": [[1, 1193]], + "356383": [[1, 33]], + "356385": [[1, 30]], + "356386": [[1, 122]], + "356426": [[39, 60]], + "356428": [[1, 300]], + "356433": [[1, 310]], + "356434": [[1, 13]], + "356435": [[1, 3], [8, 8]], + "356446": [[10, 623]], + "356523": [[32, 410], [412, 898]], + "356531": [[1, 56]], + "356563": [ + [36, 113], + [117, 164], + [168, 177], + [181, 191], + [193, 194], + [199, 343] + ], + "356568": [[42, 64]], + "356569": [[1, 251]], + "356570": [[1, 98]], + "356576": [[58, 240]], + "356578": [[1, 865]], + "356580": [[1, 51]], + "356582": [[7, 104]], + "356614": [[1, 10], [16, 19], [27, 62]], + "356615": [[1, 1297]], + "356619": [[1, 173]], + "356810": [[44, 163]], + "356811": [[1, 44]], + "356812": [[1, 107]], + "356813": [[1, 54]], + "356814": [ + [1, 305], + [307, 309], + [311, 366], + [368, 672] + ], + "356815": [[1, 54], [176, 219]], + "356824": [[1, 66]], + "356908": [[1, 26]], + "356919": [[29, 116]], + "356937": [[20, 138]], + "356946": [[1, 129]], + "356947": [[1, 350]], + "356948": [[1, 88]], + "356949": [[1, 94]], + "356951": [[1, 274]], + "356954": [[1, 364]], + "356955": [[1, 380]], + "356956": [[1, 109]], + "356968": [[81, 252]], + "356969": [[1, 236]], + "356970": [[1, 366]], + "356998": [[1, 5]], + "356999": [[1, 58]], + "357000": [[1, 50]], + "357001": [[1, 183]], + "357079": [[1, 22]], + "357080": [[1, 616]], + "357081": [[1, 759]], + "357101": [[54, 103]], + "357102": [[1, 13], [43, 134]], + "357104": [[1, 4]], + "357106": [[1, 60]], + "357112": [[1, 519]], + "357268": [[70, 143]], + "357271": [[1, 20], [22, 1570]], + "357328": [[44, 105]], + "357329": [[1, 668]], + "357330": [[1, 157]], + "357331": [[1, 23]], + "357332": [[1, 430]], + "357333": [[1, 207]], + "357401": [[48, 664]], + "357406": [[50, 174]], + "357438": [[35, 230]], + "357440": [[1, 354]], + "357441": [[1, 83]], + "357442": [[1, 1373]], + "357447": [[40, 50]], + "357472": [[34, 60]], + "357478": [[43, 50]], + "357479": [[1, 1046]], + "357482": [[1, 5], [21, 220]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runD.json b/Analysis/HiggsTauTauRun2/input/json/2022_runD.json new file mode 100644 index 000000000..fd973df50 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runD.json @@ -0,0 +1,52 @@ +{ + "357538": [[39, 63]], + "357542": [[1, 11], [13, 252]], + "357550": [[1, 36]], + "357610": [[63, 253]], + "357611": [[1, 412]], + "357612": [[1, 736]], + "357613": [[1, 256]], + "357688": [[1, 380]], + "357696": [[31, 319], [341, 410]], + "357697": [[1, 39]], + "357698": [[1, 63]], + "357699": [[1, 30]], + "357700": [[1, 757]], + "357701": [[1, 310]], + "357705": [[1, 202]], + "357706": [[1, 161]], + "357720": [[32, 92]], + "357732": [[30, 157]], + "357734": [[1, 300]], + "357735": [ + [1, 387], + [389, 821], + [823, 947], + [949, 1126] + ], + "357754": [[29, 145]], + "357756": [[1, 425]], + "357757": [[1, 9]], + "357758": [[1, 85]], + "357759": [[1, 70]], + "357766": [[10, 124]], + "357777": [[1, 85]], + "357778": [[1, 359]], + "357779": [[1, 74]], + "357781": [[1, 10]], + "357802": [[43, 206]], + "357803": [[1, 153]], + "357804": [[1, 23]], + "357805": [[1, 88]], + "357806": [[1, 56]], + "357807": [[1, 244]], + "357808": [[1, 17]], + "357809": [[1, 41]], + "357812": [[1, 50]], + "357813": [[1, 293]], + "357814": [[1, 212]], + "357815": [[1, 944]], + "357898": [[1, 313]], + "357899": [[1, 637]], + "357900": [[1, 516]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runE.json b/Analysis/HiggsTauTauRun2/input/json/2022_runE.json new file mode 100644 index 000000000..668e4a0f1 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runE.json @@ -0,0 +1,86 @@ +{ + "359569": [[1, 83]], + "359571": [ + [1, 4], + [7, 28], + [30, 39], + [41, 50], + [52, 61], + [63, 72], + [74, 83], + [85, 94], + [96, 105], + [107, 116], + [118, 127], + [129, 138], + [140, 149], + [151, 160], + [162, 169] + ], + "359575": [ + [1, 13], + [15, 24], + [26, 35], + [37, 46], + [48, 57], + [59, 68], + [70, 89] + ], + "359595": [[17, 289]], + "359597": [[1, 94]], + "359602": [[1, 74]], + "359609": [[1, 25]], + "359612": [[1, 12]], + "359661": [[42, 233]], + "359685": [[1, 132]], + "359686": [[1, 934]], + "359691": [[19, 139]], + "359693": [[1, 604]], + "359694": [[1, 1080]], + "359699": [[28, 1883]], + "359718": [[1, 199], [202, 368]], + "359750": [[52, 186]], + "359751": [[15, 1007]], + "359762": [[44, 266]], + "359763": [[1, 410], [412, 459]], + "359764": [[28, 1111]], + "359776": [[104, 432]], + "359806": [[42, 410]], + "359808": [[1, 46]], + "359809": [[1, 43]], + "359810": [[1, 183]], + "359812": [[1, 227]], + "359814": [[1, 366]], + "359870": [[2, 7]], + "359871": [[1, 228]], + "359887": [[30, 502]], + "359899": [[19, 305]], + "359903": [[1, 12]], + "359998": [ + [24, 757], + [759, 759], + [761, 785], + [787, 1918] + ], + "360017": [[42, 81]], + "360019": [[1, 153], [155, 1489]], + "360075": [[20, 429], [462, 809]], + "360090": [[1, 794]], + "360116": [[77, 432]], + "360125": [ + [132, 195], + [200, 262], + [264, 324] + ], + "360126": [[1, 35], [37, 370]], + "360127": [[1, 201]], + "360128": [[1, 163]], + "360130": [[87, 91]], + "360131": [[1, 378]], + "360141": [[25, 775]], + "360224": [[43, 259]], + "360225": [[1, 169], [171, 356]], + "360295": [[35, 771], [774, 1475]], + "360296": [[1, 519]], + "360327": [[32, 383]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runE_lumicorr.json b/Analysis/HiggsTauTauRun2/input/json/2022_runE_lumicorr.json new file mode 100644 index 000000000..f30266859 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runE_lumicorr.json @@ -0,0 +1,68 @@ +{ + "359569": [[1, 83]], + "359575": [ + [1, 13], + [15, 24], + [26, 35], + [37, 46], + [48, 57], + [59, 68], + [70, 89] + ], + "359595": [[17, 289]], + "359597": [[1, 94]], + "359602": [[1, 74]], + "359609": [[1, 25]], + "359612": [[1, 12]], + "359685": [[1, 132]], + "359686": [[1, 934]], + "359691": [[19, 139]], + "359693": [[1, 604]], + "359694": [[1, 1080]], + "359699": [[28, 1883]], + "359718": [[1, 199], [202, 368]], + "359750": [[52, 186]], + "359751": [[15, 1007]], + "359762": [[44, 266]], + "359763": [[1, 410], [412, 459]], + "359764": [[28, 1111]], + "359776": [[104, 432]], + "359806": [[42, 410]], + "359808": [[1, 46]], + "359809": [[1, 43]], + "359810": [[1, 183]], + "359812": [[1, 227]], + "359814": [[1, 366]], + "359870": [[2, 7]], + "359871": [[1, 228]], + "359887": [[30, 502]], + "359899": [[19, 305]], + "359903": [[1, 12]], + "359998": [ + [24, 757], + [759, 759], + [761, 785], + [787, 1918] + ], + "360017": [[42, 81]], + "360019": [[1, 153], [155, 1489]], + "360075": [[20, 429], [462, 809]], + "360090": [[1, 794]], + "360116": [[77, 432]], + "360125": [ + [132, 195], + [200, 262], + [264, 324] + ], + "360126": [[1, 35], [37, 370]], + "360127": [[1, 201]], + "360128": [[1, 163]], + "360130": [[87, 91]], + "360131": [[1, 378]], + "360141": [[25, 775]], + "360224": [[43, 259]], + "360225": [[1, 169], [171, 356]], + "360295": [[35, 771], [774, 1475]], + "360296": [[1, 519]], + "360327": [[32, 383]] +} diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runF.json b/Analysis/HiggsTauTauRun2/input/json/2022_runF.json new file mode 100644 index 000000000..9bf9f8200 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runF.json @@ -0,0 +1,138 @@ +{ + "360390": [[5, 36], [38, 76]], + "360391": [[1, 4]], + "360392": [[1, 61]], + "360393": [[1, 124]], + "360400": [[40, 119]], + "360413": [[37, 126]], + "360428": [[50, 123]], + "360432": [[1, 28]], + "360435": [[1, 37], [43, 53]], + "360437": [[1, 40]], + "360438": [[1, 6]], + "360458": [[45, 215], [234, 246]], + "360459": [[1, 1332]], + "360460": [[1, 1077]], + "360486": [[45, 322]], + "360490": [[8, 936], [940, 1187]], + "360491": [[3, 157], [159, 179]], + "360737": [[10, 27]], + "360761": [[34, 190]], + "360794": [[37, 713]], + "360795": [[1, 395]], + "360797": [[1, 5]], + "360820": [[1, 885]], + "360825": [[1, 358]], + "360826": [[1, 91], [93, 119]], + "360856": [[42, 97]], + "360874": [[31, 82]], + "360876": [[1, 341]], + "360887": [[12, 134]], + "360888": [[1, 289]], + "360889": [[1, 36]], + "360890": [[1, 216], [219, 506]], + "360892": [[1, 296]], + "360895": [[1, 700]], + "360919": [[39, 836]], + "360920": [[1, 4]], + "360921": [[1, 218]], + "360927": [ + [37, 331], + [333, 581], + [583, 1930] + ], + "360941": [[1, 72]], + "360942": [[1, 344]], + "360945": [[1, 91]], + "360946": [[1, 364]], + "360948": [[1, 119]], + "360950": [ + [1, 179], + [181, 468], + [470, 718] + ], + "360951": [[1, 190]], + "360991": [[41, 270]], + "360992": [[1, 99]], + "361020": [[41, 439]], + "361044": [[42, 166]], + "361045": [[1, 322], [325, 947]], + "361050": [[1, 10]], + "361052": [[1, 65]], + "361054": [[1, 461]], + "361083": [[6, 59]], + "361091": [[38, 418]], + "361105": [[41, 448]], + "361106": [[1, 31]], + "361107": [[1, 156]], + "361108": [[1, 7]], + "361110": [[1, 197]], + "361188": [[46, 186]], + "361193": [[1, 29]], + "361195": [[1, 20]], + "361197": [[1, 960], [991, 2177]], + "361223": [[36, 730]], + "361239": [[35, 1090]], + "361240": [[1, 1015]], + "361272": [[1, 125]], + "361280": [[1, 267]], + "361283": [[1, 26]], + "361284": [[1, 36]], + "361297": [[38, 970]], + "361303": [[36, 2275]], + "361318": [[34, 490]], + "361319": [[1, 162]], + "361320": [[1, 382]], + "361333": [[36, 337]], + "361361": [[60, 105]], + "361362": [[1, 31]], + "361363": [[1, 27]], + "361365": [[1, 489]], + "361366": [[1, 201]], + "361400": [[41, 496]], + "361417": [[38, 1659]], + "361443": [[40, 2313]], + "361468": [[3, 1883]], + "361475": [ + [37, 614], + [617, 836], + [838, 838], + [840, 1121], + [1124, 1273] + ], + "361512": [[36, 849], [851, 1573]], + "361569": [[35, 598]], + "361573": [[1, 305]], + "361579": [[43, 905]], + "361580": [[1, 422]], + "361957": [[1, 1163]], + "361971": [[38, 731], [733, 2381]], + "361989": [[37, 112], [114, 151]], + "361990": [[1, 204]], + "361994": [[1, 116]], + "362058": [[39, 209]], + "362059": [[1, 63]], + "362060": [[1, 83], [85, 85]], + "362061": [[1, 314]], + "362062": [[1, 207]], + "362063": [[1, 70], [77, 92]], + "362064": [ + [93, 218], + [220, 508], + [510, 1067] + ], + "362087": [[1, 13], [15, 146]], + "362091": [[1, 1418]], + "362104": [[33, 147]], + "362105": [[1, 179]], + "362106": [[1, 78]], + "362107": [[1, 785]], + "362148": [[39, 758]], + "362153": [[1, 140]], + "362154": [[1, 784]], + "362159": [[29, 35]], + "362161": [[1, 120]], + "362163": [[1, 65]], + "362166": [[1, 331]], + "362167": [[1, 646]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/2022_runG.json b/Analysis/HiggsTauTauRun2/input/json/2022_runG.json new file mode 100644 index 000000000..6415f0aaf --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/2022_runG.json @@ -0,0 +1,38 @@ +{ + "362437": [[1, 11], [73, 92]], + "362439": [[8, 34], [249, 1595]], + "362597": [[1, 139]], + "362614": [[1, 153]], + "362615": [[1, 149]], + "362616": [[1, 351]], + "362617": [[1, 244]], + "362618": [[1, 274]], + "362653": [[40, 305]], + "362654": [[1, 26]], + "362655": [ + [1, 140], + [143, 144], + [148, 338] + ], + "362657": [[1, 198]], + "362695": [[39, 372]], + "362696": [ + [1, 1112], + [1114, 1120], + [1122, 1124], + [1126, 1128], + [1130, 1132], + [1134, 1140], + [1142, 1144], + [1146, 1148], + [1150, 1152], + [1154, 1720] + ], + "362698": [[1, 374]], + "362720": [[52, 949]], + "362727": [[4, 7]], + "362728": [[1, 388]], + "362757": [[32, 93]], + "362758": [[1, 205]], + "362760": [[1, 728]] +} \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden_lumicorr.json b/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden_lumicorr.json new file mode 100644 index 000000000..cd2bf72ba --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/Cert_Collisions2022_355100_362760_Golden_lumicorr.json @@ -0,0 +1,435 @@ +{ + "355374": [[59, 84]], + "355381": [[1, 358]], + "355418": [[1, 41]], + "355419": [[1, 98]], + "355429": [[42, 89]], + "355435": [[42, 84]], + "355442": [[1, 22]], + "355443": [[1, 240]], + "355444": [[1, 153]], + "355445": [[1, 242]], + "355454": [[38, 118]], + "355455": [[1, 40]], + "355456": [[1, 501]], + "355558": [[122, 409]], + "355559": [[1, 162]], + "355679": [[27, 85]], + "355680": [[1, 1651]], + "355768": [[82, 126]], + "355769": [[1, 541]], + "355862": [[121, 133]], + "355863": [[1, 14]], + "355870": [[31, 67]], + "355871": [[1, 5]], + "355872": [ + [1, 738], + [758, 995], + [997, 1217] + ], + "355892": [[14, 197]], + "355912": [[43, 200]], + "355913": [[1, 106]], + "355921": [[38, 442]], + "355933": [[75, 448]], + "355942": [[24, 189], [193, 213]], + "355988": [[43, 80], [85, 90]], + "355989": [[1, 24]], + "355998": [[1, 35]], + "355999": [[1, 9]], + "356004": [[1, 19]], + "356005": [[1, 187]], + "356043": [[1, 65]], + "356071": [[37, 191]], + "356074": [[1, 26]], + "356075": [[1, 125]], + "356076": [[1, 153]], + "356077": [[1, 472]], + "356135": [[46, 71]], + "356309": [[61, 184]], + "356316": [[45, 185]], + "356322": [[1, 19]], + "356323": [[1, 67], [69, 650]], + "356371": [[41, 50], [67, 72]], + "356375": [[35, 77], [101, 125]], + "356378": [ + [8, 208], + [210, 219], + [221, 304] + ], + "356381": [[1, 1193]], + "356383": [[1, 33]], + "356385": [[1, 30]], + "356386": [[1, 122]], + "356426": [[39, 60]], + "356428": [[1, 300]], + "356433": [[1, 310]], + "356434": [[1, 13]], + "356435": [[1, 3], [8, 8]], + "356446": [[10, 623]], + "356523": [[32, 410], [412, 898]], + "356531": [[1, 56]], + "356563": [ + [36, 113], + [117, 164], + [168, 177], + [181, 191], + [193, 194], + [199, 343] + ], + "356568": [[42, 64]], + "356569": [[1, 251]], + "356570": [[1, 98]], + "356576": [[58, 240]], + "356578": [[1, 865]], + "356580": [[1, 51]], + "356582": [[7, 104]], + "356614": [[1, 10], [16, 19], [27, 62]], + "356615": [[1, 1297]], + "356619": [[1, 173]], + "356810": [[44, 163]], + "356811": [[1, 44]], + "356812": [[1, 107]], + "356813": [[1, 54]], + "356814": [ + [1, 305], + [307, 309], + [311, 366], + [368, 672] + ], + "356815": [[1, 54], [176, 219]], + "356824": [[1, 66]], + "356908": [[1, 26]], + "356919": [[29, 116]], + "356937": [[20, 138]], + "356946": [[1, 129]], + "356947": [[1, 350]], + "356948": [[1, 88]], + "356949": [[1, 94]], + "356951": [[1, 274]], + "356954": [[1, 364]], + "356955": [[1, 380]], + "356956": [[1, 109]], + "356968": [[81, 252]], + "356969": [[1, 236]], + "356970": [[1, 366]], + "356998": [[1, 5]], + "356999": [[1, 58]], + "357000": [[1, 50]], + "357001": [[1, 183]], + "357079": [[1, 22]], + "357080": [[1, 616]], + "357081": [[1, 759]], + "357101": [[54, 103]], + "357102": [[1, 13], [43, 134]], + "357104": [[1, 4]], + "357106": [[1, 60]], + "357112": [[1, 519]], + "357268": [[70, 143]], + "357271": [[1, 20], [22, 1570]], + "357328": [[44, 105]], + "357329": [[1, 668]], + "357330": [[1, 157]], + "357331": [[1, 23]], + "357332": [[1, 430]], + "357333": [[1, 207]], + "357401": [[48, 664]], + "357406": [[50, 174]], + "357438": [[35, 230]], + "357440": [[1, 354]], + "357441": [[1, 83]], + "357442": [[1, 1373]], + "357447": [[40, 50]], + "357472": [[34, 60]], + "357478": [[43, 50]], + "357479": [[1, 1046]], + "357482": [[1, 5], [21, 220]], + "357538": [[39, 63]], + "357542": [[1, 11], [13, 252]], + "357550": [[1, 36]], + "357610": [[63, 253]], + "357611": [[1, 412]], + "357612": [[1, 736]], + "357613": [[1, 256]], + "357688": [[1, 380]], + "357696": [[31, 319], [341, 410]], + "357697": [[1, 39]], + "357698": [[1, 63]], + "357699": [[1, 30]], + "357700": [[1, 757]], + "357701": [[1, 310]], + "357705": [[1, 202]], + "357706": [[1, 161]], + "357720": [[32, 92]], + "357732": [[30, 157]], + "357734": [[1, 300]], + "357735": [ + [1, 387], + [389, 821], + [823, 947], + [949, 1126] + ], + "357754": [[29, 145]], + "357756": [[1, 425]], + "357757": [[1, 9]], + "357758": [[1, 85]], + "357759": [[1, 70]], + "357766": [[10, 124]], + "357777": [[1, 85]], + "357778": [[1, 359]], + "357779": [[1, 74]], + "357781": [[1, 10]], + "357802": [[43, 206]], + "357803": [[1, 153]], + "357804": [[1, 23]], + "357805": [[1, 88]], + "357806": [[1, 56]], + "357807": [[1, 244]], + "357808": [[1, 17]], + "357809": [[1, 41]], + "357812": [[1, 50]], + "357813": [[1, 293]], + "357814": [[1, 212]], + "357815": [[1, 944]], + "357898": [[1, 313]], + "357899": [[1, 637]], + "357900": [[1, 516]], + "359569": [[1, 83]], + "359575": [ + [1, 13], + [15, 24], + [26, 35], + [37, 46], + [48, 57], + [59, 68], + [70, 89] + ], + "359595": [[17, 289]], + "359597": [[1, 94]], + "359602": [[1, 74]], + "359609": [[1, 25]], + "359612": [[1, 12]], + "359685": [[1, 132]], + "359686": [[1, 934]], + "359691": [[19, 139]], + "359693": [[1, 604]], + "359694": [[1, 1080]], + "359699": [[28, 1883]], + "359718": [[1, 199], [202, 368]], + "359750": [[52, 186]], + "359751": [[15, 1007]], + "359762": [[44, 266]], + "359763": [[1, 410], [412, 459]], + "359764": [[28, 1111]], + "359776": [[104, 432]], + "359806": [[42, 410]], + "359808": [[1, 46]], + "359809": [[1, 43]], + "359810": [[1, 183]], + "359812": [[1, 227]], + "359814": [[1, 366]], + "359870": [[2, 7]], + "359871": [[1, 228]], + "359887": [[30, 502]], + "359899": [[19, 305]], + "359903": [[1, 12]], + "359998": [ + [24, 757], + [759, 759], + [761, 785], + [787, 1918] + ], + "360017": [[42, 81]], + "360019": [[1, 153], [155, 1489]], + "360075": [[20, 429], [462, 809]], + "360090": [[1, 794]], + "360116": [[77, 432]], + "360125": [ + [132, 195], + [200, 262], + [264, 324] + ], + "360126": [[1, 35], [37, 370]], + "360127": [[1, 201]], + "360128": [[1, 163]], + "360130": [[87, 91]], + "360131": [[1, 378]], + "360141": [[25, 775]], + "360224": [[43, 259]], + "360225": [[1, 169], [171, 356]], + "360295": [[35, 771], [774, 1475]], + "360296": [[1, 519]], + "360327": [[32, 383]], + "360390": [[5, 36], [38, 76]], + "360391": [[1, 4]], + "360392": [[1, 61]], + "360393": [[1, 124]], + "360400": [[40, 119]], + "360413": [[37, 126]], + "360428": [[50, 123]], + "360432": [[1, 28]], + "360435": [[1, 37], [43, 53]], + "360437": [[1, 40]], + "360438": [[1, 6]], + "360458": [[45, 215], [234, 246]], + "360459": [[1, 1332]], + "360460": [[1, 1077]], + "360486": [[45, 322]], + "360490": [[8, 936], [940, 1187]], + "360491": [[3, 157], [159, 179]], + "360737": [[10, 27]], + "360761": [[34, 190]], + "360794": [[37, 713]], + "360795": [[1, 395]], + "360797": [[1, 5]], + "360820": [[1, 885]], + "360825": [[1, 358]], + "360826": [[1, 91], [93, 119]], + "360856": [[42, 97]], + "360874": [[31, 82]], + "360876": [[1, 341]], + "360887": [[12, 134]], + "360888": [[1, 289]], + "360889": [[1, 36]], + "360890": [[1, 216], [219, 506]], + "360892": [[1, 296]], + "360895": [[1, 700]], + "360919": [[39, 836]], + "360920": [[1, 4]], + "360921": [[1, 218]], + "360927": [ + [37, 331], + [333, 581], + [583, 1930] + ], + "360941": [[1, 72]], + "360942": [[1, 344]], + "360945": [[1, 91]], + "360946": [[1, 364]], + "360948": [[1, 119]], + "360950": [ + [1, 179], + [181, 468], + [470, 718] + ], + "360951": [[1, 190]], + "360991": [[41, 270]], + "360992": [[1, 99]], + "361020": [[41, 439]], + "361044": [[42, 166]], + "361045": [[1, 322], [325, 947]], + "361050": [[1, 10]], + "361052": [[1, 65]], + "361054": [[1, 461]], + "361083": [[6, 59]], + "361091": [[38, 418]], + "361105": [[41, 448]], + "361106": [[1, 31]], + "361107": [[1, 156]], + "361108": [[1, 7]], + "361110": [[1, 197]], + "361188": [[46, 186]], + "361193": [[1, 29]], + "361195": [[1, 20]], + "361197": [[1, 960], [991, 2177]], + "361223": [[36, 730]], + "361239": [[35, 1090]], + "361240": [[1, 1015]], + "361272": [[1, 125]], + "361280": [[1, 267]], + "361283": [[1, 26]], + "361284": [[1, 36]], + "361297": [[38, 970]], + "361303": [[36, 2275]], + "361318": [[34, 490]], + "361319": [[1, 162]], + "361320": [[1, 382]], + "361333": [[36, 337]], + "361361": [[60, 105]], + "361362": [[1, 31]], + "361363": [[1, 27]], + "361365": [[1, 489]], + "361366": [[1, 201]], + "361400": [[41, 496]], + "361417": [[38, 1659]], + "361443": [[40, 2313]], + "361468": [[3, 1883]], + "361475": [ + [37, 614], + [617, 836], + [838, 838], + [840, 1121], + [1124, 1273] + ], + "361512": [[36, 849], [851, 1573]], + "361569": [[35, 598]], + "361573": [[1, 305]], + "361579": [[43, 905]], + "361580": [[1, 422]], + "361957": [[1, 1163]], + "361971": [[38, 731], [733, 2381]], + "361989": [[37, 112], [114, 151]], + "361990": [[1, 204]], + "361994": [[1, 116]], + "362058": [[39, 209]], + "362059": [[1, 63]], + "362060": [[1, 83], [85, 85]], + "362061": [[1, 314]], + "362062": [[1, 207]], + "362063": [[1, 70], [77, 92]], + "362064": [ + [93, 218], + [220, 508], + [510, 1067] + ], + "362087": [[1, 13], [15, 146]], + "362091": [[1, 1418]], + "362104": [[33, 147]], + "362105": [[1, 179]], + "362106": [[1, 78]], + "362107": [[1, 785]], + "362148": [[39, 758]], + "362153": [[1, 140]], + "362154": [[1, 784]], + "362159": [[29, 35]], + "362161": [[1, 120]], + "362163": [[1, 65]], + "362166": [[1, 331]], + "362167": [[1, 646]], + "362437": [[1, 11], [73, 92]], + "362439": [[8, 34], [249, 1595]], + "362597": [[1, 139]], + "362614": [[1, 153]], + "362615": [[1, 149]], + "362616": [[1, 351]], + "362617": [[1, 244]], + "362618": [[1, 274]], + "362653": [[40, 305]], + "362654": [[1, 26]], + "362655": [ + [1, 140], + [143, 144], + [148, 338] + ], + "362657": [[1, 198]], + "362695": [[39, 372]], + "362696": [ + [1, 1112], + [1114, 1120], + [1122, 1124], + [1126, 1128], + [1130, 1132], + [1134, 1140], + [1142, 1144], + [1146, 1148], + [1150, 1152], + [1154, 1720] + ], + "362698": [[1, 374]], + "362720": [[52, 949]], + "362727": [[4, 7]], + "362728": [[1, 388]], + "362757": [[32, 93]], + "362758": [[1, 205]], + "362760": [[1, 728]] +} diff --git a/Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt b/Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt new file mode 100644 index 000000000..0280d62e8 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt @@ -0,0 +1,5 @@ +Cert_Collisions2022_355100_362760_Golden.json is the 2022 Run3 golden json that was divided up to eras (2022_runB.json, 2022_runC.json...) +for integrated luminosity calculations(brilcalc). The lumicorr files follow this correction: +'Due to a TCDS malfunction on Sep 29-30, no luminosity measurement is currently available for parts of runs 359571 and 359661. […] we +recommend to exclude these periods from analyses, to ensure that a proper integrated luminosity estimate is available.' +Found at: https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun3 \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/pileup/2022/pileup_2022_DYJetsToLL-LO_postEE_postEE.root b/Analysis/HiggsTauTauRun2/input/pileup/2022/pileup_2022_DYJetsToLL-LO_postEE_postEE.root new file mode 100644 index 0000000000000000000000000000000000000000..82952858d3fe691c685d3f49c4a77a86e006ba06 GIT binary patch literal 5225 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 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/pileup/2022/pu_2022_full.root b/Analysis/HiggsTauTauRun2/input/pileup/2022/pu_2022_full.root new file mode 100644 index 0000000000000000000000000000000000000000..d02cc4fdf1ef8b832c56434b0aa08333644e24a8 GIT binary patch literal 4343 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 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root new file mode 100644 index 0000000000000000000000000000000000000000..6062df5440ceaffb7a12c28afab5021e0f6af84d GIT binary patch literal 49939 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 z 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 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg new file mode 100644 index 000000000..93658ccdb --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg @@ -0,0 +1,8 @@ +[Defaults] +channel=tpzmm +outputfolder=TnP_Plots/ +era=22_preEE +folder=/vols/cms/eb921/output/output_tnp_2022/ +draw_hists=1 +tree_name=tagandprobe +tight_tag=False \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP_SF_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/TnP_SF_2022.cfg new file mode 100644 index 000000000..38ac008b8 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/TnP_SF_2022.cfg @@ -0,0 +1,4 @@ +[Defaults] +channel=tpzmm +year=2022 +input_folder=/vols/cms/eb921/DiTau/CMSSW_10_2_19/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTauRun2/TnP_Plots \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index e1c224abf..0fb6e8a70 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -174,7 +174,7 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/July0623_2022-postEE_MC_102X' +FILELIST='./filelists/Aug1123_2022-postEE_MC_102X' signal_mc = [ ] signal_vh = [ ] @@ -291,15 +291,27 @@ def getParaJobSubmit(N): if options.proc_bkg or options.proc_all: central_samples = [ - 'DYJetsToLL-LO_postEE', - 'GluGluHToTauTau_M125_postEE_v2', - 'GluGluHToTauTau_M125_postEE_v3', + 'DYJetsToLL-LO', + 'DYto2TautoMuTauh_M50', + 'GluGluHToTauTau_M125_v2', + 'GluGluHToTauTau_M125_v3', + 'TBbarQ_t-channel_4FS', 'TTTo2L2Nu', + 'TTto4Q', + 'TTtoLNu2Q', + 'TWminusto2L2Nu', + 'TWminustoLNu2Q', + 'TbarBQ_t-channel_4FS', + 'TbarWplusto2L2Nu', + 'TbarWplustoLNu2Q', 'VBFHToTauTau_M125_Poisson60KeepRAW', 'VBFHToTauTau_M125_v2_Poisson70KeepRAW', - 'WW_postEE', - 'WZ_postEE', - 'ZZ_postEE' + 'W1JetsToLNu-LO', + 'W2JetsToLNu-LO', + 'WJetsToLNu-LO', + 'WW', + 'WZ', + 'ZZ', ] @@ -320,7 +332,7 @@ def getParaJobSubmit(N): for sa in central_samples: JOB='%s_postEE_2022' % (sa) user='irandreo' - PREFIX='July0623_MC_124X_2022-postEE' + PREFIX='Aug1123_MC_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); job_num=0 diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index baa10d4de..fc30a71af 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -3,7 +3,7 @@ # python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs -# python scripts/htt_2022_preEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs +# python scripts/htt_2022_preEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' # importing libraries @@ -174,7 +174,7 @@ def getParaJobSubmit(N): temp='job:sequences:all:'+temp flatjsons.append(temp) -FILELIST='filelists/July0623_2022-preEE_MC_102X' +FILELIST='filelists/Aug1123_2022-preEE_MC_102X' signal_mc = [ ] signal_vh = [ ] @@ -205,9 +205,8 @@ def getParaJobSubmit(N): if options.proc_data or options.proc_all or options.calc_lumi: - data_samples = [] - data_eras = ['A','B','B_rereco','C','C_rereco','D','D_rereco'] - + data_samples = ["SingleMuonB_rereco","MuonC_rereco","MuonD_rereco"] + data_eras = [] for chn in channels: for era in data_eras: if 'mt' in chn or 'zmm' in chn: @@ -231,13 +230,13 @@ def getParaJobSubmit(N): if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] - DATAFILELIST="./filelists/July0623_2022-preEE_Data_102X" + DATAFILELIST="./filelists/Aug0223_2022-preEE_Data_102X" if options.calc_lumi: for sa in data_samples: JOB='%s_preEE_2022' % (sa) user='irandreo' - prefix='July0623_Data_124X_2022-preEE' + prefix='Aug0223_Data_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 500 @@ -257,7 +256,7 @@ def getParaJobSubmit(N): for sa in data_samples: JOB='%s_preEE_2022' % (sa) user='irandreo' - prefix='July0623_Data_124X_2022-preEE' + prefix='Aug0223_Data_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 30 @@ -290,14 +289,26 @@ def getParaJobSubmit(N): if options.proc_bkg or options.proc_all: central_samples = [ - 'DYJetsToLL-LO_summer', - 'GluGluHToTauTau_M125', - 'TTTo2L2Nu', - 'VBFHToTauTau_M125', - 'WW', - 'WZ', - 'ZZ', - 'ZZZ' + 'DYJetsToLL-LO_summer', + 'DYto2TautoMuTauh_M50', + 'GluGluHToTauTau_M125', + 'TBbarQ_t-channel_4FS', + 'TTTo2L2Nu', + 'TTto4Q', + 'TTtoLNu2Q', + 'TWminusto2L2Nu', + 'TWminustoLNu2Q', + 'TbarBQ_t-channel_4FS', + 'TbarWplusto2L2Nu', + 'TbarWplustoLNu2Q', + 'VBFHToTauTau_M125', + 'W3JetsToLNu-LO', + 'WJetsToLNu-LO', + 'WW', + 'WZ', + 'ZZ', + 'ZZZ' + ] @@ -317,7 +328,7 @@ def getParaJobSubmit(N): for sa in central_samples: JOB='%s_preEE_2022' % (sa) user='irandreo' - PREFIX='July0623_MC_124X_2022-preEE' + PREFIX='Aug1123_MC_124X_2022-preEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(FILELIST)s_%(sa)s.dat\", \"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(PREFIX)s/\"}, \"sequence\":{\"output_name\":\"%(JOB)s\",%(jetuncert_string)s}}' "%vars()); job_num=0 diff --git a/Analysis/HiggsTauTauRun2/scripts/params_2022.json b/Analysis/HiggsTauTauRun2/scripts/params_2022.json new file mode 100644 index 000000000..317792377 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/params_2022.json @@ -0,0 +1,168 @@ +{ + "DYJetsToLL-LO_postEE": { + "xs": 6241.39, + "evt": 96294972 + }, + "DYJetsToLL-LO_summer_preEE": { + "xs": 6241.39, + "evt": 27309719 + }, + "DYto2TautoMuTauh_M50_postEE": { + "xs": 53.28, + "evt": 10086123 + }, + "DYto2TautoMuTauh_M50_preEE": { + "xs": 53.28, + "evt": 2930689 + }, + "GluGluHToTauTau_M125_preEE": { + "xs": 3.26, + "evt": 297099 + }, + "GluGluHToTauTau_M125_v2_postEE": { + "xs": 3.26, + "evt": 290966 + }, + "GluGluHToTauTau_M125_v3_postEE": { + "xs": 3.26, + "evt": 287979 + }, + "TBbarQ_t-channel_4FS_postEE": { + "xs": 148.49, + "evt": 9575678 + }, + "TBbarQ_t-channel_4FS_preEE": { + "xs": 148.49, + "evt": 2737406 + }, + "TTTo2L2Nu_postEE": { + "xs": 97.93, + "evt": 84351063 + }, + "TTTo2L2Nu_preEE": { + "xs": 97.93, + "evt": 23607463 + }, + "TTto4Q_postEE": { + "xs": 419.22, + "evt": 181209002 + }, + "TTto4Q_preEE": { + "xs": 419.22, + "evt": 53403019 + }, + "TTtoLNu2Q_postEE": { + "xs": 405.22, + "evt": 268316441 + }, + "TTtoLNu2Q_preEE": { + "xs": 405.22, + "evt": 79262483 + }, + "TWminusto2L2Nu_postEE": { + "xs": 3.24, + "evt": 8326120 + }, + "TWminusto2L2Nu_preEE": { + "xs": 3.24, + "evt": 2435393 + }, + "TWminustoLNu2Q_postEE": { + "xs": 15.12, + "evt": 17031091 + }, + "TWminustoLNu2Q_preEE": { + "xs": 15.12, + "evt": 4755067 + }, + "TbarBQ_t-channel_4FS_postEE": { + "xs": 89.94, + "evt": 4818392 + }, + "TbarBQ_t-channel_4FS_preEE": { + "xs": 89.94, + "evt": 1376684 + }, + "TbarWplusto2L2Nu_postEE": { + "xs": 3.24, + "evt": 8548776 + }, + "TbarWplusto2L2Nu_preEE": { + "xs": 3.24, + "evt": 2401387 + }, + "TbarWplustoLNu2Q_postEE": { + "xs": 15.12, + "evt": 16922083 + }, + "TbarWplustoLNu2Q_preEE": { + "xs": 15.12, + "evt": 4490535 + }, + "VBFHToTauTau_M125_Poisson60KeepRAW_postEE": { + "xs": 0.2567, + "evt": 297607 + }, + "VBFHToTauTau_M125_preEE": { + "xs": 0.2567, + "evt": 298942 + }, + "VBFHToTauTau_M125_v2_Poisson70KeepRAW_postEE": { + "xs": 0.2567, + "evt": 295621 + }, + "W1JetsToLNu-LO_postEE": { + "xs": 62243.04, + "evt": 348456687 + }, + "W2JetsToLNu-LO_postEE": { + "xs": 62243.04, + "evt": 348456687 + }, + "W3JetsToLNu-LO_preEE": { + "xs": 62243.04, + "evt": 87900584 + }, + "WJetsToLNu-LO_postEE": { + "xs": 62243.04, + "evt": 348456687 + }, + "WJetsToLNu-LO_preEE": { + "xs": 62243.04, + "evt": 87900584 + }, + "WW_postEE": { + "xs": 80.23, + "evt": 53507682 + }, + "WW_preEE": { + "xs": 80.23, + "evt": 15641372 + }, + "WZ_postEE": { + "xs": 29.1, + "evt": 26987194 + }, + "WZ_preEE": { + "xs": 29.1, + "evt": 7530526 + }, + "ZZZ_preEE": { + "xs": 0.01591, + "evt": 1751542 + }, + "ZZ_postEE": { + "xs": 12.75, + "evt": 4096926 + }, + "ZZ_preEE": { + "xs": 12.75, + "evt": 1186822 + }, + "Muon": { + "lumi": 7423 + }, + "Tau": { + "lumi": 35181 + } +} \ No newline at end of file From cf29107a0f69a466845a44ca0e70111d9f3bec71 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 22 Aug 2023 14:45:09 +0100 Subject: [PATCH 36/50] Update 2022 config files --- .../scripts/config_2022_postEE.json | 4 ++-- .../HiggsTauTauRun2/scripts/config_2022_preEE.json | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json index c8c467b11..a3023ae6e 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -86,8 +86,8 @@ "hadronic_tau_selector" : 0, "run_gen_info" : false, "do_pu_wt" : true, - "data_pu_file" : "input/pileup/2018UL/PileupHistogram-goldenJSON-13tev-2018-69200ub-99bins.root", - "mc_pu_file" : "input/pileup/2018UL/pileup_2018_DYJetsToLL-LO.root", + "data_pu_file" : "input/pileup/2022/pu_2022_postEE.root", + "mc_pu_file" : "input/pileup/2022/pileup_2022_DYJetsToLL-LO_postEE_postEE.root", "run_trg_filter": false, "baseline": { "tau_scale_mode" : true, diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json index 7ca091520..a51553125 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_preEE.json @@ -6,7 +6,7 @@ "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], // "channels": ["mt","zmm","tt","et"], - "channels": ["tt"], + "channels": ["mt"], // "channels": ["tt","mt","et","em","zmm","zee"], "sequences": { "all": ["default"] @@ -22,7 +22,7 @@ "sequence": { // "do_mssm_higgspt" : true, // "mssm_higgspt_file" : "/vols/build/cms/gu18/CMSSW_8_0_25/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTau2/input/mssm_higgspt/higgs_pt_v2_mssm_mode.root", - "usePFMET" : true, + "usePFMET" : false, "do_gen_analysis" : false, "mc" : "mc2018", "era" : "data_2022_preEE", @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/eb921/output/tt_2022", + "output_folder" : "/vols/cms/eb921/output/output_mt_2022", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", @@ -86,8 +86,8 @@ "hadronic_tau_selector" : 0, "run_gen_info" : false, "do_pu_wt" : true, - "data_pu_file" : "input/pileup/2018UL/PileupHistogram-goldenJSON-13tev-2018-69200ub-99bins.root", - "mc_pu_file" : "input/pileup/2018UL/pileup_2018_DYJetsToLL-LO.root", + "data_pu_file" : "input/pileup/2022/pu_2022_preEE.root", + "mc_pu_file" : "input/pileup/2022/pileup_2022_DYJetsToLL-LO_summer_preEE.root", "run_trg_filter": false, "baseline": { "tau_scale_mode" : true, @@ -191,8 +191,8 @@ "max_extra_muons": 1, "do_tau_anti_muon": true, "do_tau_anti_elec":true, - "do_ff_weights" : true, - "do_ff_systematics": true, + "do_ff_weights" : false, + "do_ff_systematics": false, "ff_categories" :"inclusive", "ff_file" : "input/fake_factors/fakefactors_ws_mt_lite_2018.root", "ff_fracs_file" : "" From b26a7ae12f56715beefd43d7b92b2f84a36640a1 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 22 Aug 2023 16:46:06 +0100 Subject: [PATCH 37/50] Set correct datasets in TnP.py --- Analysis/HiggsTauTauRun2/scripts/TnP.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP.py b/Analysis/HiggsTauTauRun2/scripts/TnP.py index cef8e6acc..b9561ee7c 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP.py @@ -974,7 +974,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent elif options.era == 'UL_18': data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] elif options.era == '22_preEE': - data_samples = ['SingleMuonA_rereco_preEE','SingleMuonB_rereco_preEE','SingleMuonC_rereco_preEE','MuonD_rereco_preEE'] + data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] if options.channel == 'tpzee': if options.era == 'UL_16preVFP': data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] From a2b4b68b8b5b1d476ac66a1b9877d19508a4b6ec Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 22 Aug 2023 16:59:22 +0100 Subject: [PATCH 38/50] Update TnP config file --- Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg index 93658ccdb..5749b649b 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/TnP_2022.cfg @@ -2,7 +2,6 @@ channel=tpzmm outputfolder=TnP_Plots/ era=22_preEE -folder=/vols/cms/eb921/output/output_tnp_2022/ +folder=/vols/cms/eb921/test_output/output_tpzmm_2022/ draw_hists=1 -tree_name=tagandprobe -tight_tag=False \ No newline at end of file +tree_name=tagandprobe \ No newline at end of file From 80319e7c3d06dde2b53a782d2e0778596c383267 Mon Sep 17 00:00:00 2001 From: Endre Date: Tue, 22 Aug 2023 17:05:06 +0100 Subject: [PATCH 39/50] Add histogram delete --- Analysis/HiggsTauTauRun2/scripts/TnP_SF.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py b/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py index 4342f061e..5a539f60d 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP_SF.py @@ -285,5 +285,9 @@ canvas.SaveAs("{}/{}_SF_{}_{}_{}.pdf".format(plots_folder,file_name,name,h_SF.GetYaxis().GetBinLowEdge(j),h_SF.GetYaxis().GetBinUpEdge(j))) canvas.Update() canvas.Close() - + del canvas + del histo1 + if options.embed: del histo2 + del h_SF + if options.embed: del h_SF_EMB From ae1547cf575355f8e0bc499f00cbdfeceb9a72a8 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 23 Aug 2023 11:16:16 +0100 Subject: [PATCH 40/50] Update HiggsTauTauPlot_Run3.py --- .../scripts/HiggsTauTauPlot_Run3.py | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py index bf1b33f0f..d330b1c3b 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py @@ -64,7 +64,7 @@ "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, - "no_qcd_subtract": False, "tt_qcd_sel_num": 0,"scale_by_bin":False + "no_qcd_subtract": False, "tt_qcd_sel_num": 3,"scale_by_bin":False } @@ -503,7 +503,7 @@ cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>25&&pt_1<23)||(trg_singlemuon&&pt_1>23)))' if options.era in ['tauid2017']: cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && pt_1>25 && trg_singlemuon &&pt_2>20)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18']: + if options.era in ['cpsummer17','UL_17','cp18','UL_18','22']: cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>32&&pt_1<25)||(trg_singlemuon&&pt_1>25)) && wt<2)' if options.era in ['tauid2016']: cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon && pt_1>23)' @@ -626,7 +626,7 @@ elif options.channel == 'zmm': cats['baseline'] = '(iso_1<0.15 && iso_2<0.15)' if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18']: cats['baseline'] = '(pt_1>25 && iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' + if options.era in ['cpsummer17','UL_17','cp18','UL_18','22']: cats['baseline'] = '(pt_1>25 && iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' elif options.channel == 'zee': cats['baseline'] = '(iso_1<0.1 && iso_2<0.1)' if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.1 && iso_2<0.1 && trg_singleelectron && fabs(wt)<2)' @@ -1585,29 +1585,30 @@ data_samples = ['TauA','TauB','TauC','TauD'] if options.era in ['22']: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - #ztt_samples = ['DYJetsToLL-LO'] - else: - ztt_samples = ['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] + # if (options.DY_NLO==False): + # ztt_samples = ['DYJetsToLL-LO_summer_preEE'] + # else: + # ztt_samples = ['DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE'] + ztt_samples = ['DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO_summer_preEE','DYto2TautoMuTauh_M50_preEE'] - #ztt_samples = ['DYJetsToLL-NLO'] - #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] - top_samples = ['TTTo2L2Nu_postEE','TTTo2L2Nu_preEE']#['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = ['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE','WW_preEE','WZ_preEE','ZZ_preEE','ZZZ_preEE']#['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] + top_samples = ['TTTo2L2Nu_preEE','TTto4Q_preEE','TTtoLNu2Q_preEE']#['TTTo2L2Nu_postEE','TTTo2L2Nu_preEE'] + vv_samples = ['WW_preEE','WZ_preEE','ZZ_preEE','TWminusto2L2Nu_preEE', + 'TWminustoLNu2Q_preEE','TbarWplusto2L2Nu_preEE', + 'TbarWplustoLNu2Q_preEE','TbarBQ_t-channel_4FS_preEE','TBbarQ_t-channel_4FS_preEE']#['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE','WW_preEE','WZ_preEE','ZZ_preEE']#'ZZZ_preEE' # if options.analysis in ['mssmrun2','vlq']: # vv_samples = [ # 'T-tW', 'Tbar-tW','Tbar-t','T-t', # 'WZTo3LNu','ZZTo4L'] - wjets_samples = []#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] + wjets_samples = ['W3JetsToLNu-LO_preEE', + 'WJetsToLNu-LO_preEE']#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] wgam_samples = []#['WGToLNuG'] ewkz_samples = []#['EWKZ2Jets_ZToLL'] - gghww_samples = [''] - qqhww_samples = [''] + gghww_samples = [] + qqhww_samples = [] if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] + data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + # if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB_rereco_preEE','TauC_rereco_preEE','TauD_rereco_preEE'] if options.channel == 'em': data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] if options.channel == 'et' or options.channel == 'zee': @@ -5049,6 +5050,9 @@ def RawFFFromString(string): if options.channel == 'em': ana.remaps['MuonEG'] = 'data_obs' elif options.channel in ['mt','mj','zmm']: + if options.era == '22': + ana.remaps['Muon'] = 'data_obs' + else: ana.remaps['SingleMuon'] = 'data_obs' elif (options.era != 'cp18' and options.era != 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): ana.remaps['SingleElectron'] = 'data_obs' @@ -5209,8 +5213,8 @@ def RawFFFromString(string): do_data = False if options.scheme == "noTT": samples_to_skip.extend(["TTT","TTJ"]) - if options.scheme == "noWandEWKZ": - samples_to_skip.extend(['TTT','TTJ','W','EWKZ']) + if options.scheme == "noEWKZ": + samples_to_skip.extend(['EWKZ']) RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) #if options.era == "tauid2016" and options.channel in ['et','mt']: # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) @@ -5604,7 +5608,7 @@ def MergeXBins(hist): scheme = options.channel if compare_w_shapes: scheme = 'w_shape' if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "" and options.scheme != "noWandEWKZ": scheme = options.scheme + if options.scheme != "" and options.scheme != "noEWKZ"and options.scheme != "noTT": scheme = options.scheme FF = options.method in [17,18] if options.ml_ff: options.w_ff_closure = False From 855f08a678174833f681fd2b1475fbaee054a1b5 Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 23 Aug 2023 13:17:49 +0100 Subject: [PATCH 41/50] Update scale factors --- .../scale_factors/htt_scalefactors_2022.root | Bin 59007 -> 0 bytes .../htt_scalefactors_2022_noZpt.root | Bin 49939 -> 0 bytes .../htt_scalefactors_2022preEE.root | Bin 0 -> 59092 bytes .../htt_scalefactors_2022preEE_noZpt.root | Bin 0 -> 50005 bytes .../scripts/zpt_control_plots.py | 12 +++++++----- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 9 +++++++-- 6 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022.root delete mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022.root deleted file mode 100644 index 757b1d658a8ae1514d1d4c8ff6abdc4c2b04af98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59007 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 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022_noZpt.root deleted file mode 100644 index 6062df5440ceaffb7a12c28afab5021e0f6af84d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49939 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 z z(;I!Ce!5kok-!nnki~2+BdZG8snAV%Hlk=~wtB|52D1+okZA7Cahv5qJ$J;SZ)VNr z_fFVlRXa)ej|P`}0NbBL(kRXtnDfH++vOJQ-mzgT)?RN~_UC$!W*cmXnoCkJ6# zY7TU_OOa+()#!ec@kh&l%hk^Ks(4Gr*C|qv$(r=ucBEuz8%iPVB4NY+R!{0#5onMV z1;E$lS)#hwP7Hc~6hI^F=&WiNHEYIQ^^a%K{RT%6HY?yYRrAk1^u~MY-UH&&#GYCK zpw2NmQ4QBPFcHs>HJz9dx~D<$u^vRfcylmunmM&&ea6A)NH1N=a`bz>s^eT_;b|-0 zQ=yQW5iBFm=~?DxAzMnC@n7v}04X+mV<=^IT`o!rCnd)oFq3(6Q)uZzm4QbyJ}g&0PpyIue@)?_ zCi8M|S$t+61%I?l9fN0ZkkW?YWm#ea%R6*TYd!F zwBC22Q7cK0kQ&5qG7OuzV#Azibke4&^6D2pFZ6WbZ5o(PZ@28iQuBoecXZb;&G}h& zA)2J7+{?V7a@hZ|^yt?Ud8gwqANnq#Pgro8Z|^^tW8zO-e=Q@q^I$o7T&mN3>~0Ew zbD?|h$OMEF=cE3*ZDtoLvJ!CN-z%&8d-r1Zqj4gXa-Cjp8)%k#{ zOUgyd=8!NPHduNpv*E&U9WdR!lJfbHO)1^NV_}j}2>;@+l+Km~ow1K(R~w>+)|~pY z;17_RU8|i&kG2e`OYQ1EK}nK>1+EN{?l5MT_N}8Q0FfoFQhHMy^+^K!hCyW-$rSyT8puJ6DKGO(N5iTe=i#=HP zJ`Q~}hm4Ti7G7%F<_QaW%c+(YWieQAoY(8)^D}RTP}a*`6ZB>v_x0~S%1+pI+%HQu zXxHHQu=V~wzGU0!Ssj)HHw#rB(RdaBZXJu&r3%HJ`sxO5kAB1#cjU;yO&&i!X~&aL zwQ0X<`^$l@FTx)DjxI6Fzm1Q7YJ{j7Qw;Sp{Xc4m>hP}a#m`xyosMwQLW{i5-I3I) zi>Ff>?T!d!x#z0}{ShHytI(;!2Z`7Ztm3G>O2`fdU(ce~Dxkq!m)`l?QOI#B=j8Ui zFi@;@Sj5W%VS+Zik+Y`g0{g00PG9Us$HdtAr7TST z+h$kWImZH}d0Ybi+ST~DxX1RzN6Mw78w2)kYgWDJ4e4RaU>DY@z*1v>h|W02(Fjaj zkF|-4t!rde@_!Pda4ABARHUtf@w^P8S<@ib zw10k>w*bkt4cV?d4R4Y?`LcIe=!lVZRd@at{n@?@$v8oCeIU4cdtT``fAy?;-7KM3 zk=!^-#>CY_0d3`#&<1}oE{rR`gph&e5Q#A*;&YeqLb(FN5++3I-5~`SeCi`wlc9>( zOHejb7^Q+L9doE#f`Ot%K!ikWiXs?)JL%7^3depHa!s$$fNASIEX~T?1TW`QvQl1U zg0_l(UP9Dw62gZVM)_F7yTRx_;eJlWR-foSjgjEqwP(5;k@kgr2#^JE1)T|cf2?`% zKK07#b{V=ro{1>KkNjXscE`tT1zKcX%=pyAJ`Wc<>VulY}`iFgSJw;f+}6@|pXODdcCibET(B4JH!r>!~tm z1XPhz6DA~%L$);cj$e;{;$0`yF#`2yggMn4tY5&P^Z1~%rYfgwb3p?R#Klm=bJorP zQ2k^{vrD`PJ?YUN!sx3J8^mJ_J~1pFQR-H-SHU7OsBveORmQfcZhPOsNo`R#jSLj4 zF|GKi9yScz`nET2d00oZgMXWAAeC#AVTv<$TmhRwDWujQWH{D8Kzfv8&Do4qd); z-{ZG!QAqG7y;-S3#}?i0spgwIOwfqusHqVK!J2`*6!CO$2%I*X*fYa^u=}1a80X&v zs>Z1})ji>04xI&;&2B{W9v+?hoDiTQ5b@dK)-=^IoljuTRk-?kQwONK3GhU!2kY(+ zw*in9A%!DrXNg+Nve-Mh`nQswZUAaLPJLbzO8=;~)|l!_7GSo5fpfh&$V^xoE?23r zphIx%ZV7h>y{J`%QixMX&6JWhN}_EtZ7JUkM)UlgFyc8jx6!( zKcMG$r?5U%sX*hChh)Lihrau9*EG$q4!s`36bjSQM&5P7Wz*aC_;BX4iP8}Ua>25q zV+ig-n1U=-@Jg!)NWTZ6q6neK1r1JYFz32=c>;%GXE2bkgu3-~KT9>Bqw@G>=L8M@ zn!-Z;G#Tc+mzn+`43huu+sFxs#V{AY`k|X5SCV8>az6PYz~e0d0CGA2C;*ToVvp9G z58wv?0RU+O006)cOi|Lz!4X!$(cVbU%E(^K+Smr^kByVQr5k~znYD$H;m^szQC$-9 zhzuZ-1aJj9^n!}TS$0~<(7N#3B)y6NhmgkI76fLQh2!FZaU&^yw$aLiVVPx#mSntps?kKGMx$b_du1f{6)Vz~ zi@1X$pN`Y$|A9AWv znh7)zqqDaZ1qaXr12i1@SI_ZC3ip#>eNAWut_VSPV0+VkvkQjITTOGuQ9)qH2J$t4 zfQ))QAoZw$JOejd7~H*RX8HFF^nSKIBJ~)7*jv=M{|IXUI^v1YX1$$j#WfD+I4#wO zy`TsHs%AM4nJ_FI3|&Df@&!5bh3#MfWy8^;Z*JLp!IA?p33hEmfFiAc=qex^O z`$}E8dv(wXm|=;S)?~X{hQ7+T#l7xm z2#nCh`f%vFt^N-3<~q8g9XM>pc-0|2SSI7QXF%AAalr)Sm<()d!rg+2bclzROZm{d z{RUK|XT_lpc`hdnj@))yG2IDDxeJ@2X;OrbdND9^78l^?eCs^tZHHIidUT)=o!i{Y zfBm94Yy!2khEfg9anM>?;M35V!F`m_L+c}_kBB2r%|j7hh84nnetCO%?*4T4tgJ3Y z278R4{+CnCvRPIw1_ARCD-B|AgtlZ-mw{5gfMhfGOEw>liYX!RmYU(N$`Em6q>!1- z%~%+E8%<8_*x$J!9cZWiAO$j2tmjGwB*TtYe0Px&43mKUbS(TKUzR<4$P?gO*p|O^ z>evAZi{UDCIo(6mz-NJMngz(J7lqhuf{5A%_0d2iY6t3uWQsLL zw!Qw`x@t}aaf$9lh1^Ihid+eS;W7q4HmXtfvH-SPzO4RSwV%m0kd6#R=J7W^i8!x~ zK`%NF_BiWMwe7Gy-g&9=0Q(fVz`@!keah^xF_#8!I-e#E($JRxA&|r!9wQQj#5Lfsru-!c%k)b#yQ%_Cb$s z@mW&IASaNQL66k724X{t2X14#!n~gTVM?w#lNYqRz+G*3`!vh&T@ck$r}~j6PZB@} z;X|qF zB-#91>`z%0zVL~1V`EgMuOl~@yjQnztW@cm4gPb$7-BufYcF^Qv(|Bb7+O`$sj-K| z#~+YSp1r&RSk$!@B&!RExj?-8&XH=c_0dwaI67*wingPC@-iJrl_@dwprg2>FLEBk z4M1u;XnD6az!kJb(ii^3xBW6r-N@TC1o(WNNRe?()_Tp)vi|lTRbE5Ajf_&$WxjHFDR!Fe86DpNvFKNfG{R%9aU!soTLw;QJGAUk?9R0aY+` zf3y#c^O`gY^nCpvnnWNhV|>GGRc*2OgywYsy;>PQ*&k!bxP{kEo0ug_4RF(KxSK}E ztOyK@6YIfbVNr5n(7Rn0EN+S1B)Kg6eGiO{rFtwl8K_g?-h6TdWk5~$s=miUSPk~K zw9YT}*)gNv)nCGb265!EoRKQ41<`ECX|uZosbwNAlp?ZZwfk`~*MV^g%vyv2J@B!@ z>FEjPAn^?@I9 zFh&2|l3}mz4esH*5F-B|B-7|MYwM)|2lMU|y+@*tkgX=>E{ zMT=d~^Y&9M3CVNC4+Hb(L~Zq?UcU+8zk&&OSdMR)Ar474oQQ)F4~*l3!Pb?cz%rJq zhxjdQPc3YBz&_4q068noAifa}D}J#{e6lzFPJ5FW{RRo_9%SueO6q*0N-&c$JV0Ji7lrOVLexl$wRU9mTF5yp+M*;*$ zk8kA$XZ}2=^KIzgzFX?nnKxQ&0GiNzKyPUQMX<;KmaeIl{1||oK9kH;i4q|dn)CU- zO!oG9ST}L&+PwI=-Ex_YA$+z|{!-K>`l$d9^x`LRozvxJAW%hEfGzi&ue|c)EoQZ{ zNA_~Nj2*nnlEvF>?~L!XJH%PyjxIV?_i5K`D^H<8h%EG4zO8nhH@fPxtSu*yugU&R zH?kBJzI2>d!LB2!ijS^PDW5(45>$@_I(j*KQ|)MwTPVWKA1wiDIjb}kCc|8bdtP6+ z$}Op8q-sIW2&bFrZ|SdsXwh6jJ^d!gX)(v}wOSJFFbnV{#KM)}K1gUB+Lc5gC85Bz za7;F8k`Fm5D4yFa0NPrE8vYj0Knco@B^zQ|(HZ!ND@-=xS8spo`6!PdO$@Ym_$@Ye z$L-z#eOuF)FNomh0>8EBaa|q%#%I}ZaCkdZLbn|07(9c4E7L1|c;r4oFUsA76B zUS_4|T_hHPL*3)CRXcO|_myJx2-eX8N}ezZG0NEV?Md}O;Et8@B?2nXjA*d9kQK-( z7&Uv{WgvQk*T(RH-kM2kbc|b%pIFOgi#GVpnH*$}o^%@uDv6^!;Wn4smz#7?p}n8) zE*?VqF*o3|5$5Lo^=MWHeb@7LC-rt(hPamb)h#BeF}4&lQ6aiqyX_)~4T)o?Dj#_h zO`y7cB$W`*8uaU-$T2V44Orc=3XZ70SXposolLpOg@XAO3(Y9U&8G1U`nr!4s;18s z`4!Q$dX@bg)8>_b%MK{yNlRTZ%i{N5#ZHs*@4z3UF#0L7(NUS$V>D+uTZ%Q=bK~E` zow3hI3Tr$w&unnD=V{IrZesn<^%=EED~i$B;~DLfGFo_dUr-vBTD#;Fon+Lrp|BV~ z-U837!7N*E{2LvV$bZBLO8EH^jL1$ zLfX^u-4Lx^gF8l+hB$F2dSTQ75gprGkLPbB*R9DH_F#-H^>*${3oj5GsYr`EY%y~D z6liWnr=n6db_`)QI)q(e5}r?@yyM_sRzU@~Y8a*n>W{l0434`WUa$AU4l@=EI9@4XScI%Qcrlx2=X#r>^992#_sh5282n2w z`FJn)4;43CgVR5nY=dl_K8F)ymdeo6G$q7y7BLKUFcdjHx>uLo9eDg1o1u*?A(Iyl z;gYM+lLnSN1vp*ZwP%_4-q#v)G}4dBZ@d9dhiafrRT-yMUu$9sx`qZHNl*ObASabc0G2B{fyJq9uyoL#vxeoRf9STJ>Zy(z-w5shMD3NTq#rGjVUOg2E)K+2(qN z?5s59-Y0*&YeG%RDo_fI#3Yi&Li24#z4V(RUrm`9g~5FALp_VoMBLb<*4DAH&QK16sI zoq4E=_q})uhval>b6ma?3z&)Id*Cy+K2#WrUsp`*-yz-~L^JUj6BVZD6}Zipx|5SL6A*k*1+nI$8h5X$NG-9NP{ zH&(N991c8Nc!!GjH0Dqpugd_mjQl*a*_7C4<008P_mzWX^FX?Fgqv{9<@H5c*YSz3;<{u_$jfsQs4{H8(k-w`_@fY zqiKv!qEFLEF+;;`7B$O0dXeIua=VknStlo?^W#0Ur|@!Q#ST;7?iBZ!i3@D+8S2Bw z1Q)qU{ZW7qzT)pC$DwosFadN7QfOhn2?-hh!3f)EzX{i? zCa(|OP`Sz5=TUafq$Q+XvbRy=0czaVp5ce_71t$XKtVX+%Rv4)#KPseGbf8P%8mA2 z<9w&pmr1rd@Mm#nQPq*b7k|e7V`*A?7_bZPcc)NgJe{`Tsmak7#-M6dY5D4a9rzS- zh2f~U6x^T$p+#nZ`7@zNF9*bXqvzuL~KpD}S$7xzC%1sbEr7!&{Ch313I8(qWYE?I^+3o5rqD@d(Y(yTw zVb&Q_!$}bSBH>T>1lfpAw9^d)h^*0MFm#qc8tGRj0m+@MDzrTF1I-ij@%{y# zSEkE)C#b-1M~f}9ya*9^tRc^yOio=E-*=hWEn@tm^`LNWpQMd{_wJJT(8DI?KDW3M zHq(EN*8L_&DsTh0-j-62grZ{5-Sf4GQ%Y7up&-(SH_F~|z7Rgt{QhZO0kETwxkG*ET*tj>J7 z;2%XvBUOwr_PJ=d+@vFBI3zJ&501k-#Kw3<7;XIT@W05oODgLb&&NE}tF70N=wP%51g^r%^Yt!@dC9IJx)^(taXeA{wjU7md=kWEKGR)57NJBtJz#9+6cBvZ>iwX|# zv{b6|bB<&(dXrcmKjnv?$cy66^@?t_m231N+@f1IiLIMM?@HY(d5chQZkuBUvVi@V zH#-#xOu{&rY-N!gqob?4zqNPyJ)^dfjb_E!ArCDJ5z2%srF3Wp00kr$>V*1BnGn8^Jzy ziRnJX3&0$)0a3syr7vnWcvPq{99u&MnzASBz&2q$58^EXR*HE|(36@g7%Gz5APpjB zp$m51@k^{{uDfsUdqGP}#_62;K_$-~MHpRNGLc>;oA$Iz{`~HUDJE~M7Mo8es~v+R zI`^5T^J4JWT^}tdREo0e3oc4aC2dj}jK%HuiK?xap!N`2+DsGZsWlFT{pE#XA`c0M z1UByia(LBBzdKH{iCu9^l%&wx_Y5gy8~;UDQqBm5Md{NVYkU)$5Pb9M*{0FE$`9)r z@K%fwWv@Vv!Vh^)JBvfaly6x3`{VB*>T(rf?FZ!8TbBG~4j+?NJq84{@}sXUu&nWz zk3z3m)8{^`6@|MC$qP$F@y%iMjODKTZoyMXEpVkT{#gMJO+OjVr8qvqlD@ZOe{Fb$ zv+^F}xSmcJN79YdRnUAXvo;%2SAa2pY`B(@@R+D}L*yL;m;yP@Iu*XXgZ_vON9Fn? zt9%NpKbn{=nm8rvBvc1vQ)DQ)kyoG!iluo!X2^mK0bkg{5}Sn~d`qfIBhXMXRDgRg zQpcG#=^L=-%4(R#BhKSUDdqTR&2mpKEYw$&rfTbSVZFdav|N`Pp!IP{BWVkI)m(IY z4|1Wru>okc{XO_>06(S9R<$WKy6I#Da6p?W!9`v6=;y+W1b}+nVVWQGoZsl-8n6TY zs)pSN3^syplC29XNtR56eQ__<{^UAtw8?F|6rC1P&ZLXhy$NC3k-!KPu!Y=~qr2^v z1;~z?mqFeocR>44>{uur)k&?KH;|{hr{f8}bLS}A#P4)8Jye{i827M;_hPj2lCwll zD*KWZp@#FLNj0lFNLj)of~hgr>aX3Fu{5CxM)Jx>NpL}^!HmSkYV+7X+?ESn2^VK( zNBkYkQ#tx9gN=So?ubGt%%`Pbrt$wH;LuRQrJ&fU3f7W;QdZr8J>N#M)J#=U851N(xKN9 zAfl$k$u8bfwUJxcuYaVDA_t%QlclMOVzq{=ksP*>|2aD$Ce=Z!8&XC}hWeGNwS66@ z8sE>&C}~wSzR0RmQ-Pd4AE5MhB*w|A((#VM)Y)haEfs+WfXO#!)fgc z%LW^tT6V>(M|Jt4l`sDMTCo0*QF|}`>)K}u?iGJly_t07pl$`g2d=T@BUZ`$46~Xf z58qstSCq8noBS+tX-2_tHJvh9!>s{lsJbQ2!iK2zUL|}muw7Q%QmjAGXeGRa zj{P^(AVNmKUk1Ha^GTMV2k~fhQNr$03F#*+VlLB#Onw7#uy?cMiMp#ZaYtOL5cIO% zN=akI6hBx7CZdJYts`e=-h!t3dsr(Icf-MkYka3Z$o8Y1yB?qSjPA% zA-%JV=Cqu>$q!Jgqj3qR1AaV}#7!NYf;oCDRIGc}lPOMlo+J(~Pw;UsDNrC}5Ao zP6z66eM-dKLqjnQh|8jvPh6Hro)Ll6xDHu7h%cszQjz`H=wIe>m40-!EH|wck%LP; zlhKYlayLr6&?BweJK0z5+l9WzPt zw<5%hWV1Cx>9e-M*E`4Xwj>PeN}+??De#Sf?@*Ds8q?onA!cIs_mrqZOckT)xiecO zvT2hfbW1nr{#~AZaqRVx2AASx2i$h%^jca^`C7x8>NRS{ZWgzwUx8cCPyVW6nNy({ zuOy=@-~CId$tDl!)r^+cP8P91F{_>0!SZ*0PK%93j&w?krBH@xzgr~on?e6WAq*ED zU~#WBafFx6q!s=&y3@-J7A`i`;{x^xlnt&9-x-UMCcoAeDknI%OyiLpRZ%C0TbcA4 z9y!*F>+K^ zK{D7H;rDQczWv78D%Gkl=DcnxXfSp2(fCrdUX*?(+;VDD!XfS zkqg)MP_2FCuF0iRUVK8*?@zZRus-`Pp<2ImG1$?+Y9i4gQo3l#h9_avq>(CeFQHBI z*R_`qn?rEo)TK88eD8Z+8#A{tE3R*+7h$N_GWh$l;gouc$M$7|Rzf(m%I5r}+b$%d zE~t}*6rl@I-h&t44)sOoj=0DWvh>(F*e1wldg@x86O<4$2oO6ZyP4D4O*!=bf2j)0 z!3%->6>6=*3;wM%VdW)af!9-ZPE?Kp(~wbvGxnj)9FAjsolbY(srLtM2G#}Rz_kxx zmf9c@o+~l2OEY$g>vqHi3jf|+rG_#7AUrlQ%`zOU*g2M<6!<1;PD;r6s#c?hrazt5uQe2Lw z&0OZ-WN}$u1dg$AIwH94Gdh^Q8QYoI2>-e|R8G}f=1s;1IY&}AT>fgw_W_15APGXM z3?|0r>C&zXJ*8A4nGH#>AX&@;f+PH$BxFvu{IARjOu1%n>AquAv)`>9D&}KDX57rN z0(RuKV{;?kt-V%qtD&}We1b}PG4pvnK{Z?|FObHubPv)L+rWoWO4zhN$dXx=9<^0g z2-nFiIPh4IT3Rragtx13|LZ7R5kUM zYWs`sy3RI#HmvXU#{SP24$N^0x%H#nUfq0~t-c5+%q~AsK65x71voquvbd)Nb+H|# z63a;1AJk5N(r<5??~-rPZp?AY-?}<_#9}!#DU-`Bh~-gP<_Ec_(DPA-JEgKvi+*Lw z{L1($#~BCCj1e&Uw{4}#Af|r^cbs+^y>p)cU$(70Eq-z=2_909enF+DM$$O=vTP#wH1*#PC1lI! z&%;|dn{%YO1FP6xkT&KMs%)%OBf3$_4gze6Dl3NRQi3QGGZVLV1#H~KZT!l|G-e8= zYp~9OV9j|$y_6i;c!j7lLF|I{hX7rR*wSPhr~}JWZS2@ttFJ13#h2!Re-fEVh=Wo+ zk$!z2&AAj%(l=$%b7jdS?xN6n@w~E`%kq^HWa@S%zfL?$8A|p0Z&JFx(WZt^m~-zN z;!mbZEB+W%gUf#pkI{R^zv^6%l#)r4`_=EfeWqt^XGg7!-H%Iui>2>~ypB9&e?#wA z<0s?K!QXi+q8?O8z6I=e4KS*XZWe;dpm+^aaVDeOODm%NjxLp8EVzVp#QullboTGx zuG2DlQb{T$*=T4sQKJ@L$GOM@jUrMEnQ+D?D$w!gLTm1jMlqZsHD#2;q}O8u6B%&z z%Uzz51JbcFUj?|aE(00oZl`OX{k&3$d7C=Xo*fWi;?sFr%d@AhbF+3}D;i#v+pqSl zLQ*snOD>y|ygEj7g|Ps-ECKmI+{kESE-lmL4amhIdU4*fLK;y;lG(m;PXXmok!$z_ zdBS%7;Y7^cQ9Q~pMvg>cT-3-yW;uFnDJNPBE0gs~$!wog6BXUD$10%vN#P&juaiN% zjdAdYDWjwhEaf}&)N-6X%Ez@5MH9H@{N4U@XXIaKrQOctySSHo0|6#qtxpDX<{{TY zZ_FTGQNCq@nPys;L^F0|siB5O7~5Jy1yVK4PHWFG>~a$`kAzsNiDWbkTvwnZ$z`D0 z!~9y;A4g=58Jx{*<_r>(ZRe92K$FnhNYfvJxRqP%u>%P;PvL?EoESfo^|`FZ;uRU1 zyGKj$T*`K>3NvhO-2lZ%x0_wvUAOVmP10lARD2W zTFFHhpgXr+w99Zhef{g!un_UE@43#yUW>kcBDGT>wKTX+u@X(sd11Bk=RlEU12E6g zU06t*1)o1^zkgwj&9lNXKUMMP=2sId{wdlVj&VD~8StFquE=JVGXL2<(i5;+#_~>tPd^S-J37e~d#rsvjA-PC zn%Po~?wg_GRMe6Ajn^0B!4uJiuNrM4V%0R+)$4k~5>s0G4iYE|b^I;!24Sk*P0P=Q zSyV9fOJLN1a^O-0ZA4Ow<(M&P+LY^wM|oPr6ylR4JnNIBC^VtDkFH1F zxbM{BMcR{LRB}tj>$UTV+T-i|2ju7GUndU)iISGqz^&hF;_)yLRJY2o@YDaMP^9Hm zIHt-~`b|*YGBE?!hZKy~7V!Q!=bxnyi7YKiG@`G9&4ff0P0VF?2n&fc5#G;qAX*lQ zi8g42)!kxXctTgH>sMUh%~Uuq^)VuV(}VRmn*MX9ZY&7D|J))(P%DKmN65TCB-re=evvHl5Y#^Gkkf=fSD zzde^#m0)v~*C0K5s6j<-LVKn_bC#ozv?x_;y+LjE4TDo3vE{!vk^Gjx9>Zz*spGNj zc^0F+7-ha0%{K{K{vPwVTL03t&&_zjO**%>KYpA__sE7)ytEj=dPl+JnuB&{1VLD} zgUE%e5y;rbupzan(hxn%%wYsRl8$e*R~*@dM@C%w5ql8tX?2q?fs~j$t}pONjaT4^^$$b2WfxHFO)xnETLilb#Pt)N@r8 zpZf$XuqA}q@oN-#VTt;f$I8{##89^l*->U@0$zM~)FCsLOv;!~(ZmNf{QW-%FI`ra zg(MB(s|hFH&{|DP2wn^RVU?4_3M!5(q9u5S9R(=lVprfj$X1wDV#es>uPiownL7rr z$cLGNs0ReRd2-iF+&PoiUiU2RHBMy*YHG)ib)OHeiX>X(EgPgQu+1jS5eYbvDcpl`sfi zLGIXS-Q!8yT0w!NT`?bRS=YH{u&qxy!bddX$ArKIQK(YPEQWXe!e~x-J;S?T-A9y+ z3HNBa`I+HHzLs^VU;0&q$APSC1AL=)tkmqLy?$5C`L)uO?-M@yCP}Ap$kZ-M!4TF zkGMWBGcda%fa_he*LKtIag|r2lkBW_E8bAxXissBdAR;$XjLyA0o9kn_w;E^@B0>J z0%hS^;(kaudl*=G+;cwD)v%vdilwFnbF6(9?|c34~N2}b$Ra#^*9 zXtHCHCLBbRG0gM|Lg}E4*SUU~1K6-W6QP+)7o{aU&Knwx2s-ueI9Vk{=jJr*>Qd0_ zB&bJWNJfwU#w#EnnqAJ%ZDsfA%9SZsa}ufx7^H3J^oR~~%;o(Ws;Zhm4wFf{!ZrA7 zVMT65epGb6M_xw$PtQHS(UU`Y<_qe4jE~?}4arYmDa$e0>-D)iyvRazX-df5ULyD* zcRYNKdm8ay#*F>q$s}ayFRiqaIL(rYohPX5$)fajMb34opmdgASS{&^TyS*uF`z~> z?)C#lnG89#F_o|kdDQ;RSKuyC-HR5rJTul*BXiaE7<;8y^9u1Fhhb|5eaGSvcvvh- zvcgzy@E4r>o6Xu&P_loI`$Cvp?G!(s%g%}(3(67!ZziP{mOUg;L5rC77-=fb_>R## zJ{x2_zK02fCwK;_FNf1KRJ{SEDez1X!*Y8=;sG?BHd+hMFrs7+w(&upZ;lkd6<;@& z=6{uC+tO5b^g(2AxutPFd(aOvAtg2y<;`ijZFxrGHh?2Y4Zfc)(x4== z<=$JLglh!-IvL(8qVP!9fe9F7=acc_QDPsq8D#==47UrEf3VnGUb^mN?(k!(E2*Ih#Vj=Wh#KCvi6HtM#(MW$`gG zayY1RlVoob-cWD5KyA6N`f8f%pLhUTqg4Jlk&qAe$g|IR{c7!mH$9n^P!aZeG5ZJ< z;(G9S`At3G>P!^RtmD>fd$TAM0xGTGeAxAdf6Zl_opPIVxj~ADw8BCaF>8&eRHhK* zut&(CuiVo5ooxcW>_lA z5nu7{9(w`8*;`yx=^lD+(Zx7>=F@yFhpE?z9XD7zI90SD@wFHC`4?jFCvxashJrxtQ_a`~F`{QR%;3k^a*a zT2a>C#=ywILF^Co|J$M`VbG&zGGOOmq+w!bVx(bUFfyXiGhkz*VP|GF&}ZUc)HgCR h{u!?DU!&0fpEG?u|1k=t`2WwDp9k+pc40{b{2we6HPiqA diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE.root new file mode 100644 index 0000000000000000000000000000000000000000..9121af617fbd1a69473c955e5f518797b13adfc7 GIT binary patch literal 59092 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

-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 G!2S>G;jX&? literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root new file mode 100644 index 0000000000000000000000000000000000000000..e0a4339c4d4b62f39d54358766deae992a0a5fa4 GIT binary patch literal 50005 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 Date: Wed, 23 Aug 2023 13:52:55 +0100 Subject: [PATCH 42/50] Script for mt control plots --- .../scripts/mt_control_plots.py | 51 +++++++++++++++++++ .../HiggsTauTauRun2/scripts/mt_plot_2022.cfg | 15 ++++++ 2 files changed, 66 insertions(+) create mode 100644 Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py create mode 100644 Analysis/HiggsTauTauRun2/scripts/mt_plot_2022.cfg diff --git a/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py b/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py new file mode 100644 index 000000000..93c134352 --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py @@ -0,0 +1,51 @@ +import os +import json +import numpy as np + + +DO_SS = False +DOTAUDECAY=False + + +variables = [ + 'pt_tt[0,10,20,30,40,60,80,100,120,160,200,280,320,400,600]', + 'm_vis(20,0,200)', + 'eta_1(30,-3,3)', + 'eta_2(30,-3,3)', + 'n_jets(4,0,4)', + 'pt_1(20,0,200)', + 'pt_2(20,0,200)', + 'mt_1(30,0,300)', + 'mt_2(30,0,300)' +] +if DOTAUDECAY: + TauModes = ["0","1","10","11"] #10 seems best +else: + TauModes =[None] + + +for v in variables: + for mode in TauModes: + v_tt = v + extra=' --ratio_range=\"0.6,1.4\" ' + extra += ' --v2p5' + #Factor out Run2 top weight + extra+=' --add_wt="wt_tquark_down"' + #extra+= ' --singletau' + extra+= ' --folder="/vols/cms/eb921/output/output_mt_2022/"' + if DOTAUDECAY: + extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80 && tau_decay_mode_2==%s)"'%mode + try: + path = 'mt_plots/taumode_%s'%mode + os.mkdir(path) + print("Directory '%(path)s' created"% vars()) + except OSError as error: + print("Directory '%(path)s' can not be created: %(error)s"% vars()) + extra+= ' --outputfolder="%s"'%path + else: + extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80)"' + extra+= ' --outputfolder="mt_plots"' + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --cfg scripts/mt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) + if DO_SS: + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --do_ss --do_aiso --cfg scripts/mt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) + \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/mt_plot_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/mt_plot_2022.cfg new file mode 100644 index 000000000..3cc83b2aa --- /dev/null +++ b/Analysis/HiggsTauTauRun2/scripts/mt_plot_2022.cfg @@ -0,0 +1,15 @@ +[Defaults] +analysis=mssmrun2 +paramfile=scripts/params_2022.json +era=22 +sm_masses="" +draw_signal_mass="" +year=2022 +norm_bins=True +ratio=True +lumi=7.4 fb^{-1} (13.6 TeV) +vbf_background=False +wp=medium +channel=mt +method=12 +#scheme=noTT \ No newline at end of file From 8b1f0e9c0bf991a79ab461e19b2bee8892eea41c Mon Sep 17 00:00:00 2001 From: Endre Date: Wed, 23 Aug 2023 15:24:20 +0100 Subject: [PATCH 43/50] Small correction to stitching --- Analysis/HiggsTauTauRun2/src/HTTSequence.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc index 09800e4eb..33cfc71e9 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTSequence.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTSequence.cc @@ -886,11 +886,11 @@ if(channel!=channel::tpzee&&channel!=channel::tpzmm){ httStitching.SetWInputYields(82360950, 47850048, 27411802, 18297679, 9130068); } if(era_type == era::data_2022_preEE){ - httStitching.SetWInputCrossSections(1.0,1.0,1.0,0.0156,1.0); + httStitching.SetWInputCrossSections(1.0,1.0,1.0,0.0184,1.0); httStitching.SetWInputYields(87900584, 0, 0, 8214147, 0); } if(era_type == era::data_2022_postEE){ - httStitching.SetWInputCrossSections(1.0,0.1651,0.0528,1.0,1.0); + httStitching.SetWInputCrossSections(1.0,0.1522,0.0515,1.0,1.0); httStitching.SetWInputYields(348456687, 42838501, 36384428, 0, 0); } } From 6bfdb3c8089a5e2987bd28050805ca29940a976b Mon Sep 17 00:00:00 2001 From: Endre Date: Fri, 25 Aug 2023 10:15:07 +0100 Subject: [PATCH 44/50] Add postEE Tnp --- .../Aug0223_2022_Data_postEE_filelists.tgz | Bin 0 -> 41184 bytes Analysis/HiggsTauTauRun2/scripts/TnP.py | 5 ++++- .../scripts/config_2022_postEE.json | 10 +++++----- .../scripts/hadd_22_postEE_output.py | 4 ++++ .../HiggsTauTauRun2/scripts/htt_2022_postEE.py | 12 ++++++------ 5 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_postEE_filelists.tgz diff --git a/Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_postEE_filelists.tgz b/Analysis/HiggsTauTauRun2/filelists/Aug0223_2022_Data_postEE_filelists.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0a5af68eaaad13162b791f3e00a3721f3d7f14da GIT binary patch literal 41184 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 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP.py b/Analysis/HiggsTauTauRun2/scripts/TnP.py index b9561ee7c..19024060f 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP.py @@ -974,7 +974,9 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent elif options.era == 'UL_18': data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] elif options.era == '22_preEE': - data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + elif options.era == '22_postEE': + data_samples = ['MuonE_rereco_postEE','MuonF_postEE','MuonG_postEE'] if options.channel == 'tpzee': if options.era == 'UL_16preVFP': data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] @@ -999,6 +1001,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent elif options.era == 'UL_17': ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1'] elif options.era == 'UL_18': ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1'] elif options.era == '22_preEE': ztt_samples = ['DYJetsToLL-LO_summer_preEE'] +elif options.era == '22_postEE': ztt_samples = ['DYJetsToLL-LO_postEE'] #Formula: abs(eta_2),pt_2,m_vis[0,0.1,0.3,0.8,1.0,1.2,1.6,1.8,2.1,2.4],[10,15,17,19,21,23,24,25,26,27,28,31,34,37,40,45,50,60,70,100,1000],(40,70,110) (wt)*((m_vis>50&&m_vis<150&&pt_1>28&&abs(eta_1)<2.1&&iso_1<0.15&&id_tag_1&&trg_tag_1&&os)*(1&&id_probe_1))*(os)*(1)*(!(trg_probe_2)) ROOT.TH1.SetDefaultSumw2(True) diff --git a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json index a3023ae6e..4a7566e1c 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_2022_postEE.json @@ -6,7 +6,7 @@ "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], // "channels": ["mt","zmm","tt","et"], - "channels": ["tt"], + "channels": ["mt"], // "channels": ["tt","mt","et","em","zmm","zee"], "sequences": { "all": ["default"] @@ -22,7 +22,7 @@ "sequence": { // "do_mssm_higgspt" : true, // "mssm_higgspt_file" : "/vols/build/cms/gu18/CMSSW_8_0_25/src/UserCode/ICHiggsTauTau/Analysis/HiggsTauTau2/input/mssm_higgspt/higgs_pt_v2_mssm_mode.root", - "usePFMET" : true, + "usePFMET" : false, "do_gen_analysis" : false, "mc" : "mc2018", "era" : "data_2022_postEE", @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/eb921/output/tt_2022", + "output_folder" : "/vols/cms/eb921/test_output/output_mt_2022postEE", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", @@ -191,8 +191,8 @@ "max_extra_muons": 1, "do_tau_anti_muon": true, "do_tau_anti_elec":true, - "do_ff_weights" : true, - "do_ff_systematics": true, + "do_ff_weights" : false, + "do_ff_systematics": false, "ff_categories" :"inclusive", "ff_file" : "input/fake_factors/fakefactors_ws_mt_lite_2018.root", "ff_fracs_file" : "" diff --git a/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py index e5d299907..53a666c5a 100755 --- a/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py +++ b/Analysis/HiggsTauTauRun2/scripts/hadd_22_postEE_output.py @@ -54,6 +54,10 @@ def list_paths(path): 'TauE_rereco_postEE', 'TauF_postEE', 'TauG_postEE', + 'MuonE_rereco_postEE', + 'MuonE_postEE', + 'MuonF_postEE', + 'MuonG_postEE', #MC postEE diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py index 0fb6e8a70..1396c4edb 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_postEE.py @@ -3,7 +3,7 @@ # python scripts/htt_mssm_2018.py --bkg --data --embed --sm --mssm --jetmetuncerts --scales="default,scale_t_0pi,scale_t_1pi,scale_t_3prong,scale_t_3prong1pi0,scale_efake_0pi,scale_efake_1pi,scale_mufake_0pi,scale_mufake_1pi,scale_e" --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs -# python scripts/htt_2022_postEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' --parajobs +# python scripts/htt_2022_postEE.py --data --bkg --submit='./scripts/submit_ic_batch_job.sh "hep.q -l h_rt=0:180:0 -l h_vmem=24G"' # importing libraries @@ -205,8 +205,8 @@ def getParaJobSubmit(N): if options.proc_data or options.proc_all or options.calc_lumi: - data_samples = [] - data_eras = ['E','E_rereco','F','G'] + data_samples = ["MuonE_rereco","MuonF","MuonG"] + data_eras = [] for chn in channels: for era in data_eras: @@ -231,13 +231,13 @@ def getParaJobSubmit(N): if 'MuonEG'+era not in data_samples: data_samples+=['MuonEG'+era] if 'DoubleMuon'+era not in data_samples: data_samples+=['DoubleMuon'+era] - DATAFILELIST="./filelists/July0623_2022-postEE_Data_102X" + DATAFILELIST="./filelists/Aug0223_2022-postEE_Data_102X" if options.calc_lumi: for sa in data_samples: JOB='%s_postEE_2022' % (sa) user='irandreo' - prefix='July0623_Data_124X_2022-postEE' + prefix='Aug0223_Data_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true,\"lumi_mask_only\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 500 @@ -257,7 +257,7 @@ def getParaJobSubmit(N): for sa in data_samples: JOB='%s_postEE_2022' % (sa) user='irandreo' - prefix='July0623_Data_124X_2022-postEE' + prefix='Aug0223_Data_124X_2022-postEE' JSONPATCH= (r"'{\"job\":{\"filelist\":\"%(DATAFILELIST)s_%(sa)s.dat\",\"file_prefix\":\"root://gfe02.grid.hep.ph.ic.ac.uk:1097//store/user/%(user)s/%(prefix)s/\",\"sequences\":{\"em\":[],\"et\":[],\"mt\":[],\"tt\":[],\"zmm\":[],\"zee\":[]}}, \"sequence\":{\"output_name\":\"%(JOB)s\",\"is_data\":true}}' "%vars()); nfiles = sum(1 for line in open('%(DATAFILELIST)s_%(sa)s.dat' % vars())) nperjob = 30 From ebc6068417271dd815122e8d4cbf11ed2f376ad6 Mon Sep 17 00:00:00 2001 From: Endre Date: Mon, 4 Sep 2023 10:19:48 +0100 Subject: [PATCH 45/50] Add and update scale factors --- ...corr_note.txt => README_lumicorr_note.txt} | 7 ++++--- .../htt_scalefactors_2022postEE.root | Bin 0 -> 58975 bytes .../htt_scalefactors_2022postEE_noZpt.root | Bin 0 -> 49927 bytes .../htt_scalefactors_2022preEE.root | Bin 59092 -> 59110 bytes .../HiggsTauTauRun2/scripts/params_2022.json | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) rename Analysis/HiggsTauTauRun2/input/json/{lumicorr_note.txt => README_lumicorr_note.txt} (64%) create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE.root create mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root diff --git a/Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt b/Analysis/HiggsTauTauRun2/input/json/README_lumicorr_note.txt similarity index 64% rename from Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt rename to Analysis/HiggsTauTauRun2/input/json/README_lumicorr_note.txt index 0280d62e8..4d6e5d1db 100644 --- a/Analysis/HiggsTauTauRun2/input/json/lumicorr_note.txt +++ b/Analysis/HiggsTauTauRun2/input/json/README_lumicorr_note.txt @@ -1,5 +1,6 @@ -Cert_Collisions2022_355100_362760_Golden.json is the 2022 Run3 golden json that was divided up to eras (2022_runB.json, 2022_runC.json...) -for integrated luminosity calculations(brilcalc). The lumicorr files follow this correction: +Cert_Collisions2022_355100_362760_Golden.json is the 2022 Run3 golden json that was split up into eras (2022_runB.json, 2022_runC.json...) +for brilcalc calculations. The lumicorr files follow this correction: 'Due to a TCDS malfunction on Sep 29-30, no luminosity measurement is currently available for parts of runs 359571 and 359661. […] we recommend to exclude these periods from analyses, to ensure that a proper integrated luminosity estimate is available.' -Found at: https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun3 \ No newline at end of file +Found at: https://twiki.cern.ch/twiki/bin/view/CMS/LumiRecommendationsRun3 +i.e. runs 359571 and 359661 are excluded from "lumicorrr" json files \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE.root new file mode 100644 index 0000000000000000000000000000000000000000..854d2dca4db9e33512c1e2efc926a421eacf0530 GIT binary patch literal 58975 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%0AD=_}@yHoUL=q*>!E7VZh4yUW&4Z$^I&L%$qU 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

jQ`;~&TXYV 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 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root new file mode 100644 index 0000000000000000000000000000000000000000..d957e836433fead2a1846ebccac345d13119f83c GIT binary patch literal 49927 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УlD_$5F`O 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 W^?!_lDgXa*>EHARAlz7!0RIm`ra{I4 literal 0 HcmV?d00001 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE.root index 9121af617fbd1a69473c955e5f518797b13adfc7..d38aceb87af660c9c67805ba48e277051d9c07c1 100644 GIT binary patch delta 48476 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

LYU_3u$Ly z+9LS34yY(AFX1!RD>z2wuX4YoHL|wA={d&~&7b|YD1rROM!-$_Glqzc{f(6)C-qb& zg=v2EX+ScKscKn1q+lS%X>6bdhb0NUq>|f5G~)(u`F2J8&_r`3q@Yif36FyN^nrHD zzVXA5&5`6AX>@y{Ou-&<0qarMIMu+R(SI5Ij4Kj6H11zKE zW8Fl%xE21=RrSfN%BLY2PJ?5eBU*N1Rl~JE<&uvIvnO7vLA}lk+bQO^AM{9jOA2T! zYV|a*xkH9Wu)b41=`*Y;GdK{P*BHD#Xi}jpJ0KLqc)Tfr@^g|Ks6zW zK0)M?ZwkH9L#!ZMP1sipYB;|?rYb@CNoVeQ1tr-1zd*rMWclo;#@Wf!!bT&9Hd{w2GVR&J zfxuqni&0?%8|3&SjEtak*8vuya2uI{7qZ;+ZX)G|n?7bIubSGiJ$ox(Vhq9VMLo%% zz37Q7Ypwz4OoxCWgI1yS3WazjO+$DM>5x=akBIG(9(}SmL9jlx!A~5&jw19Kx0?d%L7UIoK7jdtsbEjj zugk?obB+a6JNK}vH?PVK-?LK=ODY1v%6O7mj{~QgkYg+A*syvtoE!;zQ}n#w1>ge$ zF?kiqs52>h*d8RtqiOx;&UMcWAh(Z0ZX3{;n$2eP-(t6|C=Em5i;hG!RZ8{$qP?ff zYY(^3D3l2*+Sd>yQ6%9DdPx0-%Dzf)zzD4ZKDsH;3favH-w3w%#{jEvs2nh-Jnb< zsgm!jzp4uHY6f*4z|1+Q8VRlHj-%E!WiEfz)u*REwEonaqJ?J;N=pL~v-NNYyXVmx zqLOaCfy?4tQ}q|22au?k?jx=)D@L0b#dBUIee~PhdUGEd-JN%DuL8!v^%Wj%r<}wt zTGmk+*@Y2{$O2h|4cS7BE(WP0tISa2Zpu6J`5vA^;aJaJ=w;#S^+dCzJ%h%Dlf8Go zF5lppS(fSZZ3-Cj(dlbrm~1_%E(`j3Eo5kU zMkJGn2Ybaf{M44+5>$|OYgg^jyuM0v@3FeMy$)NU(nniH(1mOfval|uG}vH$Jl=gz z1>J}Cn+F`-w~$tX$ho&g-K~$fD|t7nH*L;d?%JV@4?+ctcr^nxBo+F;hsjYMfvtC6 z;}buK2;7wpOtL)&3R{5_`r4g78qCjGg+t&oct&3}9=UxgoW0G>t&t&HoEhFAwzG5A zp@s`0T(U?5LYk_EyuKwJ;q4?BNM#N6Z5;``-cvT_eDPUuNespP2DR1^d58wIYt8IX z5uqJ8@J9A6P8n0!i8pc?+k8nafXW`vSi0|(C zbaSDfo(JW^mf1|R7lZ$ftcLVSD@>@EinbI9sxS%f+_*jI(A(+s_q9at(Qqg%g^2If z|CS`-g?l<+$QeaUo>U8$4k^&v+i1XL{RDvC*mg>Tg2H29gMx#CN|JVxO`C=ig@T5H z>P)N8>ZD~r{ZE7Je;Rg%6UKJIZe#W%%Py5RR1#%6w3df=l>52NqifY3;AsV2*jN` H5$gW|2xTj% delta 48496 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 Date: Mon, 4 Sep 2023 18:57:27 +0100 Subject: [PATCH 46/50] mt control plots upgrade --- Analysis/HiggsTauTauRun2/scripts/TnP.py | 4 +-- .../scripts/mt_control_plots.py | 26 ++++++++++++++----- Analysis/HiggsTauTauRun2/src/HTTWeights.cc | 2 +- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP.py b/Analysis/HiggsTauTauRun2/scripts/TnP.py index 19024060f..c78cce0a8 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP.py @@ -1099,9 +1099,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent ana.nodes.AddNode(ListNode(nodename)) ana.remaps = {} - if options.channel =='tpzmm': - ana.remaps['SingleMuon'] = 'data_obs' - #ana.remaps['Muon'] = 'data_obs' + if options.channel =='tpzmm': ana.remaps['SingleMuon'] = 'data_obs' elif options.channel == 'tpzee': if options.era in ['UL_18']: ana.remaps['EGamma'] = 'data_obs' else: ana.remaps['SingleElectron'] = 'data_obs' diff --git a/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py b/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py index 93c134352..e1febc827 100644 --- a/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py +++ b/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py @@ -6,10 +6,12 @@ DO_SS = False DOTAUDECAY=False +INPUT_FOLDER='/vols/cms/eb921/test_output/output_mt2_2022/' +OUTPUT_FOLDER='mt_plots' variables = [ - 'pt_tt[0,10,20,30,40,60,80,100,120,160,200,280,320,400,600]', - 'm_vis(20,0,200)', + 'pt_tt[0,10,20,30,40,60,80,100,120,160,200,280,320,400,600]', + 'm_vis(20,0,200)', 'eta_1(30,-3,3)', 'eta_2(30,-3,3)', 'n_jets(4,0,4)', @@ -32,19 +34,29 @@ #Factor out Run2 top weight extra+=' --add_wt="wt_tquark_down"' #extra+= ' --singletau' - extra+= ' --folder="/vols/cms/eb921/output/output_mt_2022/"' + extra+= ' --folder="%s"'%INPUT_FOLDER if DOTAUDECAY: - extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80 && tau_decay_mode_2==%s)"'%mode + if v=='mt_1(30,0,300)': + extra+= ' --sel="(m_vis>50&&m_vis<80 && tau_decay_mode_2==%s)"'%mode + elif v=='m_vis(20,0,200)': + extra+= ' --sel="(mt_1<70 && tau_decay_mode_2==%s)"'%mode + else: + extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80 && tau_decay_mode_2==%s)"'%mode try: - path = 'mt_plots/taumode_%s'%mode + path = '%s/taumode_%s'%(OUTPUT_FOLDER,mode) os.mkdir(path) print("Directory '%(path)s' created"% vars()) except OSError as error: print("Directory '%(path)s' can not be created: %(error)s"% vars()) extra+= ' --outputfolder="%s"'%path else: - extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80)"' - extra+= ' --outputfolder="mt_plots"' + if v=='mt_1(30,0,300)': + extra+= ' --sel="(m_vis>50&&m_vis<80)"' + elif v=='m_vis(20,0,200)': + extra+= ' --sel="(mt_1<70)"' + else: + extra+= ' --sel="(mt_1<70 && m_vis>50&&m_vis<80)"' + extra+= ' --outputfolder="%s"'%OUTPUT_FOLDER os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --cfg scripts/mt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) if DO_SS: os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --do_ss --do_aiso --cfg scripts/mt_plot_2022.cfg --var=\"%(v_tt)s\"' % vars() ) diff --git a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc index 2272553ca..1aae33693 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTWeights.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTWeights.cc @@ -959,7 +959,7 @@ int HTTWeights::PreAnalysis() { } } -// These are the factors that are also available in Run 3 +// These are the factors that are also available in Run 3, 2022 as of August 2023 fns_["m_trg_binned_mc"] = std::shared_ptr( w_->function("m_trg_binned_ic_mc")->functor(w_->argSet("m_pt,m_eta,m_iso"))); fns_["m_trg_binned_data"] = std::shared_ptr( w_->function("m_trg_binned_ic_data")->functor(w_->argSet("m_pt,m_eta,m_iso"))); From 1ad7908a978e60b7f10de8ed6c6ed798ed50928b Mon Sep 17 00:00:00 2001 From: Endre Date: Thu, 7 Sep 2023 09:37:35 +0100 Subject: [PATCH 47/50] Update tau data to data analysis programs --- .../scripts/HiggsTauTauPlot_Run3.py | 69 ++++++------------- .../HiggsTauTauRun2/scripts/compare_Run2_3.py | 60 ++++++++++------ .../scripts/compare_qcdmethods.py | 18 ++--- .../scripts/control_plots_2022_tt.py | 35 ++++++---- .../HiggsTauTauRun2/scripts/plot_2022.cfg | 12 +--- .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 14 +--- 6 files changed, 92 insertions(+), 116 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py index d330b1c3b..9d88043d5 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py @@ -64,7 +64,7 @@ "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, - "no_qcd_subtract": False, "tt_qcd_sel_num": 3,"scale_by_bin":False + "no_qcd_subtract": False, "scale_by_bin":False } @@ -401,8 +401,6 @@ help="Get version of DeepTau v2p5"), parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', help="Do not subtract background when estimating qcd events") -parser.add_argument("--tt_qcd_sel_num", dest="tt_qcd_sel_num", type=int, - help="Change selection type for tt_qcd_norm") parser.add_argument("--scale_by_bin", dest="scale_by_bin", action='store_true', help="Scale QCD by bin") options = parser.parse_args(remaining_argv) @@ -698,20 +696,9 @@ if options.era == 'mssmsummer16': cats['tt_qcd_norm'] = '(mva_olddm_medium_1>0.5 && mva_olddm_loose_2>0.5 &&mva_olddm_medium_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['tt_qcd_norm'] = '(pt_1>40 && ((mva_olddm_loose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_2>0.5) || (mva_olddm_loose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_1>0.5)) && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' # if options.era in ['cpsummer17','cp18']: cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' -if options.tt_qcd_sel_num==0: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==1: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==2: - cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==3: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==4: - cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' -elif options.tt_qcd_sel_num==5: - cats['tt_qcd_norm'] = '(deepTauVsJets_vloose_1<0.5 && deepTauVsJets_vvvloose_1>0.5 && deepTauVsJets_vloose_2<0.5 && deepTauVsJets_vvvloose_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - -#medium vlose + +cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' + # CR categories cats['ztt_control'] = '(m_sv>60&&m_sv<100)' @@ -1585,29 +1572,25 @@ data_samples = ['TauA','TauB','TauC','TauD'] if options.era in ['22']: - # if (options.DY_NLO==False): - # ztt_samples = ['DYJetsToLL-LO_summer_preEE'] - # else: - # ztt_samples = ['DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO_postEE_postEE','DYJetsToLL-LO_summer_preEE'] - ztt_samples = ['DYJetsToLL-LO_summer_preEE']#['DYJetsToLL-LO_summer_preEE','DYto2TautoMuTauh_M50_preEE'] - top_samples = ['TTTo2L2Nu_preEE','TTto4Q_preEE','TTtoLNu2Q_preEE']#['TTTo2L2Nu_postEE','TTTo2L2Nu_preEE'] + ztt_samples = ['DYJetsToLL-LO_summer_preEE','DYJetsToLL-LO_postEE'] + top_samples = ['TTTo2L2Nu_preEE','TTto4Q_preEE','TTtoLNu2Q_preEE','TTTo2L2Nu_postEE','TTto4Q_postEE','TTtoLNu2Q_postEE'] vv_samples = ['WW_preEE','WZ_preEE','ZZ_preEE','TWminusto2L2Nu_preEE', 'TWminustoLNu2Q_preEE','TbarWplusto2L2Nu_preEE', - 'TbarWplustoLNu2Q_preEE','TbarBQ_t-channel_4FS_preEE','TBbarQ_t-channel_4FS_preEE']#['WW_postEE_postEE','WZ_postEE_postEE','ZZ_postEE_postEE','WW_preEE','WZ_preEE','ZZ_preEE']#'ZZZ_preEE' - # if options.analysis in ['mssmrun2','vlq']: - # vv_samples = [ - # 'T-tW', 'Tbar-tW','Tbar-t','T-t', - # 'WZTo3LNu','ZZTo4L'] + 'TbarWplustoLNu2Q_preEE','TbarBQ_t-channel_4FS_preEE','TBbarQ_t-channel_4FS_preEE','WW_postEE','WZ_postEE','ZZ_postEE','TWminusto2L2Nu_postEE', + 'TWminustoLNu2Q_postEE','TbarWplusto2L2Nu_postEE', + 'TbarWplustoLNu2Q_postEE','TbarBQ_t-channel_4FS_postEE','TBbarQ_t-channel_4FS_postEE'] wjets_samples = ['W3JetsToLNu-LO_preEE', - 'WJetsToLNu-LO_preEE']#['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - wgam_samples = []#['WGToLNuG'] - ewkz_samples = []#['EWKZ2Jets_ZToLL'] + 'WJetsToLNu-LO_preEE','W1JetsToLNu-LO_postEE','W2JetsToLNu-LO_postEE', + 'WJetsToLNu-LO_postEE'] + wgam_samples = [] + ewkz_samples = [] gghww_samples = [] qqhww_samples = [] if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + # data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE','MuonE_rereco_postEE','MuonF_postEE','MuonG_postEE'] # if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB_rereco_preEE','TauC_rereco_preEE','TauD_rereco_preEE'] if options.channel == 'em': data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] @@ -3487,19 +3470,14 @@ def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', s if method == 8: qcd_sdb_cat = cats[options.cat]+' && '+cats['tt_qcd_norm'] qcd_sdb_cat_data = cats_unmodified[options.cat]+' && '+cats_unmodified['tt_qcd_norm'] - # if options.no_qcd_subtract: - # subtract_node =None - # else: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) + + subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) num_selection = BuildCutString(wt, sel, cat_data, '!os') num_node = SubtractNode('ratio_num', ana.SummedFactory('data', data, plot_unmodified, num_selection), subtract_node) if options.analysis == 'mssmsummer16': tau_id_wt = 'wt_tau2_id_loose' else: tau_id_wt = '1' - # if options.no_qcd_subtract: - # subtract_node =None - # else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) den_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, '!os') den_node = SubtractNode('ratio_den', @@ -3507,9 +3485,6 @@ def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', s subtract_node) shape_node = None full_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, OSSS) - # if options.no_qcd_subtract: - # subtract_node = None - # else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, @@ -5213,8 +5188,8 @@ def RawFFFromString(string): do_data = False if options.scheme == "noTT": samples_to_skip.extend(["TTT","TTJ"]) - if options.scheme == "noEWKZ": - samples_to_skip.extend(['EWKZ']) + if options.scheme == "signalQCD": + samples_to_skip.extend(['TTT','TTJ','VVT','VVJ','W','jetFakes','ZLL','ZTT','ZL','EWKZ','ggH_hww']) RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) #if options.era == "tauid2016" and options.channel in ['et','mt']: # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) @@ -5507,11 +5482,7 @@ def MergeXBins(hist): hist_den = QCDdirectory.Get("ratio_den") hist_scale = QCDdirectory.Get("ratio_num").Clone() - integralFactor = (hist_scale.Integral())/(hist_den.Integral()) hist_scale.Divide(hist_den) - for i in range(0,hist_scale.GetNbinsX()): - if hist_scale.GetBinContent(i+1)>=1: - hist_scale.Fill(i+1,integralFactor) hist_QCD = QCDdirectory.Get("data").Clone() @@ -5608,7 +5579,7 @@ def MergeXBins(hist): scheme = options.channel if compare_w_shapes: scheme = 'w_shape' if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "" and options.scheme != "noEWKZ"and options.scheme != "noTT": scheme = options.scheme + if options.scheme != "" and options.scheme != "signalQCD"and options.scheme != "noTT": scheme = options.scheme FF = options.method in [17,18] if options.ml_ff: options.w_ff_closure = False diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py b/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py index 75388d196..9a725b5bf 100644 --- a/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py +++ b/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py @@ -325,11 +325,11 @@ def MyCompareHists(hists=[], o.IsA().Destructor(o) c1.Close() +LUMI22 = 35.2 +LUMI18 = 59.8 USEBYBIN = True -LUMI22 = 38.2 -LUMI18 = 59.7 DO_RATIO = True -file18_dirname = "output_2018_all/" +file18_dirname = "output_2018/" file22_dirname = "output_2022/" output_folder_name = "output_2018vs2022/" @@ -338,16 +338,20 @@ def MyCompareHists(hists=[], variables = [ ["n_jets","N_{jets}"], - # ["pt_1","p_{T}^{#tau_{1}}"], - # ["pt_2", "p_{T}^{#tau_{2}}"], - # ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], - # ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], + ["pt_1","p_{T}^{#tau_{1}}"], + ["pt_2", "p_{T}^{#tau_{2}}"], + ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], + ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], ["pt_tt", "p_{T}^{#tau#tau}"], ["m_vis","m_{#tau#tau}"] ] +#Name of QCD selection e.g. medium_vloose_medium_vloose: +#"deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5" selname = "medium_vloose_medium_vloose" + +#"OppS" and/or "SS" types=["OppS","SS"] for var in variables: @@ -450,16 +454,13 @@ def MyCompareHists(hists=[], #-------------------------------------------------------------------- for histtype in [[hists18Data,hists22Data,"Data",None],[hists18QCD,hists22QCD,"QCD",uncertQCD], [hists18Diff,hists22Diff,"nonQCD",uncertDiff]]: - # legend_titles = ["2018 %s (%s)"%(histtype[2],chargetype)] + [ - # "#splitline{Scaled 2022 %s}{%s (%s)}"%(histtype[2],trig,chargetype) for trig in ["doubletau trig","all trigs"] - # ] legend_titles = ["2018 %s"%(ver) for ver in versions] + [ "2022 %s"%(trig) for trig in ["doubletau","doubletau+jet"] ] if var[0] == "n_jets": MyCompareHists(hists = histtype[0]+histtype[1], legend_titles = legend_titles, - title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.5,1.5", + title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.5,2", x_title = var[1], y_title = "Events",plot_name = var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, outputfolder=output_folder_name,uncert_hist=histtype[3], @@ -468,7 +469,7 @@ def MyCompareHists(hists=[], elif var[0] == "pt_tt": MyCompareHists(hists = histtype[0]+histtype[1], legend_titles = legend_titles, - title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.3,1.5", + title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.3,2", x_title = var[1], y_title = "Events",plot_name = var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, outputfolder=output_folder_name, integral_with_lowerlimit=None,uncert_hist=histtype[3],uncert_title= @@ -476,21 +477,36 @@ def MyCompareHists(hists=[], else: MyCompareHists(hists = histtype[0]+histtype[1], legend_titles = legend_titles, - title="%s (%s) 59.7 fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign")), extra_pad=0,ratio_range="0.5,1.5", + title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.5,2", x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, outputfolder=output_folder_name,uncert_hist=histtype[3], uncert_title= ("Systematic Error" if histtype[3] is not None else ''),integral_with_upperlimit=None) -#title="59.7 fb^{-1} (13 TeV)" + + print("\n ------------------------%s %s %s------------------------"%(var[0],histtype[2],chargetype)) + counter=0 + if var[0] == "m_vis": + upper_limit=80 + for hist in histtype[0]+histtype[1]: + print("\n%s:"%(legend_titles[counter])) + print("Total: %d (%.1f%%)"%(hist.Integral(1,hist.GetNbinsX()),(hist.Integral(1,hist.GetNbinsX())/histtype[0][0].Integral(1,hist.GetNbinsX()))*100)) + print("Up to %dGeV: %d (%.1f%%)"%(upper_limit,hist.Integral(1,hist.FindBin(upper_limit)),(hist.Integral(1,hist.FindBin(upper_limit))/histtype[0][0]. Integral(1,hist.FindBin(upper_limit)))*100)) + counter+=1 + if var[0] == "pt_tt": + lower_limit=100 + for hist in histtype[0]+histtype[1]: + print("\n%s:"%(legend_titles[counter])) + print("Total: %d (%.1f%%)"%(hist.Integral(1,hist.GetNbinsX()),(hist.Integral(1,hist.GetNbinsX())/histtype[0][0].Integral(1,hist.GetNbinsX()))*100)) + print("From %dGeV: %d (%.1f%%)"%(lower_limit,hist.Integral(hist.FindBin(lower_limit),hist.GetNbinsX()),(hist.Integral(hist.FindBin(lower_limit),hist.GetNbinsX())/histtype[0][0]. Integral(hist.FindBin(lower_limit),hist.GetNbinsX()))*100)) + counter+=1 + +#legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()),(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX())/legend_hists[0].Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()))*100),"l") #-------------------------------------------------------------------- - # legend_titles = ["2018 S/#sqrt{B} (%s)"%chargetype] + [ - # "#splitline{2022 S/#sqrt{B} (%s)}{%s}"%(chargetype,trig) for trig in ["doubletau trig","all trigs"] - # ] - MyCompareHists(hists = SBstatHist18+SBstatHist22, - legend_titles = legend_titles, - title="S/#sqrt{B} %s (%s)"%(histtype[2],chargetype), extra_pad=0,ratio_range="0.5,2.5", - x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = - var[0]+"_"+selname+"_"+chargetype, output_file = output, ratio = True, outputfolder=output_folder_name) + # MyCompareHists(hists = SBstatHist18+SBstatHist22, + # legend_titles = legend_titles, + # title="S/#sqrt{B} %s (%s)"%(histtype[2],chargetype), extra_pad=0,ratio_range="0.5,2.5", + # x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = + # var[0]+"_"+selname+"_"+chargetype, output_file = output, ratio = True, outputfolder=output_folder_name) #-------------------------------------------------------------------- diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py index 6a2a731a2..b56eebb6f 100644 --- a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py +++ b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py @@ -3,9 +3,9 @@ import numpy as np PLOTBYBIN = True -DOCHI2 = True -infiles_dirname = "output_2018_good/" -output_folder_name = "output_test/" +DOCHI2 = False #Chi2 comparison of QCD fits, produces a text file in the outputfolder named "chi2test.txt" +infiles_dirname = "output_2018/" +output_folder_name = "output_2018qcdcompare/" def MyCompareHists(hists=[], legend_titles=[], @@ -294,7 +294,7 @@ def MyCompareHists(hists=[], legendstats.Draw("same") c1.SaveAs(outputfolder+plot_name+'.png') - #c1.SaveAs(outputfolder+plot_name+'.pdf') + c1.SaveAs(outputfolder+plot_name+'.pdf') if output_file is not None: output_file.WriteObject(c1, plot_name) for o in objects: @@ -303,11 +303,11 @@ def MyCompareHists(hists=[], variables = [ - # ["n_jets","N_{jets}"], - # ["pt_1","p_{T}^{#tau_{1}}"], - # ["pt_2", "p_{T}^{#tau_{2}}"], - # ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], - # ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], + ["n_jets","N_{jets}"], + ["pt_1","p_{T}^{#tau_{1}}"], + ["pt_2", "p_{T}^{#tau_{2}}"], + ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], + ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], ["m_vis","m_{#tau#tau}"], ["pt_tt", "p_{T}^{#tau#tau}"] diff --git a/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py index 4347fc427..14ad6171e 100644 --- a/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py +++ b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_tt.py @@ -2,14 +2,13 @@ import json variables = [ - + 'pt_tt(20,0,200)', + 'm_vis(20,0,200)', 'n_jets(4,0,4)', 'pt_1(20,0,200)', 'pt_2(20,0,200)', 'mt_1(30,0,300)', - 'mt_2(30,0,300)', - 'pt_tt(20,0,200)', - 'm_vis(20,0,200)' + 'mt_2(30,0,300)' ] #Selections in the control region (QCD) @@ -23,9 +22,14 @@ ] DO_SS = True #produce same-sign files -years = ["UL_2018"]#"UL_2018","2022" -triggernames_2022 = [["trg_doubletau && pt_1>40 && pt_2>40","trg_doubletau"],["(trg_doubletau && pt_1>40 && pt_2>40) || ((trg_doubletau_plusjet60 || trg_doubletau_plusjet75) && trg60jet_pt>65)","trg_both"]]#pt>35 base cut -versions = ["v2p5"] #"v2p1","v2p5" + +#"UL_2018" and/or "2022" +years = ["UL_2018","2022"] + +triggerselections = [["trg_doubletau && pt_1>40 && pt_2>40","trg_doubletau"],["(trg_doubletau && pt_1>40 && pt_2>40) || ((trg_doubletau_plusjet60 || trg_doubletau_plusjet75) && trg60jet_pt>65)","trg_both"]]#pt>35 base cut + +#List of versions to make plots of: "v2p1" and/or "v2p5" +versions = ["v2p1","v2p5"] json_name= 'input/tau_SF_strings_dm_binned_mediumvsjet_vvloosevsele_split_fit.json' @@ -40,24 +44,25 @@ for sel in selnames: if yr == "UL_2018": triggernames = [["trg_doubletau && pt_1>40 && pt_2>40","trg_doubletau"]] - add_cond = '--add_wt=\'%(sf)s*1/wt_tau_id_dm\'' % vars()#'--add_wt=\'wt_prefire*%(sf)s/wt_tau_id_dm*%(trg_sf)s\'' % vars() else: - triggernames = triggernames_2022 - add_cond = '' + triggernames = triggerselections for trigname in triggernames: for version in versions: extra=' --ratio_range=\"0.6,1.4\" ' if v[0] != 'm': - extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%trigname[0] + extra += ' --sel="((%s) && m_vis<100)"'%trigname[0] extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2 && m_vis<100)"'%(sel[1],trigname[0]) else: - extra += ' --set_alias=baseline:"(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%trigname[0] - + extra += ' --sel="(%s)"'%trigname[0] extra += ' --set_alias=tt_qcd_norm:"(%s && leptonveto==0 && (%s) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)"'%(sel[1],trigname[0]) if version =="v2p5": + if yr=="UL_2018": + add_cond = '--add_wt=\'%(sf)s*1/wt_tau_id_dm\'' % vars() + else: + add_cond = '' extra += ' --v2p5' extra+= ' --extra_name=%s_%s_v2p5'%(sel[0],trigname[1]) os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) @@ -65,8 +70,8 @@ os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) elif yr=="UL_2018": extra+= ' --extra_name=%s_%s_v2p1'%(sel[0],trigname[1]) - os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) if DO_SS: - os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s %(add_cond)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) + os.system('python scripts/HiggsTauTauPlot_Run3.py %(extra)s --do_ss --cfg scripts/plot_%(yr)s.cfg --var=\"%(v_tt)s\"' % vars() ) diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg index 300357b82..3c687ea72 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_2022.cfg @@ -1,4 +1,3 @@ -#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_2022.cfg --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_2022.json @@ -6,22 +5,15 @@ folder=/vols/cms/eb921/output/tt_2022/ era=22 sm_masses="" draw_signal_mass="" -#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 -#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 year=2022 norm_bins=True ratio=True -lumi=38.18 fb^{-1} (13.6 TeV) +lumi=35.2 fb^{-1} (13.6 TeV) vbf_background=False wp=medium channel=tt method=8 outputfolder=output_2022 -#extra_name=nosubqcd no_qcd_subtract=True -#do_ss=True -scheme=noWandEWKZ scale_by_bin=True -#v2p5=True \ No newline at end of file +scheme=signalQCD \ No newline at end of file diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index 9f39558e9..92ea7021c 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -1,4 +1,3 @@ -#python scripts/HiggsTauTauPlot.py --cfg scripts/plot_UL_2018_nosubqcd.cfg --var "m_vis(20,0,200)" [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json @@ -6,21 +5,14 @@ folder=/vols/cms/eb921/output/tt_UL_2018/ era=UL_18 sm_masses="" draw_signal_mass="" -#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 -#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 -#bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 year=2018 norm_bins=True ratio=True -lumi=59.7 fb^{-1} (13 TeV) +lumi=59.8 fb^{-1} (13 TeV) vbf_background=False wp=medium channel=tt method=8 -outputfolder=output_2018_test -#extra_name=nosubqcd +outputfolder=output_2018 no_qcd_subtract=True -#do_ss=True -scale_by_bin=True -#v2p5=True \ No newline at end of file +scale_by_bin=True \ No newline at end of file From 8b765fbac7737193a2bc98c9081fd7cd766c62df Mon Sep 17 00:00:00 2001 From: Daniel Winterbottom Date: Mon, 2 Oct 2023 17:17:13 +0100 Subject: [PATCH 48/50] adapting Endre's code for the main branch --- .../htt_scalefactors_2022postEE_noZpt.root | Bin 49927 -> 0 bytes .../htt_scalefactors_2022preEE_noZpt.root | Bin 50005 -> 0 bytes .../scripts/HiggsTauTauPlot.py | 231 +- .../scripts/HiggsTauTauPlot_Run3.py | 5792 ----------------- .../HiggsTauTauRun2/scripts/compare_Run2_3.py | 515 -- .../scripts/compare_qcdmethods.py | 441 -- .../scripts/config_UL_2018.json | 4 +- ...trol_plots.py => control_plots_2022_mt.py} | 0 .../HiggsTauTauRun2/scripts/plot_UL_2018.cfg | 15 +- Analysis/HiggsTauTauRun2/src/BTagCheck.cc | 10 +- .../src/BTagWeightLegacyRun2.cc | 10 +- Analysis/HiggsTauTauRun2/src/HTTCategories.cc | 14 +- .../src/HTTFakeFactorWeights.cc | 11 +- .../HiggsTauTauRun2/src/HTTPairGenInfo.cc | 7 +- 14 files changed, 244 insertions(+), 6806 deletions(-) delete mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root delete mode 100644 Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root delete mode 100644 Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py delete mode 100644 Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py delete mode 100644 Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py rename Analysis/HiggsTauTauRun2/scripts/{mt_control_plots.py => control_plots_2022_mt.py} (100%) diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022postEE_noZpt.root deleted file mode 100644 index d957e836433fead2a1846ebccac345d13119f83c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49927 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УlD_$5F`O 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 W^?!_lDgXa*>EHARAlz7!0RIm`ra{I4 diff --git a/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root b/Analysis/HiggsTauTauRun2/input/scale_factors/htt_scalefactors_2022preEE_noZpt.root deleted file mode 100644 index e0a4339c4d4b62f39d54358766deae992a0a5fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50005 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.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.15 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' elif options.channel == 'et': - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) else: anti_isolated_sel = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' ff_cat = cats[cat_name] +" && "+ anti_isolated_sel ff_cat_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18']: + if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: if ff_syst_weight is not None and 'sub_syst' not in add_name: fake_factor_wt_string = '('+ff_syst_weight+'_1)' else: if options.analysis in ['cpprod']: @@ -3495,7 +3598,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"mvadm2016"]: anti_isolated_sel_1 = cats['baseline'].replace('mva_olddm_tight_1>0.5','mva_olddm_tight_1<0.5 && mva_olddm_vloose_1>0.5') anti_isolated_sel_2 = cats['baseline'].replace('mva_olddm_tight_2>0.5','mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5') - if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP']: # need to do also for MVA cats for 2016! + if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP','22']: # need to do also for MVA cats for 2016! anti_isolated_sel_2 = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) anti_isolated_sel_1 = cats['baseline'].replace('deepTauVsJets_%(wp)s_1>0.5' % vars(),'deepTauVsJets_%(wp)s_1<0.5 && deepTauVsJets_vvvloose_1>0.5' % vars()) ff_cat_1 = cats[cat_name] +" && "+ anti_isolated_sel_1 @@ -3512,6 +3615,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' flat = 1.04 if (options.era=='cpsummer17' or options.era == 'UL_17'): flat=1.07 if (options.era=='cp18'or options.era == 'UL_18'): flat=1.06 + if (options.era=='22'): flat=1.06 if 'njets0' in add_name: @@ -3532,6 +3636,23 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpdecay'] and 'ff_tt_qcd_syst' in add_name: + if(options.era=='22'): + if 'njets0' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' + elif 'njets1' in add_name: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + else: + if 'Up' in add_name: + ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' + if 'Down' in add_name: + ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' + if(options.era=='cp18' or options.era == 'UL_18'): if 'njets0' in add_name: if 'Up' in add_name: @@ -3590,7 +3711,7 @@ def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt=' if options.analysis in ['cpprod','cpdecay','mssmrun2','vlq']: fake_factor_wt_string_2='0' else: - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18']: + if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: # deep tau tight 2018 anti isolating the subleading tau if options.analysis == 'cpprod': fake_factor_wt_string_2='0' @@ -4871,8 +4992,12 @@ def RawFFFromString(string): # output_name = options.outputfolder+'/datacard_'+options.extra_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' datacard_name+='_'+options.extra_name #else: -output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' -outfile = ROOT.TFile(output_name, 'RECREATE') +if options.do_ss: + output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'_ss.root' + outfile = ROOT.TFile(output_name, 'RECREATE') +else: + output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' + outfile = ROOT.TFile(output_name, 'RECREATE') cats['cat'] = '('+cats[options.cat]+')*('+cats['baseline']+')' if options.channel=="em": cats['em_shape_cat'] = '('+cats[options.cat]+')*('+cats['loose_baseline']+')' @@ -4900,6 +5025,9 @@ def RawFFFromString(string): if options.channel == 'em': ana.remaps['MuonEG'] = 'data_obs' elif options.channel in ['mt','mj','zmm']: + if options.era == '22': + ana.remaps['Muon'] = 'data_obs' + else: ana.remaps['SingleMuon'] = 'data_obs' elif (options.era != 'cp18' and options.era != 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): ana.remaps['SingleElectron'] = 'data_obs' @@ -5060,6 +5188,8 @@ def RawFFFromString(string): do_data = False if options.scheme == "noTT": samples_to_skip.extend(["TTT","TTJ"]) + if options.scheme == "signalQCD": + samples_to_skip.extend(['TTT','TTJ','VVT','VVJ','W','jetFakes','ZLL','ZTT','ZL','EWKZ','ggH_hww']) RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) #if options.era == "tauid2016" and options.channel in ['et','mt']: # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) @@ -5345,10 +5475,44 @@ def MergeXBins(hist): down.Write() -outfile.Close() + +if options.scale_by_bin: + directory = outfile.Get(nodename) + QCDdirectory = directory.Get("QCD.subnodes") + + hist_den = QCDdirectory.Get("ratio_den") + hist_scale = QCDdirectory.Get("ratio_num").Clone() + hist_scale.Divide(hist_den) + + + hist_QCD = QCDdirectory.Get("data").Clone() + hist_bkg = QCDdirectory.Get("total_bkg") + hist_QCD.Add(hist_bkg,-1) + hist_QCD.Multiply(hist_scale) + hist_QCD.SetName("QCD_bybin") + outfile.cd(nodename) + hist_QCD.Write() + if options.no_qcd_subtract: + hist_QCD_nosub = QCDdirectory.Get("data").Clone() + hist_QCD_nosub.Multiply(hist_scale) + hist_QCD_nosub.SetName("QCD_bybin_nosub") + hist_QCD_nosub.Write() +if options.no_qcd_subtract: + directory = outfile.Get(nodename) + QCDdirectory = directory.Get("QCD.subnodes") + + hist_QCD = QCDdirectory.Get("data").Clone() + den = QCDdirectory.Get("ratio_den").Integral() + num = QCDdirectory.Get("ratio_num").Integral() + hist_QCD.Scale(num/den) + #hist_QCD.SetEntries(hist_QCD.GetEntries()*(num/den)) + hist_QCD.SetName("QCD_nosub") + outfile.cd(nodename) + hist_QCD.Write() +outfile.Close() if options.do_unrolling==0: print "Finished Processing" @@ -5383,8 +5547,9 @@ def MergeXBins(hist): if not options.no_plot: - if options.extra_name != '': vname = options.extra_name - else: vname = var_name + #if options.extra_name != '': vname = options.extra_name + #else: vname = var_name + vname = var_name + '_' +options.extra_name if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year @@ -5414,7 +5579,7 @@ def MergeXBins(hist): scheme = options.channel if compare_w_shapes: scheme = 'w_shape' if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "": scheme = options.scheme + if options.scheme != "" and options.scheme != "signalQCD"and options.scheme != "noTT": scheme = options.scheme FF = options.method in [17,18] if options.ml_ff: options.w_ff_closure = False @@ -5468,7 +5633,15 @@ def MergeXBins(hist): ) elif scheme != 'signal': auto_blind=False - plotting.HTTPlot(nodename, + plotnames = [[plot_name,"QCD"]] + if options.scale_by_bin: + plotnames.append([plot_name+"_bybin","QCD_bybin"]) + if options.no_qcd_subtract: + plotnames.append([plot_name+"_bybin_nosub","QCD_bybin_nosub"]) + if options.no_qcd_subtract: + plotnames.append([plot_name+"_nosub","QCD_nosub"]) + for namepair in plotnames: + plotting.HTTPlot(nodename, plot_file, options.signal_scale, options.draw_signal_mass, @@ -5499,7 +5672,7 @@ def MergeXBins(hist): options.add_flat_uncert, options.uncert_title, options.lumi, - plot_name, + namepair[0], custom_uncerts_up_name, custom_uncerts_down_name, scheme, @@ -5515,7 +5688,8 @@ def MergeXBins(hist): options.qcd_ff_closure, options.w_ff_closure, options.bkg_comp, - options.plot_signals.split(",") + options.plot_signals.split(","), + namepair[1] ) else: plotting.HTTPlotSignal(nodename, @@ -5587,16 +5761,14 @@ def MergeXBins(hist): # plot_name, # "#mu#tau_{h}") - #norm signal yields on datacards to 1pb AFTER plotting outfile = ROOT.TFile(output_name, 'UPDATE') for add_name in add_names: if options.analysis in ['mssm','mssmrun2']: NormSignals(outfile,add_name) - # for smsummer16 need to ad WplusH and WminusH templates into one -if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.channel != 'zmm' and options.analysis != "mssmrun2": +if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.channel != 'zmm' and options.analysis != "mssmrun2": outfile.cd(nodename) directory = outfile.Get(nodename) hists_to_add = [] @@ -5611,7 +5783,6 @@ def MergeXBins(hist): hists_to_add.append(hist) for hist in hists_to_add: hist.Write() - if options.analysis in ['mssmrun2','vlq']: #and options.era not in ['UL_16_preVFP','UL_16_postVFP','UL_17','UL_18']: //was failing before RenameMSSMrun2Datacards(outfile) diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py deleted file mode 100644 index 9d88043d5..000000000 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot_Run3.py +++ /dev/null @@ -1,5792 +0,0 @@ -import ROOT -import os -import glob -import json -from UserCode.ICHiggsTauTau.analysis import * -from UserCode.ICHiggsTauTau.uncertainties import ufloat -from optparse import OptionParser -import argparse -import ConfigParser -import UserCode.ICHiggsTauTau.plotting as plotting -from collections import OrderedDict -import copy - -CHANNELS= ['et', 'mt', 'em','tt','zmm','zee','mj'] -ANALYSIS= ['sm','mssm','Hhh'] -METHODS= [8 ,9, 10, 11, 12 , 13, 14, 15, 16, 17, 18, 19] - -conf_parser = argparse.ArgumentParser( - description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter, - add_help=False - ) -conf_parser.add_argument("--cfg", - help="Specify config file", metavar="FILE") -options, remaining_argv = conf_parser.parse_known_args() - -defaults = { - "channel":"mt" , "outputfolder":"output", - "folder":"/vols/cms/dw515/Offline/output/MSSM/Jan11/" , "signal_folder":"", "embed_folder":"", - "paramfile":"scripts/Params_2016_spring16.json", "cat":"inclusive", "year":"2016", - "era":"mssmsummer16", "sel":"(1)", "set_alias":[], "analysis":"mssm", "var":"m_vis(7,0,140)", - "method":8 , "do_ss":False, "do_aiso":False, "sm_masses":"125", "ggh_masses":"", "bbh_masses":"", - "bbh_nlo_masses":"", "nlo_qsh":False, "qcd_os_ss_ratio":-1, "add_sm_background":"", - "syst_e_scale":"", "syst_mu_scale":"", "syst_tau_scale":"", "syst_tau_scale_0pi":"", - "syst_e_res":"", "syst_mu_res":"", "syst_tau_res":"", - "syst_tau_scale_1pi":"", "syst_tau_scale_3prong":"", "syst_tau_scale_3prong1pi0":"", "syst_eff_t":"", "syst_tquark":"", - "syst_zwt":"", "syst_w_fake_rate":"", "syst_scale_j":"", "syst_res_j":"", "syst_scale_j_rbal":"", - "syst_scale_j_rsamp":"", "syst_scale_j_full":"", "syst_scale_j_cent":"", "syst_scale_j_hf":"", - "syst_scale_j_full_corr":"", "syst_scale_j_cent_corr":"", "syst_scale_j_hf_corr":"", - "syst_scale_j_full_uncorr":"", "syst_scale_j_cent_uncorr":"", "syst_scale_j_hf_uncorr":"", - "syst_scale_j_by_source":"","jes_sources":"1:27", "syst_eff_b":"", "syst_fake_b":"", "syst_eff_b_weights":"", - "norm_bins":False, "blind":False, "x_blind_min":100, "x_blind_max":4000, "ratio":False, - "y_title":"", "x_title":"", "custom_y_range":False, "y_axis_min":0.001, - "y_axis_max":100,"custom_x_range":False, "x_axis_min":0.001, "x_axis_max":100, "log_x":False, - "log_y":False, "extra_pad":0.0, "signal_scale":1, "draw_signal_mass":"", "draw_signal_tanb":10, - "signal_scheme":"run2_mssm", "lumi":"12.9 fb^{-1} (13 TeV)", "no_plot":False, - "ratio_range":"0.6,1.4", "datacard":"", "do_custom_uncerts":False, "uncert_title":"Background uncertainty", - "custom_uncerts_wt_up":"","custom_uncerts_wt_down":"", "add_flat_uncert":0, - "add_stat_to_syst":False, "add_wt":"", "custom_uncerts_up_name":"", "custom_uncerts_down_name":"", - "do_ff_systs":False, "syst_efake_0pi_scale":"", "syst_efake_1pi_scale":"", "syst_jfake_scale":"", - "syst_mufake_0pi_scale":"", "syst_mufake_1pi_scale":"", "scheme":"","scheme":"", "syst_zpt_es":"", - "syst_zpt_tt":"", "syst_zpt_statpt0":"", "syst_zpt_statpt40":"", "syst_zpt_statpt80":"", - "syst_jfake_m":"", "syst_jfake_e":"", "syst_z_mjj":"", "syst_qcd_scale":"", "syst_quarkmass":"", "syst_mssm_ggh":False, - "syst_ps":"", "syst_ue":"", "doNLOScales":False, "gen_signal":False, "doPDF":False, - "doMSSMReWeighting":False, "do_unrolling":1, "syst_tau_id_dm0":"", "syst_tau_id_dm1":"", - "syst_tau_id_dm10":"", "syst_lfake_dm0":"","syst_lfake_dm1":"","syst_qcd_shape_wsf":"", - "syst_scale_met_unclustered":"","syst_scale_met_clustered":"", - "extra_name":"", "no_default":False, "no_systs":False, "embedding":False,"syst_embedding_tt":"", "syst_embed_pt":"", - "vbf_background":False, "syst_em_qcd":"", "syst_prefire":"", - "syst_scale_met":"", "syst_res_met":"", "split_sm_scheme": False, - "ggh_scheme": "powheg", "symmetrise":False, "mergeXbins":False, 'em_qcd_weight':"", - "syst_scale_j_corr":"","syst_scale_j_uncorr":"", "syst_qcd_bkg":"", - "ff_ss_closure":False, "threePads":False,"auto_blind":False, - "syst_tau_id_diff":"", "syst_tau_trg_diff":"","syst_lep_trg_diff":"", - "syst_scale_j_regrouped":"", "syst_tau_scale_grouped":"","wp":"medium","singletau":False,"qcd_ff_closure":False, - "w_ff_closure":False,"ggh_masses_powheg":"", "bbh_masses_powheg":"", "vlq_sig":"","ratio_log_y":False,"plot_signals":"", "DY_NLO":False, "v2p5":False, - "no_qcd_subtract": False, "scale_by_bin":False - -} - -if options.cfg: - config = ConfigParser.SafeConfigParser() - config.read([options.cfg]) - defaults.update(dict(config.items("Defaults"))) - -parser = argparse.ArgumentParser( - parents=[conf_parser] - ) -parser.set_defaults(**defaults) -parser.add_argument("--channel", dest="channel", type=str, - help="Tau decay channel to process. Supported channels: %(CHANNELS)s" % vars()) -parser.add_argument("--outputfolder", dest="outputfolder", type=str, - help="Name of output folder") -parser.add_argument("--folder", dest="folder", type=str, - help="Name of input folder") -parser.add_argument("--signal_folder", dest="signal_folder", type=str, - help="If specified will use as input folder for signal samples, else will use same directroy specified by \"folder\" option.") -parser.add_argument("--embed_folder", dest="embed_folder", type=str, - help="If specified will use as input folder for embed samples, else will use same directroy specified by \"folder\" option.") -parser.add_argument("--paramfile", dest="paramfile", type=str, - help="Name of parameter file") -parser.add_argument("--cat", dest="cat", type=str, - help="Category") -parser.add_argument("--datacard", dest="datacard", type=str, - help="Datacard name") -parser.add_argument("--year", dest="year", type=str, - help="Year") -parser.add_argument("--era", dest="era", type=str, - help="Era") -parser.add_argument("--sel", dest="sel", type=str, - help="Selection") -parser.add_argument("--set_alias", action="append", dest="set_alias", type=str, - help="Overwrite alias selection using this options. Specify with the form --set_alias=nameofaliastoreset:newselection") -parser.add_argument("--analysis", dest="analysis", type=str, - help="Analysis. Supported options: %(CHANNELS)s" % vars()) -parser.add_argument("--var", dest="var", type=str, - help="Variable to plot") -parser.add_argument("--method", dest="method", type=int, - help="Method. Supported options: %(METHODS)s" % vars()) -parser.add_argument("--do_aiso", dest="do_aiso", action='store_true', - help="Anti-isolate electron / muon") -parser.add_argument("--do_ss", dest="do_ss", action='store_true', - help="Do same-sign.") -parser.add_argument("--sm_masses", dest="sm_masses", type=str, - help="Comma seperated list of SM signal masses.") -parser.add_argument("--ggh_masses", dest="ggh_masses", type=str, - help="Comma seperated list of SUSY ggH signal masses.") -parser.add_argument("--bbh_nlo_masses", dest="bbh_nlo_masses", type=str, - help="Comma seperated list of SUSY NLO bbH signal masses.") -parser.add_argument("--nlo_qsh", dest="nlo_qsh", action='store_true', - help="Do the Up/Down Qsh variations for NLO samples.") -parser.add_argument("--doNLOScales", dest="doNLOScales", action='store_true', - help="Do the Up/Down QCD scale variations for NLO samples and compute uncertainties.") -parser.add_argument("--doPDF", dest="doPDF", action='store_true', - help="Do PDF and alphaS variations for NLO samples and compute uncertainties.") -parser.add_argument("--doMSSMReWeighting", dest="doMSSMReWeighting", action='store_true', - help="Do mA-tanb dependent reweighting of MSSM ggH signal.") -parser.add_argument("--bbh_masses", dest="bbh_masses", type=str, - help="Comma seperated list of SUSY bbH signal masses.") -parser.add_argument("--qcd_os_ss_ratio", dest="qcd_os_ss_ratio", type=float, - help="QCD OS/SS ratio") -parser.add_argument("--add_sm_background", dest="add_sm_background", type=str, - help="Add SM Higgs background for MSSM") -parser.add_argument("--syst_tau_scale", dest="syst_tau_scale", type=str, - help="If this string is set then the systematic shift due to tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_e_scale", dest="syst_e_scale", type=str, - help="If this string is set then the systematic shift due to electron energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_mu_scale", dest="syst_mu_scale", type=str, - help="If this string is set then the systematic shift due to muon energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_scale_0pi", dest="syst_tau_scale_0pi", type=str, - help="If this string is set then the systematic shift due to the 1 prong 0 pi tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_scale_1pi", dest="syst_tau_scale_1pi", type=str, - help="If this string is set then the systematic shift due to the 1 prong 1 pi tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_scale_3prong", dest="syst_tau_scale_3prong", type=str, - help="If this string is set then the systematic shift due to 3 prong tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_scale_3prong1pi0", dest="syst_tau_scale_3prong1pi0", type=str, - help="If this string is set then the systematic shift due to 3 prong + 1 pi0 tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_scale_grouped", type=str, - help="If this string is set then the systematic shift due to tau energy scale is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_e_res", dest="syst_e_res", type=str, - help="If this string is set then the systematic shift due to electron energy resolution is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_mu_res", dest="syst_mu_res", type=str, - help="If this string is set then the systematic shift due to muon energy resolution is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_res", dest="syst_tau_res", type=str, - help="If this string is set then the systematic shift due to tau energy resolution is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_eff_t", dest="syst_eff_t", type=str, default='', - help="If this string is set then the systematic shift due to tau ID is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tquark", dest="syst_tquark", type=str, - help="If this string is set then the top-quark weight systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_zwt", dest="syst_zwt", type=str, - help="If this string is set then the z-reweighting systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_w_fake_rate", dest="syst_w_fake_rate", type=str, default='', - help="If this string is set then the W+jets fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j", dest="syst_scale_j", type=str, - help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_res_j", dest="syst_res_j", type=str, - help="If this string is set then the jER systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j_corr", dest="syst_scale_j_corr", type=str, - help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j_uncorr", dest="syst_scale_j_uncorr", type=str, - help="If this string is set then the jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j_rbal", dest="syst_scale_j_rbal", type=str, - help="If this string is set then the RelativeBal jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j_rsamp", dest="syst_scale_j_rsamp", type=str, - help="If this string is set then the RelativeSample jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_j_full", dest="syst_scale_j_full", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5)") -parser.add_argument("--syst_scale_j_cent", dest="syst_scale_j_cent", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3)") -parser.add_argument("--syst_scale_j_hf", dest="syst_scale_j_hf", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3)") -parser.add_argument("--syst_scale_j_full_corr", dest="syst_scale_j_full_corr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_cent_corr", dest="syst_scale_j_cent_corr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_hf_corr", dest="syst_scale_j_hf_corr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_full_uncorr", dest="syst_scale_j_full_uncorr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta<5). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_cent_uncorr", dest="syst_scale_j_cent_uncorr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = central region (eta<3). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_hf_uncorr", dest="syst_scale_j_hf_uncorr", type=str, - help="If this string is set then the regional jet scale systematic is performed with the set string appended to the resulting histogram name. Region = full region (eta>3). 2016/2017 correlated part.") -parser.add_argument("--syst_scale_j_by_source", dest="syst_scale_j_by_source", type=str, - help="If this string is set then the jet scale systematic is performed split by source with the set string appended to the resulting histogram name. The string should contrain the substring \'SOUCE\' which will be replaced by the JES source name") -parser.add_argument("--syst_scale_j_regrouped", dest="syst_scale_j_regrouped", type=str, - help="If this string is set then the set of regrouped jet scale systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--jes_sources", dest="jes_sources", type=str, - help="JES sources to process specified by integers seperated by commas. Values seperated by x\':\'y will process all integers from x to y. e.g using --jes_sources=1:3,10 will process sources: 1,2,3,10") -parser.add_argument("--syst_eff_b", dest="syst_eff_b", type=str, - help="If this string is set then the b-tag efficiency systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_eff_b_weights", dest="syst_eff_b_weights", type=str, - help="If this string is set then the b-tag efficiency systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_fake_b", dest="syst_fake_b", type=str, - help="If this string is set then the b-tag fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--norm_bins", dest="norm_bins", action='store_true', - help="Normalize bins by bin width.") -parser.add_argument("--blind", dest="blind", action='store_true', - help="Blind histogram.") -parser.add_argument("--x_blind_min", dest="x_blind_min", type=float, - help="Minimum x for blinding.") -parser.add_argument("--x_blind_max", dest="x_blind_max", type=float, - help="Maximum x for blinding.") -parser.add_argument("--ratio", dest="ratio", action='store_true', - help="Draw ratio.") -parser.add_argument("--y_title", dest="y_title", type=str, - help="Y-axis title.") -parser.add_argument("--x_title", dest="x_title", type=str, - help="X-axis title.") -parser.add_argument("--custom_y_range", dest="custom_y_range", action='store_true', - help="Use custom y-axis range") -parser.add_argument("--y_axis_min", dest="y_axis_min", type=float, - help="Minimum y-axis value.") -parser.add_argument("--y_axis_max", dest="y_axis_max", type=float, - help="Maximum y-axis value.") -parser.add_argument("--custom_x_range", dest="custom_x_range", action='store_true', - help="Use custom x-axis range") -parser.add_argument("--x_axis_min", dest="x_axis_min", type=float, - help="Minimum x-axis value.") -parser.add_argument("--x_axis_max", dest="x_axis_max", type=float, - help="Maximum x-axis value.") -parser.add_argument("--log_x", dest="log_x", action='store_true', - help="Set log scale on x-axis.") -parser.add_argument("--log_y", dest="log_y", action='store_true', - help="Set log scale on y-axis.") -parser.add_argument("--ratio_log_y", dest="ratio_log_y", action='store_true', - help="Set log scale on ratio y-axis.") -parser.add_argument("--extra_pad", dest="extra_pad", type=float, - help="Fraction of extra whitespace at top of plot.") -parser.add_argument("--signal_scale", dest="signal_scale", type=float, - help="Signal scale.") -parser.add_argument("--draw_signal_mass", dest="draw_signal_mass", type=str, - help="Signal mass.") -parser.add_argument("--draw_signal_tanb", dest="draw_signal_tanb", type=float, - help="Signal tanb.") -parser.add_argument("--signal_scheme", dest="signal_scheme", type=str, - help="Signal scale.") -parser.add_argument("--lumi", dest="lumi", type=str, - help="Lumi.") -parser.add_argument("--no_plot", dest="no_plot", action='store_true', - help="If option is set then no pdf or png plots will be created only the output root file will be produced.") -parser.add_argument("--ratio_range", dest="ratio_range", type=str, - help="y-axis range for ratio plot in format MIN,MAX") -parser.add_argument("--do_custom_uncerts", dest="do_custom_uncerts", action='store_true', - help="Do custom uncertainty band. Up and down weights for this uncertainty band should be set using \"custom_uncerts_wt_up\" and \"custom_uncerts_wt_down\" options") -parser.add_argument("--custom_uncerts_down_name", dest="custom_uncerts_down_name", type=str, - help="Name of histogram to use for uncertainty down band") -parser.add_argument("--custom_uncerts_up_name", dest="custom_uncerts_up_name", type=str, - help="Name of histogram to use for uncertainty up band") -parser.add_argument("--custom_uncerts_wt_up", dest="custom_uncerts_wt_up", type=str, - help="Up weight for custom uncertainty band") -parser.add_argument("--custom_uncerts_wt_down", dest="custom_uncerts_wt_down", type=str, - help="Down weight for custom uncertainty band") -parser.add_argument("--uncert_title", dest="uncert_title", type=str, - help="Custom uncertainty band legend label") -parser.add_argument("--add_stat_to_syst", dest="add_stat_to_syst", action='store_true', - help="Add custom uncertainty band to statistical uncertainty.") -parser.add_argument("--add_flat_uncert", dest="add_flat_uncert", type=float, - help="If set to non-zero will add a flat uncertainty band in quadrature to the uncertainty.") -parser.add_argument("--add_wt", dest="add_wt", type=str, - help="Name of additional weight to be applied to all templates.") -parser.add_argument("--do_ff_systs", dest="do_ff_systs", action='store_true', - help="Do fake-factor systamatic shifts.") -parser.add_argument("--syst_efake_0pi_scale", dest="syst_efake_0pi_scale", type=str, - help="If this string is set then the e->tau dm=0 fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_efake_1pi_scale", dest="syst_efake_1pi_scale", type=str, - help="If this string is set then the e->tau dm=1 fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_mufake_0pi_scale", dest="syst_mufake_0pi_scale", type=str, - help="If this string is set then the mu->tau dm=0 fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_mufake_1pi_scale", dest="syst_mufake_1pi_scale", type=str, - help="If this string is set then the mu->tau dm=1 fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_jfake_scale", dest="syst_jfake_scale", type=str, - help="If this string is set then the j->tau fake-rate systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--scheme", dest="scheme", type=str, - help="Set plotting scheme") -parser.add_argument("--syst_zpt_es", dest="syst_zpt_es", type=str, - help="If this string is set then the zpT muon ES systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_zpt_tt", dest="syst_zpt_tt", type=str, - help="If this string is set then the zpT tt X-section systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_zpt_statpt0", dest="syst_zpt_statpt0", type=str, - help="If this string is set then the zpT statistical pt0 systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_zpt_statpt40", dest="syst_zpt_statpt40", type=str, - help="If this string is set then the zpT statistical pt40 systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_zpt_statpt80", dest="syst_zpt_statpt80", type=str, - help="If this string is set then the zpT statistical pt80 systematic is performed with the set string appended to the resulting histogram name") -parser.add_argument("--syst_jfake_e", dest="syst_jfake_e", type=str, - help="If set, adds the e->jet fake rate uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_jfake_m", dest="syst_jfake_m", type=str, - help="If set, adds the e->jet fake rate uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_z_mjj", dest="syst_z_mjj", type=str, - help="If set then add the uncertainty on the Z mjj corrections") -parser.add_argument("--syst_qcd_scale", dest="syst_qcd_scale", type=str, - help="If set then add the qcd scale uncertainty for ggH") -parser.add_argument("--syst_quarkmass", dest="syst_quarkmass", type=str, - help="If set then add the finite quark mass uncertainty for ggH") -parser.add_argument("--syst_ps", dest="syst_ps", type=str, - help="If set then add the PS uncertainty for ggH") -parser.add_argument("--syst_ue", dest="syst_ue", type=str, - help="If set then add the UE uncertainty for ggH") -parser.add_argument("--syst_mssm_ggh", dest="syst_mssm_ggh", action='store_true', - help="If set then add the ggH uncertainties for the MSSM (scale and Hdamp uncerts)") -parser.add_argument("--syst_tau_id_dm0", dest="syst_tau_id_dm0", type=str, - help="If set, adds the tau dm = 0 id uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_id_dm1", dest="syst_tau_id_dm1", type=str, - help="If set, adds the tau dm = 1 id uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_tau_id_dm10", dest="syst_tau_id_dm10", type=str, - help="If set, adds the tau dm = 10 id uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_lfake_dm0", dest="syst_lfake_dm0", type=str, - help="If set, adds the e/mu->tau dm = 0 fake-rate uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_lfake_dm1", dest="syst_lfake_dm1", type=str, - help="If set, adds the e/mu->tau dm = 1 fake-rate uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_qcd_shape_wsf", dest="syst_qcd_shape_wsf", type=str, - help="If set, adds QCD shape uncertainty relating to W subtraction from SS data with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_met_unclustered", dest="syst_scale_met_unclustered", type=str, - help="If set, adds the unclustered energy MET uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_scale_met_clustered", dest="syst_scale_met_clustered", type=str, - help="If set, adds the clustered energy MET uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--gen_signal", dest="gen_signal", action='store_true', - help="If set then use generator-level tree for signal") -parser.add_argument("--do_unrolling", dest="do_unrolling", type=int, - help="If argument is set to true will unroll 2D histograms into 1D histogram.") -parser.add_argument("--no_default", dest="no_default", action='store_true', - help="If option is speficied then don't do nominal histograms.") -parser.add_argument("--no_systs", dest="no_systs", action='store_true', - help="If option is speficied then don't do systematics histograms.") -parser.add_argument("--extra_name", dest="extra_name", type=str, - help="If set, adds an additional string to the output datacard name") -parser.add_argument("--embedding", dest="embedding", action='store_true', - help="If option is speficied then use embedded samples for ZTT templates.") -parser.add_argument("--syst_embedding_tt", dest="syst_embedding_tt", type=str, - help="If set, adds systematic templates for embedding corresponding to TTbar shift of +/-10\% ") -parser.add_argument("--syst_embed_pt", dest="syst_embed_pt", type=str, - help="If set, adds systematic templates for embedding corresponding to Z->mumu non-closures ") -parser.add_argument("--vbf_background", dest="vbf_background", action='store_true', - help="Add VBF to total background template") -parser.add_argument("--syst_em_qcd", dest="syst_em_qcd", type=str, - help="If set, adds the QCD shape uncertainties for the em channel. You string should contain *BIN") -parser.add_argument("--syst_scale_met", dest="syst_scale_met", type=str, - help="If set, adds the recoil corrected MET response uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--syst_res_met", dest="syst_res_met", type=str, - help="If set, adds the recoil corrected MET resolution uncertainty with the set string appended to the resulting histogram name") -parser.add_argument("--split_sm_scheme", dest="split_sm_scheme", action='store_true', - help="If set, splits the SM signal scheme into ggH, qqH and VH") -parser.add_argument("--ggh_scheme", dest="ggh_scheme", type=str, - help="Decide which ggH scheme to plot with in split SM scheme mode (powheg or JHU)") -parser.add_argument("--symmetrise", dest="symmetrise", action='store_true', - help="Use this option to symmetrise dijet Delta_phi bins in 2D histogram around centre bin") -parser.add_argument("--mergeXbins", dest="mergeXbins", action='store_true', - help="Use this option to merge x bins to improve stats - to be used is the backgrounds are flat as a function of the X variable") -parser.add_argument("--em_qcd_weight", dest="em_qcd_weight", type=str, - help="Define custom em QCD OSSS weight/function") -parser.add_argument("--syst_qcd_bkg", dest="syst_qcd_bkg", type=str, - help="If set, adds systematic templates corresponding to shifting background subtraction in QCD method up/down by +/-10\% ") -parser.add_argument("--syst_prefire", dest="syst_prefire", type=str, - help="If set, adds systematic templates corresponding to uncertainty on pre-firing correction.") -parser.add_argument("--syst_tau_id_diff", dest="syst_tau_id_diff", type=str, - help="Do shape uncertainty corresponding to shifting the tau id SFs. The string you pass as the argument should contain either *DM, in which case the DM binned version will be used, or *PT in which base the pT binned version will be used.") -parser.add_argument("--syst_tau_trg_diff", dest="syst_tau_trg_diff", type=str, - help="Do shape uncertainty corresponding to shifting the tau trigger SFs. The string you pass as the argument should contain either *DM which will be replaced with DMi for i=0,1,10,11") -parser.add_argument("--syst_lep_trg_diff", dest="syst_lep_trg_diff", type=str, - help="Do shape uncertainty corresponding to shifting the lepton trigger SFs.") -parser.add_argument("--ff_ss_closure", dest="ff_ss_closure", action='store_true', - help="If set then applies a non-closure correction to fake factor yields based on differences in SS data.") -parser.add_argument("--threePads", dest="threePads", action='store_true', - help="If set then draws three pads (one ratio + additional).") -parser.add_argument("--wp", dest="wp", type=str, - help="Tau ID working point to use (only works for mssmrun2).") -parser.add_argument("--singletau", dest="singletau", action='store_true', - help="If set then use singletau baseline (only works for mssmrun2).") -parser.add_argument("--qcd_ff_closure", dest="qcd_ff_closure", action='store_true', - help="Will run closure plot for QCD DR (mssmrun2)") -parser.add_argument("--w_ff_closure", dest="w_ff_closure", action='store_true', - help="Will run closure plot for W DR (mssmrun2)") -parser.add_argument("--bbh_masses_powheg", dest="bbh_masses_powheg", type=str, - help="SUSY bbh masses to run more powheg samples") -parser.add_argument("--ggh_masses_powheg", dest="ggh_masses_powheg", type=str, - help="SUSY ggh masses to run more powheg samples") -parser.add_argument("--bkg_comp", dest="bkg_comp", action='store_true', - help="Will plot the background composition on the 2nd pad and ratio on 3rd. Needs to be run with threePads.") -parser.add_argument("--ml_ff", dest="ml_ff", action='store_true', - help="Use machine learning fake factors for mssmrun2.") -parser.add_argument("--vlq_sig", dest="vlq_sig", type=str, - help="Comma separated list of signal parameter names i.e. vlq_betaRd33_minus1_mU4_gU1,vlq_betaRd33_minus1_mU4_gU2,vlq_betaRd33_minus1_mU4_gU3") -parser.add_argument("--plot_signals", dest="plot_signals", type=str, - help="Comma separated list of what signals to plot") -parser.add_argument("--DY_NLO", dest="DY_NLO", action='store_true', - help="Use DY NLO samples") -parser.add_argument("--plot_from_dc", default="", type=str, - help="If not empty will draw plot straight from datacard") -parser.add_argument("--v2p5", dest="v2p5", action='store_true', - help="Get version of DeepTau v2p5"), -parser.add_argument("--no_qcd_subtract", dest="no_qcd_subtract", action='store_true', - help="Do not subtract background when estimating qcd events") -parser.add_argument("--scale_by_bin", dest="scale_by_bin", action='store_true', - help="Scale QCD by bin") -options = parser.parse_args(remaining_argv) - -print 'do_unrolling = %s' % options.do_unrolling - -print '' -print '################### Options ###################' -print 'channel = ' + options.channel -print 'outputfolder = ' + options.outputfolder -print 'folder = ' + options.folder -print 'paramfile = ' + options.paramfile -print 'cat = ' + options.cat -print 'datacard = ' + options.datacard -print 'year = ' + options.year -print 'era = ' + options.era -print 'sel = ' + options.sel -print 'analysis = ' + options.analysis -print 'var = ' + options.var -print 'method =' , options.method -print 'do_ss =' , options.do_ss -print 'sm_masses = ' + options.sm_masses -print 'ggh_masses = ' + options.ggh_masses -print 'bbh_masses = ' + options.bbh_masses -print 'qcd_os_ss_ratio =' , options.qcd_os_ss_ratio -print 'add_sm_background =' , options.add_sm_background -print 'syst_tau_scale =' , options.syst_tau_scale -print 'syst_eff_t =' , options.syst_eff_t -print 'syst_tquark =' , options.syst_tquark -print 'syst_zwt =' , options.syst_zwt -print 'syst_w_fake_rate =' , options.syst_w_fake_rate -print 'syst_scale_j =' , options.syst_scale_j -print 'syst_eff_b =' , options.syst_eff_b -print 'syst_fake_b =' , options.syst_fake_b -print 'do_ff_systs =' , options.do_ff_systs -print 'singletau =' , options.singletau -print 'DY-NLO =' , options.DY_NLO -print '###############################################' -print '' - -# discrete x labels -discrete_x_axis = False -plot_var = options.var -discrete_x_labels=None -do_eq = False -do_geq = False -if '[' in plot_var and ']' in plot_var: - discrete_x_labels = plot_var.split('[')[1].split(']')[0].split(',') - for i in discrete_x_labels: - if ">=" in i: - discrete_x_axis = True - do_geq = True - elif "==" in i: - discrete_x_axis = True - do_eq = True - -if discrete_x_axis: - if do_geq: - run_bins = [] - for i in discrete_x_labels: - if ">=" in i: - run_bins.append(float(i.replace(">=",""))) - elif "==" in i: - run_bins.append(float(i.replace("==",""))) - else: - run_bins.append(float(i)) - elif do_eq: - run_bins = range(int(discrete_x_labels[0].replace("==","")),int(discrete_x_labels[-1].replace("==",""))+2) - options.var = plot_var.split('[')[0]+str(run_bins) -else: - discrete_x_labels = None - - -# vbf_background = False -vbf_background = options.vbf_background - -compare_w_shapes = False -compare_qcd_shapes = False -if options.scheme == "qcd_shape": compare_qcd_shapes = True -if options.scheme == "w_shape": compare_w_shapes = True -w_abs_shift=None # if not None then the QCD shape will be adjusted by shifting the W yield up and down by +/- w_abs_shift -if options.era in ["mssmsummer16","smsummer16","cpsummer16","cpdecay16","legacy16","tauid2016","mvadm2016"]: options.lumi = "35.9 fb^{-1} (13 TeV)" -if options.era in ['UL_16_preVFP']: options.lumi = "19.5 fb^{-1} (13 TeV)" -if options.era in ['UL_16_postVFP']: options.lumi = "16.8 fb^{-1} (13 TeV)" - - - - -# option to split the real tau events into rho, pi, a1, other -split_taus=False -if options.era == 'mvadm2016' and options.channel=='mt': split_taus=True - -cats = {} -if options.analysis in ['sm','cpprod','cpdecay']: - if options.channel == 'mt': - cats['baseline'] = '(iso_1<0.15 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>25&&pt_1<23)||(trg_singlemuon&&pt_1>23)))' - if options.era in ['tauid2017']: - cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && pt_1>25 && trg_singlemuon &&pt_2>20)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18','22']: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && ((trg_mutaucross&&pt_2>32&&pt_1<25)||(trg_singlemuon&&pt_1>25)) && wt<2)' - if options.era in ['tauid2016']: - cats['baseline'] = '(iso_1<0.15 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon && pt_1>23)' - cats['baseline_loosemu'] = '(iso_1<0.15 && antiele_2 && antimu_loose_2 && !leptonveto && trg_singlemuon && pt_1>23)' - cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' - cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' - elif options.channel == 'et': - cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - if options.era in ['smsummer16']: - cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' - cats['baseline_aisotau'] = '(iso_1<0.1 && mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && leptonveto==0 && trg_singleelectron && pt_2>30)' - if options.era in ['tauid2016']: - cats['baseline'] = '(iso_1<0.1 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' - cats['baseline_loosemu'] = '(iso_1<0.1 && antiele_2 && antimu_loose_2 && !leptonveto && trg_singleelectron)' - cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' - cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP']: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && leptonveto==0 && trg_singleelectron && fabs(wt<2))' - if options.era in ['cpsummer17','UL_17']: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && leptonveto==0 && ((trg_etaucross&&pt_2>35&&pt_1<28&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>28)))' - if options.era in ['cp18', 'UL_18']: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && !leptonveto && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>33)))' - #cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1 && fabs(eta_1-eta_2)>0.2)||(trg_singleelectron&&pt_1>33)))&&wt<2' - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_medium_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && ((trg_etaucross&&pt_2>35&&pt_1<33&&fabs(eta_2)<2.1)||(trg_singleelectron&&pt_1>33)))&&wt<2' - -elif options.analysis in ['mssmrun2','vlq']: - wp = options.wp - - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: - m_lowpt=23 - e_lowpt=26 - t_highpt=120 - t_lowpt_mt=25 - t_lowpt_et=25 - if options.era in ['cpsummer17','UL_17']: - m_lowpt=25 - e_lowpt=28 - t_highpt=180 - t_lowpt_mt=32 - t_lowpt_et=35 - if options.era in ['cp18','UL_18']: - m_lowpt=25 - e_lowpt=33 - t_highpt=180 - t_lowpt_mt=32 - t_lowpt_et=35 - if options.era in ['22']: - m_lowpt=25 - e_lowpt=33 - t_highpt=180 - t_lowpt_mt=32 - t_lowpt_et=35 - - if options.channel == 'mt': - if options.singletau: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && pt_2>30 && ((trg_mutaucross&&pt_2>%(t_lowpt_mt)s&&pt_2<%(t_highpt)s&&fabs(eta_2)<2.1&&pt_1<%(m_lowpt)s)||(trg_singlemuon&&pt_1>=%(m_lowpt)s)||(trg_singletau_2&&pt_2>=%(t_highpt)s&&fabs(eta_2)<2.1)))' % vars() - else: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_vvloose_2>0.5 && deepTauVsMu_tight_2>0.5 && !leptonveto && pt_2>30 && ((trg_mutaucross&&pt_2>%(t_lowpt_mt)s&&fabs(eta_2)<2.1&&pt_1<%(m_lowpt)s)||(trg_singlemuon&&pt_1>=%(m_lowpt)s)))' % vars() - - if options.channel == 'et': - if options.singletau: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && pt_2>30 && ((trg_etaucross&&pt_2>%(t_lowpt_et)s&&pt_2<%(t_highpt)s&&fabs(eta_2)<2.1&&pt_1<%(e_lowpt)s)||(trg_singleelectron&&pt_1>=%(e_lowpt)s)||(trg_singletau_2&&pt_2>=%(t_highpt)s&&fabs(eta_2)<2.1)))' % vars() - else: - cats['baseline'] = '(iso_1<0.15 && deepTauVsJets_%(wp)s_2>0.5 && deepTauVsEle_tight_2>0.5 && deepTauVsMu_vloose_2>0.5 && pt_2>30 && ((trg_etaucross&&pt_2>%(t_lowpt_et)s&&fabs(eta_2)<2.1&&pt_1<%(e_lowpt)s)||(trg_singleelectron&&pt_1>=%(e_lowpt)s)))' % vars() - -elif options.analysis == 'mssm': - if options.channel == 'mt': - cats['baseline'] = '(iso_1<0.15 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - elif options.channel == 'et': - cats['baseline'] = '(iso_1<0.1 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - if options.era == 'mssmsummer16': - if options.channel == 'mt': - cats['baseline'] = '(iso_1<0.15 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - cats['baseline_antiisotau'] = '(iso_1<0.15 && 1 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' - cats['ichep_baseline'] = '(iso_1<0.15 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' - elif options.channel == 'et': - cats['baseline'] = '(iso_1<0.1 && mva_olddm_tight_2>0.5 && antiele_2 && antimu_2 && !leptonveto)' - cats['baseline_antiisotau'] = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' - cats['ichep_baseline'] = '(iso_1<0.1 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' - elif options.channel == 'mj': - cats['baseline'] = '(iso_1<0.15 && !leptonveto)' -if options.channel == 'tt': - cats['baseline'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' - if options.era == 'mssmsummer16': cats['baseline'] = '(mva_olddm_medium_1>0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','mvadm2016']: - cats['baseline'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau && pt_1>40)' - cats['baseline_aisotau1'] = '(pt_1>50 && mva_olddm_vloose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_tight_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' - cats['baseline_aisotau2'] = '(pt_1>50 && mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_tight_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' - cats['baseline_aisotau2_sb'] = '(mva_olddm_vloose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && leptonveto==0 && trg_doubletau)' - cats['baseline_aisotau2_sb'] = '(mva_olddm_vloose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && leptonveto==0 && trg_doubletau)' - if options.era in ['cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP']: - cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && trg_doubletau && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18']: - cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - if options.era == '22': - cats['baseline'] = '(deepTauVsJets_medium_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - - if options.analysis in ['mssmrun2','vlq']: - wp = options.wp - if options.singletau: - if options.era in['legacy16','UL_16_preVFP','UL_16_postVFP']: - cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_%(wp)s_2>0.5 && leptonveto==0 && (trg_doubletau || (pt_1>120 && trg_singletau_1) || (pt_2>120 && trg_singletau_2)) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() - else: - cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_%(wp)s_2>0.5 && leptonveto==0 && (trg_doubletau || (pt_1>180 && trg_singletau_1) || (pt_2>180 && trg_singletau_2)) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() - else: - cats['baseline'] = '(deepTauVsJets_%(wp)s_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() - # cats['baseline'] = '(deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' % vars() - - -elif options.channel == 'em': - cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto)' - if options.era == 'mssmsummer16': - cats['loose_baseline'] = '(iso_1<0.5 && iso_2>0.2 && iso_2<0.5 && !leptonveto &&trg_muonelectron)' - elif options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: - cats['loose_baseline'] = '(wt<2 && iso_1<0.15 && iso_2<0.5 && !leptonveto &&trg_muonelectron)' - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto && trg_muonelectron && pt_1>15 && pt_2>15)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18']: - cats['baseline'] = '(iso_1<0.15 && iso_2<0.2 && !leptonveto && trg_muonelectron && pt_1>15 && pt_2>15)' - cats['loose_baseline'] = '(wt<2 && iso_1<0.15 && iso_2<0.5 && !leptonveto && trg_muonelectron)' -elif options.channel == 'zmm': - cats['baseline'] = '(iso_1<0.15 && iso_2<0.15)' - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' - if options.era in ['cpsummer17','UL_17','cp18','UL_18','22']: cats['baseline'] = '(pt_1>25 && iso_1<0.15 && iso_2<0.15 && trg_singlemuon)' -elif options.channel == 'zee': - cats['baseline'] = '(iso_1<0.1 && iso_2<0.1)' - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(iso_1<0.1 && iso_2<0.1 && trg_singleelectron && fabs(wt)<2)' - - #if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['baseline'] = '(1)' - - if options.era in ['cpsummer17','UL_17']: cats['baseline'] = '(pt_1>28&&pt_2>13&&iso_1<0.15 && iso_2<0.15 && trg_singleelectron && fabs(wt)<2)' - - #if options.era in ['cpsummer17','UL_17']: cats['baseline'] = '(1)' - - if options.era in ['cp18','UL_18']: - cats['baseline'] = '(pt_1>33 && pt_2>13 && iso_1<0.15 && iso_2<0.15 && trg_singleelectron && fabs(wt)<2)' - -if options.analysis == 'cpdecay': - if options.channel in ['mt','et']: cats['baseline'] += ' && mva_dm_2>=0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && m_vis>40' - if options.channel in ['tt']: cats['baseline'] += ' && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5)' - - cats['tt_loose_baseline'] = '((deepTauVsJets_medium_1>0.5 && deepTauVsJets_vvvloose_2>0.5 && deepTauVsJets_medium_2<0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2) && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5))' - cats['tt_loose_baseline_2'] = '((deepTauVsJets_medium_1>0.5 && deepTauVsJets_vvvloose_2>0.5 && deepTauVsJets_vvloose_2<0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2) && mva_dm_1>=0 && mva_dm_2>=0 && (mva_dm_1>=1&&tau_decay_mode_1==0)==0 && (mva_dm_2>=1&&tau_decay_mode_2==0)==0 && mva_dm_1<11 && mva_dm_2<11 && m_vis>40 && (mva_dm_1!=0 || ip_sig_1>1.5) && (mva_dm_2!=0 || ip_sig_2>1.5))' - -if options.w_ff_closure: - cats['baseline'] = '(' + cats['baseline'] + ' && mt_1>70 && n_deepbjets==0)' -elif options.qcd_ff_closure: - if options.channel in ['et','mt']: - cats['baseline'] = '(' + cats['baseline'] + ' && mt_1<50 && iso_1>0.05)' - options.do_ss = True - elif options.channel == 'tt': - options.do_ss = True - -if options.analysis == 'cpprod': - if options.channel in ['mt','et']: cats['baseline'] += ' && pt_2>30' - if options.channel in ['tt']: cats['baseline'] += ' && pt_1>50' - cats['baseline'] = cats['baseline'].replace('deepTauVsEle_vvloose_2','deepTauVsEle_vvvloose_2').replace('deepTauVsEle_vvloose_1','deepTauVsEle_vvvloose_1') - -cats['baseline'] = cats['baseline'].replace('pt_2>30','pt_2>20') # delete me!!! -#cats['baseline'] = cats['baseline'].replace('leptonveto','(extramuon_veto||extraelec_veto)') # delete me!!! - -cats['oneprong'] = '(tau_decay_mode_2<3)' -cats['threeprong'] = '(tau_decay_mode_2>9)' -cats['dm0'] = '(tau_decay_mode_2==0)' -cats['dm1'] = '(tau_decay_mode_2==1)' -cats['dm1_ptLt40'] = '(tau_decay_mode_2==1&&pt_2<40)' -cats['inclusive_ptLt40'] = '(pt_2<40)' -cats['dm10'] = '(tau_decay_mode_2==10)' -cats['dm11'] = '(tau_decay_mode_2==11)' -cats['pt20to30'] = '(pt_2>20&&pt_2<30)' -cats['pt30to40'] = '(pt_2>30&&pt_2<40)' -cats['pt40to60'] = '(pt_2>40&&pt_2<60)' -cats['ptGt60'] = '(pt_2>60)' - -for x in ['pt20to30','pt30to40','pt40to60','ptGt60']: - cats['inclusive_'+x] = cats[x] - for dm in [0,1,10,11]: cats['dm%i_%s' % (dm,x) ] = cats['dm%i' % dm] + '&&' + cats[x] - -cats['baseline'] = cats['baseline'].replace('pt_2>30','pt_2>20') # delete me!!! - this is to select pT down to 20 for SF measurments!!!!! -#cats['baseline'] = cats['baseline'].replace('leptonveto','(extramuon_veto||extraelec_veto)') # delete me!!! - this is to select pT down to 20 for SF measurments!!!!! - -cats['qcd_loose_shape'] = cats['baseline'].replace('iso_1<0.15','iso_1>0.05&&iso_1<0.3') - -cats['inclusive'] = '(1)' -cats['wj_cut'] = "mt_1 < 40 && pt_1 > 40" -cats['w_os'] = 'os' -cats['w_sdb'] = 'mt_1>70.' -cats['pass'] = 'mva_olddm_tight_2>0.5 && pzeta>-25' -cats['fail'] = 'mva_olddm_tight_2<0.5 && pzeta>-25' -if options.era in ['smsummer16']: cats['w_sdb'] = 'mt_1>80.' -cats['w_sdb_os'] = 'os' -cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_medium_2>0.5 &&mva_olddm_tight_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' -if options.era == 'mssmsummer16': cats['tt_qcd_norm'] = '(mva_olddm_medium_1>0.5 && mva_olddm_loose_2>0.5 &&mva_olddm_medium_2<0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' -if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: cats['tt_qcd_norm'] = '(pt_1>40 && ((mva_olddm_loose_1>0.5 && mva_olddm_tight_1<0.5 && mva_olddm_medium_2>0.5) || (mva_olddm_loose_2>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_1>0.5)) && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)&&trg_doubletau' -# if options.era in ['cpsummer17','cp18']: cats['tt_qcd_norm'] = '(mva_olddm_tight_1>0.5 && mva_olddm_tight_2<0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto && trg_doubletau)' - -cats['tt_qcd_norm'] = '(deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2>0.5 && leptonveto==0 && (trg_doubletau && pt_2>40) && deepTauVsEle_vvloose_1 && deepTauVsEle_vvloose_2 && deepTauVsMu_vloose_1 && deepTauVsMu_vloose_2)' - - -# CR categories -cats['ztt_control'] = '(m_sv>60&&m_sv<100)' -cats['ztt_control_dijet'] = '(m_sv>60&&m_sv<100 && n_jets>1)' -if options.channel == 'em': - cats['ztt_control'] = '(m_sv>60&&m_sv<100 && n_bjets==0)' - cats['ztt_control_dijet'] = '(m_sv>60&&m_sv<100 && n_jets>1 && n_bjets==0)' - -# MSSM categories -#cats['btag'] = '(n_bjets>=1)' -#cats['nobtag'] = '(n_bjets==0)' -# loose/tight iso-MT categories -cats['atleast1bjet'] = '(n_bjets>0)' -cats['btag_wnobtag']='(n_lowpt_jets>=1)' # this is the one that is used for the b-tag method 16! -cats['0jet'] = '(n_jets==0)' -cats['1jet'] = '(n_jets==1)' -cats['ge2jet'] = '(n_jets>=2)' -cats['btag_tight_wnobtag']='(n_lowpt_jets>=1)' -cats['w_shape']='' -cats['qcd_shape']='' -cats['w_shape_comp']='' -cats['qcd_shape_comp']='' -cats['Nbtag0_NjetsGt1'] = '(n_deepbjets==0 && n_jets>0 && jpt_1>50 && m_vis>100)' - -# MSSM run 2 categories -if options.channel == "tt": - cats['NbtagGt1'] = '(n_deepbjets>0)' - cats['Nbtag0'] = '(n_deepbjets==0)' -elif options.channel in ["et","mt"]: - cats['NbtagGt1'] = '(n_deepbjets>0 && mt_1<70)' - cats['Nbtag0'] = '(n_deepbjets==0 && mt_1<70)' -elif options.channel == "em": - cats['NbtagGt1'] = '(n_deepbjets>0 && pzeta>-35)' - cats['Nbtag0'] = '(n_deepbjets==0 && pzeta>-35)' - -cats['Nbtag0_MTLt40'] = '(n_deepbjets==0 && mt_1<40)' -cats['Nbtag0_MT40To70'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70)' -cats['NbtagGt1_MTLt40'] = '(n_deepbjets>0 && mt_1<40)' -cats['NbtagGt1_MT40To70'] = '(n_deepbjets>0 && mt_1>40 && mt_1<70)' - -cats['Nbtag0_MHGt250'] = '(n_deepbjets==0 && svfit_mass>250)' -cats['Nbtag0_MHGt200'] = '(n_deepbjets==0 && svfit_mass>200)' - -cats['Nbtag0_MTLt40_MHGt250'] = '(n_deepbjets==0 && mt_1<40 && svfit_mass>250)' -cats['Nbtag0_MT40To70_MHGt250'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70 && svfit_mass>250)' - -cats['Nbtag0_MTLt40_MHGt200'] = '(n_deepbjets==0 && mt_1<40 && svfit_mass>200)' -cats['Nbtag0_MT40To70_MHGt200'] = '(n_deepbjets==0 && mt_1>40 && mt_1<70 && svfit_mass>200)' - -cats['Nbtag1'] = '(n_deepbjets==1)' -cats['Nbtag1_MTLt40'] = '(n_deepbjets==1 && mt_1<40)' -cats['Nbtag1_MT40To70'] = '(n_deepbjets==1 && mt_1>40 && mt_1<70)' - -cats['Nbtag0_MTLt70'] = '(n_deepbjets==0 && mt_1<70)' -cats['NbtagGt1_MTLt70'] = '(n_deepbjets>0 && mt_1<70)' -cats['MTLt70'] = '(mt_1<70)' - -cats['tightmt'] = '(mt_1<40)' -cats['loosemt'] = '(mt_1>40 && mt_1<70)' - -cats['wjets_control'] = '(mt_1>70 && n_deepbjets==0)' -if options.channel == "tt": - cats['qcd_control'] = '(1)' -elif options.channel in ["et","mt"]: - cats['qcd_control'] = 'mt_1<50 && iso_1>0.05' - -if options.cat == 'qcd_control': - options.do_ss = True - -cats['Nbtag0_DZetaGt30'] = '(n_deepbjets==0 && pzeta>30)' -cats['Nbtag0_DZetam10To30'] = '(n_deepbjets==0 && pzeta<=30 && pzeta>-10)' -cats['Nbtag0_DZetam35Tom10'] = '(n_deepbjets==0 && pzeta<=-10 && pzeta>-35)' -cats['NbtagGt1_DZetaGt30'] ='(n_deepbjets>0 && pzeta>30)' -cats['NbtagGt1_DZetam10To30'] ='(n_deepbjets>0 && pzeta<=30 && pzeta>-10)' -cats['NbtagGt1_DZetam35Tom10'] ='(n_deepbjets>0 && pzeta<=-10 && pzeta>-35)' -cats['NbtagGt1_DZetaLtm35'] = '(n_deepbjets>0 && pzeta<=-35)' - -cats['Nbtag0_DZetaGt30_MHGt250'] = '(n_deepbjets==0 && pzeta>30 && svfit_mass>250)' -cats['Nbtag0_DZetam10To30_MHGt250'] = '(n_deepbjets==0 && pzeta<=30 && pzeta>-10 && svfit_mass>250)' -cats['Nbtag0_DZetam35Tom10_MHGt250'] = '(n_deepbjets==0 && pzeta<=-10 && pzeta>-35 && svfit_mass>250)' - -cats['DZetaGtm35'] = '(pzeta>-35)' - - -if options.channel == 'et': cats['baseline_loose'] = '(iso_1<0.3 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' -if options.channel == 'mt': cats['baseline_loose'] = '(iso_1<0.3 && mva_olddm_medium_2>0.5 && antiele_2 && antimu_2 && !leptonveto && (trg_singlemuon*(pt_1>23) || trg_mutaucross*(pt_1<23)))' - -# MVA DM categories for SF measurments -cats['mvadm_pi'] = 'mvadm_pi_2>mvadm_rho_2&&mvadm_pi_2>mvadm_a1_2' -cats['mvadm_rho'] = 'mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2' -cats['mvadm_a1'] = 'mvadm_a1_2>mvadm_pi_2&&mvadm_a1_2>mvadm_rho_2' -cats['mvadm_rho'] = 'mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2' -cats['mvadm_notrho'] = '!(mvadm_rho_2>mvadm_pi_2&&mvadm_rho_2>mvadm_a1_2)' - -# SM categories -cats['0jet'] = '(n_jets==0)' -if options.channel == 'em': cats['0jet'] = '(n_jets==0 && n_bjets==0)' -cats['vbf'] = '(0)' -cats['twojets'] = '(n_jets>=2)' -if options.channel == 'em': cats['vbf'] = '(n_jets==2 && mjj>300 && n_bjets==0)' -if options.channel == 'et': cats['vbf'] = '(n_jets>=2 && mjj>300 && pt_tt>50)' -if options.channel == 'mt': cats['vbf'] = '(n_jets>=2 && mjj>300 && pt_tt>50 && pt_2>40)' -if options.channel == 'tt': cats['vbf'] = '(n_jets>=2 && pt_tt>100 && jdeta>2.5)' -cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['vbf']) -if options.channel == 'em': cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0)' % (cats['0jet'], cats['vbf']) - -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] or options.analysis in ['cpprod']: - cats['ttbar'] = 'n_jets>0' - if options.channel in ['mt','et']: - cats['0jet'] = '(n_jets==0 && n_bjets==0 &&n_loose_bjets<2)' - cats['dijet']='n_jets>=2 && mjj>300 && n_bjets==0 &&n_loose_bjets<2' - cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] - cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] - cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] - cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] - cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] - cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] - cats['boosted'] = '(!(%s) && !(%s) && n_bjets==0 &&n_loose_bjets<2)' % (cats['0jet'], cats['dijet']) - #cats['boosted'] = '(n_jets==1&& n_bjets==0)' - elif options.channel in ['em']: - cats['0jet'] = '(n_jets==0 && n_loose_bjets<2 && n_bjets==0)' - cats['dijet']='n_jets>=2 && mjj>300 && n_loose_bjets<2 && n_bjets==0 ' - cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] - cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] - cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] - cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] - cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] - cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] - cats['boosted'] = '(!(%s) && !(%s) &&n_loose_bjets<2 && n_bjets==0)' % (cats['0jet'], cats['dijet']) - #cats['boosted'] = '(n_jets==1&& n_bjets==0)' - else: - cats['0jet'] = '(n_jets==0)' - cats['dijet']='n_jets>=2 && mjj>300' - cats['dijet_boosted']='%s && pt_tt>200' % cats['dijet'] - cats['dijet_lowboost']='%s && pt_tt<200' % cats['dijet'] - cats['dijet_loosemjj_boosted']='%s && mjj<500 && pt_tt>150' % cats['dijet'] - cats['dijet_loosemjj_lowboost']='%s && mjj<500 && pt_tt<150' % cats['dijet'] - cats['dijet_tightmjj_boosted']='%s && mjj>500 && pt_tt>150' % cats['dijet'] - cats['dijet_tightmjj_lowboost']='%s && mjj>500 && pt_tt<150' % cats['dijet'] - - cats['boosted'] = '(!(%s) && !(%s))' % (cats['0jet'], cats['dijet']) - #cats['boosted'] = '(n_jets==1)' - -#cats['0jet'] = '(n_jets==0 && n_bjets==0)' -cats['1jet'] = '(n_jets==1 && n_bjets==0)' -cats['2jet'] = '(n_jets>=2 && n_bjets==0)' - -# SM ML categories - -if options.channel == 'tt': - - mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' - mva_highMjj_jetFakes = '(IC_highMjj_Oct05_max_index==1)' - mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==2)' - - mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' - mva_lowMjj_jetFakes = '(IC_lowMjj_Oct05_max_index==1)' - mva_lowMjj_misc = '(IC_lowMjj_Oct05_max_index==2)' - mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' - mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==3)' - - # with simple mjj and pt_tt cuts like in Cutbased analysis - # cats['ggh_lowboost_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500 && pt_tt<150)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500 && pt_tt>150)'.format(mva_highMjj_ggh) - # cats['qqh_lowboost_highMjj'] = '({} && n_jets>=2 && mjj>500 && pt_tt<150)'.format(mva_highMjj_ggh) - # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>500 && pt_tt>150)'.format(mva_highMjj_ggh) - - # with binary ggH vs qqH mva - # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && IC_binary_Oct11_score>0.7)'.format(mva_highMjj_ggh) - # cats['ggh_lowboost_highMjj'] = '({} && n_jets>=2 && pt_tt<150 && mjj>300)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && pt_tt>150 && mjj>300)'.format(mva_highMjj_ggh) - # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) - - # simplest mjj based qqH vs ggH - cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) - cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) - cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) - cats['jetFakes_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_jetFakes) - - cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) - cats['misc_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_misc) - cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) - cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) - cats['jetFakes_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_jetFakes) - -if options.channel in ['et','mt']: - - mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' - mva_highMjj_jetFakes = '(IC_highMjj_Oct05_max_index==1)' - mva_highMjj_tt = '(IC_highMjj_Oct05_max_index==2)' - if options.channel == 'et': - mva_highMjj_zll = '(IC_highMjj_Oct05_max_index==3)' - mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==4)' - else: - mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==3)' - - mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' - mva_lowMjj_jetFakes = '(IC_lowMjj_Oct05_max_index==1)' - mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' - mva_lowMjj_tt = '(IC_lowMjj_Oct05_max_index==3)' - mva_lowMjj_zll = '(IC_lowMjj_Oct05_max_index==4)' - mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==5)' - - # if options.channel == 'et': - # latest one with binary MVA - # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.5)'.format(mva_highMjj_ggh) - # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.5)'.format(mva_highMjj_ggh) - # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.5)'.format(mva_highMjj_ggh) - - # else: - # latest ones with binary MVA - # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 &&IC_binary_Oct11_score>0.45)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.45)'.format(mva_highMjj_ggh) - # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.45)'.format(mva_highMjj_ggh) - # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.45)'.format(mva_highMjj_ggh) - - cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) - cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) - cats['tt_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_tt) - if options.channel == 'et': - cats['zll_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zll) - cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) - cats['jetFakes_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_jetFakes) - - cats['jetFakes_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_jetFakes) - cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) - cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) - cats['tt_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_tt) - cats['zll_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zll) - cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) - -if options.channel == 'em': - - mva_highMjj_ggh = '(IC_highMjj_Oct05_max_index==0)' - mva_highMjj_tt = '(IC_highMjj_Oct05_max_index==1)' - mva_highMjj_zttEmbed = '(IC_highMjj_Oct05_max_index==2)' - - mva_lowMjj_ggh = '(IC_lowMjj_Oct05_max_index==0)' - mva_lowMjj_qcd = '(IC_lowMjj_Oct05_max_index==1)' - mva_lowMjj_qqh = '(IC_lowMjj_Oct05_max_index==2)' - mva_lowMjj_tt = '(IC_lowMjj_Oct05_max_index==3)' - mva_lowMjj_zttEmbed = '(IC_lowMjj_Oct05_max_index==4)' - - # latest one with binary MVA - # cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score>0.55)'.format(mva_highMjj_ggh) - # cats['ggh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score>0.55)'.format(mva_highMjj_ggh) - # cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt<150 && IC_binary_Oct11_score<0.55)'.format(mva_highMjj_ggh) - # cats['qqh_boosted_highMjj'] = '({} && n_jets>=2 && mjj>300 && pt_tt>150 && IC_binary_Oct11_score<0.55)'.format(mva_highMjj_ggh) - - cats['ggh_highMjj'] = '({} && n_jets>=2 && mjj>300 && mjj<500)'.format(mva_highMjj_ggh) - cats['qqh_highMjj'] = '({} && n_jets>=2 && mjj>500)'.format(mva_highMjj_ggh) - cats['tt_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_tt) - cats['zttEmbed_highMjj'] = '({} && n_jets>=2 && mjj>300)'.format(mva_highMjj_zttEmbed) - - cats['ggh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_ggh) - cats['qcd_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qcd) - cats['qqh_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_qqh) - cats['tt_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_tt) - cats['zttEmbed_lowMjj'] = '({} && !(n_jets>=2 && mjj>300))'.format(mva_lowMjj_zttEmbed) - -# CP in decays categories -if options.channel in ["mt","et"]: - cats["inclusive_mixed"] = "(tau_decay_mode_2==1)" - cats["dijet_mixed"] = "(n_jets>=2 && mjj>300)" - cats["0jet_mixed"] = "({} && {})".format(cats["0jet"], cats["inclusive_mixed"]) - cats["dijet_boosted_mixed"] = "({} && pt_tt>100 && {})".format(cats["dijet_mixed"] ,cats["inclusive_mixed"]) - cats["dijet_lowboost_mixed"] = "({} && pt_tt<100 && {})".format(cats["dijet_mixed"] ,cats["inclusive_mixed"]) - cats["boosted_mixed"] = "(!{} && !({}) && {})".format(cats["0jet"], cats["dijet_mixed"], cats["inclusive_mixed"]) - - # MVA multiclass categories - cut_string = "" - if options.channel == "et": - cut_string = "IC_Apr02" - elif options.channel == "mt": - cut_string = "IC_Nov25_tauspinner" - mva_ggh = '({}_max_index==0)'.format(cut_string) - mva_jetFakes = '({}_max_index==1)'.format(cut_string) - mva_zttEmbed = '({}_max_index==2)'.format(cut_string) - - # apply b jet veto as done in training (to remove ttbar) - cats['higgs'] = '({} && n_bjets==0)'.format(mva_ggh) - cats['zttEmbed'] = '({} && n_bjets==0)'.format(mva_zttEmbed) - cats['jetFakes'] = '({} && n_bjets==0)'.format(mva_jetFakes) - - cats["mva_mupi"] = "(tau_decay_mode_2==0 && mva_dm_2==0)" # aco_angle_6 (ip) - cats["mva_murho"] = "(tau_decay_mode_2==1 && mva_dm_2==1)" # aco_angle_5 (planes) 6 (ip) - cats["mva_mua1"] = "(tau_decay_mode_2>=10 && mva_dm_2==10)" # aco_angle_5 (planes) - - cats["higgs_mvaMuPi"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_mupi"]) - cats["higgs_mvaMuRho"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_murho"]) - cats["higgs_mvaMuA1"] = "{} && {} && n_bjets==0".format(cats["higgs"],cats["mva_mua1"]) - - cats["inclusive_mupi"] = "(tau_decay_mode_2==0)" - cats["inclusive_murho"] = "(tau_decay_mode_2==1)" - -if options.channel == 'tt': - -# start fresh here - cats["inclusive_rhorho"] = "(tau_decay_mode_1==1 && tau_decay_mode_2==1)" - cats["inclusive_pirho"] = "((tau_decay_mode_1==1 && tau_decay_mode_2==0 && ip_sig_2>=1.5) || (tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==1))" - cats["inclusive_a1rho"] = "((tau_decay_mode_1==10 && tau_decay_mode_2==1) || (tau_decay_mode_1==1 && tau_decay_mode_2==10))" - cats["inclusive_a1pi"] = "((tau_decay_mode_1==10 && tau_decay_mode_2==0 && ip_sig_2>=1.5) || (tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==10))" - cats["inclusive_a1a1"] = "(tau_decay_mode_1==10 && tau_decay_mode_2==10)" - cats["inclusive_pipi"] = "(tau_decay_mode_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==0 && ip_sig_2>=1.5)" - - - cats["inclusive_mvapirho_up"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2_up>=1.5 && mva_dm_2==0) || (ip_sig_1_up>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" - cats["inclusive_mvaa1pi_up"] = "((mva_dm_1==10 && ip_sig_2_up>=1.5 && mva_dm_2==0) || (ip_sig_1_up>=1.5 && mva_dm_1==0 && mva_dm_2==10))" - cats["inclusive_mvapipi_up"] = "(mva_dm_1==0 && ip_sig_1_up>=1.5 && ip_sig_2_up>=1.5 && mva_dm_2==0)" - cats["inclusive_mvapi0a1_up"] = "((mva_dm_1==0 && ip_sig_1_up>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2_up>=1.5))" - - cats["inclusive_mvapirho_down"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2_down>=1.5 && mva_dm_2==0) || (ip_sig_1_down>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" - cats["inclusive_mvaa1pi_down"] = "((mva_dm_1==10 && ip_sig_2_down>=1.5 && mva_dm_2==0) || (ip_sig_1_down>=1.5 && mva_dm_1==0 && mva_dm_2==10))" - cats["inclusive_mvapipi_down"] = "(mva_dm_1==0 && ip_sig_1_down>=1.5 && ip_sig_2_down>=1.5 && mva_dm_2==0)" - cats["inclusive_mvapi0a1_down"] = "((mva_dm_1==0 && ip_sig_1_down>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2_down>=1.5))" - - cats["inclusive_mvarhorho"] = "(tau_decay_mode_1==1 && mva_dm_1==1 && tau_decay_mode_2==1 && mva_dm_2==1)" - cats["inclusive_mvapirho"] = "((tau_decay_mode_1==1 && mva_dm_1==1 && ip_sig_2>=1.5 && mva_dm_2==0) || (ip_sig_1>=1.5 && mva_dm_1==0 && tau_decay_mode_2==1 && mva_dm_2==1))" - cats["inclusive_mvaa1rho"] = "((mva_dm_1==10 && tau_decay_mode_2==1 && mva_dm_2==1) || (tau_decay_mode_1==1 && mva_dm_1==1 && mva_dm_2==10))" - cats["inclusive_mvaa1pi"] = "((mva_dm_1==10 && ip_sig_2>=1.5 && mva_dm_2==0) || (ip_sig_1>=1.5 && mva_dm_1==0 && mva_dm_2==10))" - cats["inclusive_mvaa1a1"] = "(mva_dm_1==10 && mva_dm_2==10)" - cats["inclusive_mvapipi"] = "(mva_dm_1==0 && ip_sig_1>=1.5 && ip_sig_2>=1.5 && mva_dm_2==0)" - cats["inclusive_mvapi0a1"] = "((mva_dm_1==0 && ip_sig_1>=1.5 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==0 && ip_sig_2>=1.5))" - cats["inclusive_mvarho0a1"] = "(tau_decay_mode_1==1 && tau_decay_mode_2==1 && ((mva_dm_1==1&&mva_dm_2==2) || (mva_dm_1==2&&mva_dm_2==1) || (mva_dm_1==2&&mva_dm_2==2)))" - cats["inclusive_mvaa10a1"] = "((mva_dm_1==10 && tau_decay_mode_2==1 && mva_dm_2==2) || (tau_decay_mode_1==1 && mva_dm_1==2 && mva_dm_2==10))" - - #mva_ggh = '(svfit_mass>100&&svfit_mass<150)' - #mva_jetFakes = '(svfit_mass>150)' - #mva_zttEmbed = '(svfit_mass<100)' - - cut_string = "IC_01Jun2020" - mva_ggh = '({}_max_index==0)'.format(cut_string) - mva_jetFakes = '({}_max_index==1)'.format(cut_string) - mva_zttEmbed = '({}_max_index==2)'.format(cut_string) - - - cats['higgs_mvarhorho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvarhorho"]) - cats['zttEmbed_mvarhorho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvarhorho"]) - cats['jetFakes_mvarhorho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvarhorho"]) - cats['higgs_mvapirho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho"]) - cats['zttEmbed_mvapirho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapirho"]) - cats['jetFakes_mvapirho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapirho"]) - cats['higgs_mvaa1rho'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1rho"]) - cats['zttEmbed_mvaa1rho'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1rho"]) - cats['jetFakes_mvaa1rho'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1rho"]) - cats['higgs_mvaa1pi'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi"]) - cats['zttEmbed_mvaa1pi'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1pi"]) - cats['jetFakes_mvaa1pi'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1pi"]) - cats['higgs_mvaa1a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1a1"]) - cats['higgs_mvaa1a1_sync'] = '({} && {} && tau_decay_mode_1==10 && tau_decay_mode_2==10 && a1_flag)'.format(mva_ggh, cats["inclusive_mvaa1a1"]) - cats['zttEmbed_mvaa1a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa1a1"]) - cats['jetFakes_mvaa1a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa1a1"]) - cats['higgs_mvapipi'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi"]) - cats['zttEmbed_mvapipi'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapipi"]) - cats['jetFakes_mvapipi'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapipi"]) - cats['higgs_mvapi0a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1"]) - cats['zttEmbed_mvapi0a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvapi0a1"]) - cats['jetFakes_mvapi0a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvapi0a1"]) - cats['higgs_mvarho0a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvarho0a1"]) - cats['zttEmbed_mvarho0a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvarho0a1"]) - cats['jetFakes_mvarho0a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvarho0a1"]) - - - cats['higgs_mvaa10a1'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa10a1"]) - - cats['zttEmbed_mvaa10a1'] = '({} && {})'.format(mva_zttEmbed, cats["inclusive_mvaa10a1"]) - cats['jetFakes_mvaa10a1'] = '({} && {})'.format(mva_jetFakes, cats["inclusive_mvaa10a1"]) - - cats['higgs'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_ggh) - cats['zttEmbed'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_zttEmbed) - cats['jetFakes'] = '({} && (mva_dm_1==0&&ip_sig_1<1.5)==0 && (mva_dm_2==0&&ip_sig_2<1.5)==0)'.format(mva_jetFakes) - - cats['higgs_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_ggh) - cats['zttEmbed_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_zttEmbed) - cats['jetFakes_up'] = '({} && (mva_dm_1==0&&ip_sig_1_up<1.5)==0 && (mva_dm_2==0&&ip_sig_2_up<1.5)==0)'.format(mva_jetFakes) - - cats['higgs_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_ggh) - cats['zttEmbed_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_zttEmbed) - cats['jetFakes_down'] = '({} && (mva_dm_1==0&&ip_sig_1_down<1.5)==0 && (mva_dm_2==0&&ip_sig_2_down<1.5)==0)'.format(mva_jetFakes) - - cats['higgs_mvaother'] = '({} && !({}||{}||{}||{}||{}||{}||{}||{}||{}))'\ - .format(mva_ggh, cats["higgs_mvarhorho"], cats["higgs_mvapirho"], cats["higgs_mvaa1rho"], cats["higgs_mvaa1pi"], cats["higgs_mvaa1a1"], cats["higgs_mvapipi"], cats["higgs_mvapi0a1"], cats["higgs_mvarho0a1"], cats["higgs_mvaa10a1"]) - - cats['higgs_mvapirho_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho_up"]) - cats['higgs_mvaa1pi_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi_up"]) - cats['higgs_mvapipi_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi_up"]) - cats['higgs_mvapi0a1_up'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1_up"]) - - cats['higgs_mvapirho_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapirho_down"]) - cats['higgs_mvaa1pi_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvaa1pi_down"]) - cats['higgs_mvapipi_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapipi_down"]) - cats['higgs_mvapi0a1_down'] = '({} && {})'.format(mva_ggh, cats["inclusive_mvapi0a1_down"]) - -# 2016 sm analysis uses relaxed shape selections for W + QCD processes in et and mt channel, these are set here -if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: # Remove the False when finished!!!!! - if options.channel in ['et','mt'] and options.cat in ['boosted','vbf','dijet','dijet_lowboost','dijet_boosted', - # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: - cats['qcd_shape'] = '('+cats['baseline_loose']+')*('+cats[options.cat]+')' - if options.cat in ['boosted','vbf','dijet','dijet_lowboost','dijet_boosted', - # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: - cats['w_shape'] = cats['qcd_shape'] - - -# Overwrite selection depending on whether tight or loose-mt categories is chosen - this can still be overwritten from command line using the --set_alias=sel:(...) option -#if options.cat == 'nobtag_tightmt' or options.cat == 'btag_tightmt': -# if options.channel == 'mt' or options.channel == 'et': options.sel = '(mt_1<50)' -#if options.cat == 'nobtag_loosemt' or options.cat == 'btag_loosemt': -# if options.channel == 'mt' or options.channel == 'et': options.sel = '(mt_1<70 && mt_1>50)' - -if options.era == "mssmsummer16": - if options.channel == "em": cats['baseline']+=" && trg_muonelectron" - if options.channel == "et" or options.channel == 'zee': cats['baseline']+=" && trg_singleelectron" - if options.channel in ['mt','zmm','mj']: cats['baseline']+=" && trg_singlemuon" - if options.channel == "tt": cats['baseline']+=" && trg_doubletau" - -#Overwrite any category selections if the --set_alias option is used -for i in options.set_alias: - cat_to_overwrite = i.split(':')[0] - cat_to_overwrite=cat_to_overwrite.replace("\"","") - overwrite_with = i.split(':')[1] - overwrite_with=overwrite_with.replace("\"","") - start_index=overwrite_with.find("{") - end_index=overwrite_with.find("}") - while start_index >0: - replace_with=overwrite_with[start_index:end_index+1] - replace_with=replace_with.replace("{","") - replace_with=replace_with.replace("}","") - replace_string = cats[replace_with] - overwrite_with=overwrite_with[0:start_index] + replace_string + overwrite_with[end_index+1:] - start_index=overwrite_with.find("{") - end_index=overwrite_with.find("}") - - print 'Overwriting alias: \"'+cat_to_overwrite+'\" with selection: \"'+overwrite_with+'\"' - if cat_to_overwrite == 'sel': - options.sel = overwrite_with - else: - cats[cat_to_overwrite] = overwrite_with -if options.v2p5 == True: - for key in cats: - cats[key] = cats[key].replace('deepTauVsJets','deepTauVsJetsV2p5').replace('deepTauVsEle','deepTauVsEleV2p5').replace('deepTauVsMu','deepTauVsMuV2p5').replace('iso_2','iso_2_V2p5') - -if options.do_aiso: - # overwrite electron/muon isolation cut in baseline - cats['baseline'] = cats['baseline'].replace('iso_1<0.15','iso_1>0.15&&iso_1<0.5') - -# Additional selections to seperate MC samples by gen flags -z_sels = {} -if options.channel == 'et': - z_sels['ztt_sel'] = '(gen_match_2==5)' - z_sels['zl_sel'] = '(gen_match_2<5)' - z_sels['zj_sel'] = '(gen_match_2==6)' -elif options.channel in ['mt','mj']: - z_sels['ztt_sel'] = '(gen_match_2==5)' - z_sels['zl_sel'] = '(gen_match_2<5)' - z_sels['zj_sel'] = '(gen_match_2==6)' -elif options.channel in ['mj']: - z_sels['ztt_sel'] = '(0)' - z_sels['zl_sel'] = '(0)' - z_sels['zj_sel'] = '(1)' -elif options.channel == 'tt': - z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' - z_sels['zl_sel'] = '(gen_match_2<6&&gen_match_1<6&&!(gen_match_1==5&&gen_match_2==5))' - z_sels['zj_sel'] = '(gen_match_2==6||gen_match_1==6)' -elif options.channel == 'em': - z_sels['ztt_sel'] = '(gen_match_1>2 && gen_match_2>3)' - z_sels['zll_sel'] = '(gen_match_1<3 || gen_match_2<4)' -elif options.channel == 'zee' or options.channel == 'zmm': - z_sels['ztt_sel'] = '(gen_match_1>2&&gen_match_1<6 && gen_match_2>2&&gen_match_2<6)' - if options.channel == 'zmm': z_sels['zl_sel'] = '(gen_match_1==2&&gen_match_2==2)' - else: z_sels['zl_sel'] = '(gen_match_1==1&&gen_match_2==1)' - z_sels['zj_sel'] = '(!('+z_sels['zl_sel']+') && !('+z_sels['ztt_sel']+'))' - -top_sels = {} -vv_sels = {} -top_sels['ttt_sel'] = z_sels['ztt_sel'] -top_sels['ttj_sel'] = '!('+z_sels['ztt_sel']+')' -vv_sels['vvt_sel'] = z_sels['ztt_sel'] -vv_sels['vvj_sel'] = '!('+z_sels['ztt_sel']+')' - -if options.channel == 'zee' or options.channel == 'zmm': - top_sels['ttt_sel'] = z_sels['zl_sel'] - top_sels['ttj_sel'] = '!('+z_sels['zl_sel']+')' - vv_sels['vvt_sel'] = z_sels['zl_sel'] - vv_sels['vvj_sel'] = '!('+z_sels['zl_sel']+')' - - -top_sels_embed = {} -if options.channel == 'mt': top_sels_embed['ttt_sel'] = '((gen_match_1 == 4) && (gen_match_2 == 5))' -if options.channel == 'et': top_sels_embed['ttt_sel'] = '((gen_match_1 == 3) && (gen_match_2 == 5))' -if options.channel == 'tt': top_sels_embed['ttt_sel'] = '((gen_match_1 == 5) && (gen_match_2 == 5))' -if options.channel == 'em': top_sels_embed['ttt_sel'] = '((gen_match_1 == 3) && (gen_match_2 == 4))' -if options.channel in ['zmm']: top_sels_embed['ttt_sel'] = '((gen_match_1 == 2) && (gen_match_2 == 2))' -if options.channel in ['zee']: top_sels_embed['ttt_sel'] = '((gen_match_1 == 1) && (gen_match_2 == 1))' - -top_sels_embed['vvt_sel'] = top_sels_embed['ttt_sel'] - -if options.channel in ['et','mt','mj']: - vv_sels['vvt_sel'] = '(gen_match_2<6)' - vv_sels['vvj_sel'] = '(gen_match_2==6)' - top_sels['ttt_sel'] = '(gen_match_2<6)' - top_sels['ttj_sel'] = '(gen_match_2==6)' -elif options.channel == 'tt': - vv_sels['vvt_sel'] = '(gen_match_1<6 && gen_match_2<6)' - vv_sels['vvj_sel'] = '(!(gen_match_1<6 && gen_match_2<6))' - top_sels['ttt_sel'] = '(gen_match_1<6 && gen_match_2<6)' - top_sels['ttj_sel'] = '(!(gen_match_1<6 && gen_match_2<6))' -if options.channel in ['mj']: - vv_sels['vvt_sel'] = '(0)' - vv_sels['vvj_sel'] = '(1)' - top_sels['ttt_sel'] = '(0)' - top_sels['ttj_sel'] = '(1)' - -if options.era in ["smsummer16"]: - if options.channel in ['mt','et']: - z_sels['ztt_sel'] = '(gen_match_2==5)' - z_sels['zl_sel'] = '(gen_match_2!=6&&gen_match_2!=5)' - z_sels['zj_sel'] = '(gen_match_2==6)' - vv_sels['vvt_sel'] = '(gen_match_2==5)' - vv_sels['vvj_sel'] = '(gen_match_2!=5)' - top_sels['ttt_sel'] = '(gen_match_2==5)' - top_sels['ttj_sel'] = '(gen_match_2!=5)' - elif options.channel == 'tt': - z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' - z_sels['zl_sel'] = '(!(gen_match_1==6 || gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' - z_sels['zj_sel'] = '(gen_match_1==6 || gen_match_2==6)' - vv_sels['vvt_sel'] = '(gen_match_1==5 && gen_match_2==5)' - vv_sels['vvj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' - top_sels['ttt_sel'] = '(gen_match_1==5 && gen_match_2==5)' - top_sels['ttj_sel'] = '(!(gen_match_1==5 && gen_match_2==5))' - -if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','cpsummer17','UL_17','tauid2017','cp18','UL_18','mvadm2016','22']: - # define these selections to make them more compatible with the fake-factor method and embedded samples - if options.channel =='em': - z_sels['zll_sel'] = '(!(gen_match_2==4 && gen_match_1==3))' - z_sels['ztt_sel'] = '(gen_match_2==4 && gen_match_1==3)' - top_sels['ttt_sel'] = '(gen_match_2==4 && gen_match_1==3)' - top_sels['ttj_sel'] = '!(gen_match_2==4 && gen_match_1==3)' - vv_sels['vvt_sel'] = '(gen_match_2==4 && gen_match_1==3)' - vv_sels['vvj_sel'] = '!(gen_match_2==4 && gen_match_1==3)' - if options.channel =='mt': - z_sels['ztt_sel'] = '(gen_match_2==5 && gen_match_1==4)' - if options.channel =='et': - z_sels['ztt_sel'] = '(gen_match_2==5 && gen_match_1==3)' - if options.channel in ['mt','et']: - z_sels['zj_sel'] = '(gen_match_2==6)' - z_sels['zl_sel'] = '(gen_match_2!=6&&!(%s))' % z_sels['ztt_sel'] - vv_sels['vvt_sel'] = '(gen_match_2<6)' - vv_sels['vvj_sel'] = '(gen_match_2==6)' - top_sels['ttt_sel'] = '(gen_match_2<6)' - top_sels['ttj_sel'] = '(gen_match_2==6)' - elif options.channel == 'tt': - z_sels['ztt_sel'] = '(gen_match_1==5&&gen_match_2==5)' - z_sels['zl_sel'] = '(!(gen_match_1==6 || gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' - z_sels['zj_sel'] = '(gen_match_1==6 || gen_match_2==6)' - vv_sels['vvt_sel'] = '(!(gen_match_1==6 || gen_match_2==6))' - vv_sels['vvj_sel'] = '(gen_match_1==6 || gen_match_2==6)' - top_sels['ttt_sel'] = '(!(gen_match_1==6 || gen_match_2==6))' - top_sels['ttj_sel'] = '(gen_match_1==6 || gen_match_2==6)' - if options.method==0 and True in ['baseline_aisotau1' in x for x in options.set_alias]: - top_sels['ttj_sel'] = '(gen_match_1==6)' - top_sels['ttt_sel'] = '(gen_match_1!=6)' - vv_sels['vvj_sel'] = '(gen_match_1==6)' - vv_sels['vvt_sel'] = '(gen_match_1!=6)' - z_sels['zj_sel'] = '(gen_match_1==6)' - z_sels['zl_sel'] = '(!(gen_match_1==6) && !(gen_match_1==5&&gen_match_2==5))' - if options.method==0 and True in ['baseline_aisotau2' in x for x in options.set_alias]: - top_sels['ttj_sel'] = '(gen_match_2==6)' - top_sels['ttt_sel'] = '(gen_match_2!=6)' - vv_sels['vvj_sel'] = '(gen_match_2==6)' - vv_sels['vvt_sel'] = '(gen_match_2!=6)' - z_sels['zj_sel'] = '(gen_match_2==6)' - z_sels['zl_sel'] = '(!(gen_match_2==6) && !(gen_match_1==5&&gen_match_2==5))' - - -extra_top_sel = '1' -if options.embedding: - if options.channel == 'mt': extra_top_sel = '!((gen_match_1 == 4) && (gen_match_2 == 5))' - if options.channel == 'et': extra_top_sel = '!((gen_match_1 == 3) && (gen_match_2 == 5))' - if options.channel == 'tt': extra_top_sel = '!((gen_match_1 == 5) && (gen_match_2 == 5))' - if options.channel == 'em': extra_top_sel = '!((gen_match_1 == 3) && (gen_match_2 == 4))' - if options.channel =='zee': extra_top_sel = '!((gen_match_1 == 1) && (gen_match_2 == 1))' - top_sels["ttt_ztt_sel"] = top_sels["ttt_sel"]+'&&!'+extra_top_sel - vv_sels["vvt_ztt_sel"] = vv_sels["vvt_sel"]+'&&!'+extra_top_sel - for sel in top_sels: - if "ztt_sel" not in sel: top_sels[sel]+='&&'+extra_top_sel - for sel in vv_sels: - if "ztt_sel" not in sel: vv_sels[sel]+='&&'+extra_top_sel - top_sels_embed["ttt_ztt_sel"] = top_sels["ttt_ztt_sel"] - top_sels_embed["vvt_ztt_sel"] = vv_sels["vvt_ztt_sel"] - -# ------------------------------------------------------------ -# Add data sample names -if options.channel == 'mt': - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD'] -if options.channel == 'em': - data_samples = ['MuonEGB','MuonEGC','MuonEGD'] -if options.channel == 'et': - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD'] -if options.channel == 'tt': - data_samples = ['TauB','TauC','TauD'] - -# Add MC sample names -ztt_samples = [] -vv_samples = [] -wgam_samples = [] -top_samples = [] -wjets_samples = [] -ewkz_samples = [] -gghww_samples = [] -qqhww_samples = [] -top_samples = [] -# ------------------------------------------------------------ - -if options.era in ["mssmsummer16","smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','mvadm2016']: - # Add data sample names - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF','SingleMuonG','SingleMuonHv2','SingleMuonHv3'] - if options.era == "legacy16": - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF','SingleMuonG','SingleMuonH'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] - if options.era in ['UL_16_preVFP']: - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF'] - if options.era in ['UL_16_postVFP']: - data_samples = ['SingleMuonF','SingleMuonG','SingleMuonH'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauF','TauG','TauH'] - - if options.channel == 'em': - data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF','MuonEGG','MuonEGHv2','MuonEGHv3'] - if options.era == "legacy16": data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF','MuonEGG','MuonEGH'] - if options.era in ["UL_16_preVFP"]: data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] - if options.era in ["UL_16_postVFP"]: data_samples = ['MuonEGF','MuonEGG','MuonEGH'] - - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF','SingleElectronG','SingleElectronHv2','SingleElectronHv3'] - if options.era == "legacy16": - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF','SingleElectronG','SingleElectronH'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] - if options.era in ["UL_16_preVFP"]: - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF'] - if options.era in ["UL_16_postVFP"]: - data_samples = ['SingleElectronF','SingleElectronG','SingleElectronH'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauF','TauG','TauH'] - - if options.channel == 'tt': - data_samples = ['TauB','TauC','TauD','TauE','TauF','TauG','TauHv2','TauHv3'] - if options.era in ["legacy16"]: data_samples = ['TauB','TauC','TauD','TauE','TauF','TauG','TauH'] - if options.era in ['UL_16_preVFP']: data_samples = ['TauB','TauC','TauD','TauE','TauF'] - if options.era in ['UL_16_postVFP']: data_samples = ['TauF','TauG','TauH'] - - # MC Samples - if options.era in ["legacy16"]: - ztt_samples = ['DYJetsToLL-LO-ext1','DYJetsToLL-LO-ext2','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO'] - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] - wgam_samples = ['WGToLNuG-ext1','WGToLNuG-ext2','WGToLNuG-ext3'] - wjets_samples = ['WJetsToLNu-LO', 'WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W2JetsToLNu-LO-ext','W3JetsToLNu-LO','W3JetsToLNu-LO-ext','W4JetsToLNu-LO','W4JetsToLNu-LO-ext1','W4JetsToLNu-LO-ext2'] - if options.channel == 'mt': embed_samples = ['EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD','EmbeddingMuTauE','EmbeddingMuTauF','EmbeddingMuTauG','EmbeddingMuTauH'] - if options.channel == 'et': embed_samples = ['EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD','EmbeddingElTauE','EmbeddingElTauF','EmbeddingElTauG','EmbeddingElTauH'] - if options.channel == 'em': embed_samples = ['EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD','EmbeddingElMuE','EmbeddingElMuF','EmbeddingElMuG','EmbeddingElMuH'] - if options.channel == 'tt': embed_samples = ['EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD','EmbeddingTauTauE','EmbeddingTauTauF','EmbeddingTauTauG','EmbeddingTauTauH'] - if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD','EmbeddingMuMuE','EmbeddingMuMuF','EmbeddingMuMuG','EmbeddingMuMuH'] - if options.channel == 'zee': embed_samples = ['EmbeddingElElB','EmbeddingElElC','EmbeddingElElD','EmbeddingElElE','EmbeddingElElF','EmbeddingElElG','EmbeddingElElH'] - - if not options.era in ["UL_16_preVFP", "UL_16_postVFP"]: - if options.analysis in ['mssmrun2','vlq']: - top_samples = ['TT'] - else: - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - - - if options.era in ["UL_16_preVFP"]: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - else: - ztt_samples = ['DYJetstoLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] - vv_samples = ['WZTo1L1Nu2Q','WZTo3LNu','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','T-tW', 'Tbar-tW','Tbar-t','T-t'] - wgam_samples = ['WGToLNuG'] - wjets_samples = ['WJetsToLNu-LO' ,'W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - gghww_samples = [] - qqhww_samples = [] - ewkz_samples = ['EWKZ2Jets_ZToLL'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - - if options.era in ["UL_16_postVFP"]: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - else: - ztt_samples = ['DYJetstoLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] - vv_samples = ['WZTo3LNu','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','T-tW', 'Tbar-tW','Tbar-t','T-t'] - wgam_samples = ['WGToLNuG'] - wjets_samples = ['WJetsToLNu-LO' ,'W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - gghww_samples = [] - qqhww_samples = [] - ewkz_samples = ['EWKZ2Jets_ZToLL'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - -# ------------------------------------------------------------------------ -# Seems Redundant but ok I will ask - -if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'tauid2016','mvadm2016']: - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] - wjets_samples = ['WJetsToLNu-LO', 'WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W2JetsToLNu-LO-ext','W3JetsToLNu-LO','W3JetsToLNu-LO-ext','W4JetsToLNu-LO','W4JetsToLNu-LO-ext1','W4JetsToLNu-LO-ext2', 'EWKWMinus2Jets_WToLNu','EWKWMinus2Jets_WToLNu-ext1','EWKWMinus2Jets_WToLNu-ext2','EWKWPlus2Jets_WToLNu','EWKWPlus2Jets_WToLNu-ext1','EWKWPlus2Jets_WToLNu-ext2'] - ewkz_samples = ['EWKZ2Jets_ZToLL','EWKZ2Jets_ZToLL-ext'] - gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] - qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] - - if options.era == "legacy16": - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWTo1L1Nu2Q','WZJToLLLNu','VVTo2L2Nu','VVTo2L2Nu-ext1','ZZTo2L2Q','ZZTo4L-amcat','WZTo2L2Q','WZTo1L3Nu','WZTo1L1Nu2Q'] - ewkz_samples = ['EWKZ2Jets_ZToLL','EWKZ2Jets_ZToLL-ext1','EWKZ2Jets_ZToLL-ext2'] - wgam_samples = ['WGToLNuG-ext1','WGToLNuG-ext1','WGToLNuG-ext2','WGToLNuG-ext3','WGstarToLNuEE','WGstarToLNuMuMu'] - -# ------------------------------------------------------------------------ -# 2017 - -if options.era in ['cpsummer17','tauid2017']: - - # ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO','DYJetsToLL_M-10-50-LO-ext1'] - if options.channel == "tt": # remove 'DYJetsToLL_M-10-50-LO (zero entries) - ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1'] - else: ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1','DYJetsToLL_M-10-50-LO'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WWToLNuQQ','WZTo2L2Q','WZTo1L1Nu2Q','WZTo1L3Nu','WZTo3LNu', 'WWTo2L2Nu', 'ZZTo2L2Nu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L'] - if options.analysis in ['mssmrun2','vlq']: - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo2L2Q','WZTo3LNu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L','VVTo2L2Nu'] - - - wjets_samples = ['WJetsToLNu-LO','WJetsToLNu-LO-ext','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets','EWKWPlus2Jets'] - #wjets_samples = ['WJetsToLNu-LO','WJetsToLNu-LO-ext','EWKWMinus2Jets','EWKWPlus2Jets'] - wgam_samples = ['WGToLNuG'] - ewkz_samples = ['EWKZ2Jets'] - gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] - qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB','TauC','TauD','TauE','TauF'] - - - if options.channel == 'em': - data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauB','TauC','TauD','TauE','TauF'] - if options.channel == 'tt': - data_samples = ['TauB','TauC','TauD','TauE','TauF'] - - - if options.channel == 'mt': embed_samples = ['EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD','EmbeddingMuTauE','EmbeddingMuTauF'] - if options.channel == 'et': embed_samples = ['EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD','EmbeddingElTauE','EmbeddingElTauF'] - if options.channel == 'em': embed_samples = ['EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD','EmbeddingElMuE','EmbeddingElMuF'] - if options.channel == 'tt': embed_samples = ['EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD','EmbeddingTauTauE','EmbeddingTauTauF'] - if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD','EmbeddingMuMuE','EmbeddingMuMuF'] - if options.channel == 'zee': embed_samples = ['EmbeddingElElB','EmbeddingElElC','EmbeddingElElD','EmbeddingElElE','EmbeddingElElF'] - - -if options.era in ['UL_17']: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - else: - ztt_samples = ['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] - - # Question: Is this need for UL_17? - #if options.channel == "tt": # remove 'DYJetsToLL_M-10-50-LO (zero entries) - #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY1JetsToLL-LO-ext','DY2JetsToLL-LO','DY2JetsToLL-LO-ext','DY3JetsToLL-LO','DY3JetsToLL-LO-ext','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO-ext1'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L'] - #vv_samples = ['T-tW', 'Tbar-tW','T-t','WZTo3LNu','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L'] - # if options.analysis in ['mssmrun2','vlq']: - # vv_samples = ['T-tW', 'Tbar-tW','Tbar-t','T-t','WZTo2L2Q','WZTo3LNu', 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L','VVTo2L2Nu'] - - wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - wgam_samples = ['WGToLNuG'] - ewkz_samples = ['EWKZ2Jets_ZToLL'] - gghww_samples = [''] - qqhww_samples = [''] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB','SingleMuonC','SingleMuonD','SingleMuonE','SingleMuonF'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt' and options.singletau: data_samples += ['TauB','TauC','TauD','TauE','TauF'] - - if options.channel == 'em': - data_samples = ['MuonEGB','MuonEGC','MuonEGD','MuonEGE','MuonEGF'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['SingleElectronB','SingleElectronC','SingleElectronD','SingleElectronE','SingleElectronF'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et' and options.singletau: data_samples += ['TauB','TauC','TauD','TauE','TauF'] - if options.channel == 'tt': - data_samples = ['TauB','TauC','TauD','TauE','TauF'] - -# ------------------------------------------------------------------------ -# 2018 - -if options.era in ['cp18']: - ztt_samples = ['DYJetsToLL-LO','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10-50-LO'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = [ - 'T-tW-ext1', 'Tbar-tW-ext1','Tbar-t','WWTo2L2Nu','T-t', - 'WWToLNuQQ','WZTo1L3Nu','WZTo3LNu','WZTo3LNu-ext1','WZTo2L2Q', - 'ZZTo2L2Nu-ext1','ZZTo2L2Nu-ext2','ZZTo2L2Q','ZZTo4L-ext','ZZTo4L' - ] - if options.analysis in ['mssmrun2','vlq']: - vv_samples = [ - 'T-tW-ext1', 'Tbar-tW-ext1','Tbar-t','T-t', - 'WZTo3LNu','WZTo3LNu-ext1','WZTo2L2Q', - 'ZZTo2L2Q','ZZTo4L-ext','ZZTo4L', 'VVTo2L2Nu', - ] - - wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets','EWKWPlus2Jets'] - wgam_samples = ['WGToLNuG'] - ewkz_samples = ['EWKZ2Jets'] - gghww_samples = [] - qqhww_samples = [] - gghww_samples = ['GluGluHToWWTo2L2Nu_M-125'] - qqhww_samples = ['VBFHToWWTo2L2Nu_M-125'] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt' and options.singletau == True : data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'em': - data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et' and options.singletau == True: data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'tt': - data_samples = ['TauA','TauB','TauC','TauD'] - - if options.channel == 'mt': embed_samples = ['EmbeddingMuTauA','EmbeddingMuTauB','EmbeddingMuTauC','EmbeddingMuTauD'] - if options.channel == 'et': embed_samples = ['EmbeddingElTauA','EmbeddingElTauB','EmbeddingElTauC','EmbeddingElTauD'] - if options.channel == 'em': embed_samples = ['EmbeddingElMuA','EmbeddingElMuB','EmbeddingElMuC','EmbeddingElMuD'] - if options.channel == 'tt': embed_samples = ['EmbeddingTauTauA','EmbeddingTauTauB','EmbeddingTauTauC','EmbeddingTauTauD'] - if options.channel == 'zmm': embed_samples = ['EmbeddingMuMuA','EmbeddingMuMuB','EmbeddingMuMuC','EmbeddingMuMuD'] - if options.channel == 'zee': embed_samples = ['EmbeddingElElA','EmbeddingElElB','EmbeddingElElC','EmbeddingElElD'] - - -if options.era in ['UL_18']: - if (options.DY_NLO==False): - ztt_samples = ['DYJetsToLL-LO','DYJetsToLL-LO-ext1','DY1JetsToLL-LO','DY2JetsToLL-LO','DY3JetsToLL-LO','DY4JetsToLL-LO','DYJetsToLL_M-10to50-LO'] - #ztt_samples = ['DYJetsToLL-LO'] - else: - ztt_samples = ['DYJetsToLL-NLO','DYJetsToLL_0J-NLO','DYJetsToLL_1J-NLO','DYJetsToLL_2J-NLO'] - - #ztt_samples = ['DYJetsToLL-NLO'] - #ztt_samples = ['DYJetsToLL-LO','DYJetsToLL_M-10to50-LO'] - top_samples = ['TTTo2L2Nu', 'TTToHadronic', 'TTToSemiLeptonic'] - vv_samples = ['WZTo1L1Nu2Q','WZTo3LNu','WWTo1L1Nu2Q','WWTo2L2Nu','ZZTo2L2Nu','ZZTo4L','Tbar-t','Tbar-tW','T-t','T-tW'] - # if options.analysis in ['mssmrun2','vlq']: - # vv_samples = [ - # 'T-tW', 'Tbar-tW','Tbar-t','T-t', - # 'WZTo3LNu','ZZTo4L'] - wjets_samples = ['WJetsToLNu-LO','W1JetsToLNu-LO','W2JetsToLNu-LO','W3JetsToLNu-LO','W4JetsToLNu-LO','EWKWMinus2Jets_WToLNu','EWKWPlus2Jets_WToLNu'] - wgam_samples = ['WGToLNuG'] - ewkz_samples = ['EWKZ2Jets_ZToLL'] - gghww_samples = [''] - qqhww_samples = [''] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] - #if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'em': - data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'tt': - data_samples = ['TauA','TauB','TauC','TauD'] - -if options.era in ['22']: - - ztt_samples = ['DYJetsToLL-LO_summer_preEE','DYJetsToLL-LO_postEE'] - top_samples = ['TTTo2L2Nu_preEE','TTto4Q_preEE','TTtoLNu2Q_preEE','TTTo2L2Nu_postEE','TTto4Q_postEE','TTtoLNu2Q_postEE'] - vv_samples = ['WW_preEE','WZ_preEE','ZZ_preEE','TWminusto2L2Nu_preEE', - 'TWminustoLNu2Q_preEE','TbarWplusto2L2Nu_preEE', - 'TbarWplustoLNu2Q_preEE','TbarBQ_t-channel_4FS_preEE','TBbarQ_t-channel_4FS_preEE','WW_postEE','WZ_postEE','ZZ_postEE','TWminusto2L2Nu_postEE', - 'TWminustoLNu2Q_postEE','TbarWplusto2L2Nu_postEE', - 'TbarWplustoLNu2Q_postEE','TbarBQ_t-channel_4FS_postEE','TBbarQ_t-channel_4FS_postEE'] - wjets_samples = ['W3JetsToLNu-LO_preEE', - 'WJetsToLNu-LO_preEE','W1JetsToLNu-LO_postEE','W2JetsToLNu-LO_postEE', - 'WJetsToLNu-LO_postEE'] - wgam_samples = [] - ewkz_samples = [] - gghww_samples = [] - qqhww_samples = [] - - if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] - # data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE','MuonE_rereco_postEE','MuonF_postEE','MuonG_postEE'] - # if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB_rereco_preEE','TauC_rereco_preEE','TauD_rereco_preEE'] - if options.channel == 'em': - data_samples = ['MuonEGA','MuonEGB','MuonEGC','MuonEGD'] - if options.channel == 'et' or options.channel == 'zee': - data_samples = ['EGammaA','EGammaB','EGammaC','EGammaD'] - if options.analysis in ['mssmrun2','vlq'] and options.channel == 'et': data_samples += ['TauA','TauB','TauC','TauD'] - if options.channel == 'tt': - data_samples = ['TauA_preEE','TauB_rereco_preEE', - 'TauC_rereco_preEE','TauD_rereco_preEE','TauE_rereco_postEE','TauF_postEE','TauG_postEE'] - - -if options.method==0: ztt_samples+=ewkz_samples - -sm_samples = { 'ggH' : 'GluGluHToTauTau_M-*', 'qqH' : 'VBFHToTauTau_M-*', 'WplusH' : 'WplusHToTauTau_M-*', 'WminusH' : 'WminusHToTauTau_M-*', 'ZH' : 'ZHToTauTau_M-*', 'TTH' : 'TTHToTauTau_M-*' } -if options.era in ["smsummer16"]: sm_samples = { 'ggH_htt*' : 'GluGluToHToTauTau_M-*', 'qqH_htt*' : 'VBFHToTauTau_M-*', 'WplusH_htt*' : 'WplusHToTauTau_M-*', 'WminusH_htt*' : 'WminusHToTauTau_M-*', 'ZH_htt*' : 'ZHToTauTau_M-*'} - - -if options.analysis in ['cpprod']: -# 2016 - if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: - sm_samples = { - - - 'ggh*_powheg' : 'GluGluToHToTauTau_M-125', - # 'vbf*_powheg' : 'VBFHToTauTau_M-125', - # 'wplush*_powheg': 'WplusHToTauTau_M-125', - # 'wminush*_powheg': 'WminusHToTauTau_M-125', - # 'zh*_powheg': 'ZHToTauTau_M-125', -# 'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - # 'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - # 'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'qqH_htt*' : 'VBFHToTauTau_M-125', - 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - 'ZH_htt*': 'ZHToTauTau_M-125', - # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - - - 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0_HToTauTau', - 'qqH_ps_htt*' : 'VBFHiggs0M_HToTauTau', - 'qqH_sm_htt*' : 'VBFHiggs0PM_HToTauTau', - 'WH_mm_htt*' : 'WHiggs0MfWH05ph0', - 'WH_ps_htt*' : 'WHiggs0M', - 'WH_sm_htt*' : 'WHiggs0PM', - 'ZH_mm_htt*' : 'ZHiggs0MfZH05ph0', - 'ZH_ps_htt*' : 'ZHiggs0M', - 'ZH_sm_htt*' : 'ZHiggs0PM', - } - - -# 2017 - - - if (options.era == 'cpsummer17' or options.era == 'UL_17'): - sm_samples = { - 'ggh*_powheg' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], - # 'vbf*_powheg' : 'VBFHToTauTau_M-125', - # 'wplush*_powheg': 'WplusHToTauTau_M-125', - # 'wminush*_powheg': 'WminusHToTauTau_M-125', - # 'zh*_powheg': 'ZHToTauTau_M-125', - #'ZHps_htt*' : 'ZHiggs0MToTauTau', - #'ZHsm_htt*' : 'ZHiggs0PMToTauTau', - #'ZHmm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', - #'qqHsm_htt*' : 'VBFHiggs0PMToTauTau', - #'qqHps_htt*' :'VBFHiggs0MToTauTau', - #'qqHmm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', - #'WHps_htt*' :'WHiggs0MToTauTau', - #'WHmm_htt*' : 'WHiggs0Mf05ph0ToTauTau', - #'WHsm_htt*' : 'WHiggs0PMToTauTau', - # 'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - # 'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - # 'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'qqH_htt*' : 'VBFHToTauTau_M-125', - 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - 'ZH_htt*': 'ZHToTauTau_M-125', - # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', - 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', - 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', - 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', - 'WH_ps_htt*' : 'WHiggs0MToTauTau', - 'WH_sm_htt*' : 'WHiggs0PMToTauTau', - 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', - 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', - 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', - } - - -# 2018 - - - if (options.era == 'cp18' or options.era == 'UL_18'): - sm_samples = { - #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', - 'ggh*_powheg' : 'GluGluHToTauTau_M-125', - # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', - # 'wplush*_powheg': 'WplusHToTauTau_M-125', - # 'wminush*_powheg': 'WminusHToTauTau_M-125', - # 'zh*_powheg': 'ZHToTauTau_M-125', - #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', - 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], - # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', - 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', - 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', - 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', - 'WH_ps_htt*' : 'WHiggs0MToTauTau', - 'WH_sm_htt*' : 'WHiggs0PMToTauTau', - 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', - 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', - 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', - } - - if options.era == '22': - sm_samples = { - #'vbf_new' : 'VBFHToTauTau_M125_withDipoleRecoil', - 'ggh*_powheg' : 'GluGluHToTauTau_M-125', - # 'vbf*_powheg' : 'VBFHToTauTau_M-125-ext1', - # 'wplush*_powheg': 'WplusHToTauTau_M-125', - # 'wminush*_powheg': 'WminusHToTauTau_M-125', - # 'zh*_powheg': 'ZHToTauTau_M-125', - #'reweighted_ggH_htt_0PM*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0Mf05ph0*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - #'reweighted_ggH_htt_0M*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'ggH_sm_htt*' : ['JJH0PMToTauTauPlusZeroJets_Filtered','JJH0PMToTauTauPlusOneJets_Filtered','JJH0PMToTauTauPlusTwoJets_Filtered'], - 'ggH_mm_htt*' : ['JJH0Mf05ph0ToTauTauPlusZeroJets_Filtered','JJH0Mf05ph0ToTauTauPlusOneJets_Filtered','JJH0Mf05ph0ToTauTauPlusTwoJets_Filtered'], - 'ggH_ps_htt*' : ['JJH0MToTauTauPlusZeroJets_Filtered','JJH0MToTauTauPlusOneJets_Filtered','JJH0MToTauTauPlusTwoJets_Filtered'], - 'qqH_htt*' : 'VBFHToTauTau_M-125-ext1', - 'WH_htt*': ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - 'ZH_htt*': ['ZHToTauTau_M-125','ZHToTauTau_M125-ext1'], - # "ggH_cpdecay_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - 'qqH_mm_htt*' : 'VBFHiggs0Mf05ph0ToTauTau', - 'qqH_ps_htt*' : 'VBFHiggs0MToTauTau', - 'qqH_sm_htt*' : 'VBFHiggs0PMToTauTau', - 'WH_mm_htt*' : 'WHiggs0Mf05ph0ToTauTau', - 'WH_ps_htt*' : 'WHiggs0MToTauTau', - 'WH_sm_htt*' : 'WHiggs0PMToTauTau', - 'ZH_mm_htt*' : 'ZHiggs0Mf05ph0ToTauTau', - 'ZH_ps_htt*' : 'ZHiggs0MToTauTau', - 'ZH_sm_htt*' : 'ZHiggs0PMToTauTau', - } - - - - -if options.analysis in ['cpdecay']: - - - if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: - sm_samples = { - #'ggH_ph_htt*' : 'GluGluToHToTauTau_M-125', - #'qqH_ph_htt*' : 'VBFHToTauTau_M-125', - "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - #"WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - #"ZH_ph_htt*": 'ZHToTauTau_M-125', - #"ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - #"qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - } - - -# for 2017 - if (options.era == 'cpsummer17' or options.era == 'UL_17'): - sm_samples = { - 'ggH_ph_htt*' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], - 'qqH_ph_htt*' : 'VBFHToTauTau_M-125', - "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - "ZH_ph_htt*": 'ZHToTauTau_M-125', - "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - } - - - if (options.era == 'cp18' or options.era == 'UL_18'): - sm_samples = { - # test CP in decay samples - 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', - 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', - "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - "ZH_ph_htt*": 'ZHToTauTau_M-125', - "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - } - if options.era == '22': - sm_samples = { - # test CP in decay samples - 'ggH_ph_htt*' : 'GluGluHToTauTau_M-125', - 'qqH_ph_htt*' : 'VBFHToTauTau_M-125-ext1', - "qqH_sm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_ps_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "qqH_mm_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - "ggH_sm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_ps_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "ggH_mm_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "WH_sm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_ps_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "WH_mm_htt*" : ['WplusHToTauTauUncorrelatedDecay_Filtered','WminusHToTauTauUncorrelatedDecay_Filtered'], - "ZH_sm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_ps_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "ZH_mm_htt*": 'ZHToTauTauUncorrelatedDecay_Filtered', - "WH_ph_htt*": ['WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - "ZH_ph_htt*": 'ZHToTauTau_M-125', - "ggH_flat_htt*": "GluGluHToTauTauUncorrelatedDecay_Filtered", - "qqH_flat_htt*": "VBFHToTauTauUncorrelatedDecay_Filtered", - } - - -if options.analysis in ['mssmrun2','vlq']: - if options.era == '22': - sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', - 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - } - if (options.era == 'cp18' or options.era == 'UL_18'): - sm_samples = { 'ggH125_SM' : 'GluGluHToTauTau_M-125', - 'qqH125' : ['VBFHToTauTau_M-125-ext1','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], -# 'qqH95' : 'VBFHToTauTau_M-95', - #'qqH125' : 'VBFHToTauTau_M-125-ext1', - #'ZH125' : 'ZHToTauTau_M-125', - #'WplusH125' : 'WplusHToTauTau_M-125', - #'WminusH125' : 'WminusHToTauTau_M-125', - #'ttH125' : 'ttHToTauTau', - #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', - #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', - #'WminusHWW125' : 'HWminusJ_HToWW', - #'WplusHWW125' : 'HWplusJ_HToWW', - } - elif (options.era == 'cpsummer17' or options.era == 'UL_17'): - sm_samples = { 'ggH125_SM' : ['GluGluHToTauTau_M-125','GluGluHToTauTau_M-125-ext'], - 'qqH125' : ['VBFHToTauTau_M-125','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - #'qqH95' : 'VBFHToTauTau_M-95', - #'qqH125' : 'VBFHToTauTau_M-125', - #'ZH125' : 'ZHToTauTau_M-125', - #'WplusH125' : 'WplusHToTauTau_M-125', - #'WminusH125' : 'WminusHToTauTau_M-125', - #'ttH125' : 'ttHToTauTau', - #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', - #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', - #'WminusHWW125' : 'HWminusJ_HToWW', - #'WplusHWW125' : 'HWplusJ_HToWW', - } - elif options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: - sm_samples = { 'ggH125_SM' : 'GluGluToHToTauTau_M-125', - 'qqH125': ['VBFHToTauTau_M-125','ZHToTauTau_M-125','WplusHToTauTau_M-125','WminusHToTauTau_M-125'], - #'qqH95' : 'VBFHToTauTau_M-95', - #'qqH125' : 'VBFHToTauTau_M-125', - #'ZH125' : 'ZHToTauTau_M-125', - #'WplusH125' : 'WplusHToTauTau_M-125', - #'WminusH125' : 'WminusHToTauTau_M-125', - #'ttH125' : 'ttHJetToTT', - #'ggHWW125' : 'GluGluHToWWTo2L2Nu_M-125', - #'qqHWW125' : 'VBFHToWWTo2L2Nu_M-125', - #'WminusHWW125' : 'HWminusJ_HToWW', - #'WplusHWW125' : 'HWplusJ_HToWW', - } - - -if options.analysis == "vlq": - vlq_samples = { - "vlq_betaRd33_0_mU2_gU1":"VectorLQToTauTau_betaRd33_0_mU2_gU1", - "vlq_betaRd33_0_mU2_gU2":"VectorLQToTauTau_betaRd33_0_mU2_gU2", - "vlq_betaRd33_0_mU2_gU3":"VectorLQToTauTau_betaRd33_0_mU2_gU3", - "vlq_betaRd33_0_mU3_gU1":"VectorLQToTauTau_betaRd33_0_mU3_gU1", - "vlq_betaRd33_0_mU3_gU2":"VectorLQToTauTau_betaRd33_0_mU3_gU2", - "vlq_betaRd33_0_mU3_gU3":"VectorLQToTauTau_betaRd33_0_mU3_gU3", - "vlq_betaRd33_0_mU4_gU1":"VectorLQToTauTau_betaRd33_0_mU4_gU1", - "vlq_betaRd33_0_mU4_gU2":"VectorLQToTauTau_betaRd33_0_mU4_gU2", - "vlq_betaRd33_0_mU4_gU3":"VectorLQToTauTau_betaRd33_0_mU4_gU3", - "vlq_betaRd33_minus1_mU2_gU1":"VectorLQToTauTau_betaRd33_minus1_mU2_gU1", - "vlq_betaRd33_minus1_mU2_gU2":"VectorLQToTauTau_betaRd33_minus1_mU2_gU2", - "vlq_betaRd33_minus1_mU2_gU3":"VectorLQToTauTau_betaRd33_minus1_mU2_gU3", - "vlq_betaRd33_minus1_mU3_gU1":"VectorLQToTauTau_betaRd33_minus1_mU3_gU1", - "vlq_betaRd33_minus1_mU3_gU2":"VectorLQToTauTau_betaRd33_minus1_mU3_gU2", - "vlq_betaRd33_minus1_mU3_gU3":"VectorLQToTauTau_betaRd33_minus1_mU3_gU3", - "vlq_betaRd33_minus1_mU4_gU1":"VectorLQToTauTau_betaRd33_minus1_mU4_gU1", - "vlq_betaRd33_minus1_mU4_gU2":"VectorLQToTauTau_betaRd33_minus1_mU4_gU2", - "vlq_betaRd33_minus1_mU4_gU3":"VectorLQToTauTau_betaRd33_minus1_mU4_gU3", - "VLQ_betaRd33_0_M_2000":["VectorLQToTauTau_betaRd33_0_mU2_gU1","VectorLQToTauTau_betaRd33_0_mU2_gU2","VectorLQToTauTau_betaRd33_0_mU2_gU3"], - "VLQ_betaRd33_0_M_3000":["VectorLQToTauTau_betaRd33_0_mU3_gU1","VectorLQToTauTau_betaRd33_0_mU3_gU2","VectorLQToTauTau_betaRd33_0_mU3_gU3"], - "VLQ_betaRd33_0_M_4000":["VectorLQToTauTau_betaRd33_0_mU4_gU1","VectorLQToTauTau_betaRd33_0_mU4_gU2","VectorLQToTauTau_betaRd33_0_mU4_gU3"], - "VLQ_betaRd33_minus1_M_2000":["VectorLQToTauTau_betaRd33_minus1_mU2_gU1","VectorLQToTauTau_betaRd33_minus1_mU2_gU2","VectorLQToTauTau_betaRd33_minus1_mU2_gU3"], - "VLQ_betaRd33_minus1_M_3000":["VectorLQToTauTau_betaRd33_minus1_mU3_gU1","VectorLQToTauTau_betaRd33_minus1_mU3_gU2","VectorLQToTauTau_betaRd33_minus1_mU3_gU3"], - "VLQ_betaRd33_minus1_M_4000":["VectorLQToTauTau_betaRd33_minus1_mU4_gU1","VectorLQToTauTau_betaRd33_minus1_mU4_gU2","VectorLQToTauTau_betaRd33_minus1_mU4_gU3"], - } - - - - -if options.ggh_masses_powheg == "": - mssm_samples = { 'ggH' : 'SUSYGluGluToHToTauTau_M-*', 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*' } -else: - mssm_samples = { 'ggH' : 'SUSYGluGluToHToTauTau_M-*_powheg', 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*_powheg' } - - -if options.bbh_masses_powheg == "": - mssm_nlo_samples = { 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*-NLO' } - mssm_lo_samples = { 'bbH-LO' : 'SUSYGluGluToBBHToTauTau_M-*' } - mssm_nlo_qsh_samples = { 'bbH-QshUp' : 'SUSYGluGluToBBHToTauTau_M-*-NLO-QshUp', 'bbH-QshDown' : 'SUSYGluGluToBBHToTauTau_M-*-NLO-QshDown' } -else: - mssm_lo_samples = { 'bbH' : 'SUSYGluGluToBBHToTauTau_M-*_powheg' } - - - - -if options.nlo_qsh and mssm_nlo_samples: mssm_nlo_samples.update(mssm_nlo_qsh_samples) -Hhh_samples = { 'ggH' : 'GluGluToRadionToHHTo2B2Tau_M-*' } - - -# set systematics: first index sets folder name contaning systematic samples, second index sets string to be appended to output histograms, third index specifies the weight to be applied , 4th lists samples that should be skipped -systematics = OrderedDict() -if not options.no_default: systematics['default'] = ('','', 'wt', [], False) - - -if options.syst_e_res != '': - systematics['res_e_up'] = ('ERES_UP' , '_'+options.syst_e_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - systematics['res_e_down'] = ('ERES_DOWN' , '_'+options.syst_e_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) -if options.syst_mu_res != '': - systematics['res_mu_up'] = ('MURES_UP' , '_'+options.syst_mu_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - systematics['res_mu_down'] = ('MURES_DOWN' , '_'+options.syst_mu_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) -if options.syst_tau_res != '': - systematics['res_tau_up'] = ('TRES_UP' , '_'+options.syst_tau_res+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - systematics['res_tau_down'] = ('TRES_DOWN' , '_'+options.syst_tau_res+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) -if options.syst_e_scale != '': - systematics['scale_e_up'] = ('ESCALE_UP' , '_'+options.syst_e_scale+'Up', 'wt', ['QCD','jetFakes'], False) - systematics['scale_e_down'] = ('ESCALE_DOWN' , '_'+options.syst_e_scale+'Down', 'wt', ['QCD','jetFakes'], False) -if options.syst_mu_scale != '': - systematics['scale_mu_up'] = ('MUSCALE_UP' , '_'+options.syst_mu_scale+'Up', 'wt',['QCD','jetFakes'], False) - systematics['scale_mu_down'] = ('MUSCALE_DOWN' , '_'+options.syst_mu_scale+'Down', 'wt', ['QCD','jetFakes'], False) - - -if options.syst_tau_scale != '': - systematics['scale_t_up'] = ('TSCALE_UP' , '_'+options.syst_tau_scale+'Up', 'wt', ['jetFakes'], False) - systematics['scale_t_down'] = ('TSCALE_DOWN' , '_'+options.syst_tau_scale+'Down', 'wt', ['jetFakes'], False) -if options.syst_tau_scale_0pi != '': - systematics['scale_t_0pi_up'] = ('TSCALE0PI_UP' , '_'+options.syst_tau_scale_0pi+'Up', 'wt', ['QCD','jetFakes'], False) - systematics['scale_t_0pi_down'] = ('TSCALE0PI_DOWN' , '_'+options.syst_tau_scale_0pi+'Down', 'wt', ['QCD','jetFakes'], False) -if options.syst_tau_scale_1pi != '': - systematics['scale_t_1pi_up'] = ('TSCALE1PI_UP' , '_'+options.syst_tau_scale_1pi+'Up', 'wt', ['QCD','jetFakes'], False) - systematics['scale_t_1pi_down'] = ('TSCALE1PI_DOWN' , '_'+options.syst_tau_scale_1pi+'Down', 'wt', ['QCD','jetFakes'], False) -if options.syst_tau_scale_3prong != '': - systematics['scale_t_3prong_up'] = ('TSCALE3PRONG_UP' , '_'+options.syst_tau_scale_3prong+'Up', 'wt', ['QCD','jetFakes'], False) - systematics['scale_t_3prong_down'] = ('TSCALE3PRONG_DOWN' , '_'+options.syst_tau_scale_3prong+'Down', 'wt', ['QCD','jetFakes'], False) -if options.syst_tau_scale_3prong1pi0 != '': - systematics['scale_t_3prong1pi0_up'] = ('TSCALE3PRONG1PI0_UP' , '_'+options.syst_tau_scale_3prong1pi0+'Up', 'wt', ['QCD','jetFakes'], False) - systematics['scale_t_3prong1pi0_down'] = ('TSCALE3PRONG1PI0_DOWN' , '_'+options.syst_tau_scale_3prong1pi0+'Down', 'wt', ['QCD','jetFakes'], False) -### group TES -if options.syst_tau_scale_grouped != "": - hist_name = options.syst_tau_scale_grouped - syst_dict = { - '0pi': ['1prong','TSCALE0PI'], - '1pi': ['1prong1pizero','TSCALE1PI'], - '3prong': ['3prong','TSCALE3PRONG'], - '3prong1pi0': ['3prong1pizero','TSCALE3PRONG1PI0'], - } - for name, values in syst_dict.iteritems(): - syst_name = hist_name.replace("*group", values[0]) - systematics["scale_t_{}_up".format(name)] = ( - "{}_UP".format(values[1]), "_{}Up".format(syst_name), - "wt", ["QCD","jetFakes"], False - ) - systematics["scale_t_{}_down".format(name)] = ( - "{}_DOWN".format(values[1]), "_{}Down".format(syst_name), - "wt", ["QCD","jetFakes"], False - ) -## -if options.syst_efake_0pi_scale != '': - systematics['scale_efake_0pi_up'] = ('EFAKE0PI_UP' , '_'+options.syst_efake_0pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['scale_efake_0pi_down'] = ('EFAKE0PI_DOWN' , '_'+options.syst_efake_0pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_efake_1pi_scale != '': - systematics['scale_efake_1pi_up'] = ('EFAKE1PI_UP' , '_'+options.syst_efake_1pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['scale_efake_1pi_down'] = ('EFAKE1PI_DOWN' , '_'+options.syst_efake_1pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_mufake_0pi_scale != '': - systematics['scale_mufake_0pi_up'] = ('MUFAKE0PI_UP' , '_'+options.syst_mufake_0pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['scale_mufake_0pi_down'] = ('MUFAKE0PI_DOWN' , '_'+options.syst_mufake_0pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_mufake_1pi_scale != '': - systematics['scale_mufake_1pi_up'] = ('MUFAKE1PI_UP' , '_'+options.syst_mufake_1pi_scale+'Up', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','EmbedZTT'], False) - systematics['scale_mufake_1pi_down'] = ('MUFAKE1PI_DOWN' , '_'+options.syst_mufake_1pi_scale+'Down', 'wt', ['ZTT','VVT','VVJ','TTT','TTJ','QCD','signal','W','jetFakes','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_eff_t != '': - systematics['syst_eff_t_up'] = ('' , '_'+options.syst_eff_t+'Up', 'wt*wt_tau_id_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) - systematics['syst_eff_t_down'] = ('' , '_'+options.syst_eff_t+'Down', 'wt*wt_tau_id_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) -if options.syst_tquark != '': - systematics['syst_tquark_up'] = ('' , '_'+options.syst_tquark+'Up', 'wt*wt_tquark_up', ['ZTT','ZL','ZJ','VVT','VVJ','QCD','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['syst_tquark_down'] = ('' , '_'+options.syst_tquark+'Down', 'wt*wt_tquark_down', ['ZTT','ZL','ZJ','VVJ','VVT','QCD','W', 'signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -# syst_alt_name='CMS_htt_ttbarShape_TheoryVsData' -# if 'ttbarShape' in options.syst_tquark: -# syst_alt_name = options.syst_tquark.replace('ttbarShape','ttbarShape_TheoryVsData') -# systematics['syst_tquark_alt_up'] = ('' , '_'+syst_alt_name+'Up', 'wt*wt_tquark_alt', ['ZTT','ZL','ZJ','VVT','VVJ','QCD','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -# systematics['syst_tquark_alt_down'] = ('' , '_'+syst_alt_name+'Down', 'wt*(2.-wt_tquark_alt)', ['ZTT','ZL','ZJ','VVJ','VVT','QCD','W', 'signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_zwt != '': - systematics['syst_zwt_up'] = ('' , '_'+options.syst_zwt+'Up', 'wt*wt_zpt_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zwt_down'] = ('' , '_'+options.syst_zwt+'Down', 'wt*wt_zpt_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_w_fake_rate != '': - to_skip = ['ZTT','ZL','ZJ','VVT','VVJ','TTT','TTJ','QCD','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'] - if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','mvadm2016']: to_skip = ['ZTT','ZL','VVT','TTT','QCD','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'] - systematics['syst_w_fake_rate_up'] = ('' , '_'+options.syst_w_fake_rate+'Up', 'wt*wt_tau_fake_up', to_skip, False) - systematics['syst_w_fake_rate_down'] = ('' , '_'+options.syst_w_fake_rate+'Down', 'wt*wt_tau_fake_down', to_skip, False) -if options.syst_jfake_m != '': - systematics['syst_jfake_m_up'] = ('' , '_'+options.syst_jfake_m+'Up', 'wt*idisoweight_up_2', ['ZTT','QCD','signal','TT','EmbedZTT'], False) - systematics['syst_jfake_m_down'] = ('' , '_'+options.syst_jfake_m+'Down', 'wt*idisoweight_down_2', ['ZTT','QCD','signal','TT','EmbedZTT'], False) -if options.syst_jfake_e != '': - systematics['syst_jfake_e_up'] = ('' , '_'+options.syst_jfake_e+'Up', 'wt*idisoweight_up_1', ['ZTT','QCD','signal','TT','EmbedZTT'], False) - systematics['syst_jfake_e_down'] = ('' , '_'+options.syst_jfake_e+'Down', 'wt*idisoweight_down_1', ['ZTT','QCD','signal','TT','EmbedZTT'], False) -if options.syst_scale_j != '': - systematics['syst_scale_j_up'] = ('JES_UP' , '_'+options.syst_scale_j+'Up', 'wt', ['EmbedZTT','jetFakes'], False) - systematics['syst_scale_j_down'] = ('JES_DOWN' , '_'+options.syst_scale_j+'Down', 'wt', ['EmbedZTT','jetFakes'], False) -if options.syst_res_j != '': - systematics['syst_res_j_up'] = ('JER_UP' , '_'+options.syst_res_j+'Up', 'wt', ['EmbedZTT','jetFakes'], False) - systematics['syst_res_j_down'] = ('JER_DOWN' , '_'+options.syst_res_j+'Down', 'wt', ['EmbedZTT','jetFakes'], False) -if options.syst_scale_j_corr != '': - systematics['syst_scale_j_corr_up'] = ('JES_CORR_UP' , '_'+options.syst_scale_j_corr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_corr_down'] = ('JES_CORR_DOWN' , '_'+options.syst_scale_j_corr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_uncorr != '': - systematics['syst_scale_j_uncorr_up'] = ('JES_UNCORR_UP' , '_'+options.syst_scale_j_uncorr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_uncorr_down'] = ('JES_UNCORR_DOWN' , '_'+options.syst_scale_j_uncorr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_rbal != '': - systematics['syst_scale_j_rbal_up'] = ('JESRBAL_UP' , '_'+options.syst_scale_j_rbal+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_rbal_down'] = ('JESRBAL_DOWN' , '_'+options.syst_scale_j_rbal+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_rsamp != '': - systematics['syst_scale_j_rsamp_up'] = ('JESRSAMP_UP' , '_'+options.syst_scale_j_rsamp+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_rsamp_down'] = ('JESRSAMP_DOWN' , '_'+options.syst_scale_j_rsamp+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_full != '': - systematics['syst_scale_j_full_up'] = ('JESFULL_UP' , '_'+options.syst_scale_j_full+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_full_down'] = ('JESFULL_DOWN' , '_'+options.syst_scale_j_full+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_cent != '': - systematics['syst_scale_j_cent_up'] = ('JESCENT_UP' , '_'+options.syst_scale_j_cent+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_cent_down'] = ('JESCENT_DOWN' , '_'+options.syst_scale_j_cent+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_hf != '': - systematics['syst_scale_j_hf_up'] = ('JESHF_UP' , '_'+options.syst_scale_j_hf+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_hf_down'] = ('JESHF_DOWN' , '_'+options.syst_scale_j_hf+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_full_corr != '': - systematics['syst_scale_j_full_corr_up'] = ('JESFULL_CORR_UP' , '_'+options.syst_scale_j_full_corr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_full_corr_down'] = ('JESFULL_CORR_DOWN' , '_'+options.syst_scale_j_full_corr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_cent_corr != '': - systematics['syst_scale_j_cent_corr_up'] = ('JESCENT_CORR_UP' , '_'+options.syst_scale_j_cent_corr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_cent_corr_down'] = ('JESCENT_CORR_DOWN' , '_'+options.syst_scale_j_cent_corr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_hf_corr != '': - systematics['syst_scale_j_hf_corr_up'] = ('JESHF_CORR_UP' , '_'+options.syst_scale_j_hf_corr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_hf_corr_down'] = ('JESHF_CORR_DOWN' , '_'+options.syst_scale_j_hf_corr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_full_uncorr != '': - systematics['syst_scale_j_full_uncorr_up'] = ('JESFULL_UNCORR_UP' , '_'+options.syst_scale_j_full_uncorr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_full_uncorr_down'] = ('JESFULL_UNCORR_DOWN' , '_'+options.syst_scale_j_full_uncorr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_cent_uncorr != '': - systematics['syst_scale_j_cent_uncorr_up'] = ('JESCENT_UNCORR_UP' , '_'+options.syst_scale_j_cent_uncorr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_cent_uncorr_down'] = ('JESCENT_UNCORR_DOWN' , '_'+options.syst_scale_j_cent_uncorr+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_scale_j_hf_uncorr != '': - systematics['syst_scale_j_hf_uncorr_up'] = ('JESHF_UNCORR_UP' , '_'+options.syst_scale_j_hf_uncorr+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_scale_j_hf_uncorr_down'] = ('JESHF_UNCORR_DOWN' , '_'+options.syst_scale_j_hf_uncorr+'Down', 'wt', ['EmbedZTT'], False) -############ Regrouped JEC for full run2 -if options.syst_scale_j_regrouped != "": - hist_name = options.syst_scale_j_regrouped - # need dict of syst names and folders of where the shifted trees are found - names = ["Absolute", "Absolute_year", "BBEC1", "BBEC1_year", - "EC2", "EC2_year", "FlavorQCD", "HF", "HF_year", - "RelativeBal", "RelativeSample_year"] - folders = ["JESABS", "JESABS_YEAR", "JESBBEC1", "JESBBEC1_YEAR", - "JESEC2", "JESEC2_YEAR", "JESFLAV", "JESHF", "JESHF_YEAR", - "JESRBAL", "JESRELSAMP_YEAR"] - syst_dict = dict(zip(names, folders)) - - - replaceYear = "" - if options.era in ["legacy16",'UL_16_preVFP','UL_16_postVFP']: replaceYear = "2016" - elif (options.era == "cpsummer17" or options.era == 'UL_17'): replaceYear = "2017" - elif (options.era == "cp18" or options.era == 'UL_18'): replaceYear = "2018" - elif options.era == "22": replaceYear = "2022" - else: assert ValueError("Regrouped JES only works for full RunII analyses") - - - if "*group" in hist_name: - for name, folder in syst_dict.iteritems(): - if "year" in name: name=name.replace("year", replaceYear) - syst_name = hist_name.replace("*group", name) - systematics['syst_scale_j_{}_up'.format(syst_name)] = ( - "{}_UP".format(folder), "_{}Up".format(syst_name), - "wt", ["EmbedZTT",'jetFakes','QCD'], False) - systematics['syst_scale_j_{}_down'.format(syst_name)] = ( - "{}_DOWN".format(folder), "_{}Down".format(syst_name), - "wt", ["EmbedZTT",'jetFakes','QCD'], False) - - -if options.syst_eff_b_weights != '': - systematics['syst_b_weights_up'] = ('' , '_'+options.syst_eff_b_weights+'Up', 'wt*wt_btag_up/wt_btag', ['EmbedZTT','ZTT','ZL','ZLL','ZJ','EWKZ','signal','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) - systematics['syst_b_weights_down'] = ('' , '_'+options.syst_eff_b_weights+'Down', 'wt*wt_btag_down/wt_btag', ['EmbedZTT','ZTT','ZL','ZLL','ZJ','EWKZ','signal','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) -if options.syst_eff_b != '': - systematics['syst_b_up'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BTAG_UP'.format(options.year), '_'+options.syst_eff_b+'Up', 'wt', ['EmbedZTT','ZJ','EWKZ','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) - systematics['syst_b_down'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BTAG_DOWN'.format(options.year) , '_'+options.syst_eff_b+'Down', 'wt', ['EmbedZTT','ZJ','EWKZ','jetFakes','W','QCD','qqH_hww','ggH_hww'], False) -if options.syst_fake_b != '': - systematics['syst_fake_b_up'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BFAKE_UP'.format(options.year), '_'+options.syst_fake_b+'Up', 'wt', ['EmbedZTT'], False) - systematics['syst_fake_b_down'] = ('../../../../../../../vols/cms/dw515/Offline/output/MSSM/mssm_{}_btag/BFAKE_DOWN'.format(options.year) , '_'+options.syst_fake_b+'Down', 'wt', ['EmbedZTT'], False) -if options.syst_zpt_es != '': - systematics['syst_zpt_es_up'] = ('' , '_'+options.syst_zpt_es+'Up', 'wt*wt_zpt_esup', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zpt_es_down'] = ('' , '_'+options.syst_zpt_es+'Down', 'wt*wt_zpt_esdown', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_zpt_tt != '': - systematics['syst_zpt_tt_up'] = ('' , '_'+options.syst_zpt_tt+'Up', 'wt*wt_zpt_ttup', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zpt_tt_down'] = ('' , '_'+options.syst_zpt_tt+'Down', 'wt*wt_zpt_ttdown', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_zpt_statpt0 != '': - systematics['syst_zpt_statpt0_up'] = ('' , '_'+options.syst_zpt_statpt0+'Up', 'wt*wt_zpt_stat_m400pt0_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zpt_statpt0_down'] = ('' , '_'+options.syst_zpt_statpt0+'Down', 'wt*wt_zpt_stat_m400pt0_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_zpt_statpt40 != '': - systematics['syst_zpt_statpt40_up'] = ('' , '_'+options.syst_zpt_statpt40+'Up', 'wt*wt_zpt_stat_m400pt40_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zpt_statpt40_down'] = ('' , '_'+options.syst_zpt_statpt40+'Down', 'wt*wt_zpt_stat_m400pt40_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_zpt_statpt80 != '': - systematics['syst_zpt_statpt80_up'] = ('' , '_'+options.syst_zpt_statpt80+'Up', 'wt*wt_zpt_stat_m400pt80_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_zpt_statpt80_down'] = ('' , '_'+options.syst_zpt_statpt80+'Down', 'wt*wt_zpt_stat_m400pt80_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_z_mjj != '' and options.cat in ['vbf','dijet','dijet_lowboost','dijet_boosted', - # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: - systematics['syst_z_mjj_up'] = ('' , '_'+options.syst_z_mjj+'Up', 'wt*wt_z_mjj_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','ggH_hww125','qqH_hww125', 'ggH_hww', 'qqH_hww','EmbedZTT'], False) - systematics['syst_z_mjj_down'] = ('' , '_'+options.syst_z_mjj+'Down', 'wt*wt_z_mjj_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','ggH_hww125','qqH_hww125', 'ggH_hww', 'qqH_hww','EmbedZTT'], False) -if options.syst_qcd_scale != '' and options.cat in ['0jet','boosted','vbf','dijet','dijet_lowboost','dijet_boosted', - ] and options.channel in ['em','et','mt','tt'] and options.era == 'smsummer16': - if "Mjj" not in options.cat: - weight_up = 'wt*wt_scale_%s_%s' % (options.channel, options.cat) - weight_down = 'wt*(2-wt_scale_%s_%s)' % (options.channel, options.cat) - elif "low" in options.cat: - weight_up = 'wt*wt_scale_%s_boosted' % (options.channel) - weight_down = 'wt*(2-wt_scale_%s_boosted)' % (options.channel) - if options.cat in ['dijet','dijet_lowboost','dijet_boosted', - ]: - weight_up = 'wt*wt_scale_%s_vbf' % (options.channel) - weight_down = 'wt*(2-wt_scale_%s_vbf)' % (options.channel) - - - systematics['syst_qcd_scale_up'] = ('' , '_'+options.syst_qcd_scale+'Up', weight_up, ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['syst_qcd_scale_down'] = ('' , '_'+options.syst_qcd_scale+'Down', weight_down, ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) -if options.syst_qcd_scale != '' and options.era != 'smsummer16': - systematics['syst_qcd_scale_up'] = ('' , '_'+options.syst_qcd_scale+'Up', 'wt*wt_qcdscale_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) - systematics['syst_qcd_scale_down'] = ('' , '_'+options.syst_qcd_scale+'Down', 'wt*wt_qcdscale_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) -if options.syst_quarkmass != '': - systematics['syst_quarkmass_up'] = ('' , '_'+options.syst_quarkmass+'Up', 'wt*wt_quarkmass', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) - systematics['syst_quarkmass_down'] = ('' , '_'+options.syst_quarkmass+'Down', 'wt*((1./wt_quarkmass-1.)*0.05 + 1.)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*'], False) -if options.syst_ps != '': - if '*PS' in options.syst_ps: - hist_name_fsr = options.syst_ps.replace('*PS','PS_FSR') - hist_name_isr = options.syst_ps.replace('*PS','PS_ISR') - systematics['syst_ps_fsr_up'] = ('' , '_'+hist_name_fsr+'Up', 'wt*min(wt_ps_fsr_up,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - systematics['syst_ps_fsr_down'] = ('' , '_'+hist_name_fsr+'Down', 'wt*min(wt_ps_fsr_down,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - systematics['syst_ps_isr_up'] = ('' , '_'+hist_name_isr+'Up', 'wt*min(wt_ps_isr_up,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - systematics['syst_ps_isr_down'] = ('' , '_'+hist_name_isr+'Down', 'wt*min(wt_ps_isr_down,10)', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - else: - systematics['syst_ps_up'] = ('' , '_'+options.syst_ps+'Up', 'wt*wt_ps_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - systematics['syst_ps_down'] = ('' , '_'+options.syst_ps+'Down', 'wt*wt_ps_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) -if options.syst_ue != '': - systematics['syst_ue_up'] = ('' , '_'+options.syst_ue+'Up', 'wt*wt_ue_up', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) - systematics['syst_ue_down'] = ('' , '_'+options.syst_ue+'Down', 'wt*wt_ue_down', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','QCD','W','jetFakes','qqH','WminusH','WplusH','ZH','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT','ggH_ph_htt*','ggHsm_jhu_htt*','ggHps_jhu_htt*','ggHmm_jhu_htt*'], False) -if options.syst_tau_id_dm0 != '': - systematics['syst_tau_id_dm0_up'] = ('' , '_'+options.syst_tau_id_dm0+'Up', 'wt*wt_tau_id_dm0_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) - systematics['syst_tau_id_dm0_down'] = ('' , '_'+options.syst_tau_id_dm0+'Down', 'wt*wt_tau_id_dm0_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) -if options.syst_tau_id_dm1 != '': - systematics['syst_tau_id_dm1_up'] = ('' , '_'+options.syst_tau_id_dm1+'Up', 'wt*wt_tau_id_dm1_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) - systematics['syst_tau_id_dm1_down'] = ('' , '_'+options.syst_tau_id_dm1+'Down', 'wt*wt_tau_id_dm1_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) -if options.syst_tau_id_dm10 != '': - systematics['syst_tau_id_dm10_up'] = ('' , '_'+options.syst_tau_id_dm10+'Up', 'wt*wt_tau_id_dm10_up', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) - systematics['syst_tau_id_dm10_down'] = ('' , '_'+options.syst_tau_id_dm10+'Down', 'wt*wt_tau_id_dm10_down', ['ZL','ZJ','VVJ','TTJ','QCD','W'], False) -if options.syst_lfake_dm0 != '': - systematics['syst_lfake_dm0_up'] = ('' , '_'+options.syst_lfake_dm0+'Up', 'wt*wt_lfake_dm0_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_lfake_dm0_down'] = ('' , '_'+options.syst_lfake_dm0+'Down', 'wt*wt_lfake_dm0_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_lfake_dm1 != '': - systematics['syst_lfake_dm1_up'] = ('' , '_'+options.syst_lfake_dm1+'Up', 'wt*wt_lfake_dm1_up', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) - systematics['syst_lfake_dm1_down'] = ('' , '_'+options.syst_lfake_dm1+'Down', 'wt*wt_lfake_dm1_down', ['VVT','VVJ','TTT','TTJ','QCD','W','signal','jetFakes','EmbedZTT'], False) -if options.syst_qcd_shape_wsf != '': - systematics['syst_qcd_shape_wsf_up'] = ('' , '_'+options.syst_qcd_shape_wsf.replace('cat',options.cat)+'Up', 'wt', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','jetFakes','signal','W','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['syst_qcd_shape_wsf_down'] = ('' , '_'+options.syst_qcd_shape_wsf.replace('cat',options.cat)+'Down', 'wt', ['ZTT','ZL','ZJ','ZLL','VVT','VVJ','TTT','TTJ','jetFakes','signal','W','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - if options.cat in ["0jet","boosted", - # 'ggh_lowMjj','qqh_lowMjj','misc_lowMjj','qcd_lowMjj','qqh_lowMjj','tt_lowMjj','zll_lowMjj','ztt_lowMjj','fake_lowMjj','jetFakes_lowMjj','zttEmbed_lowMjj', - ]: - w_abs_shift=0.1 - if options.cat in ["vbf",'dijet','dijet_lowboost','dijet_boosted', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: - w_abs_shift=0.3 -if options.syst_scale_met_unclustered != '': - #systematics['syst_scale_met_unclustered_up'] = ('METUNCL_UP' , '_'+options.syst_scale_met_unclustered+'Up', 'wt', ['EWKZ','ZLL','ZL','ZJ','ZTT','W','signal','QCD','jetFakes','EmbedZTT','ggH_hww','qqH_hww'], False) - #systematics['syst_scale_met_unclustered_down'] = ('METUNCL_DOWN' , '_'+options.syst_scale_met_unclustered+'Down', 'wt', ['EWKZ','ZLL','ZL','ZJ','ZTT','W','signal','QCD','jetFakes','EmbedZTT','ggH_hww','qqH_hww'], False) - systematics['syst_scale_met_unclustered_up'] = ('METUNCL_UP' , '_'+options.syst_scale_met_unclustered+'Up', 'wt', ['QCD','jetFakes','EmbedZTT'], False) - systematics['syst_scale_met_unclustered_down'] = ('METUNCL_DOWN' , '_'+options.syst_scale_met_unclustered+'Down', 'wt', ['QCD','jetFakes','EmbedZTT'], False) -if options.syst_scale_met_clustered != '': - systematics['syst_scale_met_clustered_up'] = ('METCL_UP' , '_'+options.syst_scale_met_clustered+'Up', 'wt', ['QCD','jetFakes','EmbedZTT'], False) - systematics['syst_scale_met_clustered_down'] = ('METCL_DOWN' , '_'+options.syst_scale_met_clustered+'Down', 'wt', ['QCD','jetFakes','EmbedZTT'], False) -if options.syst_res_met != '': - hist_name = options.syst_res_met - if '$NJET' in hist_name: - hist_name_0jet = hist_name.replace('$NJET','0Jet') - hist_name_1jet = hist_name.replace('$NJET','1Jet') - hist_name_2jet = hist_name.replace('$NJET','2Jet') - - systematics['syst_res_met_0jet_up'] = ('MET_RES_NJETS0_UP' , '_'+hist_name_0jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_res_met_0jet_down'] = ('MET_RES_NJETS0_DOWN' , '_'+hist_name_0jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - - systematics['syst_res_met_1jet_up'] = ('MET_RES_NJETS1_UP' , '_'+hist_name_1jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_res_met_1jet_down'] = ('MET_RES_NJETS1_DOWN' , '_'+hist_name_1jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - - systematics['syst_res_met_2jet_up'] = ('MET_RES_NJETS2_UP' , '_'+hist_name_2jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_res_met_2jet_down'] = ('MET_RES_NJETS2_DOWN' , '_'+hist_name_2jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - elif options.analysis == "vlq": - systematics['syst_res_met_up'] = ('MET_RES_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) - systematics['syst_res_met_down'] = ('MET_RES_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) - else: - systematics['syst_res_met_up'] = ('MET_RES_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) - systematics['syst_res_met_down'] = ('MET_RES_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) -if options.syst_scale_met != '': - hist_name = options.syst_scale_met - if '$NJET' in hist_name: - hist_name_0jet = hist_name.replace('$NJET','0Jet') - hist_name_1jet = hist_name.replace('$NJET','1Jet') - hist_name_2jet = hist_name.replace('$NJET','2Jet') - systematics['syst_scale_met_0jet_up'] = ('MET_SCALE_NJETS0_UP' , '_'+hist_name_0jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_scale_met_0jet_down'] = ('MET_SCALE_NJETS0_DOWN' , '_'+hist_name_0jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - - systematics['syst_scale_met_1jet_up'] = ('MET_SCALE_NJETS1_UP' , '_'+hist_name_1jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_scale_met_1jet_down'] = ('MET_SCALE_NJETS1_DOWN' , '_'+hist_name_1jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - - systematics['syst_scale_met_2jet_up'] = ('MET_SCALE_NJETS2_UP' , '_'+hist_name_2jet+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - systematics['syst_scale_met_2jet_down'] = ('MET_SCALE_NJETS2_DOWN' , '_'+hist_name_2jet+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ'], False) - elif options.analysis == "vlq": - systematics['syst_scale_met_up'] = ('MET_SCALE_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) - systematics['syst_scale_met_down'] = ('MET_SCALE_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','signal'], False) - else: - systematics['syst_scale_met_up'] = ('MET_SCALE_UP' , '_'+hist_name+'Up', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) - systematics['syst_scale_met_down'] = ('MET_SCALE_DOWN' , '_'+hist_name+'Down', 'wt', ['QCD','jetFakes','EmbedZTT','TT','TTJ','TTT','VV','VVT','VVJ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww'], False) - if options.embedding and options.analysis in ['mssmrun2','vlq']: - embed_hist_name='scale_embed_met_%s' % options.year - systematics['syst_scale_embed_met_up'] = ('MET_SCALE_UP' , '_'+embed_hist_name+'Up', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - systematics['syst_scale_embed_met_down'] = ('MET_SCALE_DOWN' , '_'+embed_hist_name+'Down', 'wt', ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) -if options.syst_scale_j_by_source != '': - jes_sources={"AbsoluteFlavMap":1,"AbsoluteMPFBias":2,"AbsoluteScale":3,"AbsoluteStat":4,"FlavorQCD":5,"Fragmentation":6,"PileUpDataMC":7,"PileUpPtBB":8,"PileUpPtEC1":9,"PileUpPtEC2":10,"PileUpPtHF":11,"PileUpPtRef":12,"RelativeBal":13,"RelativeFSR":14,"RelativeJEREC1":15,"RelativeJEREC2":16,"RelativeJERHF":17,"RelativePtBB":18,"RelativePtEC1":19,"RelativePtEC2":20,"RelativePtHF":21,"RelativeStatEC":22,"RelativeStatFSR":23,"RelativeStatHF":24,"SinglePionECAL":25,"SinglePionHCAL":26,"TimePtEta":27} - jes_to_process=[] - for i in options.jes_sources.split(','): - if ':' in i: jes_to_process+=range(int(i.split(':')[0]),int(i.split(':')[1])+1) - else: jes_to_process.append(int(i)) - jes_to_process = list(set(jes_to_process)) - for source in jes_sources: - jes_num = jes_sources[source] - if jes_num not in jes_to_process: continue - replace_dict = {'n_jets':'n_jets_%i'%jes_num, 'n_bjets':'n_bjets_%i'%jes_num, 'mjj':'mjj_%i'%jes_num, 'jdeta':'jdeta_%i'%jes_num, 'jdphi':'jdphi_%i'%jes_num, 'jpt_1':'jpt_1_%i'%jes_num, 'jpt_2':'jpt_2_%i'%jes_num} - syst_name = 'syst_scale_j_by_source_'+source - hist_name = options.syst_scale_j_by_source.replace('SOURCE', source) - systematics[syst_name+'_up'] = ('JES_UP' , '_'+hist_name+'Up', 'wt', ['jetFakes','EmbedZTT'], False,replace_dict) - systematics[syst_name+'_down'] = ('JES_DOWN' , '_'+hist_name+'Down', 'wt', ['jetFakes','EmbedZTT'], False,replace_dict) - -if options.syst_jfake_scale != '': - # this is an approximate version of this uncertainty for now - replace_dict_up = {'pt_2':'pt_2*1.03', 'm_vis':'m_vis*sqrt(1.03)'} - replace_dict_down = {'pt_2':'pt_2*0.97', 'm_vis':'m_vis*sqrt(0.97)'} - syst_name = 'syst_jfake_scale' - hist_name = options.syst_jfake_scale - to_skip = ['VVT','VVJ','TTT','TTJ','QCD','signal','jetFakes','EmbedZTT','ZJ','ZL','ZLL','ZTT'] - systematics[syst_name+'_approx_up'] = ('' , '_'+hist_name+'ApproxUp', 'wt', to_skip, False,replace_dict_up) - systematics[syst_name+'_approx_down'] = ('' , '_'+hist_name+'ApproxDown', 'wt', to_skip, False,replace_dict_down) - systematics[syst_name+'_up'] = ('JFAKE_UP' , '_'+hist_name+'Up', 'wt', to_skip, False) - systematics[syst_name+'_down'] = ('JFAKE_DOWN' , '_'+hist_name+'Down', 'wt', to_skip, False) - -## em QCD uncertainties -if options.syst_em_qcd != '' and options.channel == 'em': - hist_name = options.syst_em_qcd - if '*BIN' in hist_name: - hist_name_bini = hist_name.replace('*BIN', 'IsoExtrap') - systematics['syst_em_qcd_extrap_up'] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_em_qcd_extrapup', ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['syst_em_qcd_extrap_down'] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_em_qcd_extrapdown', ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - for j in range(0,3): - for i in range(1,3): - hist_name_bini = hist_name.replace('*BIN', 'stat_njets%(j)i_unc%(i)i' % vars()) - systematics['syst_em_qcd_njets%(j)i_unc%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_em_qcd_njets%(j)s_unc%(i)i_up' % vars(), ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - systematics['syst_em_qcd_njets%(j)i_unc%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_em_qcd_njets%(j)i_unc%(i)i_down' % vars(), ['ZLL','TT','TTJ','TTT','ZTT','ZL','ZJ','VVT','VVJ','W','signal','jetFakes','EWKZ','ggH_hww125','qqH_hww125','ggH_hww','qqH_hww','EmbedZTT'], False) - - -if options.syst_prefire != '': - systematics['syst_prefire_up'] = ('' , '_'+options.syst_prefire+'Up', 'wt*wt_prefire_up/wt_prefire', ['QCD','jetFakes','EmbedZTT'], False) - systematics['syst_prefire_down'] = ('' , '_'+options.syst_prefire+'Down', 'wt*wt_prefire_down/wt_prefire', ['QCD','jetFakes','EmbedZTT'], False) - - -if options.syst_tau_id_diff != '': - - - hist_name = options.syst_tau_id_diff - - - if options.analysis in ['mssmrun2','vlq']: - if '*' in hist_name: - # add the usual pT binned uncerts for et and mt with pT<100 - if options.channel in ['et','mt']: - - - pt_bins = ["20-25", "25-30", "30-35", "35-40", "40-500", "500-1000", "1000-inf"] - - - for i in range(3,6): - bin_name = pt_bins[i-1] - hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) - systematics['syst_tau_id_diff_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*(wt_tau_id_pt_bin%(i)i_up*(pt_2<100) + (pt_2>=100))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*(wt_tau_id_pt_bin%(i)i_down*(pt_2<100) + (pt_2>=100))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - - - if options.channel == 'tt': - # add the usual dm binned uncerts for tt with pt<100 - for i in [0,1,10,11]: - hist_name_bini = hist_name.replace('*','dm%(i)i' % vars()) - systematics['syst_tau_id_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_id_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - - # add the dedicated high pT uncerts which are common for both channels - - pt_bins = {5: "highpT_100-500", 6: "highpT_500-inf"} - - - # weights stored incorrectly, doing by hand instead - #for i in range(5,7): - #bin_name = pt_bins[i] - #hist_name_bini = hist_name.replace('*','%(bin_name)s' % vars()) - #systematics['syst_tau_id_diff_highpt_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_mssm_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - #systematics['syst_tau_id_diff_highpt_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_mssm_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - if options.year == "2022": - nom_40_plus = "1.00458784525" - up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" - down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" - if options.year == "2018": - nom_40_plus = "1.00458784525" - up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "1.03510518813", "1.00458784525", "0.0305173428802", "0.0610346857604" - down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.952971628935", "1.00458784525", "-0.0516162163153", "-0.103232432631" - elif options.year == "2017": - nom_40_plus = "0.86966080714" - up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "0.903623575349", "0.86966080714", "0.0339627682083", "0.0679255364167" - down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.835685230027", "0.86966080714", "-0.0339755771129", "-0.0679511542259" - elif options.year == "2016": - nom_40_plus = "0.949771847264" - up_40_500, up_500_1000_const,up_500_1000_scale, up_1000_plus = "0.982473629072", "0.949771847264", "0.0327017818078", "0.0654035636156" - down_40_500, down_500_1000_const,down_500_1000_scale, down_1000_plus = "0.908265091132", "0.949771847264", "-0.0415067561324", "-0.0830135122647" - - - bin5_up_formula = "(((gen_match_X==5&&pt_X>100&&pt_X<=500)*(%(up_40_500)s/%(nom_40_plus)s)) + ((gen_match_X==5&&pt_X>100&&pt_X<=500)==0))" % vars() - bin5_down_formula = "(((gen_match_X==5&&pt_X>100&&pt_X<=500)*(%(down_40_500)s/%(nom_40_plus)s)) + ((gen_match_X==5&&pt_X>100&&pt_X<=500)==0))" % vars() - bin6_up_formula = "((((gen_match_X==5&&pt_X>500&&pt_X<=1000)*((%(up_500_1000_const)s + %(up_500_1000_scale)s*(pt_X/500.))/%(nom_40_plus)s))+((gen_match_X==5&&pt_X>1000)*((%(up_500_1000_const)s + %(up_1000_plus)s)/%(nom_40_plus)s)))+((gen_match_X==5&&pt_X>500)==0))" % vars() - bin6_down_formula = "((((gen_match_X==5&&pt_X>500&&pt_X<=1000)*((%(down_500_1000_const)s + %(down_500_1000_scale)s*(pt_X/500.))/%(nom_40_plus)s))+((gen_match_X==5&&pt_X>1000)*((%(down_500_1000_const)s + %(down_1000_plus)s)/%(nom_40_plus)s)))+((gen_match_X==5&&pt_X>500)==0))" % vars() - - - - - if options.channel in ["mt","et"]: - systematics['syst_tau_id_diff_highpt_bin5_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Up', 'wt*{}'.format(bin5_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin5_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Down', 'wt*{}'.format(bin5_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin6_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Up', 'wt*{}'.format(bin6_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin6_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Down', 'wt*{}'.format(bin6_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - elif options.channel == "tt": - systematics['syst_tau_id_diff_highpt_bin5_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Up', 'wt*{}*{}'.format(bin5_up_formula.replace("X","1"),bin5_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin5_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_100-500')+'Down', 'wt*{}*{}'.format(bin5_down_formula.replace("X","1"),bin5_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin6_up' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Up', 'wt*{}*{}'.format(bin6_up_formula.replace("X","1"),bin6_up_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_bin6_down' % vars()] = ('' , '_'+hist_name.replace('*','highpT_500-inf')+'Down', 'wt*{}*{}'.format(bin6_down_formula.replace("X","1"),bin6_down_formula.replace("X","2")), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - - - - - - - - hist_name_pi0 = hist_name.replace('_eff_t','').replace('*','1ProngPi0Eff' % vars()) - hist_name_pi = hist_name.replace('_eff_t','').replace('*','3ProngEff' % vars()) - if options.channel in ['et','mt']: - systematics['syst_tau_id_diff_emb_trk_pi_up' % vars()] = ('' , '_'+hist_name_pi+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*1.008+(tau_decay_mode_2>9)*1.024))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi_down' % vars()] = ('' , '_'+hist_name_pi+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*0.992+(tau_decay_mode_2>9)*0.976))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi0_up' % vars()] = ('' , '_'+hist_name_pi0+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*1.014))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi0_down' % vars()] = ('' , '_'+hist_name_pi0+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*0.986))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - if options.channel in ['tt']: - systematics['syst_tau_id_diff_emb_trk_pi_up' % vars()] = ('' , '_'+hist_name_pi+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*1.008+(tau_decay_mode_2>9)*1.024))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1<3)*1.008+(tau_decay_mode_1>9)*1.024))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi_down' % vars()] = ('' , '_'+hist_name_pi+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2<3)*0.992+(tau_decay_mode_2>9)*0.976))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1<3)*0.992+(tau_decay_mode_1>9)*0.976))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi0_up' % vars()] = ('' , '_'+hist_name_pi0+'Up', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*1.014))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1==0 || tau_decay_mode_1==10) + ((tau_decay_mode_1==0 || tau_decay_mode_1==10)==0)*1.014))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - systematics['syst_tau_id_diff_emb_trk_pi0_down' % vars()] = ('' , '_'+hist_name_pi0+'Down', 'wt*((pt_2>=100)+(pt_2<100)*((tau_decay_mode_2==0 || tau_decay_mode_2==10) + ((tau_decay_mode_2==0 || tau_decay_mode_2==10)==0)*0.986))*((pt_1>=100)+(pt_1<100)*((tau_decay_mode_1==0 || tau_decay_mode_1==10) + ((tau_decay_mode_1==0 || tau_decay_mode_1==10)==0)*0.986))' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes','ZTT','TTT','VVT','signal'], False) - - - - elif '*PT' in hist_name: - for i in range(1,6): - hist_name_bini = hist_name.replace('*PT','bin%(i)i' % vars()) - systematics['syst_tau_id_diff_bin%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_pt_bin%(i)i_up' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - systematics['syst_tau_id_diff_bin%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_pt_bin%(i)i_down' % vars(), ['ZLL','TTJ','ZL','ZJ','VVJ','W','jetFakes'], False) - elif '*DM' in hist_name: - for i in [0,1,10,11]: - hist_name_bini = hist_name.replace('*DM','DM%(i)i' % vars()) - systematics['syst_tau_id_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_id_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - elif '*MVADM' in hist_name: - for i in [0,1,2,10,11]: - if options.channel != 'tt': - hist_name_bini = hist_name.replace('*MVADM','pTlow_MVADM%(i)i' % vars()) - systematics['syst_tau_id_diff_lowpt_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_lowpt_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_id_diff_lowpt_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_lowpt_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - - hist_name_bini = hist_name.replace('*MVADM','pThigh_MVADM%(i)i' % vars()) - systematics['syst_tau_id_diff_highpt_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_id_highpt_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_id_diff_highpt_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_id_highpt_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - -if options.syst_lep_trg_diff != '': - hist_name = options.syst_lep_trg_diff - chan = options.channel - if options.analysis in ['mssmrun2','vlq']: - hist_name_bini_slt = hist_name.replace('*','trigger_%(chan)s' % vars()) - hist_name_bini_ct = hist_name.replace('*','xtrigger_l_%(chan)s' % vars()) - if chan in ["et"]: - systematics['syst_lep_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini_slt+'Up', 'wt*((1.02*(trg_singleelectron==1)) + (trg_singleelectron==0))' % vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini_slt+'Down', 'wt*((1.02*(trg_singleelectron==1)) + (trg_singleelectron==0))'% vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_crosstrg_up' % vars()] = ('' , '_'+hist_name_bini_ct+'Up', 'wt*((1.02*(trg_etaucross==1)) + (trg_etaucross==0))' % vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_crosstrg_down' % vars()] = ('' , '_'+hist_name_bini_ct+'Down', 'wt*((1.02*(trg_etaucross==1)) + (trg_etaucross==0))'% vars(), ['QCD','jetFakes'], False) - elif chan in ["mt"]: - systematics['syst_lep_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini_slt+'Up', 'wt*((1.02*(trg_singlemuon==1)) + (trg_singlemuon==0))' % vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini_slt+'Down', 'wt*((1.02*(trg_singlemuon==1)) + (trg_singlemuon==0))'% vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_crosstrg_up' % vars()] = ('' , '_'+hist_name_bini_ct+'Up', 'wt*((1.02*(trg_mutaucross==1)) + (trg_mutaucross==0))' % vars(), ['QCD','jetFakes'], False) - systematics['syst_lep_trg_diff_crosstrg_down' % vars()] = ('' , '_'+hist_name_bini_ct+'Down', 'wt*((1.02*(trg_mutaucross==1)) + (trg_mutaucross==0))'% vars(), ['QCD','jetFakes'], False) - - - - -if options.syst_tau_trg_diff != '': - hist_name = options.syst_tau_trg_diff - chan = options.channel - - - if options.analysis in ['mssmrun2','vlq']: - if '*'in hist_name: - - - # single tau uncerts - hist_name_bini = hist_name.replace('*','trigger_single_t' % vars()) - systematics['syst_tau_trg_diff_singletau_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_singletau_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_singletau_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_singletau_down'% vars(), ['QCD','jetFakes'], False) - - - if chan in ['mt','et']: - - - # single lepton uncerts - hist_name_bini = hist_name.replace('*','trigger_%(chan)s' % vars()) - systematics['syst_tau_trg_diff_singlelep_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_singlelep_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_singlelep_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_singlelep_down'% vars(), ['QCD','jetFakes'], False) - - - # cross lepton uncerts - hist_name_bini = hist_name.replace('*','xtrigger_l_%(chan)s' % vars()) - systematics['syst_tau_trg_diff_crosslep_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_crosslep_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_crosslep_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_crosslep_down'% vars(), ['QCD','jetFakes'], False) - - - # double-tau / cross-tau uncerts - for i in [0,1,10,11]: - - - hist_name_bini = hist_name.replace('*','xtrigger_t_%(chan)s_dm%(i)i' % vars()) - - - systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - - if chan == 'tt': - # for tt channels we decouple low and high pT so add additional uncertainty for high pT here - hist_name_bini = hist_name.replace('*','xtrigger_t_%(chan)s_dm%(i)i_highpT' % vars()) - systematics['syst_tau_trg_diff_dm%(i)i_highpt_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mssm_highpt_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_dm%(i)i_highpt_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mssm_highpt_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - - - - - - elif '*DM' in hist_name: - for i in [0,1,10,11]: - hist_name_bini = hist_name.replace('*DM','DM%(i)i' % vars()) - if options.channel != 'tt': - systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*((wt_tau_trg_dm%(i)i_up==1) + (wt_tau_trg_dm%(i)i_up!=1)*(max(1.05,wt_tau_trg_dm%(i)i_up)))' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*((wt_tau_trg_dm%(i)i_down==1) + (wt_tau_trg_dm%(i)i_down!=1)*(min(0.95,wt_tau_trg_dm%(i)i_down)))' % vars(), ['QCD','jetFakes'], False) - else: - systematics['syst_tau_trg_diff_dm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_dm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_dm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_dm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - elif '*MVADM' in hist_name: - - - for i in [0,1,2,10,11]: - hist_name_bini = hist_name.replace('*MVADM','MVADM%(i)i' % vars()) - systematics['syst_tau_trg_diff_mvadm%(i)i_up' % vars()] = ('' , '_'+hist_name_bini+'Up', 'wt*wt_tau_trg_mvadm%(i)i_up' % vars(), ['QCD','jetFakes'], False) - systematics['syst_tau_trg_diff_mvadm%(i)i_down' % vars()] = ('' , '_'+hist_name_bini+'Down', 'wt*wt_tau_trg_mvadm%(i)i_down'% vars(), ['QCD','jetFakes'], False) - - -if options.syst_embed_pt != '': - hist_name = options.syst_embed_pt - systematics['syst_embed_pt_up' % vars()] = ('' , '_'+hist_name+'Up', 'wt*wt_zpt_embed_ic' % vars(), ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - systematics['syst_embed_pt_down' % vars()] = ('' , '_'+hist_name+'Down', 'wt*(2-wt_zpt_embed_ic)'% vars(), ['QCD','jetFakes','EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal'], False) - - -if options.method in [17,18] and options.do_ff_systs and options.channel in ['et','mt','tt'] and options.era == 'mssmsummer16': - processes = ['tt','w','qcd'] - dms = ['dm0', 'dm1'] - njets = ['njet0','njet1'] - for process in processes: - template_name = 'ff_'+process+'_syst' - if process is 'qcd' or options.channel == 'tt': template_name = 'ff_'+process+'_'+options.channel+'_syst' - weight_name = 'wt_ff_'+options.cat+'_'+process+'_syst_' - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - if options.channel == 'tt' and process in ['w','tt']: continue - for dm in dms: - for njet in njets: - template_name = 'ff_'+process+'_'+dm+'_'+njet - if process != 'tt': template_name+='_'+options.channel - template_name+='_stat' - weight_name = 'wt_ff_'+options.cat+'_'+process+'_'+dm+'_'+njet+'_stat_' - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - if options.channel == "tt": - processes = ['dy', 'w', 'tt'] - for process in processes: - template_name = 'ff_'+process+'_frac_tt_syst' - weight_name = 'wt_ff_'+options.cat+'_'+process+'_frac_syst_' - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - -if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis=='cpdecay' and options.do_ff_systs: - if options.channel in ['et','mt']: - chan = options.channel - lt_systs = {} - lt_systs['ff_%(chan)s_qcd_syst' % vars()] = 'wt_ff_qcd_syst_' % vars() - lt_systs['ff_%(chan)s_wjets_syst' % vars()] = 'wt_ff_wjets_syst_' % vars() - lt_systs['ff_%(chan)s_ttbar_syst' % vars()] = 'wt_ff_ttbar_syst_' % vars() - - - tt_systs['ff_%(chan)s_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_syst_' % vars() - tt_systs['ff_%(chan)s_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_syst_' % vars() - - - tt_systs['ff_%(chan)s_wjets_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_syst_' % vars() - tt_systs['ff_%(chan)s_wjets_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_syst_' % vars() - tt_systs['ff_%(chan)s_wjets_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_syst_' % vars() - - - - - tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_met_' % vars() - tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_met_' % vars() - tt_systs['ff_%(chan)s_wjets_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_met_' % vars() - - - tt_systs['ff_%(chan)s_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_met_' % vars() - tt_systs['ff_%(chan)s_qcd_met_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_met_' % vars() - - - tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_wjets_l_pt_' % vars() - tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_wjets_l_pt_' % vars() - tt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_wjets_l_pt_' % vars() - - - tt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_l_pt_' % vars() - tt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_l_pt_' % vars() - - - for proc in ['qcd','wjets']: - lt_systs['ff_%(chan)s_%(proc)s_met_closure_syst' % vars()] = 'wt_ff_%(proc)s_met_' % vars() - lt_systs['ff_%(chan)s_%(proc)s_l_pt_closure_syst' % vars()] = 'wt_ff_%(proc)s_l_pt_' % vars() - - - for njet in ['0','1','2']: - for dm in ['0_sig_lt3','0_sig_gt3','1','2','10','11']: - #lt_systs[('ff_%(chan)s_%(proc)s_stat_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_njet%(njet)s_mvadm%(dm)s_' % vars() - lt_systs[('ff_%(chan)s_%(proc)s_stat_unc1_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_unc1_njet%(njet)s_mvadm%(dm)s_' % vars() - lt_systs[('ff_%(chan)s_%(proc)s_stat_unc2_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_%(proc)s_stat_unc2_njet%(njet)s_mvadm%(dm)s_' % vars() - for template_name in lt_systs: - weight_name = lt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - - if options.channel in ['tt']: - tt_systs={} - tt_systs['ff_tt_qcd_met_closure_syst' % vars()] = 'wt_ff_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_1+(n_jets==1)*wt_ff_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_1+(n_jets>=2)*wt_ff_qcd_met_' % vars() - tt_systs['ff_tt_qcd_syst' % vars()] = 'wt_ff_qcd_syst_' % vars() - tt_systs['ff_tt_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_1+(n_jets==0)*wt_ff_qcd_syst_' % vars() - tt_systs['ff_tt_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_1+(n_jets>=1)*wt_ff_qcd_syst_' % vars() - - - tt_systs['ff_tt_wjets_syst' % vars()] = 'wt_ff_wjets_syst_' % vars() - for njet in ['0','1','2']: - for dm in ['0_sig_lt3','0_sig_gt3','1','2','10','11']: - #tt_systs[('ff_tt_qcd_stat_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_njet%(njet)s_mvadm%(dm)s_' % vars() - tt_systs[('ff_tt_qcd_stat_unc1_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_unc1_njet%(njet)s_mvadm%(dm)s_' % vars() - tt_systs[('ff_tt_qcd_stat_unc2_njets%(njet)s_mvadm%(dm)s' % vars()).replace('lt3','lt').replace('gt3','gt')] = 'wt_ff_qcd_stat_unc2_njet%(njet)s_mvadm%(dm)s_' % vars() - - - for template_name in tt_systs: - weight_name = tt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - - template_name = 'ff_%s_sub_syst' % (options.channel) - systematics['ff_sub_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics['ff_sub_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - -if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis=='cpprod' and options.do_ff_systs: - if options.channel in ['et','mt']: - chan = options.channel - lt_systs = {} - lt_systs['ff_%(chan)s_qcd_syst' % vars()] = 'wt_ff_dmbins_qcd_syst_' % vars() - lt_systs['ff_%(chan)s_wjets_syst' % vars()] = 'wt_ff_dmbins_wjets_syst_' % vars() - lt_systs['ff_%(chan)s_ttbar_syst' % vars()] = 'wt_ff_dmbins_ttbar_syst_' % vars() - - - lt_systs['ff_%(chan)s_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_syst_' % vars() - lt_systs['ff_%(chan)s_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_syst_' % vars() - - - lt_systs['ff_%(chan)s_wjets_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_syst_' % vars() - lt_systs['ff_%(chan)s_wjets_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_syst_' % vars() - lt_systs['ff_%(chan)s_wjets_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_syst_' % vars() - - - - - lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_met_' % vars() - lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_met_' % vars() - lt_systs['ff_%(chan)s_wjets_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_met_' % vars() - - - lt_systs['ff_%(chan)s_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_met_' % vars() - lt_systs['ff_%(chan)s_qcd_met_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_met_' % vars() - - - lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_wjets_l_pt_' % vars() - lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_wjets_l_pt_' % vars() - lt_systs['ff_%(chan)s_wjets_l_pt_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_wjets_l_pt_' % vars() - - - lt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_l_pt_' % vars() - lt_systs['ff_%(chan)s_qcd_l_pt_closure_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_l_pt_' % vars() - - - for proc in ['qcd','wjets']: - lt_systs['ff_%(chan)s_%(proc)s_met_closure_syst' % vars()] = 'wt_ff_dmbins_%(proc)s_met_' % vars() - lt_systs['ff_%(chan)s_%(proc)s_l_pt_closure_syst' % vars()] = 'wt_ff_dmbins_%(proc)s_l_pt_' % vars() - for njet in ['0','1','2']: - for dm in ['0','1','10','11']: - lt_systs[('ff_%(chan)s_%(proc)s_stat_unc1_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_%(proc)s_stat_unc1_njet%(njet)s_dm%(dm)s_' % vars() - lt_systs[('ff_%(chan)s_%(proc)s_stat_unc2_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_%(proc)s_stat_unc2_njet%(njet)s_dm%(dm)s_' % vars() - for template_name in lt_systs: - weight_name = lt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - - if options.channel in ['tt']: - tt_systs={} - tt_systs['ff_tt_qcd_met_closure_syst' % vars()] = 'wt_ff_dmbins_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets1' % vars()] = '(n_jets!=1)*wt_ff_dmbins_1+(n_jets==1)*wt_ff_dmbins_qcd_met_' % vars() - tt_systs['ff_tt_qcd_met_closure_syst_njets2' % vars()] = '(n_jets<2)*wt_ff_dmbins_1+(n_jets>=2)*wt_ff_dmbins_qcd_met_' % vars() - - -# tt_systs['ff_tt_qcd_syst' % vars()] = 'wt_ff_dmbins_qcd_syst_' % vars() - tt_systs['ff_tt_qcd_syst_njets0' % vars()] = '(n_jets!=0)*wt_ff_dmbins_1+(n_jets==0)*wt_ff_dmbins_qcd_syst_' % vars() - tt_systs['ff_tt_qcd_syst_njets1' % vars()] = '(n_jets==0)*wt_ff_dmbins_1+(n_jets>=1)*wt_ff_dmbins_qcd_syst_' % vars() - - - tt_systs['ff_tt_wjets_syst' % vars()] = 'wt_ff_dmbins_wjets_syst_' % vars() - for njet in ['0','1','2']: - for dm in ['0','1','10','11']: - tt_systs[('ff_tt_qcd_stat_unc1_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_qcd_stat_unc1_njet%(njet)s_dm%(dm)s_' % vars() - tt_systs[('ff_tt_qcd_stat_unc2_njets%(njet)s_dm%(dm)s' % vars())] = 'wt_ff_dmbins_qcd_stat_unc2_njet%(njet)s_dm%(dm)s_' % vars() - - - for template_name in tt_systs: - weight_name = tt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - - template_name = 'ff_%s_sub_syst' % (options.channel) - systematics['ff_sub_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - systematics['ff_sub_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT'], True) - - -if options.method in [17,18] and options.channel in ['et','mt','tt'] and options.analysis in ['mssmrun2','vlq'] and options.do_ff_systs: - ch = options.channel - yr = options.year - if options.channel in ['tt']: - tt_systs={} - - for i in [1,2]: - tt_systs['CMS_ff_total_qcd_stat_dR_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_dR_unc%(i)i_' % vars() - tt_systs['CMS_ff_total_qcd_stat_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_pt_unc%(i)i_' % vars() - tt_systs['CMS_ff_total_qcd_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_' % vars() - tt_systs['CMS_ff_total_wjets_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_' % vars() - tt_systs['CMS_ff_total_ttbar_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_' % vars() - - - # new additional uncertainties - tt_systs['CMS_ff_total_qcd_syst_dr_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_dR_closure_' % vars() - tt_systs['CMS_ff_total_qcd_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_met_closure_' % vars() - tt_systs['CMS_ff_total_qcd_syst_pt_2_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_pt_2_closure_' % vars() - tt_systs['CMS_ff_total_syst_alt_func_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_syst_alt_func_' % vars() - - - for njet in [0,1]: - for jetpt in ['low','med','high']: - for i in [1,2,3]: - tt_systs[('CMS_ff_total_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() - - - - - for template_name in tt_systs: - weight_name = tt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - - - elif options.channel in ['et','mt']: - lt_systs={} - - - for njet in [0,1]: - for i in [1,2]: - lt_systs['CMS_ff_total_qcd_stat_ss_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_ss_njets%(njet)i_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_wjets_stat_met_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_met_njets%(njet)i_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_wjets_stat_l_pt_njets%(njet)i_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_l_pt_njets%(njet)i_unc%(i)i_' % vars() - - - for i in [1,2]: - lt_systs['CMS_ff_total_qcd_stat_os_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_os_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_qcd_stat_l_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_l_pt_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_qcd_stat_iso_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_stat_iso_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_wjets_stat_extrap_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_stat_extrap_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_ttbar_stat_met_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_stat_met_unc%(i)i_' % vars() - lt_systs['CMS_ff_total_ttbar_stat_l_pt_unc%(i)i_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_stat_l_pt_unc%(i)i_' % vars() - - - lt_systs['CMS_ff_total_qcd_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_' % vars() - lt_systs['CMS_ff_total_qcd_syst_iso_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_iso_' % vars() - lt_systs['CMS_ff_total_wjets_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_' % vars() - lt_systs['CMS_ff_total_wjets_syst_extrap_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_extrap_' % vars() - lt_systs['CMS_ff_total_ttbar_syst_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_' % vars() - - - lt_systs['CMS_ff_total_wjets_frac_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_frac_' % vars() - lt_systs['CMS_ff_total_ttbar_frac_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_frac_' % vars() - - lt_systs['CMS_ff_total_low_pt_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_low_pt_' % vars() - - - # new additional uncertainties - lt_systs['CMS_ff_total_qcd_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_met_closure_' % vars() - lt_systs['CMS_ff_total_wjets_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_met_closure_' % vars() - lt_systs['CMS_ff_total_ttbar_syst_met_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_met_closure_' % vars() - lt_systs['CMS_ff_total_wjets_syst_l_pt_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_l_pt_closure_' % vars() - lt_systs['CMS_ff_total_ttbar_syst_l_pt_closure_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_ttbar_syst_l_pt_closure_' % vars() - lt_systs['CMS_ff_total_syst_alt_func_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_syst_alt_func_' % vars() - lt_systs['CMS_ff_total_qcd_syst_bkg_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_qcd_syst_bkg_' % vars() - lt_systs['CMS_ff_total_wjets_syst_bkg_%(ch)s_%(yr)s' % vars()] = 'wt_ff_mssm_wjets_syst_bkg_' % vars() - - - for njet in [0,1]: - for jetpt in ['low','med','high']: - for i in [1,2,3]: - lt_systs[('CMS_ff_total_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_qcd_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() - for i in [1,2,3,4]: - lt_systs[('CMS_ff_total_wjets_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_wjets_stat_njet%(njet)i_jet_pt_%(jetpt)s_unc%(i)i_' % vars() - for i in [1,2,3]: - lt_systs[('CMS_ff_total_ttbar_stat_jet_pt_%(jetpt)s_unc%(i)i_%(ch)s_%(yr)s' % vars())] = 'wt_ff_mssm_ttbar_stat_jet_pt_%(jetpt)s_unc%(i)i_' % vars() - - - if options.qcd_ff_closure or options.w_ff_closure: - for key,val in lt_systs.items(): - if options.qcd_ff_closure: - lt_systs[key] = '(wt_ff_mssm_qcd_1/wt_ff_mssm_1)*%(val)s' % vars() - elif options.w_ff_closure: - lt_systs[key] = '(wt_ff_mssm_wjets_1/wt_ff_mssm_1)*%(val)s' % vars() - - - - - for template_name in lt_systs: - weight_name = lt_systs[template_name] - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', weight_name+'up', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', weight_name+'down', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - - - template_name = 'CMS_ff_total_sub_syst_%(ch)s_%(yr)s' % vars() - systematics[template_name+'_up'] = ('' , '_'+template_name+'Up', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - systematics[template_name+'_down'] = ('' , '_'+template_name+'Down', 'wt_ff', ['EWKZ','ZTT','ZJ','ZL','VVT','VVJ','TTT','TTJ','QCD','W','signal','EmbedZTT','ZLL','TT','VV'], True) - - - - -if options.syst_qcd_bkg: - systematics['qcd_sub_up'] = ('','_'+options.syst_qcd_bkg+'Up', 'wt', ['EWKZ','ZTT','ZJ','ZL','ZLL','VV','VVT','VVJ','TT','TTT','TTJ','W','signal','EmbedZTT','jetFakes'], False) - systematics['qcd_sub_down'] = ('','_'+options.syst_qcd_bkg+'Down', 'wt', ['EWKZ','ZTT','ZJ','ZL','ZLL','VV','VVT','VVJ','TT','TTT','TTJ','W','signal','EmbedZTT','jetFakes'], False) - - - - -if options.no_systs: systematics = {'default' : ('','', 'wt', [], False)} - - -# sort systematics by tree's input directory name -systematics = OrderedDict(sorted(systematics.items(), key=lambda key: key[1])) - - -if options.qcd_os_ss_ratio > 0: - qcd_os_ss_ratio = options.qcd_os_ss_ratio -else: - if options.analysis in ['sm','cpprod','cpdecay','mssmrun2','vlq']: - if options.channel == 'et': - qcd_os_ss_ratio = 1.0 - qcd_os_ss_ratio = 1.13 - if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 0.97 - else: qcd_os_ss_ratio = 1.0 - elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.61 - else: qcd_os_ss_ratio = 1.28 - elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 - elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: qcd_os_ss_ratio = 1.82 - elif options.cat in ['btag']: qcd_os_ss_ratio = 1.16 - - - elif options.channel in ['mt','mj']: - #qcd_os_ss_ratio = 1.07 - qcd_os_ss_ratio = 1.12 - if options.cat == '0jet': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.15 - else: qcd_os_ss_ratio = 1.07 - elif options.cat == 'boosted': - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22']: qcd_os_ss_ratio = 1.18 - else: qcd_os_ss_ratio = 1.06 - elif options.cat in ['vbf']: qcd_os_ss_ratio = 1.0 - elif options.cat in ['dijet','dijet_lowboost','dijet_boosted', - # 'ggh_highMjj','ggh_boosted_highMjj','qqh_boosted_highMjj','ggh_tight_highMjj','ggh_loose_highMjj','ggh_loose_boost_highMjj','ggh_tight_boost_highMjj','qqh_highMjj','misc_highMjj','qcd_highMjj','qqh_highMjj','tt_highMjj','zll_highMjj','ztt_highMjj','fake_highMjj','jetFakes_highMjj','zttEmbed_highMjj','jetFakes_tight_highMjj','jetFakes_loose_highMjj' - ]: qcd_os_ss_ratio = 1.23 - elif options.cat in ['btag']: qcd_os_ss_ratio = 1.01 - elif options.channel == 'zmm' or options.channel == 'zee': - qcd_os_ss_ratio = 1.07 - elif options.channel == 'em': - qcd_os_ss_ratio = 1.0 - else: - qcd_os_ss_ratio = 1.0 - else: - if options.channel == 'et': - qcd_os_ss_ratio = 1.02 - if options.cat == 'inclusive': qcd_os_ss_ratio = 1.13 - elif options.cat in ['nobtag', 'nobtag_tightmt', 'nobtag_loosemt']: qcd_os_ss_ratio = 1.11 - elif options.cat in ['btag', 'btag_tightmt', 'btag_loosemt']: qcd_os_ss_ratio = 1.16 - elif options.channel in ['mt','mj']: - qcd_os_ss_ratio = 1.18 - if options.cat == 'inclusive': qcd_os_ss_ratio = 1.12 - elif options.cat in ['nobtag', 'nobtag_tightmt', 'nobtag_loosemt']: qcd_os_ss_ratio = 1.14 - elif options.cat in ['btag', 'btag_tightmt', 'btag_loosemt']: qcd_os_ss_ratio = 1.01 - elif options.channel == 'zmm' or options.channel == 'zee': - qcd_os_ss_ratio = 1.06 - else: - qcd_os_ss_ratio = 1.0 -#if options.do_ss: -# qcd_os_ss_ratio = 1.0 - - - - -# Get array of signal masses to process -ggh_masses=None -bbh_masses=None -sm_masses=None -bbh_masses_powheg=None -ggh_masses_powheg=None -if options.sm_masses != "": sm_masses = options.sm_masses.split(',') -if options.ggh_masses != "": ggh_masses = options.ggh_masses.split(',') -if options.bbh_masses != "": bbh_masses = options.bbh_masses.split(',') -if options.bbh_nlo_masses != "": bbh_nlo_masses = options.bbh_nlo_masses.split(',') -if options.ggh_masses_powheg != "": ggh_masses = options.ggh_masses_powheg.split(',') -if options.bbh_masses_powheg != "": bbh_masses = options.bbh_masses_powheg.split(',') - - - - -ROOT.TH1.SetDefaultSumw2(True) - - -# All functions defined here - - -def BuildCutString(wt='', sel='', cat='', sign='os',bkg_sel=''): - full_selection = '(1)' - if wt != '': - full_selection = '('+wt+')' - if sel != '': - full_selection += '*('+sel+')' - if sign != '': - full_selection += '*('+sign+')' - if bkg_sel != '': - full_selection += '*('+bkg_sel+')' - if cat != '': - full_selection += '*('+cat+')' - return full_selection - - -def GetZTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['ztt_sel']) - return ana.SummedFactory('ZTT'+add_name, samples, plot, full_selection) -def GetEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - wt_ = wt - if options.analysis in ['mssmrun2','vlq']: - if options.channel == 'tt': - wt_+='*(pt_1/gen_match_1_pt<1.5&&pt_2/gen_match_2_pt<1.5)' - if options.year == "2016": wt_+='*1.008' - else: wt_+='*1.01' - if options.channel in ['et','mt']: wt_+='*(pt_2/gen_match_2_pt<1.5)*1.005' - #wt_+='*wt_emb_sel_kit/trackingweight_1' - wt_+='*1/trackingweight_1' - if options.channel == 'em': - #for em channel there are non-closures wrt data and MC which are corrected here with these additional correction factors - if options.era in ['cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','mvadm2016']: wt_+='*1.106' - if options.era in ['cpsummer17','UL_17']: wt_+='*1.080' - if options.era in ['cp18','UL_18']: wt_+='*1.101' - if options.era in ['22']: wt_+='*1.101' - full_selection = BuildCutString(wt_+'*(wt<2)', sel, cat, OSSS, z_sels['ztt_sel']) - return ana.SummedFactory('EmbedZTT'+add_name, samples, plot, full_selection) - - - - -def GetZLLNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zll_sel']) - return ana.SummedFactory('ZLL'+add_name, samples, plot, full_selection) - - -def GetZLNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zl_sel']) - return ana.SummedFactory('ZL'+add_name, samples, plot, full_selection) - - -def GetZLEmbeddedNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - wt_=wt - if options.analysis in ['mssmrun2','vlq']: - #wt_+='*wt_emb_sel_kit/(trackingweight_1*trackingweight_2)' - #wt_+='*wt_zpt_embed_ic/(trackingweight_1*trackingweight_2)' - wt_+='*1/(trackingweight_1*trackingweight_2)' - full_selection = BuildCutString(wt_, sel, cat, OSSS, '1') - return ana.SummedFactory('EmbedZL'+add_name, samples, plot, full_selection) - - -def GetZJNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, z_sels['zj_sel']) - return ana.SummedFactory('ZJ'+add_name, samples, plot, full_selection) - - -def GenerateZLL(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True, doZL=True, doZJ=True): - if options.channel == 'em': - zll_node = GetZLLNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(zll_node) - else: - if doZL: - zl_node = GetZLNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(zl_node) - if doZJ: - zj_node = GetZJNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(zj_node) - - -def GenerateZTT(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - ztt_node = GetZTTNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(ztt_node) - split_taus = False - if split_taus: - ztt_node_rho = GetZTTNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(ztt_node_rho) - ztt_node_a1 = GetZTTNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(ztt_node_a1) - ztt_node_pi = GetZTTNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(ztt_node_pi) - ztt_node_other = GetZTTNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(ztt_node_other) - -def GenerateEmbedded(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - embed_node = GetEmbeddedNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node) - if split_taus: - embed_node_rho = GetEmbeddedNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node_rho) - embed_node_a1 = GetEmbeddedNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node_a1) - embed_node_pi = GetEmbeddedNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node_pi) - embed_node_other = GetEmbeddedNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node_other) -def GenerateZLEmbedded(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - embed_node = GetZLEmbeddedNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os) - ana.nodes[nodename].AddNode(embed_node) - -def GetEWKZNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True, doJFakes=True): - extra_sel = '1' - if not doJFakes: - if options.channel in ['et','mt']: extra_sel = 'gen_match_2<6' - if options.channel == 'tt': extra_sel = '!(gen_match_1==6 || gen_match_2==6)' - if get_os: OSSS = 'os' - else: OSSS = '!os' - if options.embedding: full_selection = BuildCutString(wt, sel, cat, OSSS, extra_top_sel+'&&'+extra_sel) - else: full_selection = BuildCutString(wt, sel, cat, OSSS, extra_sel) - return ana.SummedFactory('EWKZ'+add_name, samples, plot, full_selection) - - -def GenerateEWKZ(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', z_sels={}, get_os=True): - ewkz_node = GetEWKZNode(ana, add_name, samples, plot, wt, sel, cat, z_sels, get_os, options.method != 17) - ana.nodes[nodename].AddNode(ewkz_node) - - -def GetggHWWNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, '1') - return ana.SummedFactory('ggH_hww125'+add_name, samples, plot, full_selection) - - -def GetqqHWWNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, '1') - return ana.SummedFactory('qqH_hww125'+add_name, samples, plot, full_selection) - - -def GenerateHWW(ana, add_name='', ggh_samples=[], qqh_samples=[], plot='', wt='', sel='', cat='', get_os=True, doggH=True, doqqH=True): - if doggH: - gghww_node = GetggHWWNode(ana, add_name, ggh_samples, plot, wt, sel, cat, get_os) - ana.nodes[nodename].AddNode(gghww_node) - if doqqH: - qqhww_node = GetqqHWWNode(ana, add_name, qqh_samples, plot, wt, sel, cat, get_os) - ana.nodes[nodename].AddNode(qqhww_node) - - -def GetTTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttt_sel']) - return ana.SummedFactory('TTT'+add_name, samples, plot, full_selection) - -def GetTTTforZTTNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttt_ztt_sel']) - return ana.SummedFactory('TTT_for_ZTT'+add_name, samples, plot, full_selection) - - - - -def GetTTJNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, top_sels['ttj_sel']) - return ana.SummedFactory('TTJ'+add_name, samples, plot, full_selection) - - -def GenerateTop(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', top_sels={}, get_os=True, doTTT=True, doTTJ=True): - wt_=wt#+"*wt_tquark_down" - if doTTT: - ttt_node = GetTTTNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_node) - if options.embedding: - ttt_for_ztt_node = GetTTTforZTTNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_for_ztt_node) - - - if split_taus: - ttt_node_rho = GetTTTNode(ana, '_rho'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==1', cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_node_rho) - ttt_node_a1 = GetTTTNode(ana, '_a1'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==2', cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_node_a1) - ttt_node_pi = GetTTTNode(ana, '_pi'+add_name, samples, plot, wt_, sel+'&&tauFlag_2==0', cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_node_pi) - ttt_node_other = GetTTTNode(ana, '_other'+add_name, samples, plot, wt_, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttt_node_other) - - - if doTTJ: - ttj_node = GetTTJNode(ana, add_name, samples, plot, wt_, sel, cat, top_sels, get_os) - ana.nodes[nodename].AddNode(ttj_node) - - -def GetVVTNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvt_sel']) - return ana.SummedFactory('VVT'+add_name, samples, plot, full_selection) - - -def GetVVTforZTTNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvt_ztt_sel']) - return ana.SummedFactory('VVT_for_ZTT'+add_name, samples, plot, full_selection) - - - - -def GetVVJNode(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, vv_sels['vvj_sel']) - return ana.SummedFactory('VVJ'+add_name, samples, plot, full_selection) - - -def GenerateVV(ana, add_name ='', samples=[], plot='', wt='', sel='', cat='', vv_sels={}, get_os=True, doVVT=True, doVVJ=True): - if doVVT: - vvt_node = GetVVTNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_node) - if options.embedding: - vvt_for_ztt_node = GetVVTforZTTNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_for_ztt_node) - if split_taus: - vvt_node_rho = GetVVTNode(ana, '_rho'+add_name, samples, plot, wt, sel+'&&tauFlag_2==1', cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_node_rho) - vvt_node_a1 = GetVVTNode(ana, '_a1'+add_name, samples, plot, wt, sel+'&&tauFlag_2==2', cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_node_a1) - vvt_node_pi = GetVVTNode(ana, '_pi'+add_name, samples, plot, wt, sel+'&&tauFlag_2==0', cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_node_pi) - vvt_node_other = GetVVTNode(ana, '_other'+add_name, samples, plot, wt, sel+'&&(tauFlag_2<0 || tauFlag_2>2)', cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvt_node_other) - - - if doVVJ: - vvj_node = GetVVJNode(ana, add_name, samples, plot, wt, sel, cat, vv_sels, get_os) - ana.nodes[nodename].AddNode(vvj_node) - -def GetWGNode(ana, add_name='', samples=[], plot='', wt='', sel='', cat='', get_os=True): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS) - wg_node = ana.SummedFactory('WGam'+add_name, samples, plot, full_selection) - return wg_node - - -def GetWNode(ana, name='W', samples=[], data=[], plot='',plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True): - if get_os: OSSS = 'os' - else: OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS, '') - if cats['w_shape'] != '': shape_cat = cats['w_shape'] - else: shape_cat = cat - if method == 14: - shape_cat = '(n_jets<=1 && n_loose_bjets>=1)*('+cats['baseline']+')' - shape_selection = BuildCutString(wt, sel, shape_cat, OSSS, '') - - if method in [0, 8, 9, 15, 19]: - w_node = ana.SummedFactory(name, samples, plot, full_selection) - elif method in [10, 11]: - control_sel = cats['w_sdb']+' && '+ OSSS - w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) - w_control_full_selection_data = BuildCutString(wt, control_sel, cat_data, OSSS) - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) - if shape_selection == full_selection: - w_shape = None - else: - w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) - w_node = HttWNode(name, - ana.SummedFactory('data_obs', data, plot_unmodified, w_control_full_selection_data), - subtract_node, - ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), - ana.SummedFactory('W_sr', samples, plot, full_selection), - w_shape) - elif method in [12, 13, 14, 16, 23]: - if method == 16: - cat_nobtag = '('+cats['btag_wnobtag']+')*('+cats['baseline']+')' - cat_nobtag_data = '('+cats_unmodified['btag_wnobtag']+')*('+cats_unmodified['baseline']+')' - full_selection = BuildCutString(wt, sel, cat_nobtag, OSSS) - ss_selection = BuildCutString(wt, '', cat_nobtag, '!os', '') - os_selection = BuildCutString(wt, '', cat_nobtag, 'os', '') - control_sel = cats['w_sdb'] - w_control_full_selection = BuildCutString(wt, control_sel, cat_nobtag, OSSS) - w_control_full_selection_os = BuildCutString(wt, control_sel, cat_nobtag) - w_control_full_selection_ss = BuildCutString(wt, control_sel, cat_nobtag, '!os') - w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_nobtag_data) - w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_nobtag_data, '!os') - btag_extrap_sel_num = BuildCutString(wt, sel, cat, OSSS, '') - btag_extrap_sel_den = BuildCutString(wt, sel, cat_nobtag, OSSS, '') - btag_extrap_num_node = ana.SummedFactory('btag', samples, plot, btag_extrap_sel_num) - btag_extrap_den_node = ana.SummedFactory('no_btag', samples, plot, btag_extrap_sel_den) - subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat_nobtag,cat_nobtag_data,method,qcd_os_ss_ratio,True,False) - subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat_nobtag,cat_nobtag_data,method,qcd_os_ss_ratio,False,False) - elif method == 23: - cat_nopt = '('+cats['dijet_lowboost']+')*('+cats['baseline']+')' - cat_nopt_data = '('+cats_unmodified['dijet_lowboost']+')*('+cats_unmodified['baseline']+')' - full_selection = BuildCutString(wt, sel, cat_nopt, OSSS) - ss_selection = BuildCutString(wt, '', cat_nopt, '!os', '') - os_selection = BuildCutString(wt, '', cat_nopt, 'os', '') - control_sel = cats['w_sdb'] - w_control_full_selection = BuildCutString(wt, control_sel, cat_nopt, OSSS) - w_control_full_selection_os = BuildCutString(wt, control_sel, cat_nopt) - w_control_full_selection_ss = BuildCutString(wt, control_sel, cat_nopt, '!os') - w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_nopt_data) - w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_nopt_data, '!os') - btag_extrap_sel_num = BuildCutString(wt, sel, cat, OSSS, '') - btag_extrap_sel_den = BuildCutString(wt, sel, cat_nopt, OSSS, '') - btag_extrap_num_node = ana.SummedFactory('btag', samples, plot, btag_extrap_sel_num) - btag_extrap_den_node = ana.SummedFactory('no_btag', samples, plot, btag_extrap_sel_den) - subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat_nopt,cat_nopt_data,method,qcd_os_ss_ratio,True,False) - subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat_nopt,cat_nopt_data,method,qcd_os_ss_ratio,False,False) - else: - full_selection = BuildCutString(wt, sel, cat, OSSS) - ss_selection = BuildCutString(wt, '', cat, '!os', '') - os_selection = BuildCutString(wt, '', cat, 'os', '') - control_sel = cats['w_sdb'] - w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) - w_control_full_selection_os = BuildCutString(wt, control_sel, cat) - w_control_full_selection_ss = BuildCutString(wt, control_sel, cat, '!os') - w_control_full_selection_os_data = BuildCutString(wt, control_sel, cat_data) - w_control_full_selection_ss_data = BuildCutString(wt, control_sel, cat_data, '!os') - btag_extrap_num_node = None - btag_extrap_den_node = None - subtract_node_os = GetSubtractNode(ana,'_os',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) - subtract_node_ss = GetSubtractNode(ana,'_ss',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,False,False) - - if shape_selection == full_selection: - w_shape = None - else: - w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) - w_node = HttWOSSSNode(name, - ana.SummedFactory('data_os', data, plot_unmodified, w_control_full_selection_os_data), - subtract_node_os, - ana.SummedFactory('data_ss', data, plot_unmodified, w_control_full_selection_ss_data), - subtract_node_ss, - ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), - ana.SummedFactory('W_sr', samples, plot, full_selection), - ana.SummedFactory('W_os', samples, plot, os_selection), - ana.SummedFactory('W_ss', samples, plot, ss_selection), - w_shape, - qcd_factor, - get_os, - btag_extrap_num_node, - btag_extrap_den_node) - - elif method in [21,22,24,25]: - control_sel = cats['w_sdb']+' && '+ OSSS - w_control_full_selection = BuildCutString(wt, control_sel, cat, OSSS) - w_control_full_selection_data = BuildCutString(wt, control_sel, cat_data, OSSS) - data_node=ana.SummedFactory('data_obs', data, plot_unmodified, w_control_full_selection_data) - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,control_sel,cat,cat_data,method,qcd_os_ss_ratio,True,False) - - qcd_subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,cats['w_sdb'],cat,cat_data,8,qcd_os_ss_ratio,False,True) - qcd_control_full_selection = BuildCutString(wt, cats['w_sdb'], cat, '!os') - qcd_control_full_selection_data = BuildCutString(wt, cats['w_sdb'], cat_data, '!os') - qcd_node = HttQCDNode('QCD'+add_name, - ana.SummedFactory('data_ss', data, plot_unmodified, qcd_control_full_selection_data), - qcd_subtract_node, - qcd_factor, - None) - - subtract_node.AddNode(qcd_node) - - if shape_selection == full_selection: w_shape = None - else: w_shape = ana.SummedFactory('w_shape', samples, plot, shape_selection) - - if method in [22]: - data_node = None - wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 21, qcd_factor, True) - wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) - if method in [24]: - data_node = None - cat_nopt = '('+cats['dijet']+')*('+cats['baseline']+')' - cat_nopt_data = '('+cats_unmodified['dijet_lowboost']+')*('+cats_unmodified['baseline']+')' - wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) - wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat_nopt, cat_nopt_data, 8, qcd_factor, True) - if method in [25]: - data_node = None - wsf_num = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 24, qcd_factor, True) - wsf_denum = GetWNode(ana, name, samples, data, plot,plot_unmodified, wt, sel, cat, cat_data, 8, qcd_factor, True) - else: - wsf_num = None - wsf_denum = None - - w_node = HttWNode(name, - data_node, - subtract_node, - ana.SummedFactory('W_cr', samples, plot, w_control_full_selection), - ana.SummedFactory('W_sr', samples, plot, full_selection), - w_shape, - wsf_num, - wsf_denum) - return w_node - - -def GenerateW(ana, add_name='', samples=[], data=[], wg_samples=[], plot='', plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True): - w_node_name = 'W' - if options.channel == 'em': - w_total_node = SummedNode('W'+add_name) - w_total_node.AddNode(GetWGNode(ana, add_name, wg_samples, plot, wt, sel, cat, get_os)) - ana.nodes[nodename].AddNode(GetWGNode(ana, add_name, wg_samples, plot, wt, sel, cat, get_os)) - w_node_name+='J' - ana.nodes[nodename].AddNode(GetWNode(ana, w_node_name+add_name, samples, data, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_factor, get_os)) - if options.channel == 'em': - w_total_node.AddNode(GetWNode(ana, w_node_name+add_name, samples, data, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_factor, get_os)) - ana.nodes[nodename].AddNode(w_total_node) - - -def GetSubtractNode(ana,add_name,plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,OSSS,includeW=False,w_shift=None): - subtract_node = SummedNode('total_bkg'+add_name) - if includeW and options.era!='22': - if w_shift is not None: w_wt = '%s*%f' %(wt,w_shift) - else: w_wt = wt - w_node = GetWNode(ana, 'W', wjets_samples, data_samples, plot, plot_unmodified, w_wt, sel, cat, cat_data,method, qcd_os_ss_ratio, OSSS) - subtract_node.AddNode(w_node) - ttt_node = GetTTTNode(ana, "", top_samples, plot, wt, sel, cat, top_sels, OSSS) - ttj_node = GetTTJNode(ana, "", top_samples, plot, wt, sel, cat, top_sels, OSSS) - vvt_node = GetVVTNode(ana, "", vv_samples, plot, wt, sel, cat, vv_sels, OSSS) - vvj_node = GetVVJNode(ana, "", vv_samples, plot, wt, sel, cat, vv_sels, OSSS) - subtract_node.AddNode(ttt_node) - subtract_node.AddNode(ttj_node) - subtract_node.AddNode(vvt_node) - subtract_node.AddNode(vvj_node) - if options.embedding and options.channel != 'zmm': - embed_node = GetEmbeddedNode(ana, "", embed_samples, plot, wt, sel, cat, z_sels, OSSS) - subtract_node.AddNode(embed_node) - else: - ztt_node = GetZTTNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) - subtract_node.AddNode(ztt_node) - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','tauid2016','tauid2017','cpsummer17','UL_17','cp18','UL_18','mvadm2016'] and options.method!=0: - ewkz_node = GetEWKZNode(ana, "", ewkz_samples, plot, wt, sel, cat, z_sels, OSSS) - subtract_node.AddNode(ewkz_node) - if options.channel not in ["em"]: - zl_node = GetZLNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) - zj_node = GetZJNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) - subtract_node.AddNode(zl_node) - subtract_node.AddNode(zj_node) - if options.channel in ["em"]: - zll_node = GetZLLNode(ana, "", ztt_samples, plot, wt, sel, cat, z_sels, OSSS) - subtract_node.AddNode(zll_node) - if options.channel == "em": - wg_node = GetWGNode(ana, "", wgam_samples, plot, wt, sel, cat, OSSS) - subtract_node.AddNode(wg_node) - #print(subtract_node.shape) - return subtract_node - -def GenerateQCD(ana, add_name='', data=[], plot='', plot_unmodified='', wt='', sel='', cat='', cat_data='', method=8, qcd_factor=qcd_os_ss_ratio, get_os=True,w_shift=None): - shape_node = None - OSSS = "!os" - if get_os: OSSS = "os" - if method == 0: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,8,1.0,get_os,True) - full_selection = BuildCutString(wt, sel, cat_data, OSSS) - ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, - ana.SummedFactory('data', data, plot_unmodified, full_selection), - subtract_node, - 1.0)) - return - - - if options.channel != 'tt': - sub_shift='*1.0' - if 'qcd_sub_up' in systematic: sub_shift = '*1.1' - if 'qcd_sub_down' in systematic: sub_shift = '*0.9' - if method in [9, 11, 13, 14]: - if method in [9, 11, 13]: - shape_cat = '('+cats[options.cat]+')*('+cats['qcd_loose_shape']+')' - shape_cat_data = '('+cats_unmodified[options.cat]+')*('+cats_unmodified['qcd_loose_shape']+')' - elif method == 14: - shape_cat = '(n_jets<=1 && n_loose_bjets>=1)*('+cats['baseline']+')' - shape_cat_data = '(n_jets<=1 && n_loose_bjets>=1)*('+cats_unmodified['baseline']+')' - shape_selection = BuildCutString(wt, sel, shape_cat_data, '!os') - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_shift,sel,shape_cat,shape_cat_data,method,qcd_os_ss_ratio,False,True) - shape_node = SubtractNode('shape', ana.SummedFactory('data_ss', data, plot_unmodified, shape_selection), subtract_node) - - #if options.channel == 'em': qcd_os_ss_factor = 1 - qcd_os_ss_factor = qcd_factor - weight = wt - if method in [15,19]: - #qcd_os_ss_factor = 1 - if get_os and options.channel == "em": - weight = wt+'*wt_em_qcd' - #if options.era in ['cpsummer16','cpdecay16',"legacy16",'mvadm2016']: weight+='*wt_em_qcd_extrapup' - if options.em_qcd_weight != '': - weight=wt+'*'+options.em_qcd_weight - if method == 19: - shape_selection = BuildCutString(weight, sel, cats_unmodified['em_shape_cat'], '!os') - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight+sub_shift,sel,cats['em_shape_cat'],cats_unmodified['em_shape_cat'],method,1,False,True) - shape_node = SubtractNode('shape', ana.SummedFactory('data_ss',data, plot_unmodified, shape_selection), subtract_node) - - if cats['qcd_shape'] != "" or (w_shift is not None and w_shift!=1.0): - add_shape = False - if cats['qcd_shape'] == '': shape_cat = cat - else: - shape_cat = cats['qcd_shape'] - add_shape = True - if cats['qcd_shape'] == '': shape_cat_data = cat_data - else: - shape_cat_data = cats_unmodified['qcd_shape'] - add_shape = True - if add_shape: - shape_selection = BuildCutString(weight, sel, shape_cat_data, '!os') - if method == 21: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,shape_cat,shape_cat_data,22,1,False,True,w_shift) - else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,shape_cat,shape_cat_data,method,1,False,True,w_shift) - shape_node = SubtractNode('shape', ana.SummedFactory('data_ss',data, plot_unmodified, shape_selection), subtract_node) - else: shape_node = None - - full_selection = BuildCutString(weight, sel, cat_data, '!os') - if method == 21: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,22,qcd_os_ss_ratio,False,True) - elif method == 24: - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,25,qcd_os_ss_ratio,False,True) - else: subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight+sub_shift,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) - if get_os: qcd_ratio = qcd_os_ss_factor - else: qcd_ratio = 1.0 - ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, - ana.SummedFactory('data_ss', data, plot_unmodified, full_selection), - subtract_node, - qcd_ratio, - shape_node)) - - else: - if method == 8: - qcd_sdb_cat = cats[options.cat]+' && '+cats['tt_qcd_norm'] - qcd_sdb_cat_data = cats_unmodified[options.cat]+' && '+cats_unmodified['tt_qcd_norm'] - - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) - num_selection = BuildCutString(wt, sel, cat_data, '!os') - num_node = SubtractNode('ratio_num', - ana.SummedFactory('data', data, plot_unmodified, num_selection), - subtract_node) - if options.analysis == 'mssmsummer16': tau_id_wt = 'wt_tau2_id_loose' - else: tau_id_wt = '1' - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,False,True) - den_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, '!os') - den_node = SubtractNode('ratio_den', - ana.SummedFactory('data', data, plot_unmodified, den_selection), - subtract_node) - shape_node = None - full_selection = BuildCutString(wt, sel, qcd_sdb_cat_data, OSSS) - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt+'*'+tau_id_wt,sel,qcd_sdb_cat,qcd_sdb_cat_data,method,qcd_os_ss_ratio,get_os,True) - - ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, - ana.SummedFactory('data', data, plot_unmodified, full_selection), - subtract_node, - 1, - shape_node, - num_node, - den_node)) - if method == 9: - #osss = '(3.68434 -1.8015*dR + 0.488955*dR*dR -0.0489159*dR*dR*dR)' # this line to be inclusive by decay mode - osss = '((tau_decay_mode_1<2&&tau_decay_mode_2<2)*(3.555-1.689*dR+0.4741*dR*dR-0.04973*dR*dR*dR) + ((tau_decay_mode_1<2&&tau_decay_mode_2>9)||(tau_decay_mode_1>9&&tau_decay_mode_2<2))*(2.851-1.008*dR+0.2374*dR*dR-0.02331*dR*dR*dR) + (tau_decay_mode_1>9&&tau_decay_mode_2>9)*(3.391-2.21*dR+0.7623*dR*dR-0.08775*dR*dR*dR))' - weight = wt - if get_os: - weight = wt+'*'+osss - full_selection = BuildCutString(weight, sel, cat_data, '!os') - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,weight,sel,cat,cat_data,method,qcd_os_ss_ratio,False,True) - ana.nodes[nodename].AddNode(HttQCDNode('QCD'+add_name, - ana.SummedFactory('data_ss', data, plot_unmodified, full_selection), - subtract_node, - 1.0, - None)) - - -def GenerateFakeTaus(ana, add_name='', data=[], plot='',plot_unmodified='', wt='', sel='', cat_name='',get_os=True,ff_syst_weight=None): - - - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - - - sub_wt='' - if 'sub_syst' in add_name and 'Up' in add_name: sub_wt='*1.1' - if 'sub_syst' in add_name and 'Down' in add_name: sub_wt='*0.9' - - - wp = options.wp - # Select data from anti-isolated region - if options.channel != "tt": - if options.channel == 'mt': - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: - anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) - else: - anti_isolated_sel = '(iso_1<0.15 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singlemuon)' - elif options.channel == 'et': - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: - anti_isolated_sel = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) - else: - anti_isolated_sel = '(iso_1<0.1 && mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5 && antiele_2 && antimu_2 && !leptonveto && trg_singleelectron)' - ff_cat = cats[cat_name] +" && "+ anti_isolated_sel - ff_cat_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel - if options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','mvadm2016','cp18','UL_18','22']: - if ff_syst_weight is not None and 'sub_syst' not in add_name: fake_factor_wt_string = '('+ff_syst_weight+'_1)' - else: - if options.analysis in ['cpprod']: - fake_factor_wt_string = "wt_ff_us_1" - fake_factor_wt_string = "wt_ff_dmbins_1" - elif options.analysis in ['mssmrun2','vlq']: - #if options.w_ff_closure or options.qcd_ff_closure: - #json_name = 'scripts/ff_strings.json' - #with open(json_name) as json_file: - #ff_dict = json.load(json_file) - if options.w_ff_closure: - fake_factor_wt_string = "wt_ff_mssm_wjets_1" - if options.ml_ff: fake_factor_wt_string = "wt_ff_reweight_wjets_dr_1" - #fake_factor_wt_string = RawFFFromString(ff_dict[options.channel][options.year]['wjets']) - #fake_factor_wt_string = ff_dict[options.channel][options.year]['wjets'] - elif options.qcd_ff_closure: - fake_factor_wt_string = "wt_ff_mssm_qcd_1" - if options.ml_ff: fake_factor_wt_string = "wt_ff_reweight_qcd_raw_1" - #fake_factor_wt_string = ff_dict[channel][year]['qcd'] - else: - fake_factor_wt_string = "wt_ff_mssm_1" - if options.ml_ff: fake_factor_wt_string = "((wt_ff_reweight_qcd_1*ff_frac_mssm_qcd) + (wt_ff_reweight_wjets_1*ff_frac_mssm_wjets) + (wt_ff_reweight_ttbar_1*ff_frac_mssm_ttbar))" - - - else: fake_factor_wt_string = "wt_ff_1" - else: - if ff_syst_weight is not None: fake_factor_wt_string = ff_syst_weight - else: fake_factor_wt_string = "wt_ff_"+options.cat - fake_factor_wt_string+='*wt_tau_id_loose' - if wt is not "": wt+="*"+fake_factor_wt_string - else: wt=fake_factor_wt_string - - - full_selection = BuildCutString(wt, sel, ff_cat_data, OSSS, '') - # Calculate FF for anti-isolated data (f1) then subtract contributions from real taus (f2) - f1 = ana.SummedFactory('data', data, plot_unmodified, full_selection) - - - if (not options.w_ff_closure and not options.qcd_ff_closure) or options.ml_ff: - f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel+'&&(gen_match_2<6)',ff_cat,ff_cat_data,8,1.0,get_os,True) - elif options.qcd_ff_closure and not options.ml_ff: - f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,8,1,get_os,True) - elif options.w_ff_closure and not options.ml_ff: - f2 = GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,8,1,get_os,False) - full_selection_ss = BuildCutString(wt, sel, ff_cat_data, '!os', '') - qcd_node = SubtractNode('qcd', ana.SummedFactory('data', data, plot_unmodified, full_selection_ss), GetSubtractNode(ana,'',plot,plot_unmodified,wt+sub_wt,sel,ff_cat,ff_cat_data,12,1.0,False,True)) - f2.AddNode(qcd_node) - ana.nodes[nodename].AddNode(SubtractNode('jetFakes'+add_name, f1, f2)) - - - if options.channel == 'tt': - anti_isolated_sel_1 = '(mva_olddm_medium_1<0.5 && mva_olddm_vloose_1>0.5 && mva_olddm_medium_2>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' - anti_isolated_sel_2 = '(mva_olddm_medium_2<0.5 && mva_olddm_vloose_2>0.5 && mva_olddm_medium_1>0.5 && antiele_1 && antimu_1 && antiele_2 && antimu_2 && !leptonveto)' - if options.era == "mssmsummer16": - anti_isolated_sel_1 +=" && trg_doubletau" - anti_isolated_sel_2 +=" && trg_doubletau" - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"mvadm2016"]: - anti_isolated_sel_1 = cats['baseline'].replace('mva_olddm_tight_1>0.5','mva_olddm_tight_1<0.5 && mva_olddm_vloose_1>0.5') - anti_isolated_sel_2 = cats['baseline'].replace('mva_olddm_tight_2>0.5','mva_olddm_tight_2<0.5 && mva_olddm_vloose_2>0.5') - if options.era in ["cpsummer17",'UL_17',"cp18",'UL_18','cpdecay16','legacy16','UL_16_preVFP','UL_16_postVFP','22']: # need to do also for MVA cats for 2016! - anti_isolated_sel_2 = cats['baseline'].replace('deepTauVsJets_%(wp)s_2>0.5' % vars(),'deepTauVsJets_%(wp)s_2<0.5 && deepTauVsJets_vvvloose_2>0.5' % vars()) - anti_isolated_sel_1 = cats['baseline'].replace('deepTauVsJets_%(wp)s_1>0.5' % vars(),'deepTauVsJets_%(wp)s_1<0.5 && deepTauVsJets_vvvloose_1>0.5' % vars()) - ff_cat_1 = cats[cat_name] +" && "+ anti_isolated_sel_1 - ff_cat_2 = cats[cat_name] +" && "+ anti_isolated_sel_2 - ff_cat_1_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel_1 - ff_cat_2_data = cats_unmodified[cat_name] +" && "+ anti_isolated_sel_2 - if ff_syst_weight is not None and 'sub_syst' not in add_name: - fake_factor_wt_string_1 = '('+ff_syst_weight+'_1)' - fake_factor_wt_string_2 = ff_syst_weight+'_2' - - -#wt_ff_dmbins_qcd_syst_down - if options.analysis in ['cpprod'] and 'ff_tt_qcd_syst' in add_name: - flat = 1.04 - if (options.era=='cpsummer17' or options.era == 'UL_17'): flat=1.07 - if (options.era=='cp18'or options.era == 'UL_18'): flat=1.06 - if (options.era=='22'): flat=1.06 - - - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_qcd_syst_down_1*%(flat)s + (n_jets>0)*wt_ff_dmbins_1)' % vars() - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)*(2*wt_ff_dmbins_1-wt_ff_dmbins_qcd_syst_down_1*%(flat)s) + (n_jets>0)*wt_ff_dmbins_1)' % vars() - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_1 + (n_jets>0)*wt_ff_dmbins_qcd_syst_down_1*%(flat)s)' % vars() - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)*wt_ff_dmbins_1 + (n_jets>0)*(2*wt_ff_dmbins_1-wt_ff_dmbins_qcd_syst_down_1*%(flat)s))' % vars() - - - fake_factor_wt_string_1 = ff_syst_weight - - - - - if options.analysis in ['cpdecay'] and 'ff_tt_qcd_syst' in add_name: - if(options.era=='22'): - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - else: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - - if(options.era=='cp18' or options.era == 'UL_18'): - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0))*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0))*wt_ff_1' - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - else: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.24845-0.0578994*dR)/1.06 + (n_jets>0)*(1.15364-0.0317013*dR)/1.06)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.24845-0.0578994*dR)*1.06 + (n_jets>0)/(1.15364-0.0317013*dR)*1.06)*wt_ff_1' - - - if (options.era=='cpsummer17' or options.era == 'UL_17'): - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.40415-0.101317*dR)/1.07 + (n_jets>0))*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.40415-0.101317*dR)*1.07 + (n_jets>0))*wt_ff_1' - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.16253-0.031154*dR)/1.07)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.16253-0.031154*dR)*1.07)*wt_ff_1' - else: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.40415-0.101317*dR)/1.07 + (n_jets>0)*(1.16253-0.031154*dR)/1.07)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.40415-0.101317*dR)*1.07 + (n_jets>0)/(1.16253-0.031154*dR)*1.07)*wt_ff_1' - - - if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: - if 'njets0' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.22618-0.0546679*dR)/1.04 + (n_jets>0))*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.22618-0.0546679*dR)*1.04 + (n_jets>0))*wt_ff_1' - elif 'njets1' in add_name: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)*(1.09292-0.0200048*dR)/1.04)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0) + (n_jets>0)/(1.09292-0.0200048*dR)*1.04)*wt_ff_1' - else: - if 'Up' in add_name: - ff_syst_weight = '((n_jets==0)*(1.22618-0.0546679*dR)/1.04 + (n_jets>0)*(1.09292-0.0200048*dR)/1.04)*wt_ff_1' - if 'Down' in add_name: - ff_syst_weight = '((n_jets==0)/(1.22618-0.0546679*dR)*1.04 + (n_jets>0)/(1.09292-0.0200048*dR)*1.04)*wt_ff_1' - fake_factor_wt_string_1 = ff_syst_weight - - - if options.analysis in ['cpprod','cpdecay','mssmrun2','vlq']: - fake_factor_wt_string_2='0' - else: - if options.era in ["smsummer16","cpsummer16","cpdecay16","legacy16",'UL_16_preVFP','UL_16_postVFP',"cpsummer17",'UL_17',"mvadm2016","cp18",'UL_18','22']: - # deep tau tight 2018 anti isolating the subleading tau - if options.analysis == 'cpprod': - fake_factor_wt_string_2='0' - fake_factor_wt_string_1 = "wt_ff_dmbins_1" - elif options.analysis == 'cpdecay': - fake_factor_wt_string_2='0' - fake_factor_wt_string_1 = "wt_ff_1" - elif options.analysis in ['mssmrun2','vlq']: - fake_factor_wt_string_2='0' - if options.wp == 'medium': - fake_factor_wt_string_1 = "wt_ff_mssm_1" - #fake_factor_wt_string_1 = "wt_ff_mssm_qcd_syst_down_1" # change back afterwards!!!! - if options.ml_ff: - fake_factor_wt_string_1 = "0.5*wt_ff_reweight_qcd_1*((os==0) + (wt_ff_reweight_qcd_dr_to_ar_1*(os==1)))" - fake_factor_wt_string_2 = "0.5*wt_ff_reweight_qcd_2*((os==0) + (wt_ff_reweight_qcd_dr_to_ar_2*(os==1)))" - elif options.wp == 'tight': - fake_factor_wt_string_1 = "wt_ff_mssm_tight_1" - #fake_factor_wt_string_1 = '((n_prebjets==0 && jet_pt_1<1.25*pt_1)*((pt_1<200)*(15.4087*TMath::Landau(min(pt_1,199.),-15.7496,4.82075)+0.0870211) + (pt_1>=200)*0.27557) + (n_prebjets==0 && jet_pt_1>=1.25*pt_1&&jet_pt_1<1.5*pt_1)*((pt_1<200)*(-411615*TMath::Landau(min(pt_1,199.),-110.218,-14.0548)+0.084284) + (pt_1>=200)*0.28273) + (n_prebjets==0 &&jet_pt_1>=1.5*pt_1)*(0.0392299) + (n_prebjets>0&&jet_pt_1<1.25*pt_1)*((pt_1<200)*(11.7652*TMath::Landau(min(pt_1,199.),-12.9921,5.06968)+0.077124) + (pt_1>=200)*0.13219) + (n_prebjets>0&&jet_pt_1>=1.25*pt_1&&jet_pt_1<1.5*pt_1)*((pt_1<200)*(144.787*TMath::Landau(min(pt_1,199.),14.249,0.467844)+0.0529324) + (pt_1>=200)*0.07516) + (n_prebjets>0&&jet_pt_1>=1.5*pt_1)*(-51.0159*TMath::Landau(min(pt_1,199.),-142.619,-346.505)+0.0294523))*((n_deepbjets==0)*((0.950911+-0.05705*min(dR,5.)+0.0159116*pow(min(dR,5.),2)+0.00199494*pow(min(dR,5.),3))) + (n_deepbjets>0)*((2.53701+-2.23664*min(dR,5.)+0.87535*pow(min(dR,5.),2)+-0.101159*pow(min(dR,5.),3))))' - - - else: - fake_factor_wt_string_1 = "wt_ff_"+options.cat+"_1" - fake_factor_wt_string_2 = "wt_ff_"+options.cat+"_2" - fake_factor_wt_string_1+='*wt_tau1_id_loose' - fake_factor_wt_string_2+='*wt_tau2_id_loose' - if wt is not "": - wt_1=wt+"*"+fake_factor_wt_string_1 - wt_2=wt+"*"+fake_factor_wt_string_2 - else: - wt_1=fake_factor_wt_string_1 - wt_2=fake_factor_wt_string_2 - - if options.analysis == 'cpdecay' and get_os: - if (options.era=='cp18' or options.era == 'UL_18'): - fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.24845-0.0578994*dR) + (n_jets>0)*(1.15364-0.0317013*dR))' - if (options.era=='cpsummer17' or options.era == 'UL_17'): - fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.40415-0.101317*dR) + (n_jets>0)*(1.16253-0.031154*dR))' - if options.era in ['legacy16','UL_16_preVFP','UL_16_postVFP']: - fake_factor_wt_string_1+='*wt_ff_qcd_syst_down_1/wt_ff_1*((n_jets==0)*(1.22618-0.0546679*dR) + (n_jets>0)*(1.09292-0.0200048*dR))' - #fake_factor_wt_string_1='wt_ff_test_lead_1' - if wt is not "": - wt_1=wt+"*"+fake_factor_wt_string_1 - else: - wt_1=fake_factor_wt_string_1 - full_selection_1 = BuildCutString(wt_1, sel, ff_cat_1_data, OSSS, '') - full_selection_2 = BuildCutString(wt_2, sel, ff_cat_2_data, OSSS, '') - - if options.ff_ss_closure: - # usual OS FF - - - - - ff_total_node = SummedNode('jetFakes_pre'+add_name) - f1_total_node = SummedNode('data') - f1_total_node.AddNode(ana.SummedFactory('data_1', data, plot_unmodified, full_selection_1)) - f1_total_node.AddNode(ana.SummedFactory('data_2', data, plot_unmodified, full_selection_2)) - f2_total_node = SummedNode('total_bkg') - f2_total_node.AddNode(GetSubtractNode(ana,'_1',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,get_os,True)) - f2_total_node.AddNode(GetSubtractNode(ana,'_2',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,get_os,True)) - - - #ana.nodes[nodename].AddNode(SubtractNode('jetFakes_pre'+add_name, f1_total_node, f2_total_node)) - - - # FF for SS data - full_selection_1_ss = BuildCutString(wt_1, sel, ff_cat_1_data, '!os', '') - full_selection_2_ss = BuildCutString(wt_2, sel, ff_cat_2_data, '!os', '') - ff_total_node_ss = SummedNode('jetFakes_ss'+add_name) - f1_total_node_ss = SummedNode('data_ss') - f1_total_node_ss.AddNode(ana.SummedFactory('data_1_ss', data, plot_unmodified, full_selection_1_ss)) - f1_total_node_ss.AddNode(ana.SummedFactory('data_2_ss', data, plot_unmodified, full_selection_2_ss)) - f2_total_node_ss = SummedNode('total_bkg_ss') - f2_total_node_ss.AddNode(GetSubtractNode(ana,'_1_ss',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,False,True)) - f2_total_node_ss.AddNode(GetSubtractNode(ana,'_2_ss',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,False,True)) - den_node = SubtractNode('jetFakes_ss'+add_name, f1_total_node_ss, f2_total_node_ss) - - - # SS data - bkg - subtract_node = GetSubtractNode(ana,'',plot,plot_unmodified,wt,sel+'*(gen_match_1<6 && gen_match_2<6)',cats[cat_name]+'&&'+cats['baseline'],cats_unmodified[cat_name]+'&&'+cats['baseline'],8,1.0,False,True) - num_selection = BuildCutString(wt, sel, cats_unmodified[cat_name]+'&&'+cats['baseline'], '!os') - num_node = SubtractNode('ratio_num', - ana.SummedFactory('data', data, plot_unmodified, num_selection), - subtract_node) - - - ana.nodes[nodename].AddNode(HttQCDNode('jetFakes'+add_name, - f1_total_node, - f2_total_node, - 1, - None, - num_node, - den_node)) - else: - ff_total_node = SummedNode('jetFakes'+add_name) - f1_total_node = SummedNode('data') - f1_total_node.AddNode(ana.SummedFactory('data_1', data, plot_unmodified, full_selection_1)) - if options.ml_ff: f1_total_node.AddNode(ana.SummedFactory('data_2', data, plot_unmodified, full_selection_2)) - f2_total_node = SummedNode('total_bkg') - f2_total_node.AddNode(GetSubtractNode(ana,'_1',plot,plot_unmodified,wt_1+sub_wt,sel+'*(gen_match_1<6)',ff_cat_1,ff_cat_1_data,8,1.0,get_os,True)) - if options.ml_ff: f2_total_node.AddNode(GetSubtractNode(ana,'_2',plot,plot_unmodified,wt_2+sub_wt,sel+'*(gen_match_2<6)',ff_cat_2,ff_cat_2_data,8,1.0,get_os,True)) - ana.nodes[nodename].AddNode(SubtractNode('jetFakes'+add_name, f1_total_node, f2_total_node)) - - - - - if options.channel=='tt': - #if options.analysis == 'cpprod': full_selection_extra = BuildCutString(wt+'*wt_ff_us_2', sel+'*(gen_match_2==6)', ff_cat_2_data, OSSS, '') - #else: full_selection_extra = BuildCutString(wt+'*wt_ff_2', sel+'*(gen_match_2==6)', ff_cat_2_data, OSSS, '') - - - full_selection_extra = BuildCutString(wt, sel, cats_unmodified[cat_name]+'&&'+cats['baseline'], OSSS, 'gen_match_2==6') - - - - #wnode = ana.SummedFactory('Wfakes'+add_name, ztt_samples+vv_samples+wjets_samples+ewkz_samples+top_samples, plot, full_selection_extra) -# ana.nodes[nodename].AddNode(wnode) - -def GenerateSMSignal(ana, add_name='', plot='', masses=['125'], wt='', sel='', cat='', get_os=True, sm_bkg = '',processes=['ggH','qqH','ZH','WminusH','WplusH']): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - if masses is not None: - for mass in masses: - if sm_bkg != '': - add_str = '_SM'+sm_bkg - else: - add_str = mass - for key in sm_samples: - if 'ggH' in key: - full_selection = BuildCutString(wt+'*wt_ph_nnlops', sel, cat, OSSS) - else: full_selection = BuildCutString(wt, sel, cat, OSSS) - if True not in [proc in key for proc in processes]: continue - sample_names=[] - if isinstance(sm_samples[key], (list,)): - for i in sm_samples[key]: - sample_names.append(i.replace('*',mass)) - else: sample_names = [sm_samples[key].replace('*',mass)] - ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',add_str)+add_name, sample_names, plot, full_selection)) - -def GenerateMSSMSignal(ana, add_name='', bbh_add_name='', plot='', ggh_masses = ['1000'], bbh_masses = ['1000'], wt='', sel='', cat='', get_os=True, do_ggH=True, do_bbH=True): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - if options.gen_signal: OSSS='1' - full_selection = BuildCutString(wt, sel, cat, OSSS) - for key in mssm_samples: - masses = None - if key == 'ggH': - masses = ggh_masses - elif key == 'bbH': - masses = bbh_masses - if masses is not None: - for mass in masses: - if key == 'ggH' and not do_ggH: - continue - if key == 'bbH' and not do_bbH: - continue - sample_name = mssm_samples[key].replace('*',mass) - add_name_2 = '' - if bbh_add_name == '-LO' and key is 'bbH': - sample_name = mssm_lo_samples['bbH-LO'].replace('*',mass) - add_name_2 = bbh_add_name - ana.nodes[nodename].AddNode(ana.BasicFactory(key+add_name_2+mass+add_name, sample_name, plot, full_selection)) - - -# for CP signals -# need to multiply by the weights wt_cp_sm/ps/mm -def GenerateReweightedCPSignal(ana, add_name='', plot='', wt='', sel='', cat='', get_os=True): - weights = {"sm": "wt_cp_sm*wt_ph_nnlops", "ps": "wt_cp_ps*wt_ph_nnlops", "mm": "wt_cp_mm*wt_ph_nnlops", "flat": "wt_ph_nnlops"} - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - if options.gen_signal: - OSSS='1' - for key, sample in sm_samples.iteritems(): - non_cp = True - for name in weights: - if key.split("_")[1] == name: - non_cp=False - weight=wt+"*"+weights[name] - full_selection = BuildCutString(weight, sel, cat, OSSS) - name = key - - - sample_names=[] - if isinstance(sm_samples[key], (list,)): - for i in sm_samples[key]: - sample_names.append(i.replace('*',mass)) - else: sample_names = [sm_samples[key].replace('*',mass)] - ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) - #ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample, plot, full_selection)) - if non_cp: - full_selection = BuildCutString(wt, sel, cat, OSSS) - name = key - #ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample, plot, full_selection)) - - - sample_names=[] - if isinstance(sm_samples[key], (list,)): - for i in sm_samples[key]: - sample_names.append(i.replace('*',mass)) - else: sample_names = [sm_samples[key].replace('*',mass)] - ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) - - -def GenerateReweightedCPProdSignal(ana, add_name='', plot='', wt='', sel='', cat='', get_os=True): - weights = {"sm": "wt_cp_prod_sm", "ps": "wt_cp_prod_ps", "mm": "wt_cp_prod_mm"} - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - if options.gen_signal: - OSSS='1' - for key, sample in sm_samples.iteritems(): - non_cp = True - if 'ggH_sm' in key or 'ggH_ps' in key or 'ggH_mm' in key: non_cp=False - if not non_cp: - for name in weights: - tname = key.replace('*',mass)+add_name - if 'ggH_'+name not in tname: - tname=key.replace('*',mass)+'_reweightedto_'+name+add_name - #continue - weight=wt+"*"+weights[name]+'*wt_quarkmass*wt_mg_nnlops' - else: - weight=wt+'*wt_quarkmass*wt_mg_nnlops*(wt_cp_prod_sm!=0)' - non_cp=False - #weight=wt+"*"+weights[name]+'*wt_quarkmass*wt_mg_nnlops' - full_selection = BuildCutString(weight, sel, cat, OSSS) - name = key - - - sample_names=[] - if isinstance(sm_samples[key], (list,)): - for i in sm_samples[key]: - sample_names.append(i.replace('*',mass)) - else: sample_names = [sm_samples[key].replace('*',mass)] - ana.nodes[nodename].AddNode(ana.SummedFactory(tname, sample_names, plot, full_selection)) - if non_cp: - name = key - weight=wt - if 'ggh' in name.lower(): - if 'reweighted_' in name: weight+='*wt_quarkmass*wt_mg_nnlops' - else: weight+='*wt_ph_nnlops' - full_selection = BuildCutString(weight, sel, cat, OSSS) - sample_names=[] - if isinstance(sm_samples[key], (list,)): - for i in sm_samples[key]: - sample_names.append(i.replace('*',mass)) - else: sample_names = [sm_samples[key].replace('*',mass)] - ana.nodes[nodename].AddNode(ana.SummedFactory(key.replace('*',mass)+add_name, sample_names, plot, full_selection)) - - - - -def GenerateReWeightedMSSMSignal(ana, add_name='', plot='', ggh_masses = ['1000'], wt='', sel='', cat='', get_os=True): - weights = {'ggh_t_':'wt_ggh_t', 'ggh_b_':'wt_ggh_b', 'ggh_i_':'wt_ggh_i', 'ggH_t_':'wt_ggH_t', 'ggH_b_':'wt_ggH_b', 'ggH_i_':'wt_ggH_i', 'ggA_t_':'wt_ggA_t', 'ggA_b_':'wt_ggA_b', 'ggA_i_':'wt_ggA_i' } - #weights = {'ggH_t_':'wt_ggH_t', 'ggH_b_':'wt_ggH_b', 'ggH_i_':'wt_ggH_i', 'ggA_t_':'wt_ggA_t', 'ggA_b_':'wt_ggA_b', 'ggA_i_':'wt_ggA_i' } - if get_os: OSSS = 'os' - else: OSSS = '!os' - if options.gen_signal: OSSS='1' - for mass in ggh_masses: - if int(mass) == 95: - full_selection = BuildCutString(wt, sel, cat, OSSS) - sample_name = mssm_samples['ggH'].replace('*',mass) - name = 'ggH' - ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample_name, plot, full_selection)) - for name in weights: - weight=wt+"*"+weights[name] - full_selection = BuildCutString(weight, sel, cat, OSSS) - sample_name = mssm_samples['ggH'].replace('*',mass) - ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name, sample_name, plot, full_selection)) - if options.syst_mssm_ggh and add_name=='': - for u in ['_scale', '_hdamp']: - weight_up=wt+"*"+weights[name].replace('ggH','ggh')+u+'_up' - weight_down=wt+"*"+weights[name].replace('ggH','ggh')+u+'_down' - full_selection_up = BuildCutString(weight_up, sel, cat, OSSS) - full_selection_down = BuildCutString(weight_down, sel, cat, OSSS) - if 'scale' in u: - syst_name_up='_QCDscale_ggH_REWEIGHTUp' - syst_name_down='_QCDscale_ggH_REWEIGHTDown' - else: - syst_name_up = '_Hdamp_%sREWEIGHTUp' % (name.replace('ggA','ggH').replace('ggh','ggH')) - syst_name_down = '_Hdamp_%sREWEIGHTDown' % (name.replace('ggA','ggH').replace('ggh','ggH')) - sample_name = mssm_samples['ggH'].replace('*',mass) - ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name+syst_name_up, sample_name, plot, full_selection_up)) - ana.nodes[nodename].AddNode(ana.BasicFactory(name+mass+add_name+syst_name_down, sample_name, plot, full_selection_down)) - -def GenerateNLOMSSMSignal(ana, add_name='', plot='', ggh_nlo_masses = ['1000'], bbh_nlo_masses = ['1000'],wt='wt', sel='', cat='', doScales=True, doPDF=False, get_os=True,do_ggH=True, do_bbH=True): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - if options.gen_signal: OSSS='1' - weights = {'':'1'} - wt_noscale = wt - if doScales: weights = {'':'1','muR1muF2':'wt_mur1_muf2','muR1muF0.5':'wt_mur1_muf0p5','muR2muF1':'wt_mur2_muf1','muR2muF2':'wt_mur2_muf2','muR0.5muF1':'wt_mur0p5_muf1','muR0.5muF0.5':'wt_mur0p5_muf0p5'} - if doPDF: - for i in range(1,101): weights['PDF_'+str(i)] = 'wt_pdf_'+str(i) - weights['AlphaS_Up'] = 'wt_alphasup' - weights['AlphaS_Down'] = 'wt_alphasdown' - for weight in weights: - wt = weights[weight]+'*'+wt_noscale - full_selection = BuildCutString(wt, sel, cat, OSSS) - for key in mssm_nlo_samples: - if 'Qsh' in key and weight is not '': continue - if 'ggH' in key: - masses = ggh_nlo_masses - elif 'bbH' in key: - masses = bbh_nlo_masses - if masses is not None: - for mass in masses: - if key == 'ggH' and not do_ggH: - continue - if key == 'bbH' and not do_bbH: - continue - sample_name = mssm_nlo_samples[key].replace('*',mass) - ana.nodes[nodename].AddNode(ana.BasicFactory(key+mass+add_name+weight, sample_name, plot, full_selection)) - - -def GenerateHhhSignal(ana, add_name='', plot='', masses = ['700'], wt='', sel='', cat='', get_os=True): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS) - if masses is not None: - for mass in masses: - for key in Hhh_samples: - sample_name = Hhh_samples[key].replace('*',mass) - ana.nodes[nodename].AddNode(ana.BasicFactory(key+mass+add_name, sample_name, plot, full_selection)) - - -def GenerateVLQSignal(ana, add_name='', plot='', vlq_sig= [] ,wt='', sel='', cat='', get_os=True): - if get_os: - OSSS = 'os' - else: - OSSS = '!os' - full_selection = BuildCutString(wt, sel, cat, OSSS) - for key in vlq_samples: - if key in vlq_sig: - if isinstance(vlq_samples[key], (list,)): - sample_names = [] - for i in vlq_samples[key]: - sample_names.append(i) - else: sample_names = [vlq_samples[key]] - ana.nodes[nodename].AddNode(ana.SummedFactory(key+add_name, sample_names, plot, full_selection)) - - - -def PrintSummary(nodename='', data_strings=['data_obs'], add_names=''): - print '' - print '################### Summary ###################' - nodes = ana.nodes[nodename].SubNodes() - bkg_total = ufloat(0.000000001,0.000000001) - sig_total = ufloat(0.000000001,0.000000001) - for node in nodes: - if options.channel == 'em' and node.name == 'W': continue - if node.shape.rate.n == 0: per_err = 0 - else: per_err = node.shape.rate.s/node.shape.rate.n - print node.name.ljust(10) , ("%.2f" % node.shape.rate.n).ljust(10), '+/-'.ljust(5), ("%.2f" % node.shape.rate.s).ljust(7), "(%.4f)" % per_err - if True in [node.name.find(add_name) != -1 and add_name is not '' for add_name in add_names]: continue - if len(signal_samples) != 0: sig_samp_cond = [node.name.find(sig) != -1 for sig in signal_samples.keys()] - else: sig_samp_cond = [] - if True in sig_samp_cond and node.name.find("_SM"+options.add_sm_background) ==-1: - sig_total += node.shape.rate - elif node.name not in data_strings or (options.method == 18 and 'jetFakes' == node.name): - bkg_total += node.shape.rate - if bkg_total.n == 0: per_err = 0 - else: per_err = bkg_total.s/bkg_total.n - print 'Total bkg'.ljust(10) , ("%.2f" % bkg_total.n).ljust(10), '+/-'.ljust(5), ("%.2f" % bkg_total.s).ljust(7), "(%.4f)" % per_err - if sig_total.n == 0: per_err = 0 - else: per_err = sig_total.s/sig_total.n - print 'Total sig'.ljust(10) , ("%.2f" % sig_total.n).ljust(10), '+/-'.ljust(5), ("%.2f" % sig_total.s).ljust(7), "(%.4f)" % per_err - print '###############################################' - print '' - - - -def FixBins(ana,outfile='output.root'): - #Fix empty histograms - nodes = ana.nodes[nodename].SubNodes() - for node in nodes: - if 'data_obs' in node.name: continue - hist = outfile.Get(nodename+'/'+node.name) - outfile.cd(nodename) - #Fix empty histogram - if hist.Integral() == 0.0: - hist.SetBinContent(hist.GetNbinsX()/2, 0.00001) - hist.SetBinError(hist.GetNbinsX()/2, 0.00001) - hist.Write(hist.GetName(),ROOT.TObject.kWriteDelete) - outfile.cd() - - - -def NormFFSysts(ana,outfile='output.root'): - nominal_hist = outfile.Get(nodename+'/jetFakes') - if isinstance(nominal_hist,ROOT.TH2): nominal_scale = nominal_hist.Integral(-1,-1,-1,-1) - else: nominal_scale = nominal_hist.Integral(0,nominal_hist.GetNbinsX()+2) - directory = outfile.Get(nodename) - outfile.cd(nodename) - hists_to_add=[] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - hist = directory.Get(hist_name).Clone() - if not isinstance(hist,ROOT.TDirectory): - if 'jetFakes' not in hist_name: continue - if hist_name == 'jetFakes': continue - if isinstance(hist,ROOT.TH2): norm = nominal_scale/hist.Integral(-1,-1,-1,-1) - else: norm = nominal_scale/hist.Integral(0,hist.GetNbinsX()+2) - hist.Scale(norm) - norm_hist_name = hist_name - norm_hist_name = norm_hist_name.replace('jetFakes','jetFakes_norm') - hist.SetName(norm_hist_name) - hists_to_add.append(hist) - for hist in hists_to_add: hist.Write() - -def NormWFakeSysts(ana,outfile='output.root'): - nominal_hist = outfile.Get(nodename+'/W') - if isinstance(nominal_hist,ROOT.TH2): nominal_scale = nominal_hist.Integral(-1,-1,-1,-1) - else: nominal_scale = nominal_hist.Integral(-1,-1) - directory = outfile.Get(nodename) - outfile.cd(nodename) - hists_to_add=[] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - hist = directory.Get(hist_name) - if not isinstance(hist,ROOT.TDirectory): - if 'W' not in hist_name or options.syst_w_fake_rate not in hist_name or 'Wplus' in hist_name or 'Wminus' in hist_name or 'WH' in hist_name: continue - if isinstance(hist,ROOT.TH2): norm = nominal_scale/hist.Integral(-1,-1,-1,-1) - else: norm = nominal_scale/hist.Integral(-1,-1) - hist.Scale(norm) - hists_to_add.append(hist) - for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) - - -def NormEmbedToMC(ana,outfile='output.root'): - nominal_hist = outfile.Get(nodename+'/ZTT') - nominal_hist_embed = outfile.Get(nodename+'/EmbedZTT') - if isinstance(nominal_hist,ROOT.TH2): scale = nominal_hist.Integral(-1,-1,-1,-1)/nominal_hist_embed.Integral(-1,-1,-1,-1) - else: scale = nominal_hist.Integral(-1,-1)/nominal_hist_embed.Integral(-1,-1) - directory = outfile.Get(nodename) - outfile.cd(nodename) - hists_to_add=[] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - hist = directory.Get(hist_name) - if not isinstance(hist,ROOT.TDirectory): - if 'EmbedZTT' not in hist_name: continue - hist.Scale(scale) - hists_to_add.append(hist) - for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) - - - -def TTBarEmbeddingSyst(ana,outfile,template_name): - nominal_hist = outfile.Get(nodename+'/EmbedZTT') - shift_hist = outfile.Get(nodename+'/TTT_embed_syst') - shift_hist_2 = outfile.Get(nodename+'/VVT_embed_syst') - shift_hist.Add(shift_hist_2) - shift_hist.Scale(0.1) - up_hist = nominal_hist.Clone() - down_hist = nominal_hist.Clone() - up_hist.Add(shift_hist) - down_hist.Add(shift_hist,-1) - up_hist.SetName('EmbedZTT_'+template_name+'Up') - down_hist.SetName('EmbedZTT_'+template_name+'Down') - outfile.cd(nodename) - up_hist.Write() - down_hist.Write() - -def OverwriteNames(input_string,replace_dict={}): - for i in replace_dict: - input_string=input_string.replace(i,replace_dict[i]) - return input_string - -def PDFUncerts(nodename, infile): - def RMS(a): - from numpy import mean, sqrt, square - rms = sqrt(mean(square(a-mean(a)))) - return rms - outstring1='' - outstring2='' - - for mass in bbh_nlo_masses: - nominal_error=ROOT.Double() - nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) - sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' - evt_nom = ana.info[sample_name]['evt'] - pdf_variations_nosf=[] - pdf_variations=[] - pdf_variations_nosf.append(nominal) - pdf_variations.append(nominal) - for i in range(1,101): - wt = 'wt_pdf_'+str(i) - name = 'PDF_'+str(i) - val = outfile.Get(nodename+'/bbH'+mass+name).Integral(-1, -1) - pdf_variations_nosf.append(val) - evt_var = ana.info[sample_name]['evt_'+wt] - sf = evt_nom/evt_var - pdf_variations.append(val*sf) - pdf_uncert_nosf=RMS(pdf_variations_nosf)/nominal*100 - pdf_uncert=RMS(pdf_variations)/nominal*100 - #print pdf_uncert_nosf, pdf_uncert - - outstring1+=mass+',' - outstring2+=str(pdf_uncert)+',' - - nominal_error=ROOT.Double() - nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) - alphas_down_error_nosf=ROOT.Double() - alphas_down_nosf = outfile.Get(nodename+'/bbH'+mass+'AlphaS_Down').IntegralAndError(-1, -1,alphas_down_error_nosf) - alphas_up_error_nosf=ROOT.Double() - alphas_up_nosf = outfile.Get(nodename+'/bbH'+mass+'AlphaS_Up').IntegralAndError(-1, -1,alphas_up_error_nosf) - evt_var = ana.info[sample_name]['evt_wt_alphasdown'] - sf = evt_nom/evt_var - alphas_down=alphas_down_nosf*sf - alphas_down_error=alphas_down_error_nosf*sf - evt_var = ana.info[sample_name]['evt_wt_alphasup'] - sf = evt_nom/evt_var - alphas_up=alphas_up_nosf*sf - alphas_up_error=alphas_up_error_nosf*sf - - alphas_uncert = (alphas_up-alphas_down)/2/nominal - alphas_uncert_error = math.sqrt(alphas_down_error**2+alphas_up_error**2)/(alphas_up-alphas_down)*alphas_uncert - #(alphas_up_nosf-alphas_down_nosf)/2/nominal - #print alphas_uncert*100, '\\% $\\pm$', alphas_uncert_error*100,'\\%' - print outstring1 - print outstring2 - - -def DONLOUncerts(nodename,infile): - def LargestDiff(nominal,scales_shifted): - largest_diff=0 - value = nominal - for i in scales_shifted: - diff = abs(scales_shifted[i] - nominal) - if diff > largest_diff: - largest_diff = diff - value = scales_shifted[i] - return value - if not options.bbh_nlo_masses: return - outstring='%'+options.channel+' '+options.datacard+'\n' - if options.nlo_qsh: outstring+='\\begin{table}[H]\n\\centering\n\\resizebox{\\textwidth}{!}{\n\\begin{tabular}{ |c|c|c| }\n\\hline\nSignal Mass (GeV) & Qsh Uncertainty & Qsh Uncertainty (*)' - else: outstring+='\\begin{table}[H]\n\\centering\n\\resizebox{\\textwidth}{!}{\n\\begin{tabular}{ |c|c|c| }\n\\hline\nSignal Mass (GeV) & Scale Uncertainty & Scale Uncertainty (*)' - outstring += '\\\\\n\\hline\n' - #outstring2='{' - #outstring3='{' - #outstring4='{' - for mass in bbh_nlo_masses: - nominal_error=ROOT.Double() - nominal = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,nominal_error) - samples = {'bbH*':'', 'bbH*muR0.5muF0.5':'wt_mur0p5_muf0p5', 'bbH*muR1muF0.5':'wt_mur1_muf0p5', 'bbH*muR0.5muF1':'wt_mur0p5_muf1', 'bbH*muR2muF2':'wt_mur2_muf2', 'bbH*muR2muF1':'wt_mur2_muf1', 'bbH*muR1muF2':'wt_mur1_muf2'} - qsh_down_error=ROOT.Double() - qsh_up_error=ROOT.Double() - if options.nlo_qsh: - qsh_down = outfile.Get(nodename+'/bbH-QshDown'+mass).IntegralAndError(-1, -1,qsh_down_error) - qsh_up = outfile.Get(nodename+'/bbH-QshUp'+mass).IntegralAndError(-1, -1,qsh_up_error) - qsh_uncert_1=(max(nominal,qsh_down,qsh_up) - min(nominal,qsh_down,qsh_up))/2 - up_error = nominal_error - down_error = nominal_error - if max(nominal,qsh_down,qsh_up) is qsh_up: up_error = qsh_up_error - if max(nominal,qsh_down,qsh_up) is qsh_down: up_error = qsh_down_error - if min(nominal,qsh_down,qsh_up) is qsh_up: down_error = qsh_up_error - if min(nominal,qsh_down,qsh_up) is qsh_down: down_error = qsh_down_error - qsh_error_1 = math.sqrt(up_error**2 + down_error**2) - qsh_uncert_2 = (qsh_up - qsh_down)/2 - qsh_error_2 = math.sqrt(qsh_up_error**2 + qsh_down_error**2) - scale_max = nominal - scale_min = nominal - scale_nosf_max = nominal - scale_nosf_min = nominal - up_dic = {} - down_dic = {} - for samp in samples: - acceptance_error = ROOT.Double() - acceptance = outfile.Get(nodename+'/'+samp.replace('*',mass)).IntegralAndError(-1, -1,acceptance_error) - if samp is 'bbH*': sf = 1.0 - else: - sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' - evt_nom = ana.info[sample_name]['evt'] - evt_var = ana.info[sample_name]['evt_'+samples[samp]] - sf = evt_nom/evt_var - acceptance_nosf = acceptance - acceptance*=sf - #if samples[samp] in ['wt_mur0p5_muf0p5', 'wt_mur1_muf0p5', 'wt_mur0p5_muf1']: down_dic[samples[samp]] = acceptance - #if samples[samp] in ['wt_mur2_muf2','wt_mur2_muf1','wt_mur1_muf2']: up_dic[samples[samp]] = acceptance - if samples[samp] in ['wt_mur0p5_muf0p5']: - down_dic[samples[samp]] = [acceptance,acceptance_error] - if samples[samp] in ['wt_mur2_muf2']: up_dic[samples[samp]] = [acceptance,acceptance_error] - if acceptance > scale_max: - scale_max = acceptance - up_error = acceptance_error - if acceptance < scale_min: - scale_min = acceptance - down_error = acceptance_error - if acceptance_nosf > scale_nosf_max: scale_nosf_max = acceptance_nosf - if acceptance_nosf < scale_nosf_min: scale_nosf_min = acceptance_nosf - #up_nom = LargestDiff(nominal,up_dic) - #down_nom = LargestDiff(nominal,down_dic) - up_nom = up_dic['wt_mur2_muf2'][0] - down_nom = down_dic['wt_mur0p5_muf0p5'][0] - uncert = (scale_max-scale_min)/2 - uncert_error = math.sqrt(up_error**2+down_error**2)/(scale_max-scale_min)*uncert - uncert_nosf = (scale_nosf_max-scale_nosf_min)/2 - uncert_alt_method = (up_nom-down_nom)/2 - uncert_alt_error = math.sqrt(up_dic['wt_mur2_muf2'][1]**2 + down_dic['wt_mur0p5_muf0p5'][1]**2)/(up_nom-down_nom) *uncert_alt_method - pythia_error=ROOT.Double() - pythia_yield = outfile.Get(nodename+'/bbH'+mass).IntegralAndError(-1, -1,pythia_error) - outstring +=mass#+ ' & '+ str(round(pythia_yield,1))+' $\pm$ '+str(round(pythia_error,1))+ ' & '+ str(round(nominal,1))+' $\pm$ '+str(round(nominal_error,1))+ '('+str(round((pythia_yield-nominal)*100/pythia_yield,2))+' \%)' + ' & '+ str(round(uncert_nosf/nominal,2)) + ' & '+ str(round(uncert/nominal,2))+ ' & '+ str(round(uncert_alt_method/nominal,2)) - if options.nlo_qsh: - outstring+=' & '+ str(round(100*qsh_uncert_1/nominal,1))+' $\pm$ '+str(round(100*qsh_error_1/nominal,1))+' & '+ str(round(100*qsh_uncert_2/nominal,1))+' $\pm$ '+str(round(100*qsh_error_2/nominal,1))+'\\\\\n' - else: - outstring+=' & '+ str(round(100*uncert/nominal,1))+'\\% $\\pm$ '+ str(round(100*uncert_error/nominal,1)) +'\\% & '+ str(round(100*uncert_alt_method/nominal,1))+'\\% $\\pm$ '+str(round(100*uncert_alt_error/nominal,1)) +'\\% \\\\\n' - #outstring2 +=str(round(100*uncert/nominal,1))+',' - #outstring3 +=str(round(100*uncert_error/nominal,1))+',' - #outstring4+=mass+',' - outstring+='\\hline\n\\end{tabular}}\n\\end{table}' - print outstring - #print outstring2 - #print outstring3 - #print outstring4 - -def ScaleUncertBand(nodename='',outfile='output.root',NormScales=True): - hist_names=['bbH*muR0.5muF0.5','bbH*muR1muF0.5','bbH*muR0.5muF1','bbH*muR2muF1','bbH*muR1muF2','bbH*muR2muF2'] - mass = '100' - if options.draw_signal_mass: mass = options.draw_signal_mass - hists=[] - for hist_name in hist_names: - sf = 1.0 - if NormScales: - sample_name='SUSYGluGluToBBHToTauTau_M-'+mass+'-NLO' - evt_nom = ana.info[sample_name]['evt'] - evt_var = ana.info[sample_name]['evt_'+hist_name.replace('bbH*','wt_').replace('muF','_muf').replace('muR','mur').replace('0.5','0p5')] - sf = evt_nom/evt_var - hist_name=hist_name.replace('*',mass) - hist = outfile.Get(nodename+'/'+hist_name).Clone() - if NormScales: hist.Scale(sf) - hists.append(hist) - nom_hist = outfile.Get(nodename+'/bbH'+mass) - up_hist = nom_hist.Clone() - down_hist = nom_hist.Clone() - up_hist.SetName('ScaleUp') - down_hist.SetName('ScaleDown') - for i in range (1,nom_hist.GetNbinsX()+2): - for hist in hists: - max_content = up_hist.GetBinContent(i) - min_content = down_hist.GetBinContent(i) - content = hist.GetBinContent(i) - if content > max_content: up_hist.SetBinContent(i,content) - if content < min_content: down_hist.SetBinContent(i,content) - outfile.cd(nodename) - up_hist.Write() - down_hist.Write() - outfile.cd() - - -def DYUncertBand(outfile='output.root',ScaleToData=True): - bkg_hist = outfile.Get(nodename+'/total_bkg') - nominal_hist = outfile.Get(nodename+'/ZLL') - up_hist = outfile.Get(nodename+'/total_bkg').Clone() - down_hist = outfile.Get(nodename+'/total_bkg').Clone() - up_hist.SetName('total_bkg_up') - down_hist.SetName('total_bkg_down') - shifts=['_ES', '_TT', '_Stat0', '_Stat40', '_Stat80'] - for i in range(1,nominal_hist.GetNbinsX()+2): - nom_content = nominal_hist.GetBinContent(i) - bkg_content = bkg_hist.GetBinContent(i) - uncert=0 - for shift in shifts: - shift_hist_up = outfile.Get(nodename+'/ZLL'+shift+'Up') - shift_hist_down = outfile.Get(nodename+'/ZLL'+shift+'Down') - up = abs(shift_hist_up.GetBinContent(i) - nom_content) - down = abs(shift_hist_down.GetBinContent(i) - nom_content) - uncert=math.sqrt(max([up,down])**2+uncert**2) - up_hist.SetBinContent(i, bkg_content+uncert) - down_hist.SetBinContent(i, bkg_content-uncert) - outfile.cd(nodename) - up_hist.Write() - down_hist.Write() - outfile.cd() - if ScaleToData: - data_hist=outfile.Get(nodename+'/data_obs') - data_total=data_hist.Integral(-1,-1) - bkg_total=bkg_hist.Integral(-1,-1) - data_hist.Scale(bkg_total/data_total) - outfile.cd(nodename) - data_hist.Write() - outfile.cd() - -def GetTotals(ana,add_name="",outfile='outfile.root'): - # add histograms to get totals for backgrounds split into real/fake taus and make a total backgrounds histogram - outfile.cd(nodename) - nodes = ana.nodes[nodename].SubNodes() - nodenames=[] - for node in nodes: nodenames.append(node.name) - # for i in ['TT', 'VV', 'Z']: - # j = 'T' - # outname = i+add_name - # first_hist=True - # if options.channel == 'em' and i is 'Z': - # if first_hist and 'ZLL'+add_name in nodenames: - # sum_hist = ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone() - # first_hist=False - # elif 'ZLL'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone()) - # if first_hist and'ZTT'+add_name in nodenames: - # sum_hist = ana.nodes[nodename].nodes['ZTT'+add_name].shape.hist.Clone() - # first_hist=False - # elif 'ZTT'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZTT'+add_name].shape.hist.Clone()) - # if not first_hist: - # sum_hist.SetName(outname) - # sum_hist.Write() - # elif (options.channel == 'zee' or options.channel == 'zmm') and i is 'Z': - # if first_hist and 'ZLL'+add_name in nodenames: - # sum_hist = ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone() - # first_hist=False - # elif 'ZLL'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes['ZLL'+add_name].shape.hist.Clone()) - # if not first_hist: - # sum_hist.SetName(outname) - # sum_hist.Write() - # else: - # if i is 'Z': - # outname = 'ZLL'+add_name - # j = 'L' - # if i+'J' or i+j in [node.name for node in nodes]: - # if first_hist and i+'J'+add_name in nodenames: - # sum_hist = ana.nodes[nodename].nodes[i+'J'+add_name].shape.hist.Clone() - # first_hist=False - # elif i+'J'+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes[i+'J'+add_name].shape.hist.Clone()) - # if first_hist and i+j+add_name in nodenames: - # sum_hist = ana.nodes[nodename].nodes[i+j+add_name].shape.hist.Clone() - # first_hist=False - # elif i+j+add_name in nodenames: sum_hist.Add(ana.nodes[nodename].nodes[i+j+add_name].shape.hist.Clone()) - # if not first_hist: - # sum_hist.SetName(outname) - # sum_hist.Write() - first_hist=True - for node in nodes: - if len(signal_samples) != 0: sig_samp_cond = [node.name.find(sig) != -1 for sig in signal_samples.keys()] - else: sig_samp_cond = [] - if True not in sig_samp_cond and node.name != 'data_obs' and node.name.find("_SM"+options.add_sm_background) ==-1 and not node.name.endswith('Up') and not node.name.endswith('Down'): - if options.embedding and node.name.startswith('ZTT'): continue - if 'embed_syst' in node.name: continue - if options.method == 18 and 'jetFakes' == node.name: continue - if options.channel == 'em' and node.name == 'W': continue - if add_name not in node.name: continue - if first_hist: - total_bkg = ana.nodes[nodename].nodes[node.name].shape.hist.Clone() - first_hist=False - else: total_bkg.Add(ana.nodes[nodename].nodes[node.name].shape.hist.Clone()) - if not first_hist: - total_bkg.SetName('total_bkg'+add_name) - total_bkg.Write() - outfile.cd() - - #hist = outfile.Get(nodename+'/total_bkg') - #qcd_hist = outfile.Get(nodename+'/QCD') - #ztt_hist = outfile.Get(nodename+'/ZTT') - #tot_sub = total_bkg.Integral(-1,-1) - qcd_hist.Integral(-1,-1) - ztt_hist.Integral(-1,-1) - #out_str='' - #hist_names = ['TT','VV','W','ZLL','EmbedZTT'] - #for name in hist_names: - # hist = outfile.Get(nodename+'/'+name) - # frac = hist.Integral(-1,-1)/tot_sub - # out_str+='%s = %.2f, ' % (name, frac) - #print out_str - - - -def CompareShapes(compare_w_shapes, compare_qcd_shapes): - if compare_w_shapes: - nominal_hist = outfile.Get(nodename+'/W') - nominal_scale = nominal_hist.Integral(0,nominal_hist.GetNbinsX()+2) - directory = outfile.Get(nodename) - outfile.cd(nodename) - shape_hist = outfile.Get(nodename+'/W_shape') - shape_scale = shape_hist.Integral(0,shape_hist.GetNbinsX()+2) - shape_hist.Scale(nominal_scale/shape_scale) - shape_hist.Write() - if compare_qcd_shapes: - nominal_hist = outfile.Get(nodename+'/QCD') - nominal_scale = nominal_hist.Integral() - directory = outfile.Get(nodename) - outfile.cd(nodename) - shape_hist = outfile.Get(nodename+'/QCD_shape') - shape_scale = shape_hist.Integral() - shape_hist.Scale(nominal_scale/shape_scale) - shape_hist.Write() - -def AppendNameToSamples(samples=[],name_to_add=None): - if name_to_add is None or name_to_add is '': return samples - elif type(samples) is dict: - new_samples = {} - for key in samples: new_samples[key] = samples[key]+name_to_add - return new_samples - else: - new_samples = [] - for sample in samples: new_samples.append(sample+name_to_add) - return new_samples - -def RunPlotting(ana, cat='',cat_data='', sel='', add_name='', wt='wt', do_data=True, samples_to_skip=[], outfile='output.root',ff_syst_weight=None): - doTTJ = 'TTJ' not in samples_to_skip - doTTT = 'TTT' not in samples_to_skip - doVVJ = 'VVJ' not in samples_to_skip - doVVT = 'VVT' not in samples_to_skip - doZL = 'ZL' not in samples_to_skip - doZJ = 'ZJ' not in samples_to_skip - - zll_samples=list(ztt_samples) - if options.analysis in ['cpdecay','cpprod','mssmrun2','vlq']: zll_samples+=ewkz_samples - - - # produce template for observed data - if do_data: - if options.do_ss: - OSSS = '!os' - else: - OSSS = 'os' - weight='wt' - if options.add_wt : weight+='*'+options.add_wt - full_selection = BuildCutString(weight, sel, cat_data, OSSS) - ana.nodes[nodename].AddNode(ana.SummedFactory('data_obs', data_samples, plot_unmodified, full_selection)) - - # produce templates for backgrounds - if options.method in [17] and options.channel != "em": - doVVJ=False - doTTJ=False - - - if 'jetFakes' not in samples_to_skip: - GenerateFakeTaus(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, options.cat,not options.do_ss,ff_syst_weight) - #if options.channel == 'tt': - - # use existing methods to calculate background due to non-fake taus - add_fake_factor_selection = "gen_match_2<6" - if options.channel == "tt": add_fake_factor_selection = "gen_match_1<6 && gen_match_2<6" - residual_cat=cat+"&&"+add_fake_factor_selection - if 'EmbedZTT' not in samples_to_skip and options.embedding: - GenerateEmbedded(ana, add_name, embed_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) - #if do_data: GenerateZTT(ana, add_name, ztt_samples+top_samples+vv_samples+ewkz_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) - #if 'ZTT' not in samples_to_skip and not options.embedding: - if 'ZTT' not in samples_to_skip: - GenerateZTT(ana, add_name, ztt_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) - if 'ZLL' not in samples_to_skip: - GenerateZLL(ana, add_name, zll_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss,doZL,False) - if 'TT' not in samples_to_skip: - GenerateTop(ana, add_name, top_samples, plot, wt, sel, residual_cat, top_sels, not options.do_ss, doTTT, doTTJ) - if 'VV' not in samples_to_skip: - GenerateVV(ana, add_name, vv_samples, plot, wt, sel, residual_cat, vv_sels, not options.do_ss, doVVT, doVVJ) - #if 'EWKZ' not in samples_to_skip and options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'tauid2016','cpsummer17','tauid2017','cp18','mvadm2016']: - #GenerateEWKZ(ana, add_name, ewkz_samples, plot, wt, sel, residual_cat, z_sels, not options.do_ss) - #if 'ggH_hww' not in samples_to_skip and 'qqH_hww' not in samples_to_skip and options.analysis == 'cpprod': - # GenerateHWW(ana, add_name, gghww_samples, qqhww_samples, plot, wt, sel, cat, not options.do_ss, True, True) - if 'W' not in samples_to_skip and options.channel=='tt' and options.analysis in ['cpprod','cpdecay','mssmrun2','vlq'] and 'VV' not in samples_to_skip and 'ZTT' not in samples_to_skip and not options.ml_ff: - GenerateW(ana, 'fakes'+add_name, ztt_samples+vv_samples+wjets_samples+ewkz_samples+top_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel+'&&gen_match_1!=6&&gen_match_2==6', cat, cat_data, 8, qcd_os_ss_ratio, not options.do_ss) - if options.channel in ['mt','et']: - # need to add back the other fake components when testing the FF validations - if options.w_ff_closure and not options.ml_ff: - if 'ZLL' not in samples_to_skip: - GenerateZLL(ana, add_name+'_res', ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss,False,True) - if 'TT' not in samples_to_skip: - GenerateTop(ana, add_name+'_res', top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, False, True) - if 'VV' not in samples_to_skip: - GenerateVV(ana, add_name+'_res', vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, False, True) - if 'QCD' not in samples_to_skip: - GenerateQCD(ana, add_name+'_res', data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 12, 1.1, not options.do_ss,wshift) - if options.qcd_ff_closure and not options.ml_ff: - if 'ZLL' not in samples_to_skip: - GenerateZLL(ana, add_name+'_res', ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss,False,True) - if 'TT' not in samples_to_skip: - GenerateTop(ana, add_name+'_res', top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, False, True) - if 'VV' not in samples_to_skip: - GenerateVV(ana, add_name+'_res', vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, False, True) - if 'W' not in samples_to_skip: - GenerateW(ana, add_name+'_res', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 8, qcd_os_ss_ratio, not options.do_ss) - - - else: - method = options.method - if options.method == 18: - - - if 'jetFakes' not in samples_to_skip: - GenerateFakeTaus(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, options.cat,not options.do_ss,ff_syst_weight) - if options.channel == 'tt': method = 8 - elif options.cat == "btag_loosemt" or options.cat == "btag_tight": method = 16 - elif options.channel == 'et' or options.channel == 'mt': method = 12 - if 'EmbedZTT' not in samples_to_skip and options.embedding and options.channel != 'zmm' and options.channel != 'zee': - GenerateEmbedded(ana, add_name, embed_samples, plot, wt, sel, cat, z_sels, not options.do_ss) - if options.cat in ['pass','fail']: - cat_pass = '('+cats['pass']+')*('+cats['baseline']+')' - cat_fail = '('+cats['fail']+')*('+cats['baseline']+')' - GenerateEmbedded(ana, '_pass'+add_name, embed_samples, plot, wt, sel, cat_pass, z_sels, not options.do_ss) - GenerateEmbedded(ana, '_fail'+add_name, embed_samples, plot, wt, sel, cat_fail, z_sels, not options.do_ss) - if 'ZTT' not in samples_to_skip and not options.embedding: - GenerateZTT(ana, add_name, ztt_samples, plot, wt, sel, cat, z_sels, not options.do_ss) - if 'ZTT' not in samples_to_skip and options.embedding and 'VV' not in samples_to_skip and 'TT' not in samples_to_skip: - GenerateZTT(ana, add_name, ztt_samples+top_samples+vv_samples+ewkz_samples, plot, wt, sel, cat, z_sels, not options.do_ss) - if 'ZLL' not in samples_to_skip: - GenerateZLL(ana, add_name, zll_samples, plot, wt, sel, cat, z_sels, not options.do_ss,doZL,doZJ) - if options.embedding and options.channel in ['zmm','zee'] and 'EmbedZLL' not in samples_to_skip: GenerateZLEmbedded(ana, add_name, embed_samples, plot, wt, sel, cat, z_sels, not options.do_ss) - if 'TT' not in samples_to_skip: - GenerateTop(ana, add_name, top_samples, plot, wt, sel, cat, top_sels, not options.do_ss, doTTT, doTTJ) - if 'mvadm' in options.cat: - cat_mvarho = '('+cats['mvadm_rho']+')*('+cats['baseline']+')' - cat_mvaa1 = '('+cats['mvadm_a1']+')*('+cats['baseline']+')' - cat_mvapi = '('+cats['mvadm_pi']+')*('+cats['baseline']+')' - cat_mvanotrho = '('+cats['mvadm_notrho']+')*('+cats['baseline']+')' - GenerateTop(ana, '_mvarho'+add_name, top_samples, plot, wt, sel, cat_mvarho, top_sels, not options.do_ss, doTTT, False) - GenerateTop(ana, '_mvaa1'+add_name, top_samples, plot, wt, sel, cat_mvaa1, top_sels, not options.do_ss, doTTT, False) - GenerateTop(ana, '_mvapi'+add_name, top_samples, plot, wt, sel, cat_mvapi, top_sels, not options.do_ss, doTTT, False) - GenerateTop(ana, '_mvanotrho'+add_name, top_samples, plot, wt, sel, cat_mvanotrho, top_sels, not options.do_ss, doTTT, False) - if 'VV' not in samples_to_skip: - GenerateVV(ana, add_name, vv_samples, plot, wt, sel, cat, vv_sels, not options.do_ss, doVVT, doVVJ) - if 'mvadm' in options.cat: - cat_mvarho = '('+cats['mvadm_rho']+')*('+cats['baseline']+')' - cat_mvaa1 = '('+cats['mvadm_a1']+')*('+cats['baseline']+')' - cat_mvapi = '('+cats['mvadm_pi']+')*('+cats['baseline']+')' - cat_mvanotrho = '('+cats['mvadm_notrho']+')*('+cats['baseline']+')' - GenerateVV(ana, '_mvarho'+add_name, vv_samples, plot, wt, sel, cat_mvarho, vv_sels, not options.do_ss, doVVT, False) - GenerateVV(ana, '_mvaa1'+add_name, vv_samples, plot, wt, sel, cat_mvaa1, vv_sels, not options.do_ss, doVVT, False) - GenerateVV(ana, '_mvapi'+add_name, vv_samples, plot, wt, sel, cat_mvapi, vv_sels, not options.do_ss, doVVT, False) - GenerateVV(ana, '_mvanotrho'+add_name, vv_samples, plot, wt, sel, cat_mvanotrho, vv_sels, not options.do_ss, doVVT, False) - if 'W' not in samples_to_skip: - sel_mod=sel - if options.method==0 and True in ['baseline_aisotau1' in x for x in options.set_alias] and options.channel=='tt': sel_mod =sel+'&&(gen_match_1==6)' - if options.method==0 and True in ['baseline_aisotau2' in x for x in options.set_alias] and options.channel=='tt': sel_mod =sel+'&&(gen_match_2==6)' - GenerateW(ana, add_name, wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel_mod, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss) - if 'QCD' not in samples_to_skip: - GenerateQCD(ana, add_name, data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) - #if 'EWKZ' not in samples_to_skip and options.era in ['smsummer16','cpsummer16','cpdecay16',"legacy16",'tauid2016','cpsummer17','tauid2017','cp18','mvadm2016'] and options.method!=0: - # GenerateEWKZ(ana, add_name, ewkz_samples, plot, wt, sel, cat, z_sels, not options.do_ss) - #if 'ggH_hww' not in samples_to_skip and 'qqH_hww' not in samples_to_skip and options.analysis in ['cpprod','mssmrun2'] and options.channel == 'em': - # GenerateHWW(ana, add_name, gghww_samples, qqhww_samples, plot, wt, sel, cat, not options.do_ss, True, True) - if options.method==0 and options.channel=='tt': - sel_mod = sel - if True in ['baseline_aisotau1' in x for x in options.set_alias]: sel_mod =sel+'&&(gen_match_1!=6)' - if True in ['baseline_aisotau2' in x for x in options.set_alias]: sel_mod =sel+'&&(gen_match_2!=6)' - GenerateW(ana, add_name+'_realextra', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel_mod, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss) - # used to plot em QCD uncerts - #GenerateQCD(ana, '_shapeup', data_samples, plot, plot_unmodified, wt+'*wt_em_qcd_shapeup', sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) - #GenerateQCD(ana, '_shapedown', data_samples, plot, plot_unmodified, wt+'*wt_em_qcd_shapedown', sel, cat, cat_data, method, qcd_os_ss_ratio, not options.do_ss,wshift) - - if compare_w_shapes: - cat_relax=cats['w_shape_comp'] - GenerateW(ana, '_shape', wjets_samples, data_samples, wgam_samples, plot, plot_unmodified, wt, sel, cat_relax, cats_unmodified['w_shape_comp'], 8, qcd_os_ss_ratio, not options.do_ss) - if compare_qcd_shapes: - if options.channel == 'em': - GenerateQCD(ana, '_shape', data_samples, plot, plot_unmodified, wt, sel, cat, cat_data, 19, qcd_os_ss_ratio, not options.do_ss,wshift) - else: - cat_relax=cats['qcd_shape_comp'] - GenerateQCD(ana, '_shape', data_samples, plot, plot_unmodified, wt, sel, cat_relax,cats_unmodified['qcd_shape_comp'], method, qcd_os_ss_ratio, not options.do_ss) - - if 'signal' not in samples_to_skip: - if options.analysis in ['sm','cpprod','cpdecay']: - procs=[] - for proc in sm_samples: - if True not in [samp in proc for samp in samples_to_skip]: procs.append(proc) - if options.analysis == 'cpdecay' and options.sm_masses!="": GenerateReweightedCPSignal(ana, add_name, plot, wt, sel, cat, not options.do_ss) - elif options.analysis == 'cpprod' and options.sm_masses!="": GenerateReweightedCPProdSignal(ana, add_name, plot, wt, sel, cat, not options.do_ss) - else: GenerateSMSignal(ana, add_name, plot, sm_masses, wt, sel, cat, not options.do_ss,processes=procs) - elif options.analysis in ['mssm','mssmrun2'] and (options.ggh_masses != "" or options.bbh_masses != "" or options.ggh_masses_powheg != "" or options.bbh_masses_powheg != "") : - bbh_add_name = '' - if options.bbh_nlo_masses and not options.bbh_masses_powheg: bbh_add_name = '-LO' - #GenerateMSSMSignal(ana, add_name, bbh_add_name, plot, ggh_masses, bbh_masses, wt, sel, cat, not options.do_ss) - GenerateMSSMSignal(ana, add_name, bbh_add_name, plot, [], bbh_masses, wt, sel, cat, not options.do_ss) - if options.add_sm_background: - GenerateSMSignal(ana, add_name, plot, ['125'], wt, sel, cat, not options.do_ss, options.add_sm_background) - elif options.analysis == 'Hhh': - GenerateHhhSignal(ana, add_name, plot, ggh_masses, wt, sel, cat, not options.do_ss) - elif options.analysis == 'vlq': - GenerateVLQSignal(ana, add_name, plot, options.vlq_sig, wt, sel, cat, not options.do_ss) - if options.analysis in ['mssm','mssmrun2'] and options.bbh_nlo_masses != "": - GenerateNLOMSSMSignal(ana, add_name, plot, [''], bbh_nlo_masses, wt, sel, cat, options.doNLOScales, options.doPDF, not options.do_ss) - if options.analysis in ['mssm','mssmrun2'] and options.doMSSMReWeighting: - GenerateReWeightedMSSMSignal(ana, add_name, plot, ggh_masses, wt, sel, cat, not options.do_ss) - - if options.syst_embedding_tt and options.embedding and systematic == 'default': - GenerateTop(ana, '_embed_syst', top_samples, plot, wt, sel, cat, top_sels_embed, not options.do_ss, True, False) - GenerateVV(ana, '_embed_syst', vv_samples, plot, wt, sel, cat, top_sels_embed, not options.do_ss, True, False) - - -def Get1DBinNumFrom2D(h2d,xbin,ybin): - Nxbins = h2d.GetNbinsX() - return (ybin-1)*Nxbins + xbin -1 - - -def Get1DBinNumFrom3D(h3d,xbin,ybin,zbin): - Nxbins = h3d.GetNbinsX() - Nybins = h3d.GetNbinsY() - return (zbin-1)*Nxbins*Nybins + (ybin-1)*Nxbins + xbin -1 - - -def UnrollHist2D(h2d,inc_y_of=True): - # inc_y_of = True includes the y over-flow bins - if inc_y_of: n = 1 - else: n = 0 - Nbins = (h2d.GetNbinsY()+n)*(h2d.GetNbinsX()) - h1d = ROOT.TH1D(h2d.GetName(), '', Nbins, 0, Nbins) - for i in range(1,h2d.GetNbinsX()+1): - for j in range(1,h2d.GetNbinsY()+1+n): - glob_bin = Get1DBinNumFrom2D(h2d,i,j) - content = h2d.GetBinContent(i,j) - error = h2d.GetBinError(i,j) - h1d.SetBinContent(glob_bin+1,content) - h1d.SetBinError(glob_bin+1,error) - #if 'sjdphi' in plot: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) - #else: - # h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.0f-%.0f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) - #if 'sdphi' in options.var: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h2d.GetXaxis().GetBinLowEdge(i),h2d.GetXaxis().GetBinLowEdge(i+1))) - #h1d.LabelsOption('v','X') - return h1d - - -def UnrollHist3D(h3d,inc_y_of=False,inc_z_of=True): - if inc_y_of: ny = 1 - else: ny = 0 - if inc_z_of: nz = 1 - else: nz = 0 - - Nbins = (h3d.GetNbinsZ()+nz)*(h3d.GetNbinsY()+ny)*(h3d.GetNbinsX()) - h1d = ROOT.TH1D(h3d.GetName(), '', Nbins, 0, Nbins) - for i in range(1,h3d.GetNbinsX()+1): - for j in range(1,h3d.GetNbinsY()+1+ny): - for k in range(1,h3d.GetNbinsZ()+1+nz): - glob_bin = Get1DBinNumFrom3D(h3d,i,j,k) - content = h3d.GetBinContent(i,j,k) - error = h3d.GetBinError(i,j,k) - h1d.SetBinContent(glob_bin+1,content) - h1d.SetBinError(glob_bin+1,error) - #if 'sjdphi' in plot: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) - #else: - # h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.0f-%.0f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) - # if 'sdphi' in options.var: h1d.GetXaxis().SetBinLabel(glob_bin+1,'%.1f-%.1f' % (h3d.GetXaxis().GetBinLowEdge(i),h3d.GetXaxis().GetBinLowEdge(i+1))) - #h1d.LabelsOption('v','X') - return h1d - - -def NormSignals(outfile,add_name): - # When adding signal samples to the data-card we want to scale all XS to 1pb - correct XS times BR is then applied at combine harvestor level - samples_to_skip = add_names_dict[add_name] - if 'signal' not in samples_to_skip: - outfile.cd(nodename) - if options.analysis in ['sm','cpprod','cpdecay'] or options.add_sm_background: - if options.analysis == "sm": - masses = sm_masses - else: - masses = [options.add_sm_background] - for samp in sm_samples: - if options.analysis == "sm": - samp_name = samp - else: - samp_name = samp+"_SM" - if masses is not None: - for mass in masses: - if isinstance(sm_samples[samp], (list,)): xs = ana.info[sm_samples[samp][0].replace('*',mass)]['xs'] - else: xs = ana.info[sm_samples[samp].replace('*',mass)]['xs'] - if xs == 1.: continue - sf = 1.0/xs - if not outfile.GetDirectory(nodename).GetListOfKeys().Contains(samp_name+mass+add_name): continue - sm_hist = outfile.Get(nodename+'/'+samp_name+mass+add_name) - sm_hist.Scale(sf) - sm_hist.Write("",ROOT.TObject.kOverwrite) - if options.analysis in ["mssm",'mssmrun2']: - for samp in mssm_samples: - if samp == 'ggH': - masses = ggh_masses - elif samp == 'bbH' and not options.bbh_nlo_masses: - masses = bbh_masses - elif 'bbH' in samp: - masses = bbh_nlo_masses - if masses is not None: - for mass in masses: - xs = ana.info[mssm_samples[samp].replace('*',mass)]['xs'] - if xs == 1.: continue - sf = 1.0/xs - if sf == 1.0: continue - mssm_hist = outfile.Get(nodename+'/'+samp+mass+add_name) - mssm_hist.Scale(sf) - mssm_hist.Write("",ROOT.TObject.kOverwrite) - if options.doMSSMReWeighting and samp == 'ggH': - re_weighted_names = ['ggh_t_','ggh_b_','ggh_i_','ggH_t_','ggH_b_','ggH_i_','ggA_t_','ggA_b_','ggA_i_'] - #re_weighted_names = ['ggH_t_','ggH_b_','ggH_i_','ggA_t_','ggA_b_','ggA_i_'] - for name in re_weighted_names: - mssm_hist = outfile.Get(nodename+'/'+name+mass+add_name) - #mssm_hist = ana.nodes[nodename].nodes[name+mass+add_name].shape.hist - mssm_hist.Scale(sf) - mssm_hist.Write("",ROOT.TObject.kOverwrite) - if options.analysis == "Hhh": - for samp in Hhh_samples: - masses = ggh_masses - if masses is not None: - for mass in masses: - xs = ana.info[Hhh_samples[samp].replace('*',mass)]['xs'] - if xs == 1.: continue - sf = 1.0/xs - mssm_hist = outfile.Get(nodename+'/'+samp+mass+add_name) - mssm_hist.Scale(sf) - mssm_hist.Write("",ROOT.TObject.kOverwrite) - if options.analysis == "vlq": - for samp in vlq_samples: - xs = ana.info[vlq_samples[samp]]['xs'] - if xs == 1.: continue - sf = 1.0/xs - vlq_hist = outfile.Get(nodename+'/'+samp+add_name) - vlq_hist.Scale(sf) - vlq_hist.Write("",ROOT.TObject.kOverwrite) - outfile.cd() - - -def RenameMSSMrun2Datacards(outfile): - chan = options.channel - renames = { - 'CMS_eff_trigger_' : 'CMS_eff_trigger_emb_', - 'CMS_eff_xtrigger_l_' : 'CMS_eff_xtrigger_l_emb_', - 'CMS_eff_xtrigger_t_': 'CMS_eff_xtrigger_t_emb_', - 'CMS_eff_t_': 'CMS_eff_t_emb_', - 'CMS_scale_e' : 'CMS_scale_e_emb', - 'CMS_scale_t_' : 'CMS_scale_t_emb_', - 'CMS_eff_trigger_single_t_':'CMS_eff_trigger_single_t_emb_', - 'scale_embed_met_' : 'scale_embed_met_%s_' % chan, - } - directory = outfile.Get(nodename) - - - # count number of directories - count = 0 - print nodename - print directory - print outfile - for key in directory.GetListOfKeys(): - count += 1 - print key - - i = 0 - for key in directory.GetListOfKeys(): - if i < count: - name = key.GetName() - histo = directory.Get(name) - if not isinstance(histo,ROOT.TDirectory) and 'EmbedZTT' in name: - new_name = name.replace('EmbedZTT', 'EMB') - histo.SetName(new_name) - directory.cd() - #histo.Write(new_name,ROOT.TObject.kWriteDelete) - histo.Write(new_name) - directory.Delete(name+';1') - for x in renames: - if x in new_name: - histo_clone = histo.Clone() - y = renames[x] - new_name_2 = new_name.replace(x,y) - print new_name,new_name_2 - histo_clone.SetName(new_name_2) - histo_clone.Write(new_name_2) - break - elif not isinstance(histo,ROOT.TDirectory) and 'VVT' in name and not 'VVT_for_ZTT' in name: - new_name = name.replace('VVT', 'VVL') - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'TTT' in name and not 'TTT_for_ZTT' in name: - new_name = name.replace('TTT', 'TTL') - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'for_ZTT' in name: - new_name = name.replace('_for_ZTT', '') - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'Wfakes' in name: - new_name = name.replace('Wfakes', 'wFakes') - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - #elif not isinstance(histo,ROOT.TDirectory) and ('ggH_' in name or 'ggA_' in name) and name[:6].count('_') == 1: - #new_name = name[:5]+'_'+name[5:] - #histo.SetName(new_name) - #directory.cd() - #histo.Write(new_name) - #directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'bbH' in name and name[:4].count('_') == 0: - new_name = name[:3]+'_'+name[3:] - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - #elif isinstance(histo,ROOT.TDirectory): - # directory.Delete(name+';1') - #elif not isinstance(histo,ROOT.TDirectory) and ('WplusH' in name or 'WminusH' in name): - #directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'ggH' in name and name[:4].count('_') == 0 and 'ggH125_SM' not in name and 'ggH95' not in name: - directory.Delete(name+';1') - elif not isinstance(histo,ROOT.TDirectory) and 'ggH125_SM' in name : - new_name = name.replace('ggH125_SM', 'ggH125') - histo.SetName(new_name) - directory.cd() - histo.Write(new_name) - directory.Delete(name+';1') - - - i += 1 - - - - - - -def TotalUnc(h0, hists=[]): - #sum in quadrature several systematic uncertainties to form total uncertainty band - hout = h0.Clone() - hup = h0.Clone() - hdown = h0.Clone() - hout.SetName(h0.GetName()+'_uncerts_total') - hup.SetName(h0.GetName()+'_uncerts_total_up') - hdown.SetName(h0.GetName()+'_uncerts_total_down') - for i in range(1,h0.GetNbinsX()+2): - x0 = h0.GetBinContent(i) - uncerts_up = [0.] - uncerts_down = [0.] - for h in hists: - x = h.GetBinContent(i) - if x>x0: uncerts_up.append(x-x0) - if x 0: - ana = Analysis() - #if options.syst_scale_j_by_source != '': ana.writeSubnodes(False) # storing subnodes uses too much memory when doing JES uncertainties split by source - - ana.remaps = {} - if options.channel == 'em': - ana.remaps['MuonEG'] = 'data_obs' - elif options.channel in ['mt','mj','zmm']: - if options.era == '22': - ana.remaps['Muon'] = 'data_obs' - else: - ana.remaps['SingleMuon'] = 'data_obs' - elif (options.era != 'cp18' and options.era != 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): - ana.remaps['SingleElectron'] = 'data_obs' - elif (options.era == 'cp18' or options.era == 'UL_18') and (options.channel == 'et' or options.channel == 'zee'): - ana.remaps['EGamma'] = 'data_obs' - elif options.channel == 'tt': - ana.remaps['Tau'] = 'data_obs' - - ana.nodes.AddNode(ListNode(nodename)) - print ana.remaps - - prev_dir=None - for index, systematic in enumerate(list(systematics.keys())[:max_systs_per_pass]): - syst_names[systematic] = systematics[systematic][1] - if prev_dir is not None and systematics[systematic][0] is not prev_dir: continue # this ensures that we process the same trees from every call to ana.Run() - i.e trees in sub-directory systematics[systematic][0] - prev_dir = systematics[systematic][0] - print "Processing:", systematic - print "" - print systematics[systematic][0] - - - plot = options.var - cats=copy.deepcopy(cats_unmodified) - wshift=1.0 - if systematic == 'syst_qcd_shape_wsf_up' and w_abs_shift is not None: wshift+=w_abs_shift - if systematic == 'syst_qcd_shape_wsf_down' and w_abs_shift is not None: wshift-=w_abs_shift - if (options.syst_scale_j_by_source != '' and 'syst_scale_j_by_source' in systematic) or (options.syst_jfake_scale and 'syst_jfake_scale_approx' in systematic): - # if JES systematic split by source then the category and plotting variable strings need to be modified to use the shifted variables - replace_dict = systematics[systematic][5] - for cat in cats: cats[cat] = OverwriteNames(cats[cat], replace_dict) - plot = OverwriteNames(plot, replace_dict) - - add_folder_name = systematics[systematic][0] - add_name = systematics[systematic][1] - isFFSyst = systematics[systematic][4] - ff_syst_weight = None - if not isFFSyst: weight = systematics[systematic][2] - else: - weight='wt' - ff_syst_weight = systematics[systematic][2] - if options.add_wt is not "": weight+="*"+options.add_wt - if options.channel == "tt" and options.era == 'mssmsummer16': weight+='*wt_tau_id_medium' - if options.channel == "tt" and options.era in ['smsummer16']: weight+='*wt_tau_id_tight' - if options.cat == '0jet' and options.era in ['smsummer16']: weight+='*wt_lfake_rate' - - - samples_to_skip = systematics[systematic][3] - add_names.append(add_name) - syst_add_name=add_folder_name - - - - mc_input_folder_name = options.folder - if add_folder_name != '': mc_input_folder_name += '/'+add_folder_name - - if options.signal_folder: signal_mc_input_folder_name = options.signal_folder - else: signal_mc_input_folder_name = options.folder - if add_folder_name != '': signal_mc_input_folder_name += '/'+add_folder_name - - if options.embed_folder: embed_input_folder_name = options.embed_folder - else: embed_input_folder_name = options.folder - if add_folder_name != '' and 'EmbedZTT' not in samples_to_skip: embed_input_folder_name += '/'+add_folder_name - - # Add all data files - for sample_name in data_samples: - ana.AddSamples(options.folder+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) - - print("------------------") - print(data_samples) - print("------------------") - # Add all MC background files - for sample_name in ztt_samples + vv_samples + wgam_samples + top_samples + wjets_samples+ewkz_samples+gghww_samples+qqhww_samples: - ana.AddSamples(mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) - #ana.AddSamples(mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', options.folder+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), sample_name) # this fixes issues if a sample is not included in systematic sub directory (e.g because systematics doesn't affect it) but at the same time can make it easier to miss issues like a sample missing that should be there - print("------------------") - print(ztt_samples,vv_samples,wgam_samples,top_samples,wjets_samples,ewkz_samples,gghww_samples,qqhww_samples) - print("------------------") - # Add embedded samples if using - if options.embedding: - for sample_name in embed_samples: - ana.AddSamples(embed_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) - - # Add all MC signal files - - if options.analysis in ['sm','cpprod','cpdecay']: - signal_samples = sm_samples - elif options.analysis in ['mssm','mssmrun2']: - signal_samples = mssm_samples - if options.bbh_nlo_masses and mssm_nlo_samples: signal_samples['bbH'] = mssm_nlo_samples['bbH'] - if options.nlo_qsh: signal_samples.update(mssm_nlo_qsh_samples) - if options.bbh_nlo_masses and options.bbh_masses: signal_samples.update(mssm_lo_samples) - elif options.analysis == 'Hhh': - signal_samples = Hhh_samples - elif options.analysis == "vlq": - signal_samples = vlq_samples - - - for samp in signal_samples: - if options.analysis in ['sm','cpprod','cpdecay']: - masses=sm_masses - elif samp == 'ggH': - masses = ggh_masses - elif (samp == 'bbH' and not options.bbh_nlo_masses) or samp == 'bbH-LO': - masses = bbh_masses - elif 'bbH' in samp: - masses = bbh_nlo_masses - elif options.analysis == "vlq": - masses = None - if masses is not None: - for mass in masses: - sample_names=[] - if isinstance(signal_samples[samp], (list,)): - for i in signal_samples[samp]: sample_names.append(i.replace('*',mass)) - else: sample_names = [signal_samples[samp].replace('*',mass)] - tree_name = 'ntuple' - if options.gen_signal: tree_name = 'gen_ntuple' - for sample_name in sample_names: - #if 'amcatnloFXFX' in sample_name and False: - # new_sig_folder = '/vols/cms/dw515/Offline/output/SM/Oct26_2016_newsig/' - # if add_folder_name != '': new_sig_folder += '/'+add_folder_name - ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), tree_name, None, sample_name) - elif options.analysis == "vlq": - if options.vlq_sig != "": - if samp in options.vlq_sig.split(","): - sample_names=[] - if isinstance(vlq_samples[samp], (list,)): - for i in vlq_samples[samp]: sample_names.append(i) - else: sample_names = [vlq_samples[samp]] - for sample_name in sample_names: - ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) - #ana.AddSamples(signal_mc_input_folder_name+'/'+signal_samples[samp]+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, signal_samples[samp]) - - - if options.add_sm_background and options.analysis in ['mssm','mssmrun2']: - for samp in sm_samples: - sample_names=[] - if isinstance(sm_samples[samp], (list,)): - for i in sm_samples[samp]: sample_names.append(i.replace('*',options.add_sm_background)) - else: sample_names = [sm_samples[samp].replace('*',options.add_sm_background)] - for sample_name in sample_names: - ana.AddSamples(signal_mc_input_folder_name+'/'+sample_name+'_'+options.channel+'_{}.root'.format(options.year), 'ntuple', None, sample_name) - - - - - - - - ana.AddInfo(options.paramfile, scaleTo='data_obs') - - # Add data only for default - if systematic == 'default': do_data = True - else: do_data = False - - #Run default plot - if options.scheme == 'signal': - samples_to_skip.extend(['TTT','TTJ','VVT','VVJ','W','QCD','jetFakes','ZLL','ZTT','ZL','EWKZ','ggH_hww']) - do_data = False - if options.scheme == "noTT": - samples_to_skip.extend(["TTT","TTJ"]) - if options.scheme == "signalQCD": - samples_to_skip.extend(['TTT','TTJ','VVT','VVJ','W','jetFakes','ZLL','ZTT','ZL','EWKZ','ggH_hww']) - RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, add_name, weight, do_data, samples_to_skip,outfile,ff_syst_weight) - #if options.era == "tauid2016" and options.channel in ['et','mt']: - # RunPlotting(ana, cats['pass']+'&&'+cats['baseline'], cats_unmodified['pass']+'&&'+cats_unmodified['baseline'], sel, "pass"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) - # RunPlotting(ana, cats['fail']+'&&'+cats['baseline'], cats_unmodified['fail']+'&&'+cats_unmodified['baseline'], sel, "fail"+add_name, weight, False, samples_to_skip,outfile,ff_syst_weight) - - if options.do_custom_uncerts and options.custom_uncerts_wt_up != "" and options.custom_uncerts_wt_down !="": - add_names.append("_custom_uncerts_up") - add_names.append("_custom_uncerts_down") - RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, '_custom_uncerts_up', weight+'*'+options.custom_uncerts_wt_up, do_data, ['signal'],outfile,ff_syst_weight) - RunPlotting(ana, cats['cat'], cats_unmodified['cat'], sel, '_custom_uncerts_down', weight+'*'+options.custom_uncerts_wt_down, do_data, ['signal'],outfile,ff_syst_weight) - - - add_names_dict[add_name] = samples_to_skip - - del systematics[systematic] - if options.plot_from_dc == "": - ana.Run() - ana.nodes.Output(outfile) - - - # fix negative bns,empty histograms etc. - FixBins(ana,outfile) - for n in add_names: - GetTotals(ana,n,outfile) - PrintSummary(nodename, ['data_obs'], add_names) - - -if compare_w_shapes or compare_qcd_shapes: CompareShapes(compare_w_shapes, compare_qcd_shapes) - -#if options.method in [17,18] and options.do_ff_systs: NormFFSysts(ana,outfile) -if (options.era in ["smsummer16"] and options.syst_w_fake_rate and options.method != 8) or options.era in ["tauid2016"]: NormWFakeSysts(ana,outfile) -#NormEmbedToMC(ana,outfile) # this is to check embedding sensitivity after scaling embedding to MC yields - - -if options.syst_embedding_tt and options.embedding and not options.no_default: TTBarEmbeddingSyst(ana,outfile,options.syst_embedding_tt) - - -if options.doNLOScales: - ScaleUncertBand(nodename,outfile) - DONLOUncerts(nodename,outfile) -if options.doPDF: - PDFUncerts(nodename,outfile) - - -def Symmetrise(hist): - nbins = hist.GetNbinsX() - if nbins % 2: - print 'N X bins in 2D histogram is not even so cannot symmetrise!' - return - to_skip = ['data_obs','ggH','qqH','WH','WplusH','WminusH','ZH'] - to_skip = ['data_obs'] - if True in [x in hist.GetName() for x in to_skip]: return - for i in range(1,nbins/2+1): - lo_bin = i - hi_bin = nbins-i+1 - for j in range(1,hist.GetNbinsY()+2): - c1 = hist.GetBinContent(lo_bin,j) - c2 = hist.GetBinContent(hi_bin,j) - e1 = hist.GetBinError(lo_bin,j) - e2 = hist.GetBinError(hi_bin,j) - cnew = (c1+c2)/2 - enew = math.sqrt(e1**2 + e2**2)/2 - hist.SetBinContent(lo_bin,j,cnew) - hist.SetBinContent(hi_bin,j,cnew) - hist.SetBinError(lo_bin,j,enew) - hist.SetBinError(hi_bin,j,enew) - - -def MergeXBins(hist): - nxbins = hist.GetNbinsX() - nybins = hist.GetNbinsY() - nbins = hist.GetNbinsX()*hist.GetNbinsY() - to_skip = ['data_obs','ggH','qqH','WH','WplusH','WminusH','ZH'] - if True in [x in hist.GetName() for x in to_skip]: return - for i in range(1,nybins+2): - tot_err = ROOT.Double() - tot = hist.IntegralAndError(1,nxbins,i,i,tot_err) - for j in range(1, nxbins+1): - hist.SetBinContent(j,i,tot/nxbins) - hist.SetBinError(j,i,tot_err/nxbins) - - -## print average weights -#x_lines = [] -#y_labels = [] -#directory = outfile.Get(nodename) -#outfile.cd(nodename) -#for key in directory.GetListOfKeys(): -# hist_name = key.GetName() -# hist = directory.Get(hist_name).Clone() -# -# if not isinstance(hist,ROOT.TDirectory): -# print hist.GetName(), hist.GetEntries(), hist.Integral(-1,-1)/hist.GetEntries() - - -# sm 2D unrolling -if is_2d and options.do_unrolling: - x_lines = [] - y_labels = [] - first_hist = True - # loop over all TH2Ds and for each one unroll to produce TH1D and add to datacard - directory = outfile.Get(nodename) - outfile.cd(nodename) - hists_to_add = [] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - hist = directory.Get(hist_name).Clone() - - if not isinstance(hist,ROOT.TDirectory): - include_of = True - if 'dijet' in options.cat: include_of = False - - if options.symmetrise: Symmetrise(hist) - if options.mergeXbins: MergeXBins(hist) - - - h1d = UnrollHist2D(hist,include_of) - hists_to_add.append(h1d) - if first_hist: - first_hist=False - Nxbins = hist.GetNbinsX() - for i in range(1,hist.GetNbinsY()+1): x_lines.append(Nxbins*i) - for j in range(1,hist.GetNbinsY()+1): y_labels.append([hist.GetYaxis().GetBinLowEdge(j),hist.GetYaxis().GetBinLowEdge(j+1)]) - if include_of: y_labels.append([hist.GetYaxis().GetBinLowEdge(hist.GetNbinsY()+1),-1]) - for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) - - -# sm 3D unrolling -if is_3d and options.do_unrolling: - x_lines = [] - y_labels = [] - z_labels = [] - first_hist = True - # loop over all TH3Ds and for each one unroll to produce TH1D and add to datacard - directory = outfile.Get(nodename) - outfile.cd(nodename) - hists_to_add = [] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - hist = directory.Get(hist_name).Clone() - if not isinstance(hist,ROOT.TDirectory): - include_y_of = False - include_z_of = True - h1d = UnrollHist3D(hist,include_y_of,include_z_of) - hists_to_add.append(h1d) - if first_hist: - first_hist=False - Nxbins = hist.GetNbinsX() - for i in range(1,hist.GetNbinsY()+1): x_lines.append(Nxbins*i) - for j in range(1,hist.GetNbinsY()+1): y_labels.append([hist.GetYaxis().GetBinLowEdge(j),hist.GetYaxis().GetBinLowEdge(j+1)]) - if include_y_of: y_labels.append([hist.GetYaxis().GetBinLowEdge(hist.GetNbinsY()+1),-1]) - for j in range(1,hist.GetNbinsZ()+1): z_labels.append([hist.GetZaxis().GetBinLowEdge(j),hist.GetZaxis().GetBinLowEdge(j+1)]) - if include_z_of: z_labels.append([hist.GetZaxis().GetBinLowEdge(hist.GetNbinsZ()+1),-1]) - for hist in hists_to_add: hist.Write("",ROOT.TObject.kOverwrite) - - - - -# make systematic uncertainty histograms - - -custom_uncerts_up_name = options.custom_uncerts_up_name -custom_uncerts_down_name = options.custom_uncerts_down_name -#if len(syst_names)>1 and options.do_custom_uncerts: -if options.do_custom_uncerts: - - - custom_uncerts_up_name = 'total_bkg_uncerts_total_up' - custom_uncerts_down_name = 'total_bkg_uncerts_total_down' - - - directory = outfile.Get(nodename) - h0 = directory.Get('total_bkg') - hists=[] - - - for x in syst_names: - if x == 'default': continue - h=h0.Clone() - syst = syst_names[x] - print 'add syst', x, syst, h0.Integral() - h.SetName(h0.GetName()+syst) - for key in directory.GetListOfKeys(): - name = key.GetName() - if name.startswith('ggH') or name.startswith('bbH') or name.startswith('qqH') or name.startswith('VH') or name.startswith('ZH') or name.startswith('WH') or name.startswith('WplusH') or name.startswith('WminusH'): continue - histo = directory.Get(name) - if not isinstance(histo,ROOT.TDirectory) and name.endswith(syst) and not name.startswith('jetFakes_norm'): - #print name.replace(syst,''), name, histo.Integral() - histo_nom = directory.Get(name.replace(syst,'')) - histo.Add(histo_nom,-1) - if 'scale_embed_met' in name: - # this part scales the embed MET uncertainties to their actual values - scales = { - "mt_2018": 0.29, - "mt_2017": 0.69, - "mt_2016": 0.44, - "et_2018": 0.29, - "et_2017": 0.69, - "et_2016": 0.44, - "tt_2018": 0.29, - "tt_2017": 0.69, - "tt_2016": 0.44, - } - scale = (scales['%s_%s' % (options.channel,options.year)]**2+0.1**2)**.5 - print 'scaling ', name, ' by ', scale - for i in range(1,histo.GetNbinsX()+1): - histo.SetBinContent(i,histo.GetBinContent(i)*scale) - h.Add(histo) - hists.append(h.Clone()) - - - norm_systs = {} - if options.embedding: - if options.channel in ['em']: - norm_systs['embed_yield'] = (0.04,['EmbedZTT']) - norm_systs['dy_xs'] = (0.02,['ZLL']) - norm_systs['lumi'] = (0.025,['TTT','VVT','ZLL']) - else: - norm_systs['embed_yield'] = (0.04,['EmbedZTT']) - norm_systs['dy_xs'] = (0.02,['ZL']) - norm_systs['lumi'] = (0.025,['TTT','VVT','ZL']) - else: - if options.channel in ['em']: - norm_systs['dy_xs'] = (0.02,['ZLL','ZTT']) - norm_systs['lumi'] = (0.025,['TTT','VVT','ZLL','ZTT']) - else: - norm_systs['dy_xs'] = (0.02,['ZL','ZTT']) - norm_systs['lumi'] = (0.025,['TTT','VVT','ZL','ZTT']) - norm_systs['ttbar_xs'] = (0.04,['TTT']) - norm_systs['vv_xs'] = (0.05,['VVT']) - if options.channel == 'tt': - if options.embedding: norm_systs['tau_id'] = (0.06,['EmbedZTT']) - else: norm_systs['tau_id'] = (0.06,['ZTT']) - norm_systs['wfakes_yield'] = (0.2,['Wfakes']) - norm_systs['l_fakerate'] = (0.05,['VVT','ZL','TTT']) - if options.channel in ['et','mt']: - if options.embedding: - norm_systs['tau_id'] = (0.03,['EmbedZTT']) - norm_systs['l_id'] = (0.02,['EmbedZTT','TTT','VVT','ZL']) - else: - norm_systs['tau_id'] = (0.02,['ZTT']) - norm_systs['l_id'] = (0.02,['ZTT','TTT','VVT','ZL']) - norm_systs['l_fakerate'] = (0.2,['ZL']) - if options.channel in ['em']: - if options.embedding: - norm_systs['m_id'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) - norm_systs['e_id'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) - norm_systs['m_trg'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) - norm_systs['e_trg'] = (0.02,['EmbedZTT','TTT','VVT','VVJ','ZLL','W']) - else: - norm_systs['m_id'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) - norm_systs['e_id'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) - norm_systs['m_trg'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) - norm_systs['e_trg'] = (0.02,['ZTT','TTT','TTJ','VVT','VVJ','ZLL','W']) - norm_systs['l_fakerate'] = (0.2,['ZLL','W']) - - for syst in norm_systs: - - val = norm_systs[syst][0] - procs = norm_systs[syst][1] - h1 = h0.Clone() - h2 = h0.Clone() - h1.SetName(h0.GetName()+syst) - h2.SetName(h0.GetName()+syst) - for p in procs: - print p - hup = directory.Get(p).Clone() - hnom = directory.Get(p).Clone() - hup.Scale(val) - #print syst, p, hnom.Integral(), hup.Integral() - h1 = h0.Clone() - h2 = h0.Clone() - h1.Add(hup) - h2.Add(hup,-1) - hists.append(h1.Clone()) - hists.append(h2.Clone()) - - - (uncert, up, down) = TotalUnc(h0, hists) - outfile.cd(nodename) - uncert.Write() - up.Write() - down.Write() - - - -if options.scale_by_bin: - directory = outfile.Get(nodename) - QCDdirectory = directory.Get("QCD.subnodes") - - hist_den = QCDdirectory.Get("ratio_den") - hist_scale = QCDdirectory.Get("ratio_num").Clone() - hist_scale.Divide(hist_den) - - - hist_QCD = QCDdirectory.Get("data").Clone() - hist_bkg = QCDdirectory.Get("total_bkg") - hist_QCD.Add(hist_bkg,-1) - hist_QCD.Multiply(hist_scale) - hist_QCD.SetName("QCD_bybin") - outfile.cd(nodename) - hist_QCD.Write() - if options.no_qcd_subtract: - hist_QCD_nosub = QCDdirectory.Get("data").Clone() - hist_QCD_nosub.Multiply(hist_scale) - hist_QCD_nosub.SetName("QCD_bybin_nosub") - hist_QCD_nosub.Write() - - -if options.no_qcd_subtract: - directory = outfile.Get(nodename) - QCDdirectory = directory.Get("QCD.subnodes") - - hist_QCD = QCDdirectory.Get("data").Clone() - den = QCDdirectory.Get("ratio_den").Integral() - num = QCDdirectory.Get("ratio_num").Integral() - hist_QCD.Scale(num/den) - #hist_QCD.SetEntries(hist_QCD.GetEntries()*(num/den)) - hist_QCD.SetName("QCD_nosub") - outfile.cd(nodename) - hist_QCD.Write() - -outfile.Close() - -if options.do_unrolling==0: - print "Finished Processing" - exit(0) -if is_2d and not options.do_unrolling: - print "Finished Processing" - exit(0) # add options for is_3d as well! -if options.plot_from_dc != "": output_name = options.plot_from_dc -plot_file = ROOT.TFile(output_name, 'READ') - -#if options.method in [12,16] or (options.channel != "tt" and options.method == "18"): -# w_os = plot_file.Get(nodename+"/W.subnodes/W_os") -# w_ss = plot_file.Get(nodename+"/W.subnodes/W_ss") -# w_os_error=ROOT.Double(0.) -# w_ss_error=ROOT.Double(0.) -# w_os_total = w_os.IntegralAndError(0,w_os.GetNbinsX()+1,w_os_error) -# w_ss_total = w_ss.IntegralAndError(0,w_ss.GetNbinsX()+1,w_ss_error) -# w_os_ss = w_os_total/w_ss_total -# w_os_ss_error = math.sqrt( (w_os_error/w_os_total)**2 + (w_ss_error/w_ss_total)**2 )*w_os_ss -# -# print "W OS/SS ratio = ", w_os_ss, "+/-", w_os_ss_error, "("+str(100*w_os_ss_error/w_os_ss)+" %)" - - -if options.custom_uncerts_wt_up != "" and options.custom_uncerts_wt_down != "": - custom_uncerts_up_name = "total_bkg_custom_uncerts_up" - custom_uncerts_down_name = "total_bkg_custom_uncerts_down" -elif options.custom_uncerts_up_name != '': - custom_uncerts_up_name = options.custom_uncerts_up_name - custom_uncerts_down_name = options.custom_uncerts_down_name - - - - -if not options.no_plot: - #if options.extra_name != '': vname = options.extra_name - #else: vname = var_name - vname = var_name + '_' +options.extra_name - - - if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year - else: plot_name = options.outputfolder+'/'+vname+'_'+options.cat+'_'+options.channel+'_'+options.year - - if options.plot_from_dc != "": plot_name = options.outputfolder + '/combined' - - - if options.do_ss: plot_name += "_ss" - if options.log_x: plot_name += "_logx" - if options.log_y: plot_name += "_logy" - titles = plotting.SetAxisTitles(options.var,options.channel) - if options.do_unrolling and is_2d: titles2d = plotting.SetAxisTitles2D(options.var,options.channel) - if options.x_title == "": - x_title = titles[0] - if options.do_unrolling and is_2d: - x_title = titles2d[0][0] - else: x_title = options.x_title - - if options.y_title == "": - y_title = titles[1] - if options.do_unrolling and is_2d: - if options.norm_bins: y_title = titles2d[0][1] - else: y_title = titles2d[0][1] - y_var_titles = titles2d[1] - else: y_title = options.y_title - scheme = options.channel - if compare_w_shapes: scheme = 'w_shape' - if compare_qcd_shapes: scheme = 'qcd_shape' - if options.scheme != "" and options.scheme != "signalQCD"and options.scheme != "noTT": scheme = options.scheme - FF = options.method in [17,18] - if options.ml_ff: - options.w_ff_closure = False - options.qcd_ff_closure = False - if "zttEmbed" in options.cat or "jetFakes" in options.cat: - options.blind = False - options.x_blind_min = -1e5 - options.x_blind_max = -1e5 - if options.do_unrolling and is_2d: - auto_blind=False - options.norm_bins=False - plotting.HTTPlotUnrolled(nodename, - plot_file, - options.signal_scale, - options.draw_signal_mass, - FF, - options.norm_bins, - options.channel, - options.blind, - options.x_blind_min, - options.x_blind_max, - auto_blind, - options.ratio, - options.log_y, - options.log_x, - options.ratio_range, - options.custom_x_range, - options.x_axis_min, - options.x_axis_max, - options.custom_y_range, - options.y_axis_max, - options.y_axis_min, - x_title, - y_title, - options.extra_pad, - options.do_custom_uncerts, - options.add_stat_to_syst, - options.add_flat_uncert, - options.uncert_title, - options.lumi, - plot_name, - custom_uncerts_up_name, - custom_uncerts_down_name, - scheme, - options.cat, - x_lines, - [y_labels,y_var_titles], - options.embedding, - vbf_background, - options.signal_scheme - ) - elif scheme != 'signal': - auto_blind=False - plotnames = [[plot_name,"QCD"]] - if options.scale_by_bin: - plotnames.append([plot_name+"_bybin","QCD_bybin"]) - if options.no_qcd_subtract: - plotnames.append([plot_name+"_bybin_nosub","QCD_bybin_nosub"]) - if options.no_qcd_subtract: - plotnames.append([plot_name+"_nosub","QCD_nosub"]) - for namepair in plotnames: - plotting.HTTPlot(nodename, - plot_file, - options.signal_scale, - options.draw_signal_mass, - FF, - options.norm_bins, - options.channel, - options.blind, - options.x_blind_min, - options.x_blind_max, - options.ratio, - options.threePads, - options.ratio_log_y, - options.log_y, - options.log_x, - options.ratio_range, - options.custom_x_range, - options.x_axis_min, - options.x_axis_max, - options.custom_y_range, - options.y_axis_max, - options.y_axis_min, - x_title, - y_title, - options.extra_pad, - options.signal_scheme, - options.do_custom_uncerts, - options.add_stat_to_syst, - options.add_flat_uncert, - options.uncert_title, - options.lumi, - namepair[0], - custom_uncerts_up_name, - custom_uncerts_down_name, - scheme, - options.embedding, - vbf_background, - options.split_sm_scheme, - options.ggh_scheme, - options.cat, - split_taus, - auto_blind, - discrete_x_axis, - discrete_x_labels, - options.qcd_ff_closure, - options.w_ff_closure, - options.bkg_comp, - options.plot_signals.split(","), - namepair[1] - ) - else: - plotting.HTTPlotSignal(nodename, - plot_file, - options.signal_scale, - options.draw_signal_mass, - options.norm_bins, - options.channel, - options.blind, - options.x_blind_min, - options.x_blind_max, - options.ratio, - options.log_y, - options.log_x, - options.ratio_range, - options.custom_x_range, - options.x_axis_min, - options.x_axis_max, - options.custom_y_range, - options.y_axis_max, - options.y_axis_min, - x_title, - y_title, - options.extra_pad, - options.signal_scheme, - options.do_custom_uncerts, - options.add_stat_to_syst, - options.add_flat_uncert, - options.uncert_title, - options.lumi, - plot_name, - custom_uncerts_up_name, - custom_uncerts_down_name - ) - - # plotting.SoverBPlot(nodename, - # plot_file, - # options.channel, - # options.log_y, - # options.log_x, - # options.custom_x_range, - # options.x_axis_max, - # options.x_axis_min, - # options.custom_y_range, - # options.y_axis_max, - # options.y_axis_min, - # x_title, - # options.extra_pad, - # plot_name+'_soverb') - - # hists = [plot_file.Get(nodename+"/bbH-LO700"), plot_file.Get(nodename+"/bbH700") ] - # plotting.CompareHists(hists, - # ['Pythia','amc@NLO'], - # "bb#phi 700", - # options.ratio, - # options.log_y, - # options.log_x, - # options.ratio_range, - # options.custom_x_range, - # options.x_axis_max, - # options.x_axis_min, - # options.custom_y_range, - # options.y_axis_max, - # options.y_axis_min, - # x_title, - # y_title, - # options.extra_pad, - # False, - # plot_name, - # "#mu#tau_{h}") - -#norm signal yields on datacards to 1pb AFTER plotting -outfile = ROOT.TFile(output_name, 'UPDATE') -for add_name in add_names: - if options.analysis in ['mssm','mssmrun2']: - NormSignals(outfile,add_name) - -# for smsummer16 need to ad WplusH and WminusH templates into one -if options.era in ["smsummer16",'cpsummer16','cpdecay16',"legacy16",'UL_16_preVFP','UL_16_postVFP','cpsummer17','UL_17','cp18','UL_18','mvadm2016','22'] and options.channel != 'zmm' and options.analysis != "mssmrun2": - outfile.cd(nodename) - directory = outfile.Get(nodename) - hists_to_add = [] - for key in directory.GetListOfKeys(): - hist_name = key.GetName() - if 'wminush' in hist_name.lower(): - hist_to_add_name = hist_name.replace('minus', 'plus') - hist = directory.Get(hist_name).Clone() - hist_to_add = directory.Get(hist_to_add_name).Clone() - hist.Add(hist_to_add) - hist.SetName(hist_name.replace('minus','')) - hists_to_add.append(hist) - for hist in hists_to_add: hist.Write() - -if options.analysis in ['mssmrun2','vlq']: #and options.era not in ['UL_16_preVFP','UL_16_postVFP','UL_17','UL_18']: //was failing before - RenameMSSMrun2Datacards(outfile) - - -outfile.Close() - -print "Finished Processing" diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py b/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py deleted file mode 100644 index 9a725b5bf..000000000 --- a/Analysis/HiggsTauTauRun2/scripts/compare_Run2_3.py +++ /dev/null @@ -1,515 +0,0 @@ -import ROOT as R -from UserCode.ICHiggsTauTau.plotting import * -import numpy as np - -def MyCompareHists(hists=[], - legend_titles=[], - title="", - ratio=True, - log_y=False, - log_x=False, - ratio_range="0.7,1.3", - custom_x_range=False, - x_axis_max=4000, - x_axis_min=0, - custom_y_range=False, - y_axis_max=4000, - y_axis_min=0, - x_title="", - y_title="", - extra_pad=0, - norm_hists=False, - plot_name="plot", - label="", - norm_bins=True, - uncert_hist=None, - uncert_title='', - ReweightPlot=False, - output_file = None, - outputfolder = None, - integral_with_lowerlimit = None, - integral_with_upperlimit = None, - do_integral_stats=False): - - objects=[] - R.gROOT.SetBatch(R.kTRUE) - R.TH1.AddDirectory(False) - ModTDRStyle(r=0.04, l=0.14) - - colourlist=[R.kBlue,R.kRed,R.kGreen+3,R.kBlack,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] - if ReweightPlot: - colourlist=[R.kBlack,R.kBlue,R.kRed,R.kGreen+3,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] - - hs = R.THStack("hs","") - hist_count=0 - legend_hists=[] - if isinstance(uncert_hist, (list,)): - for i in uncert_hist: - if i is None: continue - if norm_bins and i is not None: i.Scale(1.0,"width") - else: - if norm_bins and uncert_hist is not None: uncert_hist.Scale(1.0,"width") - - for hist in hists: - # print hist.GetName() - # for bin_ in range(1,hist.GetNbinsX()): - # print hist.GetBinContent(bin_) - # print np.sqrt(hist.GetBinContent(bin_)) - if norm_hists: hist.Scale(1.0/hist.Integral(0, hist.GetNbinsX()+1)) - if norm_bins: hist.Scale(1.0,"width") - h = hist.Clone() - objects.append(h) - h.SetFillColor(0) - h.SetLineWidth(3) - h.SetLineColor(colourlist[hist_count]) - h.SetMarkerColor(colourlist[hist_count]) - h.SetMarkerSize(0) - hs.Add(h) - hist_count+=1 - o=h.Clone() - objects.append(o) - legend_hists.append(o) - # hs.Draw("nostack") - - c1 = R.TCanvas() - c1.cd() - - if ratio: - if ReweightPlot: pads=TwoPadSplit(0.39,0.01,0.01) - else: pads=TwoPadSplit(0.29,0.01,0.01) - else: - pads=OnePad() - pads[0].cd() - - if(log_y): pads[0].SetLogy(1) - if(log_x): pads[0].SetLogx(1) - if custom_x_range: - if x_axis_max > hists[0].GetXaxis().GetXmax(): x_axis_max = hists[0].GetXaxis().GetXmax() - if ratio: - if(log_x): pads[1].SetLogx(1) - axish = createAxisHists(2,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.01) - axish[1].GetXaxis().SetTitle(x_title) - axish[1].GetXaxis().SetLabelSize(0.03) - axish[1].GetYaxis().SetNdivisions(4) - axish[1].GetYaxis().SetTitle("Ratio") - #if ReweightPlot: - # axish[1].GetYaxis().SetTitle("Correction") - axish[1].GetYaxis().SetTitleOffset(1.6) - axish[1].GetYaxis().SetTitleSize(0.04) - axish[1].GetYaxis().SetLabelSize(0.03) - - axish[0].GetXaxis().SetTitleSize(0) - axish[0].GetXaxis().SetLabelSize(0) - if custom_x_range: - axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - axish[1].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - if custom_y_range: - axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - axish[1].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - else: - axish = createAxisHists(1,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.005) - axish[0].GetXaxis().SetLabelSize(0.03) - axish[0].GetXaxis().SetTitle(x_title) - axish[0].GetXaxis().SetTitleSize(0.04) - if custom_x_range: - axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - if custom_y_range: - axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - axish[0].GetYaxis().SetTitle(y_title) - axish[0].GetYaxis().SetTitleOffset(1.6) - axish[0].GetYaxis().SetTitleSize(0.04) - axish[0].GetYaxis().SetLabelSize(0.03) - - hs.Draw("nostack same") - - uncert_hs = R.THStack() - if uncert_hist is not None: - if isinstance(uncert_hist, (list,)): - #col_list = [12,6,4,2,3,4] - col_list=colourlist - count = 0 - for i in uncert_hist: - if i is not None: - i.SetFillColor(CreateTransparentColor(col_list[count],0.4)) - i.SetLineColor(CreateTransparentColor(col_list[count],0.4)) - i.SetMarkerSize(0) - i.SetMarkerColor(CreateTransparentColor(col_list[count],0.4)) - i.SetFillStyle(1111) - uncert_hs.Add(i) - count+=1 - uncert_hs.Draw("nostack e2same") - else: - uncert_hist.SetFillColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetLineColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetMarkerSize(0) - uncert_hist.SetMarkerColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetFillStyle(1111) - uncert_hs.Add(uncert_hist) - uncert_hs.Draw("e2same") - - uncert_hs.Draw("nostack e2same") - if not custom_y_range: - if(log_y): - if hs.GetMinimum("nostack") >0: axish[0].SetMinimum(hs.GetMinimum("nostack")) - else: axish[0].SetMinimum(0.0009) - axish[0].SetMaximum(10**((1+extra_pad)*(math.log10(1.1*hs.GetMaximum("nostack") - math.log10(axish[0].GetMinimum()))))) - else: - maxi=1.1*(1+extra_pad)*max(hs.GetMaximum("nostack"),uncert_hs.GetMaximum("nostack")) - if not ReweightPlot: axish[0].SetMinimum(0) - else: - mini = None - maxi = None - for h in hists+uncert_hist: - if h is None: continue - for i in range(1,h.GetNbinsX()+1): - lo = h.GetBinContent(i)-h.GetBinError(i) - hi = h.GetBinContent(i)+h.GetBinError(i) - if mini is None: - mini = min(lo,hi) - maxi = max(lo,hi) - else: - mini = min(mini,lo,hi) - maxi = max(maxi,lo,hi) - #mini = min(hs.GetMinimum("nostack"),uncert_hs.GetMinimum("nostack")) - mini-= abs(mini)*extra_pad - axish[0].SetMinimum(mini) - maxi*=(1.+extra_pad) - axish[0].SetMaximum(maxi) - axish[0].Draw() - uncert_hs.Draw("nostack e2same") - - hs.Draw("nostack hist same") - axish[0].Draw("axissame") - - - #Setup legend - tot = len(hists) - if isinstance(uncert_hist,list): tot+=len(uncert_hist) - legend = PositionedLegend(0.35,0.15,3,0.04) - legend.SetTextFont(42) - legend.SetTextSize(0.03) - legend.SetFillColor(0) - - - for legi,hist in enumerate(legend_hists): - legend.AddEntry(hist,legend_titles[legi],"l") - if isinstance(uncert_hist, (list,)): - count=0 - for i in uncert_hist: - if i is not None: legend.AddEntry(i,uncert_title[count],'f') - count+=1 - else: - if uncert_hist is not None and uncert_title: legend.AddEntry(uncert_hist,uncert_title,'f') - legend.Draw("same") - - #CMS label and title - FixTopRange(pads[0], axish[0].GetMaximum(), extra_pad if extra_pad>0 else 0.30) - DrawCMSLogo(pads[0], 'CMS', 'Preliminary', 11, 0.045, 0.05, 1.0, '', 1.0) - #DrawCMSLogo(pads[0], 'CMS', 'Simulation', 11, 0.045, 0.05, 1.0, '', 1.0) - DrawTitle(pads[0], title, 3) - - latex2 = R.TLatex() - latex2.SetNDC() - latex2.SetTextAngle(0) - latex2.SetTextColor(R.kBlack) - latex2.SetTextSize(0.028) - latex2.DrawLatex(0.145,0.955,label) - - #Add ratio plot if required - if ratio: - ratio_hs = R.THStack("ratio_hs","") - hist_count=0 - pads[1].cd() - pads[1].SetGrid(0,1) - axish[1].Draw("axis") - axish[1].SetMinimum(float(ratio_range.split(',')[0])) - axish[1].SetMaximum(float(ratio_range.split(',')[1])) - div_hist = hists[0].Clone() - objects.append(div_hist) - - for i in range(0,div_hist.GetNbinsX()+2): div_hist.SetBinError(i,0) - first_hist=True - for hist in hists: - h = hist.Clone() - objects.append(h) - - h.SetFillColor(0) - h.SetLineWidth(3) - h.SetLineColor(colourlist[hist_count]) - h.SetMarkerColor(colourlist[hist_count]) - h.SetMarkerSize(0) - - h.Divide(div_hist) - if first_hist: - for i in range(1,h.GetNbinsX()+1): h.SetBinError(i,0.00001) - first_hist=False - o = h.Clone() - objects.append(o) - ratio_hs.Add(o) - hist_count+=1 - if uncert_hist is not None: - if isinstance(uncert_hist, (list,)): - ratio_err_hs = R.THStack("ratio_err_hs","") - count=0 - for i in uncert_hist: - if i is not None: - h = i.Clone() - objects.append(h) - h.Divide(div_hist) - ratio_err_hs.Add(h) - h.Draw("e2same") - count+=1 - #ratio_err_hs.Draw("nostack e2same") - else: - h = uncert_hist.Clone() - objects.append(h) - h.Divide(div_hist) - h.Draw("e2same") - ratio_hs.Draw("nostack e same") - pads[1].RedrawAxis("G") - pads[0].cd() - pads[0].GetFrame().Draw() - pads[0].RedrawAxis() - - if do_integral_stats: - legendstats = PositionedLegend(0.2,0.15,2,0.01) - legendstats.SetTextFont(42) - legendstats.SetTextSize(0.024) - legendstats.SetFillColor(0) - legendstats.SetHeader("Integrals") - - - for legi,hist in enumerate(legend_hists): - legendstats.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(), - (hist.Integral()/legend_hists[0].Integral())*100),"l") - if isinstance(uncert_hist, (list,)): - count=0 - if uncert_hist is not None and uncert_title: legendstats.AddEntry(uncert_hist,uncert_title,'f') - legendstats.Draw("same") - - if type(integral_with_lowerlimit) is float or type(integral_with_lowerlimit) is int: - t = R.gPad.GetTopMargin() - r = R.gPad.GetRightMargin() - legendstatslim = R.TLegend(1 - r - 0.2, 1 - t - 0.2-0.2, 1 - r - 0.05, 1 - t -0.2, '', 'NBNDC') - legendstatslim.SetTextFont(42) - legendstatslim.SetTextSize(0.024) - legendstatslim.SetFillColor(0) - legendstatslim.SetHeader("Integrals >%.0fGeV"%integral_with_lowerlimit) - - - for legi,hist in enumerate(legend_hists): - legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()), - (hist.Integral(hist.FindBin(integral_with_lowerlimit), - hist.GetNbinsX())/legend_hists[0].Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()))*100),"l") - legendstatslim.Draw("same") - if type(integral_with_upperlimit) is float or type(integral_with_upperlimit) is int: - t = R.gPad.GetTopMargin() - r = R.gPad.GetRightMargin() - legendstatslim = R.TLegend(1 - r - 0.2, 1 - t - 0.2-0.2, 1 - r - 0.05, 1 - t -0.2, '', 'NBNDC') - legendstatslim.SetTextFont(42) - legendstatslim.SetTextSize(0.024) - legendstatslim.SetFillColor(0) - legendstatslim.SetHeader("Integrals <%.0fGeV"%integral_with_upperlimit) - - - for legi,hist in enumerate(legend_hists): - legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(1,hist.FindBin(integral_with_upperlimit)), - (hist.Integral(1,hist.FindBin(integral_with_upperlimit))/legend_hists[0].Integral(1,hist.FindBin(integral_with_upperlimit)))*100),"l") - legendstatslim.Draw("same") - - c1.SaveAs(outputfolder+plot_name+'.png') - #c1.SaveAs(outputfolder+plot_name+'.pdf') - if output_file is not None: - output_file.WriteObject(c1, plot_name) - for o in objects: - o.IsA().Destructor(o) - c1.Close() - -LUMI22 = 35.2 -LUMI18 = 59.8 -USEBYBIN = True -DO_RATIO = True -file18_dirname = "output_2018/" -file22_dirname = "output_2022/" - -output_folder_name = "output_2018vs2022/" - - -variables = [ - - ["n_jets","N_{jets}"], - ["pt_1","p_{T}^{#tau_{1}}"], - ["pt_2", "p_{T}^{#tau_{2}}"], - ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], - ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], - ["pt_tt", "p_{T}^{#tau#tau}"], - ["m_vis","m_{#tau#tau}"] - -] - -#Name of QCD selection e.g. medium_vloose_medium_vloose: -#"deepTauVsJets_medium_1<0.5 && deepTauVsJets_vloose_1>0.5 && deepTauVsJets_medium_2<0.5 && deepTauVsJets_vloose_2>0.5" -selname = "medium_vloose_medium_vloose" - -#"OppS" and/or "SS" -types=["OppS","SS"] - -for var in variables: - for chargetype in types: - -#-------------------------------------------------------------------- -#Reading files and creating histograms - 2018 - - file18names,files18,file18_dirs,hists18QCD,hists18Data,hists18Diff = [],[],[],[],[],[] - versions= ["v2p1","v2p5"] - for version in versions: - if chargetype == "SS": - file18names.append("datacard_" + var[0] + "_inclusive_" + selname +"_trg_doubletau_"+version+"_tt_2018_ss.root") - else: - file18names.append( "datacard_" + var[0] + "_inclusive_" + selname +"_trg_doubletau_"+version+ "_tt_2018.root") - - for f in file18names: files18.append( R.TFile.Open(file18_dirname + f, "READ")) - for f in files18: file18_dirs.append(f.Get("tt_inclusive")) - for f in file18_dirs: - f.cd() - if USEBYBIN: - hists18QCD.append( f.Get("QCD_bybin_nosub").Clone()) - else: - hists18QCD.append( f.Get("QCD_nosub").Clone()) - - hists18Data.append(f.Get("data_obs").Clone()) - hists18Diff.append(f.Get("data_obs").Clone()) - hists18Diff[-1].SetName("DATA_minus_QCD") - hists18Diff[-1].Add(hists18Data[-1],hists18QCD[-1],1,-1) - - uncertQCD = hists18QCD[0].Clone() - for bin_i in range(1,uncertQCD.GetNbinsX()+1): - error = uncertQCD.GetBinContent(bin_i) - error = error*0.1 - uncertQCD.SetBinError(bin_i,error) - - uncertDiff = hists18Diff[0].Clone() - for bin_i in range(1,uncertDiff.GetNbinsX()+1): - content = uncertDiff.GetBinContent(bin_i) - uncertDiff.SetBinContent(bin_i,content) - error = uncertQCD.GetBinContent(bin_i)*0.1 - uncertDiff.SetBinError(bin_i,error) - - - SBstatHist18 = [] - for hist_i in range(0,len(hists18Data)): - SBstatHist18.append(hists18QCD[hist_i].Clone()) - for i_bin in range(1,SBstatHist18[-1].GetNbinsX()+1): - if SBstatHist18[-1].GetBinContent(i_bin)<=0: - SBstatHist18[-1].SetBinContent(i_bin, 0) - SBstatHist18[-1].SetBinError(i_bin,0) - else: - SBstatHist18[-1].SetBinContent(i_bin, np.sqrt(SBstatHist18[-1].GetBinContent(i_bin))) - SBstatHist18[-1].SetBinError(i_bin,SBstatHist18[-1].GetBinError(i_bin)/(2*np.sqrt(SBstatHist18[-1].GetBinContent(i_bin)))) - SBstatHist18[-1].Divide(hists18Data[hist_i],SBstatHist18[-1],1,1) -#-------------------------------------------------------------------- -#Reading files and creating histograms - 2022 - - file22names,files22,file22_dirs,hists22QCD,hists22Data,hists22Diff = [],[],[],[],[],[] - trignames = ["trg_doubletau","trg_both"] - for trig in trignames: - if chargetype == "SS": - file22names.append("datacard_" + var[0] + "_inclusive_" + selname +"_"+trig+ "_v2p5_tt_2022_ss.root") - else: - file22names.append( "datacard_" + var[0] + "_inclusive_" + selname+"_"+trig + "_v2p5_tt_2022.root") - - for f in file22names: files22.append( R.TFile.Open(file22_dirname + f, "READ")) - for f in files22: file22_dirs.append(f.Get("tt_inclusive")) - for f in file22_dirs: - f.cd() - if USEBYBIN: - hists22QCD.append( f.Get("QCD_bybin_nosub").Clone()) - else: - hists22QCD.append( f.Get("QCD_nosub").Clone()) - - hists22Data.append(f.Get("data_obs").Clone()) - hists22QCD[-1].Scale(LUMI18/LUMI22) - hists22Data[-1].Scale(LUMI18/LUMI22) - - hists22Diff.append(f.Get("data_obs").Clone()) - hists22Diff[-1].SetName("DATA_minus_QCD") - hists22Diff[-1].Add(hists22Data[-1],hists22QCD[-1],1,-1) - - SBstatHist22 = [] - for hist_i in range(0,len(hists22Data)): - SBstatHist22.append(hists22QCD[hist_i].Clone()) - for i_bin in range(1,SBstatHist22[-1].GetNbinsX()+1): - if SBstatHist22[-1].GetBinContent(i_bin)<=0: - SBstatHist22[-1].SetBinContent(i_bin, 0) - SBstatHist22[-1].SetBinError(i_bin,0) - else: - SBstatHist22[-1].SetBinContent(i_bin, np.sqrt(SBstatHist22[-1].GetBinContent(i_bin))) - SBstatHist22[-1].SetBinError(i_bin,SBstatHist22[-1].GetBinError(i_bin)/(2*np.sqrt(SBstatHist22[-1].GetBinContent(i_bin)))) - SBstatHist22[-1].Divide(hists22Data[hist_i],SBstatHist22[-1],1,1) - -#-------------------------------------------------------------------- -#Outputfile - output = R.TFile(output_folder_name+"/"+var[0]+"_"+selname+"_"+chargetype+".root","RECREATE") - -#-------------------------------------------------------------------- - for histtype in [[hists18Data,hists22Data,"Data",None],[hists18QCD,hists22QCD,"QCD",uncertQCD], - [hists18Diff,hists22Diff,"nonQCD",uncertDiff]]: - legend_titles = ["2018 %s"%(ver) for ver in versions] + [ - "2022 %s"%(trig) for trig in ["doubletau","doubletau+jet"] - ] - if var[0] == "n_jets": - MyCompareHists(hists = histtype[0]+histtype[1], - legend_titles = legend_titles, - title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.5,2", - x_title = var[1], y_title = "Events",plot_name = - var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, - outputfolder=output_folder_name,uncert_hist=histtype[3], - uncert_title= - ("Systematic Error" if histtype[3] is not None else '')) - elif var[0] == "pt_tt": - MyCompareHists(hists = histtype[0]+histtype[1], - legend_titles = legend_titles, - title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.3,2", - x_title = var[1], y_title = "Events",plot_name = - var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, - outputfolder=output_folder_name, integral_with_lowerlimit=None,uncert_hist=histtype[3],uncert_title= - ("Systematic Error" if histtype[3] is not None else '')) - else: - MyCompareHists(hists = histtype[0]+histtype[1], - legend_titles = legend_titles, - title="%s (%s) %.1f fb^{-1}"%(histtype[2],("Same-Sign" if chargetype=="SS" else "Opposite-Sign"),LUMI18), extra_pad=0,ratio_range="0.5,2", - x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = - var[0]+"_"+selname+"_"+chargetype+"_"+histtype[2], output_file = output, ratio = DO_RATIO, - outputfolder=output_folder_name,uncert_hist=histtype[3], uncert_title= - ("Systematic Error" if histtype[3] is not None else ''),integral_with_upperlimit=None) - - print("\n ------------------------%s %s %s------------------------"%(var[0],histtype[2],chargetype)) - counter=0 - if var[0] == "m_vis": - upper_limit=80 - for hist in histtype[0]+histtype[1]: - print("\n%s:"%(legend_titles[counter])) - print("Total: %d (%.1f%%)"%(hist.Integral(1,hist.GetNbinsX()),(hist.Integral(1,hist.GetNbinsX())/histtype[0][0].Integral(1,hist.GetNbinsX()))*100)) - print("Up to %dGeV: %d (%.1f%%)"%(upper_limit,hist.Integral(1,hist.FindBin(upper_limit)),(hist.Integral(1,hist.FindBin(upper_limit))/histtype[0][0]. Integral(1,hist.FindBin(upper_limit)))*100)) - counter+=1 - if var[0] == "pt_tt": - lower_limit=100 - for hist in histtype[0]+histtype[1]: - print("\n%s:"%(legend_titles[counter])) - print("Total: %d (%.1f%%)"%(hist.Integral(1,hist.GetNbinsX()),(hist.Integral(1,hist.GetNbinsX())/histtype[0][0].Integral(1,hist.GetNbinsX()))*100)) - print("From %dGeV: %d (%.1f%%)"%(lower_limit,hist.Integral(hist.FindBin(lower_limit),hist.GetNbinsX()),(hist.Integral(hist.FindBin(lower_limit),hist.GetNbinsX())/histtype[0][0]. Integral(hist.FindBin(lower_limit),hist.GetNbinsX()))*100)) - counter+=1 - -#legendstatslim.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()),(hist.Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX())/legend_hists[0].Integral(hist.FindBin(integral_with_lowerlimit),hist.GetNbinsX()))*100),"l") -#-------------------------------------------------------------------- - # MyCompareHists(hists = SBstatHist18+SBstatHist22, - # legend_titles = legend_titles, - # title="S/#sqrt{B} %s (%s)"%(histtype[2],chargetype), extra_pad=0,ratio_range="0.5,2.5", - # x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name = - # var[0]+"_"+selname+"_"+chargetype, output_file = output, ratio = True, outputfolder=output_folder_name) - - -#-------------------------------------------------------------------- - for f in files18: f.Close() - for f in files22: f.Close() - diff --git a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py b/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py deleted file mode 100644 index b56eebb6f..000000000 --- a/Analysis/HiggsTauTauRun2/scripts/compare_qcdmethods.py +++ /dev/null @@ -1,441 +0,0 @@ -import ROOT as R -from UserCode.ICHiggsTauTau.plotting import * -import numpy as np - -PLOTBYBIN = True -DOCHI2 = False #Chi2 comparison of QCD fits, produces a text file in the outputfolder named "chi2test.txt" -infiles_dirname = "output_2018/" -output_folder_name = "output_2018qcdcompare/" - -def MyCompareHists(hists=[], - legend_titles=[], - title="", - ratio=True, - log_y=False, - log_x=False, - ratio_range="0.7,1.3", - custom_x_range=False, - x_axis_max=4000, - x_axis_min=0, - custom_y_range=False, - y_axis_max=4000, - y_axis_min=0, - x_title="", - y_title="", - extra_pad=0, - norm_hists=False, - plot_name="plot", - label="", - norm_bins=True, - uncert_hist=None, - uncert_title='', - ReweightPlot=False, - output_file = None, - outputfolder = None): - - objects=[] - R.gROOT.SetBatch(R.kTRUE) - R.TH1.AddDirectory(False) - ModTDRStyle(r=0.04, l=0.14) - - colourlist=[R.kBlue,R.kRed,R.kGreen+3,R.kBlack,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] - if ReweightPlot: - colourlist=[R.kBlack,R.kBlue,R.kRed,R.kGreen+3,R.kYellow+2,R.kOrange,R.kCyan+3,R.kMagenta+2,R.kViolet-5,R.kGray] - - hs = R.THStack("hs","") - hist_count=0 - legend_hists=[] - if isinstance(uncert_hist, (list,)): - for i in uncert_hist: - if i is None: continue - if norm_bins and i is not None: i.Scale(1.0,"width") - else: - if norm_bins and uncert_hist is not None: uncert_hist.Scale(1.0,"width") - - for hist in hists: - # print hist.GetName() - # for bin_ in range(1,hist.GetNbinsX()): - # print hist.GetBinContent(bin_) - # print np.sqrt(hist.GetBinContent(bin_)) - if norm_hists: hist.Scale(1.0/hist.Integral(0, hist.GetNbinsX()+1)) - if norm_bins: hist.Scale(1.0,"width") - h = hist.Clone() - objects.append(h) - h.SetFillColor(0) - h.SetLineWidth(3) - h.SetLineColor(colourlist[hist_count]) - h.SetMarkerColor(colourlist[hist_count]) - h.SetMarkerSize(0) - hs.Add(h) - hist_count+=1 - o=h.Clone() - objects.append(o) - legend_hists.append(o) - # hs.Draw("nostack") - - c1 = R.TCanvas() - c1.cd() - - if ratio: - if ReweightPlot: pads=TwoPadSplit(0.39,0.01,0.01) - else: pads=TwoPadSplit(0.29,0.01,0.01) - else: - pads=OnePad() - pads[0].cd() - - if(log_y): pads[0].SetLogy(1) - if(log_x): pads[0].SetLogx(1) - if custom_x_range: - if x_axis_max > hists[0].GetXaxis().GetXmax(): x_axis_max = hists[0].GetXaxis().GetXmax() - if ratio: - if(log_x): pads[1].SetLogx(1) - axish = createAxisHists(2,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.01) - axish[1].GetXaxis().SetTitle(x_title) - axish[1].GetXaxis().SetLabelSize(0.03) - axish[1].GetYaxis().SetNdivisions(4) - axish[1].GetYaxis().SetTitle("Ratio") - #if ReweightPlot: - # axish[1].GetYaxis().SetTitle("Correction") - axish[1].GetYaxis().SetTitleOffset(1.6) - axish[1].GetYaxis().SetTitleSize(0.04) - axish[1].GetYaxis().SetLabelSize(0.03) - - axish[0].GetXaxis().SetTitleSize(0) - axish[0].GetXaxis().SetLabelSize(0) - if custom_x_range: - axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - axish[1].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - if custom_y_range: - axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - axish[1].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - else: - axish = createAxisHists(1,hists[0],hists[0].GetXaxis().GetXmin(),hists[0].GetXaxis().GetXmax()-0.005) - axish[0].GetXaxis().SetLabelSize(0.03) - axish[0].GetXaxis().SetTitle(x_title) - axish[0].GetXaxis().SetTitleSize(0.04) - if custom_x_range: - axish[0].GetXaxis().SetRangeUser(x_axis_min,x_axis_max-0.01) - if custom_y_range: - axish[0].GetYaxis().SetRangeUser(y_axis_min,y_axis_max) - axish[0].GetYaxis().SetTitle(y_title) - axish[0].GetYaxis().SetTitleOffset(1.6) - axish[0].GetYaxis().SetTitleSize(0.04) - axish[0].GetYaxis().SetLabelSize(0.03) - - hs.Draw("nostack same") - - uncert_hs = R.THStack() - if uncert_hist is not None: - if isinstance(uncert_hist, (list,)): - #col_list = [12,6,4,2,3,4] - col_list=colourlist - count = 0 - for i in uncert_hist: - if i is not None: - i.SetFillColor(CreateTransparentColor(col_list[count],0.4)) - i.SetLineColor(CreateTransparentColor(col_list[count],0.4)) - i.SetMarkerSize(0) - i.SetMarkerColor(CreateTransparentColor(col_list[count],0.4)) - i.SetFillStyle(1111) - uncert_hs.Add(i) - count+=1 - uncert_hs.Draw("nostack e2same") - else: - uncert_hist.SetFillColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetLineColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetMarkerSize(0) - uncert_hist.SetMarkerColor(CreateTransparentColor(12,0.4)) - uncert_hist.SetFillStyle(1111) - uncert_hs.Add(uncert_hist) - uncert_hs.Draw("e2same") - - uncert_hs.Draw("nostack e2same") - if not custom_y_range: - if(log_y): - if hs.GetMinimum("nostack") >0: axish[0].SetMinimum(hs.GetMinimum("nostack")) - else: axish[0].SetMinimum(0.0009) - axish[0].SetMaximum(10**((1+extra_pad)*(math.log10(1.1*hs.GetMaximum("nostack") - math.log10(axish[0].GetMinimum()))))) - else: - maxi=1.1*(1+extra_pad)*max(hs.GetMaximum("nostack"),uncert_hs.GetMaximum("nostack")) - if not ReweightPlot: axish[0].SetMinimum(0) - else: - mini = None - maxi = None - for h in hists+uncert_hist: - if h is None: continue - for i in range(1,h.GetNbinsX()+1): - lo = h.GetBinContent(i)-h.GetBinError(i) - hi = h.GetBinContent(i)+h.GetBinError(i) - if mini is None: - mini = min(lo,hi) - maxi = max(lo,hi) - else: - mini = min(mini,lo,hi) - maxi = max(maxi,lo,hi) - #mini = min(hs.GetMinimum("nostack"),uncert_hs.GetMinimum("nostack")) - mini-= abs(mini)*extra_pad - axish[0].SetMinimum(mini) - maxi*=(1.+extra_pad) - axish[0].SetMaximum(maxi) - axish[0].Draw() - uncert_hs.Draw("nostack e2same") - - hs.Draw("nostack hist same") - axish[0].Draw("axissame") - - - #Setup legend - tot = len(hists) - if isinstance(uncert_hist,list): tot+=len(uncert_hist) - legend = PositionedLegend(0.3,0.1,2,0.04) - legend.SetTextFont(42) - legend.SetTextSize(0.035) - legend.SetFillColor(0) - - - for legi,hist in enumerate(legend_hists): - legend.AddEntry(hist,legend_titles[legi],"l") - if isinstance(uncert_hist, (list,)): - count=0 - for i in uncert_hist: - if i is not None: legend.AddEntry(i,uncert_title[count],'f') - count+=1 - else: - if uncert_hist is not None and uncert_title: legend.AddEntry(uncert_hist,uncert_title,'f') - legend.Draw("same") - - #CMS label and title - FixTopRange(pads[0], axish[0].GetMaximum(), extra_pad if extra_pad>0 else 0.30) - DrawCMSLogo(pads[0], 'CMS', 'Preliminary', 11, 0.045, 0.05, 1.0, '', 1.0) - #DrawCMSLogo(pads[0], 'CMS', 'Simulation', 11, 0.045, 0.05, 1.0, '', 1.0) - DrawTitle(pads[0], title, 3) - - latex2 = R.TLatex() - latex2.SetNDC() - latex2.SetTextAngle(0) - latex2.SetTextColor(R.kBlack) - latex2.SetTextSize(0.028) - latex2.DrawLatex(0.145,0.955,label) - - #Add ratio plot if required - if ratio: - ratio_hs = R.THStack("ratio_hs","") - hist_count=0 - pads[1].cd() - pads[1].SetGrid(0,1) - axish[1].Draw("axis") - axish[1].SetMinimum(float(ratio_range.split(',')[0])) - axish[1].SetMaximum(float(ratio_range.split(',')[1])) - div_hist = hists[0].Clone() - objects.append(div_hist) - - for i in range(0,div_hist.GetNbinsX()+2): div_hist.SetBinError(i,0) - first_hist=True - for hist in hists: - h = hist.Clone() - objects.append(h) - - h.SetFillColor(0) - h.SetLineWidth(3) - h.SetLineColor(colourlist[hist_count]) - h.SetMarkerColor(colourlist[hist_count]) - h.SetMarkerSize(0) - - h.Divide(div_hist) - if first_hist: - for i in range(1,h.GetNbinsX()+1): h.SetBinError(i,0.00001) - first_hist=False - o = h.Clone() - objects.append(o) - ratio_hs.Add(o) - hist_count+=1 - if uncert_hist is not None: - if isinstance(uncert_hist, (list,)): - ratio_err_hs = R.THStack("ratio_err_hs","") - count=0 - for i in uncert_hist: - if i is not None: - h = i.Clone() - objects.append(h) - h.Divide(div_hist) - ratio_err_hs.Add(h) - h.Draw("e2same") - count+=1 - #ratio_err_hs.Draw("nostack e2same") - else: - h = uncert_hist.Clone() - objects.append(h) - h.Divide(div_hist) - h.Draw("e2same") - ratio_hs.Draw("nostack e same") - pads[1].RedrawAxis("G") - pads[0].cd() - pads[0].GetFrame().Draw() - pads[0].RedrawAxis() - - - legendstats = PositionedLegend(0.3,0.25,3,0.04) - legendstats.SetTextFont(42) - legendstats.SetTextSize(0.044) - legendstats.SetFillColor(0) - legendstats.SetHeader(" Integrals") - - - for legi,hist in enumerate(legend_hists): - legendstats.AddEntry(hist,"%i (%.1f%%)"%(hist.Integral(), - (hist.Integral()/legend_hists[0].Integral())*100),"l") - if isinstance(uncert_hist, (list,)): - count=0 - for i in uncert_hist: - if i is not None: legendstats.AddEntry(i,uncert_title[count],'f') - count+=1 - else: - if uncert_hist is not None and uncert_title: legendstats.AddEntry(uncert_hist,uncert_title,'f') - legendstats.Draw("same") - - c1.SaveAs(outputfolder+plot_name+'.png') - c1.SaveAs(outputfolder+plot_name+'.pdf') - if output_file is not None: - output_file.WriteObject(c1, plot_name) - for o in objects: - o.IsA().Destructor(o) - c1.Close() - -variables = [ - - ["n_jets","N_{jets}"], - ["pt_1","p_{T}^{#tau_{1}}"], - ["pt_2", "p_{T}^{#tau_{2}}"], - ["mt_1", "m_{T}(p_{T}^{#tau_{1}},p_{T}^{miss})"], - ["mt_2","m_{T}(p_{T}^{#tau_{2}},p_{T}^{miss})"], - ["m_vis","m_{#tau#tau}"], - ["pt_tt", "p_{T}^{#tau#tau}"] - -] - -selnames = [ - "medium_vloose_medium_vloose", - "medium_vloose_medium", - # "medium_vvvloose_medium", - # "vloose_vvvloose_medium", - "medium_vvvloose_medium_vvvloose" - # "vloose_vvvloose_vloose_vvvloose" - ] - -types=["SS","OppS"] - -version = "v2p5" - -if DOCHI2: chi2file = open(output_folder_name+'chi2test.txt','w') - -selnames_array = np.expand_dims(np.array(selnames,dtype = object),axis=1) - -for var in variables: - if DOCHI2: - chi2file.write("----------- %s ------------ \n"% var[0]) - ChiList = [] - ChiList_SS = [] - for sel in selnames: - for chargetype in types: -#-------------------------------------------------------------------- - filename = "datacard_"+var[0]+"_inclusive_"+sel+"_trg_doubletau_"+version+"_tt_2018" - if chargetype == "SS": - file= R.TFile.Open(infiles_dirname+filename+"_ss.root", "READ") - else: - file= R.TFile.Open(infiles_dirname+filename+".root", "READ") - file_dir = file.Get("tt_inclusive") - (file_dir).cd() - if PLOTBYBIN: - hist_w_qcdsub_bybin = file_dir.Get("QCD_bybin") - hist_wo_qcdsub_bybin = file_dir.Get("QCD_bybin_nosub") - sub_hist_w_qcdsub_bybin = file_dir.Get("data_obs").Clone() - tot_bkg_hist_w = file_dir.Get("total_bkg") - sub_hist_w_qcdsub_bybin.Add(tot_bkg_hist_w,-1) - sub_hist_w_qcdsub_bybin.Add(hist_w_qcdsub_bybin) - - hist_w_qcdsub = file_dir.Get("QCD") - hist_wo_qcdsub = file_dir.Get("QCD_nosub") - - sub_hist_w_qcdsub = file_dir.Get("data_obs").Clone() - tot_bkg_hist_w = file_dir.Get("total_bkg") - sub_hist_w_qcdsub.Add(tot_bkg_hist_w,-1) - sub_hist_w_qcdsub.Add(hist_w_qcdsub) -#-------------------------------------------------------------------- - if DOCHI2: - p = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW") - chi2 = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2") - chi2NDF = hist_wo_qcdsub.Chi2Test(hist_w_qcdsub,"WW CHI2/NDF") - p_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW") - chi2_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2") - chi2NDF_obs = hist_w_qcdsub.Chi2Test(sub_hist_w_qcdsub,"WW CHI2/NDF") - - if chargetype == "SS": - ChiList_SS.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) - else: - ChiList.append([p,chi2,chi2NDF,p_obs,chi2_obs,chi2NDF_obs]) -#-------------------------------------------------------------------- - if PLOTBYBIN: - output_file = R.TFile(output_folder_name+"/"+var[0]+"_"+sel+"_bybin_"+chargetype+".root","RECREATE") - plot_name = var[0]+"_"+sel+"_bybin_"+chargetype - if var[0] == "n_jets": - MyCompareHists(hists = [hist_w_qcdsub_bybin,hist_wo_qcdsub_bybin], - legend_titles = ["QCD - MC","Data Only"], - title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", - x_title = var[1], y_title = "Events",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) - else: - MyCompareHists(hists = [hist_w_qcdsub_bybin,hist_wo_qcdsub_bybin], - legend_titles = ["QCD - MC","Data Only"], - title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", - x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) - output_file = R.TFile(output_folder_name+"/"+var[0]+"_"+sel+"_"+chargetype+".root","RECREATE") - plot_name = var[0]+"_"+sel+"_"+chargetype - if var[0] == "n_jets": - MyCompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], - legend_titles = ["QCD - MC","Data Only"], - title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", - x_title = var[1], y_title = "Events",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) - else: - MyCompareHists(hists = [hist_w_qcdsub,hist_wo_qcdsub], - legend_titles = ["QCD - MC","Data Only"], - title="Run 2 Data (%s) 59.7 fb^{-1} (13 TeV)"%chargetype, extra_pad=0.2,ratio_range="0.8,1.2", - x_title = var[1]+" (GeV)", y_title = "Events/GeV",plot_name =plot_name, output_file = output_file, outputfolder=output_folder_name) - -#-------------------------------------------------------------------- - output_file.Close() - file.Close() -#-------------------------------------------------------------------- - if DOCHI2: - ChiList_SS = np.array(ChiList_SS,dtype = object) - ChiList = np.array(ChiList,dtype = object) - ChiList = np.concatenate((selnames_array,ChiList), axis=1) - ChiList_SS = np.concatenate((selnames_array,ChiList_SS), axis=1) - ChiList = ChiList[ChiList[:,3].argsort()] - ChiList_SS = ChiList_SS[ChiList_SS[:,3].argsort()] - chi2file.write("------------ OppS ------------ \n") - order = 1 - for ChiVar in ChiList: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], - ChiVar[2],ChiVar[3])) - order+=1 - chi2file.write("------------- SS ------------ \n") - order = 1 - for ChiVar in ChiList_SS: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[1], - ChiVar[2],ChiVar[3])) - order+=1 - - chi2file.write("------------ Compared to BKG------------ \n") - ChiList = ChiList[ChiList[:,-1].argsort()] - ChiList_SS = ChiList_SS[ChiList_SS[:,-1].argsort()] - chi2file.write("------------ OppS ------------ \n") - order = 1 - for ChiVar in ChiList: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], - ChiVar[5],ChiVar[6])) - order+=1 - chi2file.write("------------- SS ------------ \n") - order = 1 - for ChiVar in ChiList_SS: - chi2file.write("%i Type: %s\np: %.5f, chi2: %.5f, chi2/ndf: %.5f\n"%(order,ChiVar[0],ChiVar[4], - ChiVar[5],ChiVar[6])) - order+=1 diff --git a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json index df71ff498..5fe080021 100644 --- a/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json +++ b/Analysis/HiggsTauTauRun2/scripts/config_UL_2018.json @@ -6,7 +6,7 @@ "timings": true, //"channels": ["mt","et","tt","zmm","zee","em"], // "channels": ["mt","zmm","tt","et"], - "channels": ["tt"], + "channels": ["mt","zmm"], // "channels": ["tt","mt","et","em","zmm","zee"], "sequences": { "all": ["default"] @@ -67,7 +67,7 @@ "do_pdf_wts": false, "do_qcd_scale_wts": false, //"output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_sync_v2/", - "output_folder" : "/vols/cms/eb921/output/tt_UL_2018", + "output_folder" : "/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_v2/", "svfit_from_grid" : true, "read_all_svfit_files" : true, "svfit_folder" : "/vols/cms/dw515/outputs/MSSM/mssm_2018_tres1_v2_svfit/", diff --git a/Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py b/Analysis/HiggsTauTauRun2/scripts/control_plots_2022_mt.py similarity index 100% rename from Analysis/HiggsTauTauRun2/scripts/mt_control_plots.py rename to Analysis/HiggsTauTauRun2/scripts/control_plots_2022_mt.py diff --git a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg index 92ea7021c..9224ed74e 100644 --- a/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg +++ b/Analysis/HiggsTauTauRun2/scripts/plot_UL_2018.cfg @@ -1,18 +1,17 @@ [Defaults] analysis=mssmrun2 paramfile=scripts/params_UL_2018.json -folder=/vols/cms/eb921/output/tt_UL_2018/ +folder=/vols/cms/dw515/outputs/MSSM/UL_Mar31_2018_v2/ era=UL_18 sm_masses="" draw_signal_mass="" +#ggh_masses=80,90,100,110,120,130,140,160,180,200,250,300,400,450,600,700,800,1200,1400,1500,1600,1800,2000,2600,2900,3200 +#bbh_nlo_masses=80,90,100,110,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +ggh_masses_powheg=60,80,95,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 +bbh_masses_powheg=60,80,100,120,125,130,140,160,180,200,250,300,350,400,450,500,600,700,800,900,1000,1200,1400,1600,1800,2000,2300,2600,2900,3200,3500 year=2018 norm_bins=True ratio=True -lumi=59.8 fb^{-1} (13 TeV) +lumi=59.7 fb^{-1} (13 TeV) vbf_background=False -wp=medium -channel=tt -method=8 -outputfolder=output_2018 -no_qcd_subtract=True -scale_by_bin=True \ No newline at end of file +wp = medium diff --git a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc index 78311e46b..108dc046d 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc @@ -322,9 +322,13 @@ namespace ic { if (wp_to_check_ == "tight") tight_wp = 0.2783; // medium deepJet wp else if (wp_to_check_ == "loose") tight_wp = 0.0490; // loose deepJet wp } - else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) && use_deep_jet_) { - if (wp_to_check_ == "tight") tight_wp = 0.2783; // medium deepJet wp - else if (wp_to_check_ == "loose") tight_wp = 0.0490; // loose deepJet wp + else if (era_ == era::data_2022_preEE) && use_deep_jet_) { + if (wp_to_check_ == "tight") tight_wp = 0.303; // medium deepJet wp + else if (wp_to_check_ == "loose") tight_wp = 0.0474; // loose deepJet wp + } + else if (era_ == era::data_2022_postEE && use_deep_jet_) { + if (wp_to_check_ == "tight") tight_wp = 0.3179; // medium deepJet wp + else if (wp_to_check_ == "loose") tight_wp = 0.0492; // loose deepJet wp } if(jet_flavour == 5){ if((era_ != era::data_2016 && era_ != era::data_2017 && era_ != era::data_2018) || ((era_ != era::data_2016 || era_ != era::data_2016UL_preVFP || era_ != era::data_2016UL_preVFP) && era_ != era::data_2017UL && era_ != era::data_2018UL && era_ != era::data_2022_preEE && era_ != era::data_2022_postEE)){ diff --git a/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc b/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc index 2acded7fd..d4f0cfc85 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagWeightLegacyRun2.cc @@ -218,9 +218,13 @@ namespace ic { tight_wp = 0.2783; // medium deepJet wp loose_wp = 0.0490; // loose deepJet wp } - else if ((era_ == era::data_2022_preEE || era_ == era::data_2022_postEE )&& use_deep_jet_){ - tight_wp = 0.2783; // medium deepJet wp - loose_wp = 0.0490; // loose deepJet wp + else if (era_ == era::data_2022_preEE && use_deep_jet_) { + tight_wp = 0.303; + loose_wp = 0.0474; // loose deepJet wp + } + else if (era_ == era::data_2022_postEE && use_deep_jet_) { + tight_wp = 0.3179; + loose_wp = 0.0492; // loose deepJet wp } for (unsigned j = 0; j < sf_tight.size(); j++) { double p_mc = 1.; diff --git a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc index f083a2db8..ac069f666 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTCategories.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTCategories.cc @@ -2709,14 +2709,22 @@ namespace ic { deepjet_wp = 0.2783; } - if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { + if (era_ == era::data_2022_preEE) { btag_wp = 0.4184; loose_btag_wp = 0.1241; btag_label = "pfDeepCSVJetTags:probb"; btag_label_extra = "pfDeepCSVJetTags:probbb"; - deepjet_wp = 0.2783; - } + deepjet_wp = 0.303; + } + if (era_ == era::data_2022_postEE) { + btag_wp = 0.4184; + loose_btag_wp = 0.1241; + btag_label = "pfDeepCSVJetTags:probb"; + btag_label_extra = "pfDeepCSVJetTags:probbb"; + + deepjet_wp = 0.3179; + } if (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP) { btag_wp = 0.6321; loose_btag_wp = 0.2217; diff --git a/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc b/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc index e37460ae7..d2a435c9e 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTFakeFactorWeights.cc @@ -568,11 +568,16 @@ namespace ic { btag_label = "pfDeepCSVJetTags:probb"; btag_label_extra = "pfDeepCSVJetTags:probbb"; } - if (era_ == era::data_2022_preEE || era_ == era::data_2022_postEE) { - btag_wp = 0.4184; + if (era_ == era::data_2022_preEE) { + btag_wp = 0.303; + btag_label = "pfDeepCSVJetTags:probb"; + btag_label_extra = "pfDeepCSVJetTags:probbb"; + } + if (era_ == era::data_2022_postEE) { + btag_wp = 0.3179; btag_label = "pfDeepCSVJetTags:probb"; btag_label_extra = "pfDeepCSVJetTags:probbb"; - } + } auto filterBTagSumTight = [btag_label, btag_label_extra, btag_wp] (PFJet* s1) -> bool { return s1->GetBDiscriminator(btag_label) + s1->GetBDiscriminator(btag_label_extra) > btag_wp; diff --git a/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc b/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc index f7f3db469..1bb43994d 100644 --- a/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc +++ b/Analysis/HiggsTauTauRun2/src/HTTPairGenInfo.cc @@ -55,7 +55,7 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { } } - if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL || era_ == era::data_2022_preEE || era_ == era::data_2022_postEE)) { + if(is_embedded_&& (channel_==channel::em || channel_==channel::et || channel_==channel::mt || channel_==channel::tt) && (era_ == era::data_2016 || era_ == era::data_2016UL_preVFP || era_ == era::data_2016UL_postVFP || era_ == era::data_2017 || era_ == era::data_2017UL || era_ == era::data_2018 || era_ == era::data_2018UL)) { // Retrieve file with TGraphs of corrections std::string file = "input/recoilfits/embed_fake_met_corrections.root"; @@ -75,11 +75,6 @@ TVector3 GenIP (ic::GenParticle *h, ic::GenParticle *t) { if(era_ == era::data_2016UL_postVFP) graph_name+="_2016UL_postVFP"; if(era_ == era::data_2017UL) graph_name+="_2017UL"; if(era_ == era::data_2018UL) graph_name+="_2018UL"; - if(era_ == era::data_2022_preEE) graph_name+="_2022_preEE"; - if(era_ == era::data_2022_postEE) graph_name+="_2022_postEE"; - - - gr_met_corr_ = (TGraph*)gDirectory->Get(graph_name.c_str()); From 7e4230ac6bcf182df0c5e2f949bea8da0d8cef5a Mon Sep 17 00:00:00 2001 From: Daniel Winterbottom Date: Mon, 2 Oct 2023 17:26:59 +0100 Subject: [PATCH 49/50] fixign a few issues --- Analysis/HiggsTauTauRun2/src/BTagCheck.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc index 108dc046d..e5dc377c9 100644 --- a/Analysis/HiggsTauTauRun2/src/BTagCheck.cc +++ b/Analysis/HiggsTauTauRun2/src/BTagCheck.cc @@ -322,7 +322,7 @@ namespace ic { if (wp_to_check_ == "tight") tight_wp = 0.2783; // medium deepJet wp else if (wp_to_check_ == "loose") tight_wp = 0.0490; // loose deepJet wp } - else if (era_ == era::data_2022_preEE) && use_deep_jet_) { + else if (era_ == era::data_2022_preEE && use_deep_jet_) { if (wp_to_check_ == "tight") tight_wp = 0.303; // medium deepJet wp else if (wp_to_check_ == "loose") tight_wp = 0.0474; // loose deepJet wp } From ca9760cef2d2d53ecd0f58a6f3f7a02a36b366d1 Mon Sep 17 00:00:00 2001 From: Daniel Winterbottom Date: Mon, 2 Oct 2023 21:45:24 +0100 Subject: [PATCH 50/50] fixing a few issues while checking PR --- Analysis/HiggsTauTauRun2/interface/HTTConfig.h | 8 ++++---- .../HiggsTauTauRun2/scripts/HiggsTauTauPlot.py | 15 +++++---------- Analysis/HiggsTauTauRun2/scripts/TnP.py | 2 +- .../HiggsTauTauRun2/scripts/htt_2022_preEE.py | 2 +- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/Analysis/HiggsTauTauRun2/interface/HTTConfig.h b/Analysis/HiggsTauTauRun2/interface/HTTConfig.h index a9e52e9f1..0824bee90 100644 --- a/Analysis/HiggsTauTauRun2/interface/HTTConfig.h +++ b/Analysis/HiggsTauTauRun2/interface/HTTConfig.h @@ -123,8 +123,8 @@ struct era_def { data_2017UL, data_2018, data_2018UL, - data_2022_preEE, - data_2022_postEE + data_2022_preEE, + data_2022_postEE }; }; typedef safe_enum era; @@ -141,8 +141,8 @@ inline std::string Era2String(era const& in) { (era::data_2017UL, "data_2017UL") (era::data_2018, "data_2018") (era::data_2018UL, "data_2018UL") - (era::data_2022_preEE, "data_2022_preEE") - (era::data_2022_postEE, "data_2022_postEE"); + (era::data_2022_preEE, "data_2022_preEE") + (era::data_2022_postEE, "data_2022_postEE"); if (conv.find(in) != conv.end()) { return (conv[in]); } else { diff --git a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py index 9d88043d5..7247222e2 100644 --- a/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py +++ b/Analysis/HiggsTauTauRun2/scripts/HiggsTauTauPlot.py @@ -1589,7 +1589,7 @@ qqhww_samples = [] if options.channel in ['mt','zmm','mj']: - data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + data_samples = ['SingleMuonB_rereco_preEE','SingleMuonC_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] # check this as SingleMuonC_rereco was missing from Endre's list # data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE','MuonE_rereco_postEE','MuonF_postEE','MuonG_postEE'] # if options.analysis in ['mssmrun2','vlq'] and options.channel == 'mt': data_samples += ['TauB_rereco_preEE','TauC_rereco_preEE','TauD_rereco_preEE'] if options.channel == 'em': @@ -4992,12 +4992,8 @@ def RawFFFromString(string): # output_name = options.outputfolder+'/datacard_'+options.extra_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' datacard_name+='_'+options.extra_name #else: -if options.do_ss: - output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'_ss.root' - outfile = ROOT.TFile(output_name, 'RECREATE') -else: - output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' - outfile = ROOT.TFile(output_name, 'RECREATE') +output_name = options.outputfolder+'/datacard_'+var_name+'_'+datacard_name+'_'+options.channel+'_'+options.year+'.root' +outfile = ROOT.TFile(output_name, 'RECREATE') cats['cat'] = '('+cats[options.cat]+')*('+cats['baseline']+')' if options.channel=="em": cats['em_shape_cat'] = '('+cats[options.cat]+')*('+cats['loose_baseline']+')' @@ -5547,9 +5543,8 @@ def MergeXBins(hist): if not options.no_plot: - #if options.extra_name != '': vname = options.extra_name - #else: vname = var_name - vname = var_name + '_' +options.extra_name + if options.extra_name != '': vname = options.extra_name + else: vname = var_name if options.datacard != "": plot_name = options.outputfolder+'/'+vname+'_'+options.datacard+'_'+options.channel+'_'+options.year diff --git a/Analysis/HiggsTauTauRun2/scripts/TnP.py b/Analysis/HiggsTauTauRun2/scripts/TnP.py index c78cce0a8..e56a5459a 100644 --- a/Analysis/HiggsTauTauRun2/scripts/TnP.py +++ b/Analysis/HiggsTauTauRun2/scripts/TnP.py @@ -974,7 +974,7 @@ def FitWorkspace(name,infile,outfile,sig_model='DoubleVCorr',bkg_model='Exponent elif options.era == 'UL_18': data_samples = ['SingleMuonA','SingleMuonB','SingleMuonC','SingleMuonD'] elif options.era == '22_preEE': - data_samples = ['SingleMuonB_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] + data_samples = ['SingleMuonB_rereco_preEE','SingleMuonC_rereco_preEE','MuonC_rereco_preEE','MuonD_rereco_preEE'] # check this as Endre's code did not have single muon for Run C but I think it exists elif options.era == '22_postEE': data_samples = ['MuonE_rereco_postEE','MuonF_postEE','MuonG_postEE'] diff --git a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py index fc30a71af..4b81b9cd8 100755 --- a/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py +++ b/Analysis/HiggsTauTauRun2/scripts/htt_2022_preEE.py @@ -205,7 +205,7 @@ def getParaJobSubmit(N): if options.proc_data or options.proc_all or options.calc_lumi: - data_samples = ["SingleMuonB_rereco","MuonC_rereco","MuonD_rereco"] + data_samples = ["SingleMuonB_rereco","SingleMuonC_rereco","MuonC_rereco","MuonD_rereco"] # added SingleMuonC as I think it should exist data_eras = [] for chn in channels: for era in data_eras: