From 3fa956f166f22ea030ea8cbe64205d2629d4e276 Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Thu, 12 Oct 2023 20:07:44 +0200 Subject: [PATCH 01/22] fix : remove bad files & add cross-sections - metadata:remove bad files - scripts: implement remove bad files in fetch.py script - plot: fix wrong axis defintion & add new variables definitions - helpers: update xsections - wf: add pv info & weight info in BTA_ttbar_wf --- ...EE_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json | 26 -- ...22_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json | 220 +--------- ..._Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json | 6 +- ..._Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json | 6 +- ...Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json | 6 +- ..._Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json | 2 +- ...Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json | 6 +- ..._Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json | 4 +- ..._Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json | 4 +- ...Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json | 4 +- ..._Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json | 6 +- ...Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json | 8 +- metadata/test_bta_run3.json | 4 +- scripts/fetch.py | 66 ++- scripts/plotdataMC.py | 14 +- .../helpers/definitions.py | 394 ++++++------------ src/BTVNanoCommissioning/helpers/xsection.py | 118 ++++++ .../utils/histogrammer.py | 1 + .../workflows/BTA_ttbar_producer.py | 20 +- 19 files changed, 379 insertions(+), 536 deletions(-) diff --git a/metadata/MC_Summer22EE_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json b/metadata/MC_Summer22EE_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json index f608d053..01de1d80 100644 --- a/metadata/MC_Summer22EE_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/MC_Summer22EE_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json @@ -1837,8 +1837,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_185.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_227.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_83.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_172.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_88.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_635.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_542.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_441.root", @@ -6359,13 +6357,9 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_106.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_70.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_213.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_228.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_117.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_101.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_217.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_231.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_204.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_108.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_112.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_2.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_68.root", @@ -6377,7 +6371,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_3-5.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-10.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-2.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_214.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_219.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-9.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-8.root", @@ -6385,7 +6378,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_215.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-1.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-4.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-3.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_221.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_194.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124236/0000/nano_mcRun3_EE_1-7.root" @@ -6451,7 +6443,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_2-5.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_10.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_12.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_17.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_55.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_104.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_40.root", @@ -6512,7 +6503,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_58.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_63.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_50.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_90.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_5.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_92.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_82.root", @@ -6529,7 +6519,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_2-14.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-12.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-14.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_2-20.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-4.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-7.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-5.root", @@ -6538,7 +6527,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133824/0000/nano_mcRun3_EE_3-9.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_4.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_3.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_6.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_5.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_7.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124231/0000/nano_mcRun3_EE_8.root", @@ -6645,7 +6633,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_54.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_24.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_60.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_53.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_75.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_63.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_39.root", @@ -6665,12 +6652,10 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_29.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_58.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_72.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_11.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_32.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_13.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_62.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_30.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_22.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_20.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_1-8.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124237/0000/nano_mcRun3_EE_1-5.root", @@ -6849,7 +6834,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_30.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_76.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_79.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_55.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_23.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_83.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_17.root", @@ -6956,8 +6940,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_61.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_74.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_110.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_72.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_105.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_108.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_49.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_133917/0000/nano_mcRun3_EE_113.root", @@ -7194,7 +7176,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_200.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_230.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_31.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_202.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_168.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_177.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/231007_124235/0000/nano_mcRun3_EE_102.root", @@ -9197,7 +9178,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_159.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_76.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_134.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_22.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_39.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_7.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_131455/0000/nano_mcRun3_EE_86.root", @@ -11971,7 +11951,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_462.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_512.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_378.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_2-57.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_342.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_2-2.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_2-64.root", @@ -12008,7 +11987,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_167.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_55.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_135.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_312.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_109.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_271.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_304.root", @@ -12024,7 +12002,6 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_143.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_235.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_48.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_242.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_441.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_247.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125024/0000/nano_mcRun3_EE_355.root", @@ -12642,11 +12619,8 @@ "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_281.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_416.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_30.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_345.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_324.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_17.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_26.root", - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_272.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_328.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_151.root", "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_125039/0000/nano_mcRun3_EE_219.root", diff --git a/metadata/MC_Summer22_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json b/metadata/MC_Summer22_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json index 109ad075..53b77e39 100644 --- a/metadata/MC_Summer22_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/MC_Summer22_Run3_2022_BTV_Comm_v2_NanoV12_noPF.json @@ -43,17 +43,10 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_172.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_41.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_69.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-7.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_128.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-20.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_163.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-18.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_85.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_13.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-21.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-12.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-9.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-8.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_108.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_79.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_92.root", @@ -64,7 +57,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_125.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_118.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_119.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-7.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_78.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_177.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_19.root", @@ -109,39 +101,23 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_136.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_167.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-4.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-14.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_96.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-5.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_105.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-13.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_126.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-3.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-6.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-16.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-17.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-13.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-15.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_6.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_8.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-11.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-2.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_106.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-14.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-12.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_166.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_170.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_168.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-22.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_24.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_45.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_62.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_11.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-23.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_171.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-19.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-1.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_93.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-4.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_73.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_75.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_68.root", @@ -149,13 +125,10 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_84.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_89.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_49.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-5.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_30.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-1.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_32.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_1-10.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_101.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-6.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_123.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_122.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_70.root", @@ -172,9 +145,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_124.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_77.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_95.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-11.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_81.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-3.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_112.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_116.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_113.root", @@ -270,23 +241,11 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_34.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_15.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-1.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-21.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-2.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-25.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-5.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-26.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-19.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-10.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-18.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-8.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-32.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-8.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_2-2.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-16.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-10.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-20.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-6.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-15.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-1.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-5.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-4.root", @@ -310,22 +269,11 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_216.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_202.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_282.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-17.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-7.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-14.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-29.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-13.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-28.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-23.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-22.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-30.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-3.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-24.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-27.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-12.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-4.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-9.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-31.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-10.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_19.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_3-3.root", @@ -546,13 +494,12 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_120.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3_BTV_Run3_2022_Comm_v2_NanoV12/231002_082805/0000/nano_mcRun3_78.root" ], - "DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia84": [ + "DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_306.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_9.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_220.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_225.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_277.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_431.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_67.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_317.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_29.root", @@ -612,11 +559,9 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_218.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_299.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_1.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_131.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_260.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_231.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_141.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_53.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_26.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_250.root", @@ -638,18 +583,14 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_36.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_274.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_273.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_444.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_315.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_442.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_46.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_287.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_234.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_19.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_223.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_237.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_439.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_16.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_441.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_227.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_39.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_47.root", @@ -658,36 +599,22 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_61.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_242.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_239.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_419.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_416.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_420.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_440.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_283.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_76.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_434.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_438.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_436.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_32.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_37.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_443.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_447.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_15.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_430.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-3.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-4.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-7.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_162.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_166.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_413.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_313.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_193.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_151.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_152.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_427.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_312.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-5.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_414.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_147.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_59.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_17.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_286.root", @@ -708,24 +635,18 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_41.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_236.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_11.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_411.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_13.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_432.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_99.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_122.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_409.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_433.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_192.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_148.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_156.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_139.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_415.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_184.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_198.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_266.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_298.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_117.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_446.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_49.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_294.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_72.root", @@ -733,8 +654,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_272.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_58.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-6.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_429.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_408.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_240.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_163.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_282.root", @@ -746,12 +665,9 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_14.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_113.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_279.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_410.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_407.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_110.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_94.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_96.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_406.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_333.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_63.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_318.root", @@ -760,24 +676,18 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_187.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_4.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_190.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_435.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_164.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_288.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_258.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_137.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_445.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_257.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_228.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_40.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_437.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_304.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_169.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_27.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_221.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_71.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_417.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_423.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_421.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_263.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_10.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_25.root", @@ -786,14 +696,11 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_316.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_65.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_74.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_425.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_62.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_66.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_80.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-1.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_217.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_428.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_426.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_321.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_8.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_320.root", @@ -818,7 +725,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_95.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_207.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_188.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_142.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_140.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_154.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_133.root", @@ -833,11 +739,8 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_150.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_134.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_129.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_424.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_412.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_68.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_319.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_418.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_77.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_194.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_213.root", @@ -914,33 +817,12 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_60.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_7.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_86.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-8.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_422.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-2.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_69.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_75.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_73.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_79.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_280.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-91.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-93.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-87.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-94.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-101.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-90.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-84.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-92.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-97.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-78.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-67.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-96.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-117.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-98.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-115.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-81.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-102.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-119.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-118.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_241.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_29.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_42.root", @@ -1126,26 +1008,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_276.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_262.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_48.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-180.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-175.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-179.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-162.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-82.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-1.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-142.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-139.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-126.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-116.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-189.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-145.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-190.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-182.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-177.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-160.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-172.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-166.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-173.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-176.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_136.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_148.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_203.root", @@ -1257,40 +1120,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_310.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_312.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_311.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-167.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-169.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-163.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-165.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-144.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-135.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-148.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-134.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-122.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-149.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-147.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-150.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-152.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-155.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-151.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-146.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-157.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-153.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-143.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-158.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-154.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-159.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-171.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-174.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-164.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-156.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-170.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-161.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-168.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-140.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-108.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-127.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-138.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-141.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_285.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_284.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_227.root", @@ -1310,23 +1139,11 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_322.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_192.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_288.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-128.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-112.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-132.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-125.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-123.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-124.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-136.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-129.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-131.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-137.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-133.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_281.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_279.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-39.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-40.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-33.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-130.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_1-6.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_179.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_25.root", @@ -1342,26 +1159,12 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-9.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-11.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-14.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-99.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-88.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-85.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-104.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-95.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-107.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-106.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-103.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-114.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-185.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-17.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_217.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-2.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-6.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-38.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_2-23.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-100.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-113.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-111.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-121.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_11.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_118.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_233.root", @@ -1375,10 +1178,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_35.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_13.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_163.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-105.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-110.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-109.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-120.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_205.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_232.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_6.root", @@ -1410,15 +1209,6 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_228.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_138.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_187.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-181.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-192.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-188.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-187.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-184.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-191.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-178.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-186.root", - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-183.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_73.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_109.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_24.root", @@ -1433,7 +1223,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_297.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/231002_082831/0000/nano_mcRun3_3-3.root" ], - "TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia84": [ + "TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091720/0000/nano_mcRun3_109.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091720/0000/nano_mcRun3_91.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091720/0000/nano_mcRun3_113.root", @@ -1620,7 +1410,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091720/0000/nano_mcRun3_3-9.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091720/0000/nano_mcRun3_3-8.root" ], - "TTto4Q_TuneCP5_13p6TeV_powheg-pythia84": [ + "TTto4Q_TuneCP5_13p6TeV_powheg-pythia8": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091754/0000/nano_mcRun3_159.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091754/0000/nano_mcRun3_21.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091754/0000/nano_mcRun3_98.root", @@ -3115,7 +2905,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TbarWplusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2_BTV_Run3_2022_Comm_v2_NanoV12/230929_093545/0000/nano_mcRun3_1-4.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TbarWplusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2_BTV_Run3_2022_Comm_v2_NanoV12/230929_093545/0000/nano_mcRun3_1-3.root" ], - "TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia84": [ + "TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093606/0000/nano_mcRun3_37.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093606/0000/nano_mcRun3_1-1.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093606/0000/nano_mcRun3_35.root", @@ -3175,7 +2965,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093606/0000/nano_mcRun3_45.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TBbarQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093606/0000/nano_mcRun3_42.root" ], - "TbarBQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia84": [ + "TbarBQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TbarBQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093641/0000/nano_mcRun3_2.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TbarBQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093641/0000/nano_mcRun3_22.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TbarBQ_t-channel_4FS_TuneCP5_13p6TeV_powheg-madspin-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_093641/0000/nano_mcRun3_21.root", diff --git a/metadata/data_Summer22EE_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json b/metadata/data_Summer22EE_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json index 549f1222..083ff485 100644 --- a/metadata/data_Summer22EE_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json +++ b/metadata/data_Summer22EE_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json @@ -1,5 +1,5 @@ { - "BTagMuRun2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "BTagMuRun2022E-27Jun2023-v1": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120218/0000/nano_data2022CDE_123.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120218/0000/nano_data2022CDE_158.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120218/0000/nano_data2022CDE_130.root", @@ -454,7 +454,7 @@ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120218/0000/nano_data2022CDE_418.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120218/0000/nano_data2022CDE_422.root" ], - "BTagMuRun2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "BTagMuRun2022F-PromptReco-v1": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044221/0000/nano_data2022FG_360.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044221/0000/nano_data2022FG_359.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044221/0000/nano_data2022FG_354.root", @@ -1494,7 +1494,7 @@ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044221/0000/nano_data2022FG_803.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044221/0000/nano_data2022FG_892.root" ], - "BTagMuRun2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "BTagMuRun2022G-PromptReco-v1": [ "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044232/0000/nano_data2022FG_34.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044232/0000/nano_data2022FG_14.root", "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/BTagMu/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230928_044232/0000/nano_data2022FG_20.root", diff --git a/metadata/data_Summer22EE_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22EE_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json index 9371ee62..d6d93366 100644 --- a/metadata/data_Summer22EE_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22EE_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "EGammaRun2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "EGammaRun2022E-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143847/0000/nano_data2022CDE_217.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143847/0000/nano_data2022CDE_114.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143847/0000/nano_data2022CDE_21.root", @@ -454,7 +454,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143847/0000/nano_data2022CDE_444.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143847/0000/nano_data2022CDE_450.root" ], - "EGammaRun2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "EGammaRun2022F-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144221/0000/nano_data2022FG_523.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144221/0000/nano_data2022FG_586.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144221/0000/nano_data2022FG_525.root", @@ -1446,7 +1446,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144221/0000/nano_data2022FG_967.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144221/0000/nano_data2022FG_590.root" ], - "EGammaRun2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "EGammaRun2022G-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144244/0000/nano_data2022FG_17.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144244/0000/nano_data2022FG_15.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022FG_prompt/EGamma/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144244/0000/nano_data2022FG_85.root", diff --git a/metadata/data_Summer22EE_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22EE_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json index 04fd1c69..91393fd5 100644 --- a/metadata/data_Summer22EE_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22EE_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "MuonEGRun2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonEGRun2022E-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144000/0000/nano_data2022CDE_92.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144000/0000/nano_data2022CDE_310.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144000/0000/nano_data2022CDE_323.root", @@ -420,7 +420,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/231009_085538/0000/nano_data2022CDE_5.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/231009_085538/0000/nano_data2022CDE_1.root" ], - "MuonEGRun2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonEGRun2022F-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115210/0000/nano_data2022FG_441.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115210/0000/nano_data2022FG_982.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115210/0000/nano_data2022FG_348.root", @@ -1466,7 +1466,7 @@ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115210/0000/nano_data2022FG_889.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115210/0000/nano_data2022FG_855.root" ], - "MuonEGRun2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonEGRun2022G-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115216/0000/nano_data2022FG_49.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115216/0000/nano_data2022FG_47.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/MuonEG/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115216/0000/nano_data2022FG_27.root", diff --git a/metadata/data_Summer22EE_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json b/metadata/data_Summer22EE_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json index 229d4b93..5df4218d 100644 --- a/metadata/data_Summer22EE_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json +++ b/metadata/data_Summer22EE_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json @@ -1,5 +1,5 @@ { - "JetMETRun2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "JetMETRun2022E-27Jun2023-v1": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120332/0000/nano_data2022CDE_213.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120332/0000/nano_data2022CDE_59.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120332/0000/nano_data2022CDE_4.root", diff --git a/metadata/data_Summer22EE_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22EE_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json index f8e1ad1e..458eff52 100644 --- a/metadata/data_Summer22EE_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22EE_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "MuonRun2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonRun2022E-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144157/0000/nano_data2022CDE_352.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144157/0000/nano_data2022CDE_212.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144157/0000/nano_data2022CDE_45.root", @@ -462,7 +462,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144157/0000/nano_data2022CDE_405.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022E-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144157/0000/nano_data2022CDE_210.root" ], - "MuonRun2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonRun2022F-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115140/0000/nano_data2022FG_184.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115140/0000/nano_data2022FG_176.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115140/0000/nano_data2022FG_473.root", @@ -1500,7 +1500,7 @@ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115140/0000/nano_data2022FG_710.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115140/0000/nano_data2022FG_737.root" ], - "MuonRun2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonRun2022G-PromptReco-v1": [ "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115146/0000/nano_data2022FG_32.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115146/0000/nano_data2022FG_17.root", "root://maite.iihe.ac.be:1095//store/user/mullerd/PFNano_Run3/data_2022FG_prompt/Muon/Run2022G-PromptReco-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_115146/0000/nano_data2022FG_171.root", diff --git a/metadata/data_Summer22_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json b/metadata/data_Summer22_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json index 19993ed1..60bd9525 100644 --- a/metadata/data_Summer22_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json +++ b/metadata/data_Summer22_Run3_2022_btagmu_BTV_Comm_v2_NanoV12.json @@ -1,5 +1,5 @@ { - "BTagMuRun2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "BTagMuRun2022C-27Jun2023-v2": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120154/0000/nano_data2022CDE_121.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120154/0000/nano_data2022CDE_417.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120154/0000/nano_data2022CDE_424.root", @@ -542,7 +542,7 @@ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120154/0000/nano_data2022CDE_480.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120154/0000/nano_data2022CDE_493.root" ], - "BTagMuRun2022D-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "BTagMuRun2022D-27Jun2023-v1": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022D-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120206/0000/nano_data2022CDE_59.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022D-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120206/0000/nano_data2022CDE_34.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_BTagMu/BTagMu/Run2022D-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120206/0000/nano_data2022CDE_38.root", diff --git a/metadata/data_Summer22_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json index b898c60d..d47fbb3b 100644 --- a/metadata/data_Summer22_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22_Run3_2022_e_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "EGammaRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "EGammaRun2022C-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143801/0000/nano_data2022CDE_61.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143801/0000/nano_data2022CDE_282.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143801/0000/nano_data2022CDE_48.root", @@ -497,7 +497,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143801/0000/nano_data2022CDE_391.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143801/0000/nano_data2022CDE_361.root" ], - "EGammaRun2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "EGammaRun2022D-27Jun2023-v2": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143825/0000/nano_data2022CDE_97.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143825/0000/nano_data2022CDE_154.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/EGamma/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143825/0000/nano_data2022CDE_23.root", diff --git a/metadata/data_Summer22_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json index fa671664..12224fb4 100644 --- a/metadata/data_Summer22_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22_Run3_2022_em_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "MuonEGRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonEGRun2022C-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143912/0000/nano_data2022CDE_118.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143912/0000/nano_data2022CDE_377.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_143912/0000/nano_data2022CDE_117.root", @@ -457,7 +457,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/231009_085452/0000/nano_data2022CDE_20.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/231009_085452/0000/nano_data2022CDE_19.root" ], - "MuonEGRun2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonEGRun2022D-27Jun2023-v2": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143937/0000/nano_data2022CDE_17.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143937/0000/nano_data2022CDE_30.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/MuonEG/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_143937/0000/nano_data2022CDE_33.root", diff --git a/metadata/data_Summer22_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json b/metadata/data_Summer22_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json index 1178f1c8..411733dd 100644 --- a/metadata/data_Summer22_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json +++ b/metadata/data_Summer22_Run3_2022_jetmet_BTV_Comm_v2_NanoV12.json @@ -1,5 +1,5 @@ { - "JetHTRun2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "JetHTRun2022C-27Jun2023-v2": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetHT/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120254/0000/nano_data2022CDE_12.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetHT/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120254/0000/nano_data2022CDE_34.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetHT/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120254/0000/nano_data2022CDE_150.root", @@ -161,7 +161,7 @@ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetHT/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120254/0000/nano_data2022CDE_90.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetHT/Run2022C-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120254/0000/nano_data2022CDE_101.root" ], - "JetMETRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "JetMETRun2022C-27Jun2023-v1": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_9.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_3.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_57.root", @@ -578,7 +578,7 @@ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_201.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_193.root" ], - "JetMETRun2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "JetMETRun2022D-27Jun2023-v2": [ "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120318/0000/nano_data2022CDE_135.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120318/0000/nano_data2022CDE_260.root", "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120318/0000/nano_data2022CDE_114.root", diff --git a/metadata/data_Summer22_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json b/metadata/data_Summer22_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json index e0f73d3c..7e22b121 100644 --- a/metadata/data_Summer22_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json +++ b/metadata/data_Summer22_Run3_2022_mu_BTV_Comm_v2_NanoV12_noPF.json @@ -1,5 +1,5 @@ { - "SingleMuonRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "SingleMuonRun2022C-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/SingleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144025/0000/nano_data2022CDE_102.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/SingleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144025/0000/nano_data2022CDE_80.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/SingleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144025/0000/nano_data2022CDE_99.root", @@ -144,7 +144,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/SingleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144025/0000/nano_data2022CDE_132.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/SingleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144025/0000/nano_data2022CDE_142.root" ], - "DoubleMuonRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "DoubleMuonRun2022C-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/DoubleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144049/0000/nano_data2022CDE_75.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/DoubleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144049/0000/nano_data2022CDE_73.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/DoubleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144049/0000/nano_data2022CDE_69.root", @@ -284,7 +284,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/DoubleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144049/0000/nano_data2022CDE_131.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/DoubleMuon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144049/0000/nano_data2022CDE_132.root" ], - "MuonRun2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonRun2022C-27Jun2023-v1": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144112/0000/nano_data2022CDE_174.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144112/0000/nano_data2022CDE_170.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144112/0000/nano_data2022CDE_171.root", @@ -677,7 +677,7 @@ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_144112/0000/nano_data2022CDE_188.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/231009_085602/0000/nano_data2022CDE_1.root" ], - "MuonRun2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12": [ + "MuonRun2022D-27Jun2023-v2": [ "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_144133/0000/nano_data2022CDE_18.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_144133/0000/nano_data2022CDE_35.root", "root://maite.iihe.ac.be:1095//store/user/vanderli/PFNano_Run3/data_2022CDE_rereco/Muon/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_144133/0000/nano_data2022CDE_227.root", diff --git a/metadata/test_bta_run3.json b/metadata/test_bta_run3.json index bb9b4122..059caa4c 100644 --- a/metadata/test_bta_run3.json +++ b/metadata/test_bta_run3.json @@ -1,8 +1,8 @@ { "JetMET_Run2022F-PromptReco-v1":[ - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/JetMET/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2/230808_133855/0000/nano_data2022FG_687.root" + "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022C-27Jun2023-v1_BTV_Run3_2022_Comm_v2_NanoV12/230927_120306/0000/nano_data2022CDE_9.root" ], "TTto4Q_TuneCP5_13p6TeV_powheg-pythia8":[ - "root://grid-cms-xrootd.physik.rwth-aachen.de:1094//store/user/milee/PFNano_Run3/mc_summer22EE/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v3_BTV_Run3_2022_Comm_v2_NanoV12/230927_141657/0000/nano_mcRun3_EE_948.root"] +"root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/sdeng/PFNano_Run3/mc_summer22/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4_BTV_Run3_2022_Comm_v2_NanoV12/230929_091754/0000/nano_mcRun3_159.root"] } diff --git a/scripts/fetch.py b/scripts/fetch.py index 128cb704..9af2c861 100644 --- a/scripts/fetch.py +++ b/scripts/fetch.py @@ -3,6 +3,8 @@ import json import argparse from collections import defaultdict +import uproot +import numpy as np # Adapt some developments from Andrey Pozdnyakov in CoffeaRunner https://github.com/cms-rwth/CoffeaRunner/blob/master/filefetcher/fetch.py parser = argparse.ArgumentParser( @@ -45,6 +47,11 @@ help="Black list for sites", default=None, ) +parser.add_argument( + "--save_", + help="Black list for sites", + default=None, +) args = parser.parse_args() @@ -149,7 +156,6 @@ def getFilesFromDas(args): if instance == "prod/phys03": possible_sites = [fetchsite[0]["site"][0]["name"]] - print(fetchsite[0]["site"]) else: possible_sites = [ s["site"][0]["name"] @@ -259,6 +265,63 @@ def getRootFilesFromPath(d, lim=None): return rootfiles +def validate(file): + n_tries = 0 + check_path = os.popen(f"gfal-ls {file}").read() + if check_path == "": + return f"NotFound: {file}" + not_able_open = True + while n_tries <= 5: + try: + fin = uproot.open(file) + not_able_open = False + return fin["Events"].num_entries + except: + print("retries", n_tries, file) + n_tries += n_tries + if not_able_open: + return f"FailedRetries: {file}" + + +## remove bad files not in place/broken +# -> store summary of total events & bad files +def remove_bad_files(sample_dict, outname, remove_bad=True): + from p_tqdm import p_map + + all_invalid = [] + bad_sample_dict = {} + f = open(f"{outname.replace('.json','')}_file_status.txt", "w") + for sample in sample_dict.keys(): + _rmap = p_map( + validate, + sample_dict[sample], + num_cpus=8, + desc=f"Validating {sample[:20]}...", + ) + + _results = list(_rmap) + counts = np.sum([r for r in _results if np.isreal(r) and isinstance(r, int)]) + all_invalid += [r for r in _results if isinstance(r, str)] + if len(all_invalid) > 0: + bad_sample_dict[sample] = all_invalid + f.write(f"{sample} Events: {np.sum(counts)}") + + if len(all_invalid) == 0: + f.write("No bad files found!") + else: + if remove_bad == True: + f.write( + "\n==========================BAD FILES==========================\n " + ) + + for sample in bad_sample_dict.keys(): + for bad_file in bad_sample_dict[sample]: + f.write(bad_file) + sample_dict[sample].remove(bad_file[bad_file.find("root://") :]) + + return sample_dict + + def main(args): if args.from_path: print("do it from path: ") @@ -276,6 +339,7 @@ def main(args): empty = False assert empty, "you have empty lists" output_file = "./%s" % (args.output) + fdict = remove_bad_files(fdict, args.output, True) # remove bad files with open(output_file, "w") as fp: json.dump(fdict, fp, indent=4) print("The file is saved at: ", output_file) diff --git a/scripts/plotdataMC.py b/scripts/plotdataMC.py index edf2b450..835d54c3 100644 --- a/scripts/plotdataMC.py +++ b/scripts/plotdataMC.py @@ -161,17 +161,18 @@ if "ctag" in args.phase and "DY" not in args.phase: input_txt = input_txt + "\nw/ soft-$\mu$" if args.variable == "all": - var_set = collated["mc"].keys() + var_set = [ + var + for var in collated["mc"].keys() + if var not in ["fname", "run", "lumi", "sumw"] + ] elif "*" in args.variable: var_set = [ var for var in collated["data"].keys() if args.variable.replace("*", "") in var ] else: var_set = args.variable.split(",") - for index, discr in enumerate(var_set): - if "sumw" == discr: - continue ## remove empty if ( discr not in collated["mc"].keys() @@ -205,7 +206,10 @@ allaxis["syst"] = "nominal" SF_axis = allaxis noSF_axis = allaxis - systlist = [i for i in range(collated["mc"][discr].axes[0].size)] + systlist = [ + collated["mc"][discr].axes[0].value(i) + for i in range(collated["mc"][discr].axes[0].size) + ] if "noSF" in systlist: noSF_axis["syst"] = "noSF" diff --git a/src/BTVNanoCommissioning/helpers/definitions.py b/src/BTVNanoCommissioning/helpers/definitions.py index 451bcf27..277d3b93 100644 --- a/src/BTVNanoCommissioning/helpers/definitions.py +++ b/src/BTVNanoCommissioning/helpers/definitions.py @@ -441,7 +441,7 @@ def definitions(): "ylabel_text": "Jets", "format_unit": "2f", "format_unit_digits": 1, - "bins": 100, + "bins": 50, "inputVar_units": None, }, "DeepCSV_jetNSecondaryVertices": { @@ -6092,264 +6092,140 @@ def definitions(): return definitions_dict -def axes_name(var_input): - discname = [ - "MET_phi", - "MET_pt", - "btagDeepB_0", - "btagDeepB_1", - "btagDeepB_2", - "btagDeepB_3", - "btagDeepB_b_0", - "btagDeepB_b_1", - "btagDeepB_b_2", - "btagDeepB_b_3", - "btagDeepB_bb_0", - "btagDeepB_bb_1", - "btagDeepB_bb_2", - "btagDeepB_bb_3", - "btagDeepC_0", - "btagDeepC_1", - "btagDeepC_2", - "btagDeepC_3", - "btagDeepCvB_0", - "btagDeepCvB_1", - "btagDeepCvB_2", - "btagDeepCvB_3", - "btagDeepCvL_0", - "btagDeepCvL_1", - "btagDeepCvL_2", - "btagDeepCvL_3", - "btagDeepFlavB_0", - "btagDeepFlavB_1", - "btagDeepFlavB_2", - "btagDeepFlavB_3", - "btagDeepFlavB_b_0", - "btagDeepFlavB_b_1", - "btagDeepFlavB_b_2", - "btagDeepFlavB_b_3", - "btagDeepFlavB_bb_0", - "btagDeepFlavB_bb_1", - "btagDeepFlavB_bb_2", - "btagDeepFlavB_bb_3", - "btagDeepFlavB_lepb_0", - "btagDeepFlavB_lepb_1", - "btagDeepFlavB_lepb_2", - "btagDeepFlavB_lepb_3", - "btagDeepFlavC_0", - "btagDeepFlavC_1", - "btagDeepFlavC_2", - "btagDeepFlavC_3", - "btagDeepFlavCvB_0", - "btagDeepFlavCvB_1", - "btagDeepFlavCvB_2", - "btagDeepFlavCvB_3", - "btagDeepFlavCvL_0", - "btagDeepFlavCvL_1", - "btagDeepFlavCvL_2", - "btagDeepFlavCvL_3", - "dr_lmujethmu", - "dr_lmujetsmu", - "dr_lmusmu", - "dr_mujet0", - "dr_mujet1", - "dr_mujet2", - "dr_mujet3", - "dr_mumu", - "ele_dxy", - "ele_dz", - "ele_eta", - "ele_pfRelIso03_all", - "ele_phi", - "ele_pt", - "hl_dxy", - "hl_dz", - "hl_eta", - "hl_pfRelIso04_all", - "hl_phi", - "hl_pt", - "hl_ptratio", - "jet0_eta", - "jet0_mass", - "jet0_phi", - "jet0_pt", - "jet1_eta", - "jet1_mass", - "jet1_phi", - "jet1_pt", - "jet2_eta", - "jet2_mass", - "jet2_phi", - "jet2_pt", - "jet3_eta", - "jet3_mass", - "jet3_phi", - "jet3_pt", - "jet_eta", - "jet_mass", - "jet_phi", - "jet_pt", - "lmujet_eta", - "lmujet_mass", - "lmujet_phi", - "lmujet_pt", - "mu_dxy", - "mu_dz", - "mu_eta", - "mu_pfRelIso04_all", - "mu_phi", - "mu_pt", - "mujet_eta", - "mujet_mass", - "mujet_phi", - "mujet_pt", - "negl_dxy", - "negl_dz", - "negl_eta", - "negl_pfRelIso04_all", - "negl_phi", - "negl_pt", - "njet", - "posl_dxy", - "posl_dz", - "posl_eta", - "posl_pfRelIso04_all", - "posl_phi", - "posl_pt", - "sl_dxy", - "sl_dz", - "sl_eta", - "sl_pfRelIso04_all", - "sl_phi", - "sl_pt", - "sl_ptratio", - "soft_l_dxy", - "soft_l_mass", - "soft_l_dz", - "soft_l_eta", - "soft_l_pfRelIso04_all", - "soft_l_phi", - "soft_l_pt", - "soft_l_ptratio", - "w_eta", - "w_mass", - "w_phi", - "w_pt", - "z_eta", - "z_mass", - "z_phi", - "z_pt", - ] +def axes_name(var): output = {} - for var in discname: - unit = "" - obj = "" - if "dr" in var: - obj = "$\\Delta$R" - if "lmujethmu" in var: - unit = "($\\mu$-Jet,$\\mu$)" - elif "lmujetsmu" in var: - unit = "($\\mu$-Jet,soft-$\\mu$)" - elif "lmusmu" in var: - unit = "($\\mu$,soft-$\\mu$)" - elif "mujet" in var: - unit = "($\\mu$,Jet)" - elif "MET_" in var: - obj = "MET" - elif "ele_" in var: - obj = "e" - elif "posl_" in var: - obj = "$\\ell^+$" - elif "negl_" in var: - obj = "$\\ell^-$" - elif "mu_" in var: - obj = "$\\mu$" - elif "hl_" in var: - obj = "$\\ell_1$" - elif "sl_" in var: - obj = "$\\ell_2$" - elif "soft_l" in var: - obj = "soft-$\\mu$" + unit = "" + obj = "" + if "dr" in var: + obj = "$\\Delta$R" + if "lmujethmu" in var: + unit = "($\\mu$-Jet,$\\mu$)" + elif "lmujetsmu" in var: + unit = "($\\mu$-Jet,soft-$\\mu$)" + elif "lmusmu" in var: + unit = "($\\mu$,soft-$\\mu$)" elif "mujet" in var: - obj = "$\\mu$-Jet" - elif "jet" in var: - obj = "Jet" - elif "w_" in var: - obj = "W" - elif "z_" in var: - obj = "Z" - - if "pt" in var: - unit = " $p_T$ [GeV]" - elif "mass" in var: - unit = " mass [GeV]" - elif "eta" in var: - unit = " $\\eta$" - elif "phi" in var: - unit = " $\\phi$" - elif "dxy" in var: - unit = " $d_{xy}$ [cm]" - elif "dz" in var: - unit = " $d_{z}$ [cm]" - elif "pfRelIso" in var: - unit = " Rel. Iso" - elif "btagDeepCvL" in var: - unit = "Jet DeepCSV CvL" - elif "btagDeepCvB" in var: - unit = "Jet DeepCSV CvB" - elif "btagDeepB" in var: - if "_b_" in var: - unit = "Jet DeepCSV P(b)" - elif "_bb" in var: - unit = "Jet DeepCSV P(bb)" - else: - unit = "Jet DeepCSV b discriminator" - elif "btagDeepC" in var: - unit = "Jet DeepCSV CvsAll" - elif "btagDeepFlavCvL" in var: - unit = "Jet DeepJet CvL" - elif "btagDeepFlavCvB" in var: - unit = "Jet DeepJet CvB" - elif "btagDeepFlavB" in var: - if "_b_" in var: - unit = "Jet DeepJet P(b)" - elif "_bb" in var: - unit = "Jet DeepJet P(bb)" - elif "_lepb" in var: - unit = "Jet DeepJet P(lepb)" - else: - unit = "Jet DeepJet b discriminator" - elif "btagDeepFlavC" in var: - unit = "Jet DeepJet CvsAll" - - label = obj + unit - if var.endswith("0") or "jet0" in var: - if "btagDeepFlav" not in var: - label = label.replace("Jet", "$1^{st}$-Jet") - else: - label = label.replace("Jet", "$1^{st}$-Jet", 1) - elif var.endswith("1") or "jet1" in var: - if "btagDeepFlav" not in var: - label = label.replace("Jet", "$2^{nd}$-Jet") - else: - label = label.replace("Jet", "$2^{nd}$-Jet", 1) - elif var.endswith("2") or "jet2" in var: - if "btagDeepFlav" not in var: - label = label.replace("Jet", "$3^{rd}$-Jet") - else: - label = label.replace("Jet", "$3^{rd}$-Jet", 1) - elif var.endswith("3") or "jet3" in var: - if "btagDeepFlav" not in var: - label = label.replace("Jet", "$4^{th}$-Jet") - else: - label = label.replace("Jet", "$4^{th}$-Jet", 1) - if "ptratio" in var: - if var == "hl_ptratio": - label = "$p_T^{\\ell_1}/p_T^{Jet}$" - if var == "sl_ptratio": - label = "$p_T^{\\ell_2}/p_T^{Jet}$" - if var == "soft_l_ptratio": - label = "$p_T^{soft-\\mu}/p_T^{Jet}$" - output[var] = label - return output[var_input] + unit = "($\\mu$,Jet)" + elif "MET_" in var: + obj = "MET" + elif "ele_" in var: + obj = "e" + elif "posl_" in var: + obj = "$\\ell^+$" + elif "negl_" in var: + obj = "$\\ell^-$" + elif "mu_" in var: + obj = "$\\mu$" + elif "hl_" in var: + obj = "$\\ell_1$" + elif "sl_" in var: + obj = "$\\ell_2$" + elif "soft_l" in var: + obj = "soft-$\\mu$" + elif "mujet" in var: + obj = "$\\mu$-Jet" + elif "jet" in var: + obj = "Jet" + elif "w_" in var: + obj = "W" + elif "z_" in var: + obj = "Z" + if "pt" in var: + unit = " $p_T$ [GeV]" + elif "mass" in var: + unit = " mass [GeV]" + elif "eta" in var: + unit = " $\\eta$" + elif "phi" in var: + unit = " $\\phi$" + elif "dxy" in var: + unit = " $d_{xy}$ [cm]" + elif "dz" in var: + unit = " $d_{z}$ [cm]" + elif "pfRelIso" in var: + unit = " Rel. Iso" + elif "btag" in var: + unit = "Jet" + ## Negative tagger + if "Neg" in var: + unit = "Neg " + unit + ## Different taggers + if "DeepFlav" in var: + unit = unit + " DeepJet" + elif "RobustParTAK4" in var: + unit = unit + " RobustParTAK4" + elif "PNet" in var: + unit = unit + " PNet" + else: + unit = unit + " DeepCSV" + # output node + if "CvL" in var: + unit = unit + " CvL" + elif "CvB" in var: + unit = unit + " CvB" + elif "B_b" in var or "ProbB": + unit = unit + " Prob(b)" + elif "B_bb" in var: + unit = unit + " Prob(bb)" + elif "B_lepb" in var: + unit = unit + " Prob(lepb)" + elif "B_lepb" in var: + unit = unit + " Prob(lepb)" + elif "QvG" or "QG" in var: + unit = unit + " QvG" + elif "G" in var: + unit = unit + " Prob(g)" + elif "UDS" in var: + unit = unit + " Prob(uds)" + elif "TauVJet" in var: + unit = unit + " $\\tau$vJet" + elif "B" in var: + unit = unit + " BvAll" + elif "C" in var: + unit = unit + " Prob(c)" + elif "PNetReg" in var: + unit = "Jet PNet Reg." + if "Corr" in var: + unit = " Corr" + elif "CorrNeutrino" in var: + unit = " Corr (w/$\\nu$)" + elif "RegPtRawRes" in var: + unit = " Resoultion" + elif "ProbaN" in var: + unit = "Neg. Jet Probability" + elif "Proba" in var: + unit = "Jet Probability" + elif "BprobN" in var: + unit = "Neg. b-Jet Probability" + elif "Bprob" in var: + unit = "b-Jet Probability" + label = obj + unit + if var.endswith("0") or "jet0" in var: + if "btagDeepFlav" not in var: + label = label.replace("Jet", "$1^{st}$-Jet") + else: + label = label.replace("Jet", "$1^{st}$-Jet", 1) + elif var.endswith("1") or "jet1" in var: + if "btagDeepFlav" not in var: + label = label.replace("Jet", "$2^{nd}$-Jet") + else: + label = label.replace("Jet", "$2^{nd}$-Jet", 1) + elif var.endswith("2") or "jet2" in var: + if "btagDeepFlav" not in var: + label = label.replace("Jet", "$3^{rd}$-Jet") + else: + label = label.replace("Jet", "$3^{rd}$-Jet", 1) + elif var.endswith("3") or "jet3" in var: + if "btagDeepFlav" not in var: + label = label.replace("Jet", "$4^{th}$-Jet") + else: + label = label.replace("Jet", "$4^{th}$-Jet", 1) + if "ptratio" in var: + if var == "hl_ptratio": + label = "$p_T^{\\ell_1}/p_T^{Jet}$" + if var == "sl_ptratio": + label = "$p_T^{\\ell_2}/p_T^{Jet}$" + if var == "soft_l_ptratio": + label = "$p_T^{soft-\\mu}/p_T^{Jet}$" + return label diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index a340b173..e015a2ee 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -579,6 +579,17 @@ "energy": "13", "comments": "Computed using GenXSecAnalyzer.", }, + { + "id": "64204f0229461764a903bf9b", + "process_name": "DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", + "cross_section": "20950.0", + "total_uncertainty": "183.5", + "accuracy": "unknown", + "DAS": "/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v4/MINIAODSIM", + "equivalent_lumi": "0.02612", + "fraction_negative_weight": "0.1301", + "comments": "Automatically computed", + }, { "process_name": "DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", "cross_section": "22635.1", @@ -1239,6 +1250,24 @@ "energy": "13.6", "comment": "from TOP-22-012", }, + { + "process_name": "TbarWplusto4Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "10.8", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "TbarWplustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "10.7", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "TbarWplusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "2.62", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, { "process_name": "TWminus_DR_AtLeastOneLepton_CP5_13p6TeV_powheg-pythia8", "cross_section": "24.2", @@ -1253,6 +1282,24 @@ "energy": "13.6", "comment": "from TOP-22-012", }, + { + "process_name": "TWminusto4Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "10.8", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "TWminustoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "10.7", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "TWminusto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "2.62", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, { "process_name": "TTTo2L2Nu_CP5_13p6TeV_powheg-pythia8", "cross_section": "96.9", @@ -1287,6 +1334,17 @@ "energy": "13.6", "comment": "from GenXSecAnalyzer", }, + { + "id": "6420506329461764a903c1c9", + "process_name": "TTto4Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "762.1", + "total_uncertainty": "0.1345", + "accuracy": "NLO", + "DAS": "/TTto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v4/MINIAODSIM", + "equivalent_lumi": "1.292", + "fraction_negative_weight": "0.003854", + "comments": "Automatically computed", + }, { "process_name": "WJetsToLNu_TuneCP5_13p6TeV-madgraphMLM-pythia8", "cross_section": "63199.9", @@ -1322,4 +1380,64 @@ "energy": "13.6", "comment": "from TOP-22-012", }, + { + "process_name": "ZZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "2.36", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "ZZto2Nu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "4.48", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "ZZto4L_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "0.170", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "ZZto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "0.674", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "WZtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "12.368", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "WZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "3.696", + "energy": "13.6", + "comment": "from GenXSAnalyzer", + }, + { + "process_name": "WZto3LNu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "1.786", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "WWto4Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "78.79", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "76.16", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, + { + "process_name": "WWto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": "18.41", + "energy": "13.6", + "comment": "from TOP-22-012 with PDG 2023 value", + }, ] diff --git a/src/BTVNanoCommissioning/utils/histogrammer.py b/src/BTVNanoCommissioning/utils/histogrammer.py index b45cafba..94246840 100644 --- a/src/BTVNanoCommissioning/utils/histogrammer.py +++ b/src/BTVNanoCommissioning/utils/histogrammer.py @@ -421,6 +421,7 @@ def histogrammer(events, workflow): "PNetRegPtRawRes", "Bprob", "BprobN", + "Proba", "ProbaN", ] for disc in disc_list: diff --git a/src/BTVNanoCommissioning/workflows/BTA_ttbar_producer.py b/src/BTVNanoCommissioning/workflows/BTA_ttbar_producer.py index f60e00aa..23fa75ca 100644 --- a/src/BTVNanoCommissioning/workflows/BTA_ttbar_producer.py +++ b/src/BTVNanoCommissioning/workflows/BTA_ttbar_producer.py @@ -72,6 +72,8 @@ def process_shift(self, events, shift_name): "Evt": events.event, "LumiBlock": events.luminosityBlock, "rho": events.fixedGridRhoFastjetAll, + "npvs": events.PV.npvs, + "npvsGood": events.PV.npvsGood, } if not isRealData: basic_vars["nPU"] = events.Pileup.nPU @@ -383,7 +385,7 @@ def process_shift(self, events, shift_name): Jet = ak.zip( { # basic kinematics - "pT": jet.pt, + "pt": jet.pt, "eta": jet.eta, "phi": jet.phi, "mass": jet.mass, @@ -523,7 +525,21 @@ def process_shift(self, events, shift_name): b_nest[n] = ak.packed(ak.without_parameters(output[bname][n])) output_root[bname] = ak.zip(b_nest) fout["btagana/ttree"] = output_root - + if isRealData: + fout["sumw"] = {"total_events": ak.Array([len(events)])} + else: + fout["sumw"] = { + "total_events": ak.Array([len(events)]), + "total_pos_events": ak.Array([ak.sum(events.genWeight > 0)]), + "total_neg_events": ak.Array([-1.0 * ak.sum(events.genWeight < 0)]), + "total_wei_events": ak.Array([ak.sum(events.genWeight)]), + "total_poswei_events": ak.Array( + [ak.sum(events.genWeight[events.genWeight > 0.0])] + ), + "total_negwei_events": ak.Array( + [ak.sum(events.genWeight[events.genWeight < 0.0])] + ), + } return {dataset: len(events)} def postprocess(self, accumulator): From 7c5005d45ab2f90a1397ed3dab2fdee11e6e3e3f Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Tue, 17 Oct 2023 20:07:19 +0200 Subject: [PATCH 02/22] feat: add features for plotting scripts --- README.md | 11 +- scripts/comparison.py | 164 ++++++++++-------- scripts/fetch.py | 8 +- scripts/plotdataMC.py | 30 +++- .../helpers/definitions.py | 10 +- .../utils/histogrammer.py | 74 +++++--- 6 files changed, 174 insertions(+), 123 deletions(-) diff --git a/README.md b/README.md index eff334aa..68936120 100644 --- a/README.md +++ b/README.md @@ -540,10 +540,7 @@ You can specify `-v all` to plot all the variables in the `coffea` file, or use
more arguments

-``` -python comparison.py -i a.coffea,b.coffea -p ttsemilep_sf -r SingleMuon_Run2017B-106X_PFNanov1 -c DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8 -v DeepJet_Cpfcan_BtagPf_trackJetDistVal_0 --shortref Run2017B --shortcomp DYJets (--sepflav True/False) -python comparison.py -i "test*.coffea" -p ttsemilep_sf -r SingleMuon_Run2017B-106X_PFNanov1 -c DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8 -v DeepJet_Cpfcan_BtagPf_trackJetDistVal_0 --shortref Run2017B --shortcomp DYJets (--sepflav True/False) - + options: -h, --help show this help message and exit -p {dilep_sf,ttsemilep_sf,ctag_Wc_sf,ctag_DY_sf,ctag_ttsemilep_sf,ctag_ttdilep_sf}, --phase {dilep_sf,ttsemilep_sf,ctag_Wc_sf,ctag_DY_sf,ctag_ttsemilep_sf,ctag_ttdilep_sf} @@ -559,9 +556,8 @@ options: variables to plot, splitted by ,. Wildcard option * available as well. Specifying `all` will run through all variables. --ext EXT prefix name --com COM sqrt(s) in TeV - --shortref SHORTREF short name for reference dataset for legend - --shortcomp SHORTCOMP - short names for compared datasets for legend, split by ',' + --mergemap MERGEMAP + Group list of sample(keys in coffea) as reference/compare set as dictionary format. Keys would be the new lables of the group --autorebin AUTOREBIN Rebin the plotting variables, input `int` or `list`. int: merge N bins. list of number: rebin edges(non-uniform bin is possible) --xlabel XLABEL rename the label for x-axis @@ -654,4 +650,3 @@ Host *_f jupyter notebook --ip=127.0.0.1 --port 8800 --no-browser ``` 4. URL for notebook will be printed, copy and open in local browser - diff --git a/scripts/comparison.py b/scripts/comparison.py index 07c2cd74..156555f0 100644 --- a/scripts/comparison.py +++ b/scripts/comparison.py @@ -1,5 +1,5 @@ import numpy as np -import argparse, os, arrow, glob +import argparse, os, arrow, glob, json, re from coffea.util import load import matplotlib.pyplot as plt from matplotlib.offsetbox import AnchoredText @@ -64,18 +64,12 @@ help="str, optional {None, 'show', 'sum'} Whether plot the under/overflow bin. If 'show', add additional under/overflow bin. If 'sum', add the under/overflow bin content to first/last bin.", ) parser.add_argument("--ext", type=str, default="", help="prefix name/btv name tag") -parser.add_argument("--com", default="13", type=str, help="sqrt(s) in TeV") +parser.add_argument("--com", default="13.6", type=str, help="sqrt(s) in TeV") parser.add_argument( - "--shortref", - default="", - type=str, - help="short name for reference dataset for legend", -) -parser.add_argument( - "--shortcomp", - default="", + "--mergemap", + default=None, type=str, - help="short names for compared datasets for legend, split by ','", + help="Group list of sample(keys in coffea) as reference/compare set as dictionary format. Keys would be the new lables of the group", ) parser.add_argument( "--autorebin", @@ -109,21 +103,24 @@ time = arrow.now().format("YY_MM_DD") if not os.path.isdir(f"plot/BTV/{args.phase}_{args.ext}_{time}/"): os.makedirs(f"plot/BTV/{args.phase}_{args.ext}_{time}/") -if not any(".coffea" in o for o in output.keys()): - mergemap[args.ref] = [m for m in output.keys() if args.ref == m] - for c in args.compared.split(","): - mergemap[c] = [m for m in output.keys() if c == m] -else: - reflist = [] - for f in output.keys(): - reflist.extend([m for m in output[f].keys() if args.ref == m]) - mergemap[args.ref] = reflist - - for c in args.compared.split(","): - comparelist = [] +if args.mergemap is None: + if not any(".coffea" in o for o in output.keys()): + mergemap[args.ref] = [m for m in output.keys() if args.ref == m] + for c in args.compared.split(","): + mergemap[c] = [m for m in output.keys() if c == m] + else: + reflist = [] for f in output.keys(): - comparelist.extend([m for m in output[f].keys() if c == m]) - mergemap[c] = comparelist + reflist.extend([m for m in output[f].keys() if args.ref == m]) + mergemap[args.ref] = reflist + + for c in args.compared.split(","): + comparelist = [] + for f in output.keys(): + comparelist.extend([m for m in output[f].keys() if c == m]) + mergemap[c] = comparelist +else: + mergemap = json.loads(args.mergemap) collated = collate(output, mergemap) ### style settings if "Run" in args.ref: @@ -160,20 +157,34 @@ input_txt = input_txt + " ($\mu$)" if "ctag" in args.phase and "DY" not in args.phase: input_txt = input_txt + "\nw/ soft-$\mu$" -if args.shortref == "": - args.shortref = args.ref -if args.shortcomp == "": - args.shortcomp = args.compared if args.variable == "all": var_set = collated[args.ref].keys() elif "*" in args.variable: - var_set = [ - var - for var in collated[args.ref].keys() - if args.variable.replace("*", "") in var - ] + if args.variable.count("*") > 1: + var_set = [ + var + for var in collated[args.ref].keys() + if args.variable.replace("*", "") in var + ] + elif args.variable.startswith("*") or args.variable.endswith("*"): + var_set = [ + var + for var in collated[args.ref].keys() + if var.startswith(args.variable.replace("*", "")) + or var.endswith(args.variable.replace("*", "")) + ] + else: + var_set = [ + var + for var in collated[args.ref].keys() + if re.match( + f"^{args.variable.split('*')[0]}.*{args.variable.split('*')[1]}$", var + ) + != None + ] + else: var_set = args.variable.split(",") for index, discr in enumerate(var_set): @@ -269,70 +280,70 @@ hep.histplot( collated[args.ref][discr][laxis] + collated[args.ref][discr][puaxis], - label=args.shortref + "-l", + label=args.ref + "-l", color="b", histtype=hist_type, yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) hep.histplot( collated[args.ref][discr][caxis], - label=args.shortref + "-c", + label=args.ref + "-c", color="g", histtype=hist_type, yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) hep.histplot( collated[args.ref][discr][baxis], - label=args.shortref + "-b", + label=args.ref + "-b", yerr=True, color="r", histtype=hist_type, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) mindex = 0 ax.legend(ncol=3, loc=1) - for c, s in zip(args.compared.split(","), args.shortcomp.split(",")): + for c in args.compared.split(","): hep.histplot( collated[c][discr][laxis] + collated[c][discr][puaxis], - label=s + "-l", + label=c + "-l", color="b", marker=markers[mindex + 1], histtype="errorbar", yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) hep.histplot( collated[c][discr][caxis], - label=s + "-c", + label=c + "-c", color="g", marker=markers[mindex + 1], histtype="errorbar", yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) hep.histplot( collated[c][discr][baxis], - label=s + "-b", + label=c + "-b", yerr=True, color="r", marker=markers[mindex + 1], histtype="errorbar", ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) # comparison splitted by flavor rax = plotratio( @@ -342,8 +353,8 @@ denom_fill_opts=None, error_opts={"color": "b", "marker": markers[mindex + 1]}, clear=False, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) rax2 = plotratio( collated[c][discr][caxis], @@ -352,8 +363,8 @@ denom_fill_opts=None, error_opts={"color": "g", "marker": markers[mindex + 1]}, clear=False, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) rax3 = plotratio( collated[c][discr][baxis], @@ -362,8 +373,8 @@ denom_fill_opts=None, error_opts={"color": "r", "marker": markers[mindex + 1]}, clear=False, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) mindex += 1 @@ -400,37 +411,42 @@ ax.set_xlabel(None) hep.histplot( collated[args.ref][discr][allaxis], - label=args.shortref + " (Ref)", + label=args.ref + " (Ref)", histtype=hist_type, yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) - for c, s in zip(args.compared.split(","), args.shortcomp.split(",")): + callaxis = {} + + for i, c in enumerate(args.compared.split(",")): + if "flav" in collated[c][discr].axes.name: + callaxis = {"flav": sum} + if "syst" in collated[c][discr].axes.name: + callaxis["syst"] = "nominal" hep.histplot( - collated[c][discr][allaxis], - label=s, + collated[c][discr][callaxis], + label=c, histtype=hist_type, yerr=True, ax=ax, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) - for i, c in enumerate(args.compared.split(",")): plotratio( - collated[c][discr][allaxis], + collated[c][discr][callaxis], collated[args.ref][discr][allaxis], ax=rax, denom_fill_opts=None, - error_opts={"color": ax.get_lines()[i * 2 + 1].get_color()}, + error_opts={"color": ax.get_lines()[i + 1].get_color()}, clear=False, - xerr=do_xerr - # flow=args.flow, + xerr=do_xerr, + flow=args.flow, ) ## No error band used alls = collated[args.ref][discr][allaxis] - for c in args.compared.split(","): - alls = collated[c][discr][allaxis] + alls + # for c in args.compared.split(","): + # alls = collated[c][discr][callaxis] + alls xmin, xmax = autoranger(alls) rax.set_xlim(xmin, xmax) if args.xrange is not None: diff --git a/scripts/fetch.py b/scripts/fetch.py index 9af2c861..33bd3dea 100644 --- a/scripts/fetch.py +++ b/scripts/fetch.py @@ -118,7 +118,7 @@ def getFilesFromDas(args): Tier = dataset.strip().split("/")[3] # NANOAODSIM for regular samples, USER for private - if "Run" in dataset and "mc" not in dataset: + if "Run" in dataset and "pythia8" not in dataset: dsname = ( dataset.strip().split("/")[1] + dataset.strip().split("/")[2][ @@ -129,6 +129,7 @@ def getFilesFromDas(args): .rfind("-") ] ) + dsname = dsname[: dsname.find("_BTV")] # +dataset.strip().split("/")[2].find("Run") instance = "prod/global" if Tier == "USER": @@ -283,8 +284,6 @@ def validate(file): return f"FailedRetries: {file}" -## remove bad files not in place/broken -# -> store summary of total events & bad files def remove_bad_files(sample_dict, outname, remove_bad=True): from p_tqdm import p_map @@ -317,7 +316,8 @@ def remove_bad_files(sample_dict, outname, remove_bad=True): for sample in bad_sample_dict.keys(): for bad_file in bad_sample_dict[sample]: f.write(bad_file) - sample_dict[sample].remove(bad_file[bad_file.find("root://") :]) + if bad_file[bad_file.find("root://") :] in sample_dict[sample]: + sample_dict[sample].remove(bad_file[bad_file.find("root://") :]) return sample_dict diff --git a/scripts/plotdataMC.py b/scripts/plotdataMC.py index 835d54c3..ec7029f7 100644 --- a/scripts/plotdataMC.py +++ b/scripts/plotdataMC.py @@ -1,5 +1,5 @@ import numpy as np -import argparse, os, arrow, glob +import argparse, os, arrow, glob, re from coffea.util import load import matplotlib.pyplot as plt from matplotlib.offsetbox import AnchoredText @@ -23,7 +23,7 @@ bininfo = definitions() parser = argparse.ArgumentParser(description="hist plotter for commissioning") parser.add_argument("--lumi", required=True, type=float, help="luminosity in /pb") -parser.add_argument("--com", default="13", type=str, help="sqrt(s) in TeV") +parser.add_argument("--com", default="13.6", type=str, help="sqrt(s) in TeV") parser.add_argument( "-p", "--phase", @@ -167,9 +167,29 @@ if var not in ["fname", "run", "lumi", "sumw"] ] elif "*" in args.variable: - var_set = [ - var for var in collated["data"].keys() if args.variable.replace("*", "") in var - ] + if args.variable.count("*") > 1: + var_set = [ + var + for var in collated[args.ref].keys() + if args.variable.replace("*", "") in var + ] + elif args.variable.startswith("*") or args.variable.endswith("*"): + var_set = [ + var + for var in collated[args.ref].keys() + if var.startswith(args.variable.replace("*", "")) + or var.endswith(args.variable.replace("*", "")) + ] + else: + var_set = [ + var + for var in collated[args.ref].keys() + if re.match( + f"^{args.variable.split('*')[0]}.*{args.variable.split('*')[1]}$", var + ) + != None + ] + else: var_set = args.variable.split(",") for index, discr in enumerate(var_set): diff --git a/src/BTVNanoCommissioning/helpers/definitions.py b/src/BTVNanoCommissioning/helpers/definitions.py index 277d3b93..c3a9cb85 100644 --- a/src/BTVNanoCommissioning/helpers/definitions.py +++ b/src/BTVNanoCommissioning/helpers/definitions.py @@ -441,7 +441,7 @@ def definitions(): "ylabel_text": "Jets", "format_unit": "2f", "format_unit_digits": 1, - "bins": 50, + "bins": 100, "inputVar_units": None, }, "DeepCSV_jetNSecondaryVertices": { @@ -6149,7 +6149,9 @@ def axes_name(var): unit = "Jet" ## Negative tagger if "Neg" in var: - unit = "Neg " + unit + unit = "Neg. " + unit + if "tanh" in var: + unit = "Trans. " + unit ## Different taggers if "DeepFlav" in var: unit = unit + " DeepJet" @@ -6172,14 +6174,14 @@ def axes_name(var): unit = unit + " Prob(lepb)" elif "B_lepb" in var: unit = unit + " Prob(lepb)" - elif "QvG" or "QG" in var: + elif "QvG" in var or "QG" in var: unit = unit + " QvG" elif "G" in var: unit = unit + " Prob(g)" elif "UDS" in var: unit = unit + " Prob(uds)" elif "TauVJet" in var: - unit = unit + " $\\tau$vJet" + unit = unit + " $\\tau$vJ" elif "B" in var: unit = unit + " BvAll" elif "C" in var: diff --git a/src/BTVNanoCommissioning/utils/histogrammer.py b/src/BTVNanoCommissioning/utils/histogrammer.py index 94246840..baab4d3b 100644 --- a/src/BTVNanoCommissioning/utils/histogrammer.py +++ b/src/BTVNanoCommissioning/utils/histogrammer.py @@ -359,17 +359,54 @@ def histogrammer(events, workflow): disc_list = [ "btagDeepB", "btagDeepC", - "btagDeepFlavB", - "btagDeepFlavC", + "btagDeepB_b", + "btagDeepB_bb", "btagDeepCvL", "btagDeepCvB", + "btagDeepFlavB", + "btagDeepFlavC", + "btagTransDeepFlavB", + "btagTransDeepFlavC", "btagDeepFlavCvL", "btagDeepFlavCvB", - "btagDeepB_b", - "btagDeepB_bb", "btagDeepFlavB_b", "btagDeepFlavB_bb", - "btagDeepFlavB_lepb", + "btagTransDeepFlavB_lepb", + "btagTransDeepFlavB_b", + "btagTransDeepFlavB_bb", + "btagTransDeepFlavB_lepb", + "btagPNetB", + "btagTransPNetB", + "btagPNetCvB", + "btagPNetCvL", + "btagPNetProbB", + "btagPNetProbC", + "btagPNetProbG", + "btagPNetProbUDS", + "btagTransPNetProbB", + "btagTransPNetProbC", + "btagTransPNetProbG", + "btagTransPNetProbUDS", + "btagPNetQvG", + "btagPNetTauVJet", + "btagRobustParTAK4B", + "btagRobustParTAK4B_b", + "btagRobustParTAK4B_bb", + "btagRobustParTAK4B_lepb", + "btagRobustParTAK4C", + "btagRobustParTAK4G", + "btagRobustParTAK4UDS", + "btagTransRobustParTAK4B", + "btagTransRobustParTAK4B_b", + "btagTransRobustParTAK4B_bb", + "btagTransRobustParTAK4B_lepb", + "btagTransRobustParTAK4C", + "btagTransRobustParTAK4G", + "btagTransRobustParTAK4UDS", + "btagRobustParTAK4CvB", + "btagRobustParTAK4CvL", + "btagRobustParTAK4QG", + ## Negative tagger "btagNegDeepFlavB", "btagNegDeepFlavB_b", "btagNegDeepFlavB_bb", @@ -397,36 +434,17 @@ def histogrammer(events, workflow): "btagNegRobustParTAK4G", "btagNegRobustParTAK4QG", "btagNegRobustParTAK4UDS", - "btagPNetB", - "btagPNetCvB", - "btagPNetCvL", - "btagPNetProbB", - "btagPNetProbC", - "btagPNetProbG", - "btagPNetProbUDS", - "btagPNetQvG", - "btagPNetTauVJet", - "btagRobustParTAK4B", - "btagRobustParTAK4B_b", - "btagRobustParTAK4B_bb", - "btagRobustParTAK4B_lepb", - "btagRobustParTAK4C", - "btagRobustParTAK4CvB", - "btagRobustParTAK4CvL", - "btagRobustParTAK4G", - "btagRobustParTAK4QG", - "btagRobustParTAK4UDS", + # other prob info "PNetRegPtRawCorr", "PNetRegPtRawCorrNeutrino", "PNetRegPtRawRes", "Bprob", "BprobN", - "Proba", "ProbaN", ] for disc in disc_list: - if disc not in events.Jet.fields: - continue + # if disc not in events.Jet.fields: + # continue njet = 1 if "ttdilep_sf" in workflow: njet = 2 @@ -439,7 +457,7 @@ def histogrammer(events, workflow): syst_axis, flav_axis, osss_axis, - Hist.axis.Regular(30, -0.2, 1, name="discr", label=disc), + Hist.axis.Regular(60, -0.2, 1, name="discr", label=disc), Hist.storage.Weight(), ) elif "Bprob" in disc: From dcb4254f619de42066c89b25dbe37fcc9e76b5e2 Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Thu, 26 Oct 2023 13:36:52 +0200 Subject: [PATCH 03/22] fix: add only for standalone condor& plot code --- condor/submitter.py | 21 ++++- scripts/plotdataMC.py | 10 +-- src/BTVNanoCommissioning/helpers/xs_scaler.py | 84 +++++-------------- .../workflows/ctag_Wc_valid_sf.py | 9 +- 4 files changed, 48 insertions(+), 76 deletions(-) diff --git a/condor/submitter.py b/condor/submitter.py index 68bf48f5..8ae104fd 100644 --- a/condor/submitter.py +++ b/condor/submitter.py @@ -89,13 +89,19 @@ def get_main_parser(): help="Run with systematics, all, weights_only(no JERC uncertainties included),JERC_split, None", ) parser.add_argument("--isArray", action="store_true", help="Output root files") + parser.add_argument( "--noHist", action="store_true", help="Not output coffea histogram" ) parser.add_argument( "--overwrite", action="store_true", help="Overwrite existing files" ) - + parser.add_argument( + "--only", + type=str, + default=None, + help="Only process/skip part of the dataset. By input list of file", + ) parser.add_argument( "--voms", default=None, @@ -172,7 +178,20 @@ def get_main_parser(): sample_dict = json.load(f) split_sample_dict = {} counter = 0 + only = [] + if args.only is not None: + if "*" in args.only: + only = [ + k + for k in sample_dict.keys() + if k.lstrip("/").startswith(args.only.rstrip("*")) + ] + else: + only.append(args.only) + for sample_name, files in sample_dict.items(): + if len(only) != 0 and sample_name not in only: + continue for ifile in range( (len(files) + args.condorFileSize - 1) // args.condorFileSize ): diff --git a/scripts/plotdataMC.py b/scripts/plotdataMC.py index ec7029f7..3b8df6b6 100644 --- a/scripts/plotdataMC.py +++ b/scripts/plotdataMC.py @@ -241,12 +241,10 @@ else: rebin = np.array([float(i) for i in args.autorebin.split(",")]) do_xerr = True - collated["mc"][discr] = rebin_hist( - collated["mc"][discr], collated["mc"][discr].axes[-1].name, rebin - ) - collated["data"][discr] = rebin_hist( - collated["data"][discr], collated["data"][discr].axes[-1].name, rebin - ) + for s in collated.keys(): + collated[s][discr] = rebin_hist( + collated[s][discr], collated[s][discr].axes[-1].name, rebin + ) ## Rescale noSF & SF to same MC yields if ( diff --git a/src/BTVNanoCommissioning/helpers/xs_scaler.py b/src/BTVNanoCommissioning/helpers/xs_scaler.py index 4feaba8e..1c748f3d 100644 --- a/src/BTVNanoCommissioning/helpers/xs_scaler.py +++ b/src/BTVNanoCommissioning/helpers/xs_scaler.py @@ -29,62 +29,24 @@ def scaleSumW(output, lumi): xs_dict[obj["process_name"]] = xs_dict[obj["process_name"]] * float( obj["kFactor"] ) - duplicated_name = False - sumw = {} - flist = [] - for f in output.keys(): - flist.extend([m for m in output[f].keys() if "Run" not in m]) - for files in output.keys(): - if "sumw" not in output[files].keys() and len(flist) != len(set(flist)): - duplicated_name = True - for sample in output[files].keys(): - if "Run" in str(output[files][sample]): - continue - if sample in sumw.keys(): - sumw[sample] = sumw[sample] + float(output[files][sample]["sumw"]) + merged = {} + merged_output = accumulate([output[f] for f in output.keys()]) + + for sample, accu in merged_output.items(): + scaled[sample] = {} + for key, h_obj in accu.items(): + scaled[sample]["sumw"] = merged_output[sample]["sumw"] + if isinstance(h_obj, hist.Hist): + h = copy.deepcopy(h_obj) + if sample in xs_dict.keys(): + h = h * xs_dict[sample] * lumi / merged_output[sample]["sumw"] else: - sumw[sample] = float(output[files][sample]["sumw"]) - for files in output.keys(): - if "sumw" not in output[files].keys(): - scaled[files] = {} - for sample, accu in output[files].items(): - scaled[files][sample] = {} - scaled[files][sample]["sumw"] = output[files][sample]["sumw"] - if duplicated_name: - scaled[files][sample]["sumw"] = sumw[sample] - for key, h_obj in accu.items(): - if isinstance(h_obj, hist.Hist): - h = copy.deepcopy(h_obj) - if sample in xs_dict.keys(): - h = ( - h - * xs_dict[sample] - * lumi - / scaled[files][sample]["sumw"] - ) - else: - if not (("data" in sample) or ("Run" in sample)): - raise KeyError(sample, "is not found in xsection.py") - else: - h = h - scaled[files][sample][key] = h - else: - for sample, accu in output[files].items(): - scaled[sample] = {} - for key, h_obj in accu.items(): - scaled[sample]["sumw"] = output[files]["sumw"] - if isinstance(h_obj, hist.Hist): - h = copy.deepcopy(h_obj) - if sample in xs_dict.keys(): - h = h * xs_dict[sample] * lumi / output[files]["sumw"] - else: - if not (("data" in sample) or ("Run" in sample)) or ( - "Double" in sample - ): - raise KeyError(sample, "is not found in xsection.py") - else: - h = h - scaled[sample][key] = h + if ("data" in sample) or ("Run" in sample) or ("Double" in sample): + h = h + else: + raise KeyError(sample, "is not found in xsection.py") + + scaled[sample][key] = h return scaled @@ -118,19 +80,11 @@ def additional_scale(output, scale, sample_to_scale): return scaled -def collate(output, mergemap): +def collate(merged_output, mergemap): out = {} - merged = {} - merged_output = accumulate([output[f] for f in output.keys()]) - for files in merged_output.keys(): - if "sumw" not in merged_output[files].keys(): - for m in output[files].keys(): - merged[m] = dict(merged_output[files][m].items()) - else: - merged[files] = dict(merged_output[files].items()) for group, names in mergemap.items(): out[group] = accumulate( - [v for k, v in merged.items() if k.split("_FNAME_")[0] in names] + [v for k, v in merged_output.items() if k.split("_FNAME_")[0] in names] ) return out diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index f6442cdc..6b526216 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -205,7 +205,7 @@ def process_shift(self, events, shift_name): # Other cuts req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < 0.4 - + idx = np.where(iso_muon.jetIdx == -1, 0, iso_muon.jetIdx) req_QCDveto = ( (iso_muon.pfRelIso04_all < 0.05) & (abs(iso_muon.dz) < 0.01) @@ -550,8 +550,9 @@ def process_shift(self, events, shift_name): out_branch, np.where( (out_branch == "SoftMuon") - # | (out_branch == "MuonJet") + | (out_branch == "MuonJet") | (out_branch == "dilep") + | (out_branch == "OtherJets") ), ) @@ -560,7 +561,7 @@ def process_shift(self, events, shift_name): "Muon", "Jet", "SoftMuon", - # "MuonJet", + "MuonJet", "dilep", "charge", "MET", @@ -578,7 +579,7 @@ def process_shift(self, events, shift_name): # write to root files os.system(f"mkdir -p {self.name}/{dataset}") with uproot.recreate( - f"{self.name}/{dataset}/{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" + f"{self.name}/{dataset}/{systematics[0]}_{events.metadata['filename'].split('/')[-1].replace('.root','')}_{int(events.metadata['entrystop']/self.chunksize)}.root" ) as fout: fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) From 44435c9fdfdf1d97d4b135761a6e009cb0db6d07 Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Fri, 27 Oct 2023 15:39:54 +0200 Subject: [PATCH 04/22] [run array] ci: customize ci , fix bugs in workflow - ci: only trigger if changes - doc,ci: add customize commit message to run ci - wf: fix dtype bug --- .github/workflows/BTA_workflow.yml | 11 + .github/workflows/ctag_DY_workflow.yml | 43 +++- .github/workflows/ctag_Wc_workflow.yml | 47 ++++- .github/workflows/ttbar_DL_workflow.yml | 79 ++++++- .github/workflows/ttbar_SL_workflow.yml | 59 +++++- README.md | 10 +- metadata/test_bta_run3.json | 4 +- ...alibeHistoWrite_Data2022E_NANO130X_v1.root | Bin 0 -> 91233 bytes src/BTVNanoCommissioning/helpers/xsection.py | 197 ++++++++++++++++++ .../utils/AK4_parameters.py | 4 +- .../workflows/ctag_DY_valid_sf.py | 2 +- .../workflows/ctag_Wc_valid_sf.py | 4 +- .../workflows/ctag_dileptt_valid_sf.py | 4 +- .../workflows/ctag_eDY_valid_sf.py | 2 +- .../workflows/ctag_eWc_valid_sf.py | 4 +- .../workflows/ctag_edileptt_valid_sf.py | 4 +- .../workflows/ctag_emdileptt_valid_sf.py | 4 +- .../workflows/ctag_ettsemilep_valid_sf.py | 4 +- .../workflows/ctag_semileptt_valid_sf.py | 4 +- src/BTVNanoCommissioning/workflows/example.py | 2 +- .../workflows/ttbar_validation.py | 2 +- .../workflows/ttdilep_valid_sf.py | 2 +- .../workflows/ttsemilep_valid_sf.py | 2 +- .../workflows/validation.py | 2 +- 24 files changed, 455 insertions(+), 41 deletions(-) create mode 100644 src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root diff --git a/.github/workflows/BTA_workflow.yml b/.github/workflows/BTA_workflow.yml index 9dd29337..660fd2f0 100644 --- a/.github/workflows/BTA_workflow.yml +++ b/.github/workflows/BTA_workflow.yml @@ -3,13 +3,24 @@ name: BTA output Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/BTA_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/BTA_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: diff --git a/.github/workflows/ctag_DY_workflow.yml b/.github/workflows/ctag_DY_workflow.yml index 098d7f7b..df33a07e 100644 --- a/.github/workflows/ctag_DY_workflow.yml +++ b/.github/workflows/ctag_DY_workflow.yml @@ -3,13 +3,24 @@ name: ctag DY+jets Workflow on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_DY_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_DY_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -87,9 +98,37 @@ jobs: - name: ctag muon DY workflows with correctionlib run: | - python runner.py --workflow ctag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --year 2022 --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts - name: ctag electron DY workflows with correctionlib run: | - python runner.py --workflow ectag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --year 2022 --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts diff --git a/.github/workflows/ctag_Wc_workflow.yml b/.github/workflows/ctag_Wc_workflow.yml index e18b38c1..c04be733 100644 --- a/.github/workflows/ctag_Wc_workflow.yml +++ b/.github/workflows/ctag_Wc_workflow.yml @@ -3,13 +3,26 @@ name: ctag W+c Workflow on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_Wc_workflow.yml' + pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_Wc_workflow.yml' + workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -52,7 +65,7 @@ jobs: conda info conda env list conda list - + - name: Set up proxy # https://awesome-workshop.github.io/gitlab-cms/03-vomsproxy/index.html # continue-on-error: true @@ -89,8 +102,36 @@ jobs: - name: ctag muon W+c workflows with correctionlib run: | - python runner.py --workflow ctag_Wc_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_Wc_sf --json metadata/test_bta_run3.json --campaign Summer22Run3 --executor iterative $opts - name: ctag electron W+c workflows with correctionlib run: | - python runner.py --workflow ectag_Wc_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite \ No newline at end of file + message=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_Wc_sf --json metadata/test_bta_run3.json --executor iterative --campaign Summer22Run3 --overwrite $opts \ No newline at end of file diff --git a/.github/workflows/ttbar_DL_workflow.yml b/.github/workflows/ttbar_DL_workflow.yml index 01cb900c..d2e7d978 100644 --- a/.github/workflows/ttbar_DL_workflow.yml +++ b/.github/workflows/ttbar_DL_workflow.yml @@ -3,13 +3,24 @@ name: ttbar dileptonic Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_DL_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_DL_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -28,7 +39,7 @@ jobs: mkdir $HOME/.ssh echo "$SSHKEY" > $HOME/.ssh/id_rsa chmod 600 $HOME/.ssh/id_rsa - echo "HOST *" > ~/.ssh/config + echo "HOST *" > ~/.ssh/config echo "StrictHostKeyChecking no" >> ~/.ssh/config git submodule update --init --recursive - uses: cvmfs-contrib/github-action-cvmfs@v2 @@ -84,18 +95,72 @@ jobs: - name: Install Repo run: | pip install -e . - - name: btag dileptonic ttbar workflows with correctionlib run: | - python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic muon ttbar workflows with correctionlib run: | - python runner.py --workflow ctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic electron ttbar workflows with correctionlib run: | - python runner.py --workflow ectag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic emu ttbar workflows with correctionlib run: | - python runner.py --workflow emctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite - + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow emctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts diff --git a/.github/workflows/ttbar_SL_workflow.yml b/.github/workflows/ttbar_SL_workflow.yml index 0e63a796..5b7ca3fb 100644 --- a/.github/workflows/ttbar_SL_workflow.yml +++ b/.github/workflows/ttbar_SL_workflow.yml @@ -3,13 +3,24 @@ name: ttbar semileptonic Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_SL_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_SL_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -87,13 +98,55 @@ jobs: - name: btag semileptonic ttbar workflows with correctionlib run: | - python runner.py --workflow ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag semileptonic muon ttbar workflows with correctionlib run: | - python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag semileptonic electron ttbar workflows with correctionlib run: | - python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts diff --git a/README.md b/README.md index cc1cc088..9ada96ba 100644 --- a/README.md +++ b/README.md @@ -640,8 +640,16 @@ Yout can find the secret configuration in the direcotry : `Settings>>Secrets>>Ac 1. Create a ssh key pair with `ssh-keygen -t rsa -b 4096` (do not overwrite with your local one), add the public key to your CERN gitlab account 2. Copy the private key to the entry - `GRID_PASSWORD`: Add your grid password to the entry. -- `GRID_USERCERT` & `GRID_USERKEY`: Encrypt your grid user certification `base64 -i ~/.globus/userkey.pem` and `base64 -i ~/.globus/usercert.pem` and copy the output to the entry. +- `GRID_USERCERT` & `GRID_USERKEY`: Encrypt your grid user certification `base64 -i ~/.globus/userkey.pem | awk NF=NF RS= OFS=` and `base64 -i ~/.globus/usercert.pem | awk NF=NF RS= OFS=` and copy the output to the entry. +Special commit head messages could run different commands in actions (add the flag in front of your commit) + +- `[skip ci]`: not running ci at all in the commit message +- `[run array]` : add `--isArray` option +- `[run syst all]` : add `--isSyst all` +- `[run syst jerc]` : add `--isSyst JERC_split` +- `[run syst wei]` : add `--isSyst weight_only` + ### Running jupyter remotely 1. On your local machine, edit `.ssh/config`: ``` diff --git a/metadata/test_bta_run3.json b/metadata/test_bta_run3.json index 426670d9..1da3a091 100644 --- a/metadata/test_bta_run3.json +++ b/metadata/test_bta_run3.json @@ -1,6 +1,6 @@ { - "JetMET_Run2022F-PromptReco-v1":[ - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/JetMET/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2/230808_133855/0000/nano_data2022FG_687.root" + "JetMETRun2022D-27Jun2023-v2": [ + "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120318/0000/nano_data2022CDE_135.root" ], "QCD_PT-120to170_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8":[ "root://eoscms.cern.ch//store/group/phys_btag/PFNano_Run3/mc_summer22EE/QCD_PT-120to170_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v1_BTV_Run3_2022_Comm_v2_NanoV12/231001_184438/0000/nano_mcRun3_EE_1-1.root" diff --git a/src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root b/src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root new file mode 100644 index 0000000000000000000000000000000000000000..d324ceb3b02cc1e9f7456f99efee7ef15d90cdcc GIT binary patch literal 91233 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�qrVbEAAP{S{yoIxl+5dhDc!y_|HDV5SEUuS6A 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 literal 0 HcmV?d00001 diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index e015a2ee..1438aec8 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -1440,4 +1440,201 @@ "energy": "13.6", "comment": "from TOP-22-012 with PDG 2023 value", }, + ## numbers from Denise Muller + { + "DAS": "/QCD_PT-15to30_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-15to30_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "1301000000.0", + "energy": "13p6", + "total_uncertainty": "2135000.0", + "equivalent_lumi": "7.684e-07", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "JME-Run3Summer22MiniAODv3-01052", + }, + { + "DAS": "/QCD_PT-30to50_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-30to50_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "113100000.0", + "energy": "13p6", + "total_uncertainty": "186400.0", + "equivalent_lumi": "8.839e-06", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "JME-Run3Summer22MiniAODv3-01051", + }, + { + "DAS": "/QCD_PT-50to80_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-50to80_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "16760000.0", + "energy": "13p6", + "total_uncertainty": "27450.0", + "equivalent_lumi": "5.966e-05", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00041", + }, + { + "DAS": "/QCD_PT-80to120_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-80to120_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "2514000.0", + "energy": "13p6", + "total_uncertainty": "4155.0", + "equivalent_lumi": "0.0003977", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00042", + }, + { + "DAS": "/QCD_PT-170to300_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-170to300_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "113400.0", + "energy": "13p6", + "total_uncertainty": "175.7", + "equivalent_lumi": "0.00882", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00044", + }, + { + "DAS": "/QCD_PT-300to470_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-300to470_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "7610.0", + "energy": "13p6", + "total_uncertainty": "11.76", + "equivalent_lumi": "0.1314", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00045", + }, + { + "DAS": "/QCD_PT-470to600_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-470to600_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "626.6", + "energy": "13p6", + "total_uncertainty": "0.9279", + "equivalent_lumi": "1.596", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00046", + }, + { + "DAS": "/QCD_PT-600to800_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-600to800_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "179.5", + "energy": "13p6", + "total_uncertainty": "0.2683", + "equivalent_lumi": "5.571", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00105", + }, + { + "DAS": "/QCD_PT-800to1000_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-800to1000_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "30.69", + "energy": "13p6", + "total_uncertainty": "0.04498", + "equivalent_lumi": "32.59", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00106", + }, + { + "DAS": "/QCD_PT-1000to1400_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1000to1400_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "8.956", + "energy": "13p6", + "total_uncertainty": "0.01354", + "equivalent_lumi": "111.7", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00107", + }, + { + "DAS": "/QCD_PT-1400to1800_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1400to1800_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.8112", + "energy": "13p6", + "total_uncertainty": "0.001218", + "equivalent_lumi": "1233.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00108", + }, + { + "DAS": "/QCD_PT-1800to2400_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1800to2400_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.1152", + "energy": "13p6", + "total_uncertainty": "0.0001783", + "equivalent_lumi": "8684.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00109", + }, + { + "DAS": "/QCD_PT-2400to3200_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-2400to3200_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.007574", + "energy": "13p6", + "total_uncertainty": "1.208e-05", + "equivalent_lumi": "132000.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00110", + }, + { + "DAS": "/QCD_PT-3200_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-3200_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.0002313", + "energy": "13p6", + "total_uncertainty": "3.835e-07", + "equivalent_lumi": "4323000.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00111", + }, ] diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 6b8ac89a..9a36dc4d 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -57,7 +57,7 @@ "Summer22EERun3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", "PU": "puweight_Summer22EERun3.histo.root", # 80mb - "JME": "jec_compiled.pkl.gz", + #"JME": "jec_compiled.pkl.gz", "LSF": { "ele_json": "electron.json.gz", "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022EE_Prompt_ID_ISO_schemaV2.json", @@ -69,7 +69,7 @@ "ele_Reco_high 2022FG 2022FG-Electron-ID-SF": "RecoAbove75", }, "JPCalib": { - "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", # to be updated + "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022F": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022G": "calibeHistoWrite_Data2022G_NANO130X_v1.root", "MC": "calibeHistoWrite_MC2022EE_NANO130X_v1.root", diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index bda1aa37..8d996393 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -268,7 +268,7 @@ def process_shift(self, events, shift_name): btagSFs(sel_jet, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sel_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sel_jet.pt) + genflavor = ak.zeros_like(sel_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index 6b526216..faffa136 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -333,8 +333,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py index b0a2d972..4943e245 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py @@ -301,8 +301,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py index 905ab9d1..b9dd81c5 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py @@ -268,7 +268,7 @@ def process_shift(self, events, shift_name): btagSFs(sel_jet, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sel_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sel_jet.pt) + genflavor = ak.zeros_like(sel_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py index df0d34bf..39670667 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py @@ -324,8 +324,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py index a2766dee..03308887 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py @@ -296,8 +296,8 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py index d49f10ef..854c7591 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py @@ -344,8 +344,8 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py index ab3788c9..1c32c895 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py @@ -339,8 +339,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py index 2ed6da8b..b7af4fe0 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py @@ -355,8 +355,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/example.py b/src/BTVNanoCommissioning/workflows/example.py index ec989624..e3d2072f 100644 --- a/src/BTVNanoCommissioning/workflows/example.py +++ b/src/BTVNanoCommissioning/workflows/example.py @@ -215,7 +215,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information (add name of systematics) if shift_name is None: # weight variations diff --git a/src/BTVNanoCommissioning/workflows/ttbar_validation.py b/src/BTVNanoCommissioning/workflows/ttbar_validation.py index 3883eedf..edb71779 100644 --- a/src/BTVNanoCommissioning/workflows/ttbar_validation.py +++ b/src/BTVNanoCommissioning/workflows/ttbar_validation.py @@ -204,7 +204,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py index a674acd9..3159e9cb 100644 --- a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py @@ -275,7 +275,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py index d2fa3773..91212028 100644 --- a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py @@ -252,7 +252,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/validation.py b/src/BTVNanoCommissioning/workflows/validation.py index c10708d9..db2c735e 100644 --- a/src/BTVNanoCommissioning/workflows/validation.py +++ b/src/BTVNanoCommissioning/workflows/validation.py @@ -208,7 +208,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: From 32f6ec805ac1eea2f6611622cd9e9fae1578da63 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Mon, 6 Nov 2023 02:28:32 -0500 Subject: [PATCH 05/22] Fix compatibility with Nanov12, changes to --only --- runner.py | 69 +++++++++++-------- scripts/fetch.py | 8 ++- .../helpers/update_branch.py | 25 +++++-- 3 files changed, 66 insertions(+), 36 deletions(-) diff --git a/runner.py b/runner.py index 426d8380..b286f7b4 100644 --- a/runner.py +++ b/runner.py @@ -224,10 +224,18 @@ def get_main_parser(): args = parser.parse_args() print("Running with the following options:") print(args) + ogoutput = args.output + histoutdir = ogoutput.split(".")[0] + coffeaoutput = f"{histoutdir}/{ogoutput}" + basename = ogoutput.replace(".coffea", "").replace("hists_", "") if args.output == parser.get_default("output"): index = args.samplejson.rfind("/") + 1 sample_json = args.samplejson[index:] - args.output = f'hists_{args.workflow}_{(sample_json).rstrip(".json")}.coffea' + histoutdir = f"hists_{args.workflow}_{sample_json.rstrip('.json')}" + coffeaoutput = ( + f'{histoutdir}/hists_{args.workflow}_{(sample_json).rstrip(".json")}.coffea' + ) + os.system(f"mkdir -p {histoutdir}") # load dataset with open(args.samplejson) as f: sample_dict = json.load(f) @@ -249,7 +257,19 @@ def get_main_parser(): if args.only is not None: if args.only in sample_dict.keys(): # is dataset sample_dict = dict([(args.only, sample_dict[args.only])]) - if "*" in args.only: # wildcard for datasets + coffeaoutput = coffeaoutput.replace(".coffea", f"_{key}.coffea") + elif args.only.isdigit(): + isamp = int(args.only) + nsamp = len(sample_dict.keys()) + if isamp >= nsamp: + print( + f"There are {nsamp} datasets, please use --only n with n<{nsamp}." + ) + key = list(sample_dict.keys())[isamp] + print(f"Will process only {key} instead of all {nsamp} datasets.") + sample_dict = dict([(key, sample_dict[key])]) + coffeaoutput = coffeaoutput.replace(".coffea", f"_{key}.coffea") + elif "*" in args.only: # wildcard for datasets _new_dict = {} print("Will only proces the following datasets:") for k, v in sample_dict.items(): @@ -311,7 +331,7 @@ def get_main_parser(): processor_instance = workflows[args.workflow]( args.year, args.campaign, - args.output.replace(".coffea", "").replace("hists_", ""), + basename, args.isSyst, args.isArray, args.noHist, @@ -321,30 +341,17 @@ def get_main_parser(): ## create tmp directory and check file exist or not from os import path - if path.exists(f"{args.output}") and args.overwrite == False: - raise Exception(f"{args.output} exists") + if path.exists(f"{coffeaoutput}") and args.overwrite == False: + raise Exception(f"{coffeaoutput} exists") + if args.isArray: - ## create the directory - if ( - path.exists(args.output.replace(".coffea", "").replace("hists_", "")) - and args.overwrite == False - ): + outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" + if path.exists("tmp"): + os.system("rm -r tmp") + os.mkdir("tmp") + + if path.exists(outdir) and args.overwrite == False and args.only is None: raise Exception("Directory exists") - else: - if path.exists( - path.exists(args.output.replace(".coffea", "").replace("hists_", "")) - ): - os.system( - f'rm -r {args.output.replace(".coffea", "").replace("hists_", "")}' - ) - else: - os.system( - f'mkdir -p {args.output.replace(".coffea", "").replace("hists_", "")}' - ) - for dataset in sample_dict.keys(): - os.system( - f"mkdir -p {args.workflow}_{(sample_json).rstrip('.json')}/{dataset}" - ) if args.executor not in ["futures", "iterative", "dask/lpc", "dask/casa"]: """ @@ -779,13 +786,19 @@ def get_main_parser(): if args.noHist == False: save( output, - args.output.replace( + coffeaoutput.replace( ".coffea", f"_{sindex}_{findex}.coffea" ), ) if not "lxplus" in args.executor: if args.noHist == False: - save(output, args.output) + save(output, coffeaoutput) + if args.isArray: + if args.overwrite and path.exists(outdir): + os.system(f"rm -r {outdir}") + os.system(f"mkdir -p {outdir}") + os.system(f"cp -r tmp/* {outdir}/") + os.system("rm -rf tmp") if args.noHist == False: # print(output) - print(f"Saving output to {args.output}") + print(f"Saving output to {coffeaoutput}") diff --git a/scripts/fetch.py b/scripts/fetch.py index 33bd3dea..a0874dd8 100644 --- a/scripts/fetch.py +++ b/scripts/fetch.py @@ -26,7 +26,7 @@ ) parser.add_argument( "--xrd", - default=None, + default="root://cmsxrootd.fnal.gov//", type=str, help="xrootd prefix string otherwise get from available sites", ) @@ -303,11 +303,13 @@ def remove_bad_files(sample_dict, outname, remove_bad=True): all_invalid += [r for r in _results if isinstance(r, str)] if len(all_invalid) > 0: bad_sample_dict[sample] = all_invalid - f.write(f"{sample} Events: {np.sum(counts)}") + f.write(f"{sample} Events: {np.sum(counts)}\n") if len(all_invalid) == 0: f.write("No bad files found!") else: + print(f"Found {len(all_invalid)} bad files.") + f.write(f"Found {len(all_invalid)} bad files.") if remove_bad == True: f.write( "\n==========================BAD FILES==========================\n " @@ -315,7 +317,7 @@ def remove_bad_files(sample_dict, outname, remove_bad=True): for sample in bad_sample_dict.keys(): for bad_file in bad_sample_dict[sample]: - f.write(bad_file) + f.write(bad_file + "\n") if bad_file[bad_file.find("root://") :] in sample_dict[sample]: sample_dict[sample].remove(bad_file[bad_file.find("root://") :]) diff --git a/src/BTVNanoCommissioning/helpers/update_branch.py b/src/BTVNanoCommissioning/helpers/update_branch.py index 1bb8b4fa..9048b728 100644 --- a/src/BTVNanoCommissioning/helpers/update_branch.py +++ b/src/BTVNanoCommissioning/helpers/update_branch.py @@ -10,19 +10,28 @@ def missing_branch(events): else events.Rho.fixedGridRhoFastjetAll ) - if not hasattr(events.Jet, "btagDeepFlavC"): + if hasattr(events.Jet, "btagDeepFlavCvL") and not hasattr( + events.Jet, "btagDeepFlavC" + ): jets = events.Jet jets["btagDeepFlavC"] = ( events.Jet.btagDeepFlavCvL / (1.0 - events.Jet.btagDeepFlavCvL) ) * events.Jet.btagDeepFlavB + events.Jet = update( + events.Jet, + {"btagDeepFlavC": jets.btagDeepFlavC}, + ) + if hasattr(events.Jet, "btagDeepCvL") and not hasattr(events.Jet, "btagDeepC"): jets["btagDeepC"] = ( events.Jet.btagDeepCvL / (1.0 - events.Jet.btagDeepCvL) ) * events.Jet.btagDeepB events.Jet = update( events.Jet, - {"btagDeepFlavC": jets.btagDeepFlavC, "btagDeepC": jets.btagDeepC}, + {"btagDeepC": jets.btagDeepC}, ) - if not hasattr(events.Jet, "btagDeepFlavCvL"): + if hasattr(events.Jet, "btagDeepFlavC") and not hasattr( + events.Jet, "btagDeepFlavCvL" + ): jets = events.Jet jets["btagDeepFlavCvL"] = np.maximum( np.minimum( @@ -57,6 +66,14 @@ def missing_branch(events): ), -1, ) + events.Jet = update( + events.Jet, + { + "btagDeepFlavCvL": jets.btagDeepFlavCvL, + "btagDeepFlavCvB": jets.btagDeepFlavCvB, + }, + ) + if hasattr(events.Jet, "btagDeepC") and not hasattr(events.Jet, "btagDeepCvL"): jets["btagDeepCvL"] = np.maximum( np.minimum( np.where( @@ -85,8 +102,6 @@ def missing_branch(events): events.Jet = update( events.Jet, { - "btagDeepFlavCvL": jets.btagDeepFlavCvL, - "btagDeepFlavCvB": jets.btagDeepFlavCvB, "btagDeepCvL": jets.btagDeepCvL, "btagDeepCvB": jets.btagDeepCvB, }, From a2c1d2e94dd7952a7378ffb67c5b8b2f1dc52229 Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Fri, 27 Oct 2023 15:39:54 +0200 Subject: [PATCH 06/22] [run array] ci: customize ci , fix bugs in workflow - ci: only trigger if changes - doc,ci: add customize commit message to run ci - wf: fix dtype bug --- .github/workflows/BTA_workflow.yml | 11 + .github/workflows/ctag_DY_workflow.yml | 43 +++- .github/workflows/ctag_Wc_workflow.yml | 47 ++++- .github/workflows/ttbar_DL_workflow.yml | 79 ++++++- .github/workflows/ttbar_SL_workflow.yml | 59 +++++- README.md | 12 +- condor/execute.sh | 8 +- metadata/test_bta_run3.json | 4 +- ...alibeHistoWrite_Data2022E_NANO130X_v1.root | Bin 0 -> 91233 bytes src/BTVNanoCommissioning/helpers/xsection.py | 197 ++++++++++++++++++ .../utils/AK4_parameters.py | 4 +- .../workflows/ctag_DY_valid_sf.py | 2 +- .../workflows/ctag_Wc_valid_sf.py | 4 +- .../workflows/ctag_dileptt_valid_sf.py | 4 +- .../workflows/ctag_eDY_valid_sf.py | 2 +- .../workflows/ctag_eWc_valid_sf.py | 4 +- .../workflows/ctag_edileptt_valid_sf.py | 4 +- .../workflows/ctag_emdileptt_valid_sf.py | 4 +- .../workflows/ctag_ettsemilep_valid_sf.py | 4 +- .../workflows/ctag_semileptt_valid_sf.py | 4 +- src/BTVNanoCommissioning/workflows/example.py | 2 +- .../workflows/ttbar_validation.py | 2 +- .../workflows/ttdilep_valid_sf.py | 2 +- .../workflows/ttsemilep_valid_sf.py | 2 +- .../workflows/validation.py | 2 +- 25 files changed, 462 insertions(+), 44 deletions(-) create mode 100644 src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root diff --git a/.github/workflows/BTA_workflow.yml b/.github/workflows/BTA_workflow.yml index 9dd29337..660fd2f0 100644 --- a/.github/workflows/BTA_workflow.yml +++ b/.github/workflows/BTA_workflow.yml @@ -3,13 +3,24 @@ name: BTA output Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/BTA_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/BTA_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: diff --git a/.github/workflows/ctag_DY_workflow.yml b/.github/workflows/ctag_DY_workflow.yml index 098d7f7b..df33a07e 100644 --- a/.github/workflows/ctag_DY_workflow.yml +++ b/.github/workflows/ctag_DY_workflow.yml @@ -3,13 +3,24 @@ name: ctag DY+jets Workflow on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_DY_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_DY_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -87,9 +98,37 @@ jobs: - name: ctag muon DY workflows with correctionlib run: | - python runner.py --workflow ctag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --year 2022 --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts - name: ctag electron DY workflows with correctionlib run: | - python runner.py --workflow ectag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --year 2022 --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts diff --git a/.github/workflows/ctag_Wc_workflow.yml b/.github/workflows/ctag_Wc_workflow.yml index e18b38c1..c04be733 100644 --- a/.github/workflows/ctag_Wc_workflow.yml +++ b/.github/workflows/ctag_Wc_workflow.yml @@ -3,13 +3,26 @@ name: ctag W+c Workflow on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_Wc_workflow.yml' + pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ctag_Wc_workflow.yml' + workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -52,7 +65,7 @@ jobs: conda info conda env list conda list - + - name: Set up proxy # https://awesome-workshop.github.io/gitlab-cms/03-vomsproxy/index.html # continue-on-error: true @@ -89,8 +102,36 @@ jobs: - name: ctag muon W+c workflows with correctionlib run: | - python runner.py --workflow ctag_Wc_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_Wc_sf --json metadata/test_bta_run3.json --campaign Summer22Run3 --executor iterative $opts - name: ctag electron W+c workflows with correctionlib run: | - python runner.py --workflow ectag_Wc_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite \ No newline at end of file + message=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_Wc_sf --json metadata/test_bta_run3.json --executor iterative --campaign Summer22Run3 --overwrite $opts \ No newline at end of file diff --git a/.github/workflows/ttbar_DL_workflow.yml b/.github/workflows/ttbar_DL_workflow.yml index 01cb900c..d2e7d978 100644 --- a/.github/workflows/ttbar_DL_workflow.yml +++ b/.github/workflows/ttbar_DL_workflow.yml @@ -3,13 +3,24 @@ name: ttbar dileptonic Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_DL_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_DL_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -28,7 +39,7 @@ jobs: mkdir $HOME/.ssh echo "$SSHKEY" > $HOME/.ssh/id_rsa chmod 600 $HOME/.ssh/id_rsa - echo "HOST *" > ~/.ssh/config + echo "HOST *" > ~/.ssh/config echo "StrictHostKeyChecking no" >> ~/.ssh/config git submodule update --init --recursive - uses: cvmfs-contrib/github-action-cvmfs@v2 @@ -84,18 +95,72 @@ jobs: - name: Install Repo run: | pip install -e . - - name: btag dileptonic ttbar workflows with correctionlib run: | - python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic muon ttbar workflows with correctionlib run: | - python runner.py --workflow ctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic electron ttbar workflows with correctionlib run: | - python runner.py --workflow ectag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic emu ttbar workflows with correctionlib run: | - python runner.py --workflow emctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite - + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow emctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts diff --git a/.github/workflows/ttbar_SL_workflow.yml b/.github/workflows/ttbar_SL_workflow.yml index 0e63a796..5b7ca3fb 100644 --- a/.github/workflows/ttbar_SL_workflow.yml +++ b/.github/workflows/ttbar_SL_workflow.yml @@ -3,13 +3,24 @@ name: ttbar semileptonic Workflows on: push: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_SL_workflow.yml' pull_request_target: branches: [ master ] + paths: + - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/helpers/*' + - 'src/BTVNanoCommissioning/utils/*' + - '.github/workflows/ttbar_SL_workflow.yml' workflow_dispatch: jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} strategy: max-parallel: 4 matrix: @@ -87,13 +98,55 @@ jobs: - name: btag semileptonic ttbar workflows with correctionlib run: | - python runner.py --workflow ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag semileptonic muon ttbar workflows with correctionlib run: | - python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag semileptonic electron ttbar workflows with correctionlib run: | - python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --isSyst all --isArray --overwrite + string=$(git log -1 --pretty=format:'%s') + opts="--overwrite" + if [[ $string == *"[run array]"* ]]; then + opts="$opts --isArray" + fi + if [[ $string == *"[run syst all]"* ]]; then + opts="$opts --isSyst all" + fi + if [[ $string == *"[run syst jerc]"* ]]; then + opts="$opts --isSyst JERC_split" + fi + if [[ $string == *"[run syst wei]"* ]]; then + opts="$opts --isSyst weight_only" + fi + python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts diff --git a/README.md b/README.md index cc1cc088..2e795a66 100644 --- a/README.md +++ b/README.md @@ -551,7 +551,7 @@ python scripts/comparison.py -i datac.coffea,datad.coffea -r MuonRun2022C-27Jun2

more arguments

- + ``` options: -h, --help show this help message and exit -p {dilep_sf,ttsemilep_sf,ctag_Wc_sf,ctag_DY_sf,ctag_ttsemilep_sf,ctag_ttdilep_sf}, --phase {dilep_sf,ttsemilep_sf,ctag_Wc_sf,ctag_DY_sf,ctag_ttsemilep_sf,ctag_ttdilep_sf} @@ -640,8 +640,16 @@ Yout can find the secret configuration in the direcotry : `Settings>>Secrets>>Ac 1. Create a ssh key pair with `ssh-keygen -t rsa -b 4096` (do not overwrite with your local one), add the public key to your CERN gitlab account 2. Copy the private key to the entry - `GRID_PASSWORD`: Add your grid password to the entry. -- `GRID_USERCERT` & `GRID_USERKEY`: Encrypt your grid user certification `base64 -i ~/.globus/userkey.pem` and `base64 -i ~/.globus/usercert.pem` and copy the output to the entry. +- `GRID_USERCERT` & `GRID_USERKEY`: Encrypt your grid user certification `base64 -i ~/.globus/userkey.pem | awk NF=NF RS= OFS=` and `base64 -i ~/.globus/usercert.pem | awk NF=NF RS= OFS=` and copy the output to the entry. + +Special commit head messages could run different commands in actions (add the flag in front of your commit) +- `[skip ci]`: not running ci at all in the commit message +- `[run array]` : add `--isArray` option +- `[run syst all]` : add `--isSyst all` +- `[run syst jerc]` : add `--isSyst JERC_split` +- `[run syst wei]` : add `--isSyst weight_only` + ### Running jupyter remotely 1. On your local machine, edit `.ssh/config`: ``` diff --git a/condor/execute.sh b/condor/execute.sh index 8f97cc10..1c09b37a 100755 --- a/condor/execute.sh +++ b/condor/execute.sh @@ -79,11 +79,15 @@ python runner.py $OPTS # Transfer output if [[ ${ARGS[outputXrootdDir]} == root://* ]]; then xrdcp --silent -p -f *.coffea ${ARGS[outputXrootdDir]}/ - xrdcp --silent -p -f *.root ${ARGS[outputXrootdDir]}/ + if [[ "$OPTS" == *"isArray"* ]]; then + xrdcp --silent -p -f "`ls -tr | tail -n2`" ${ARGS[outputXrootdDir]}/ + fi else mkdir -p ${ARGS[outputXrootdDir]} cp -p -f *.coffea ${ARGS[outputXrootdDir]}/ - cp -p -f *.root ${ARGS[outputXrootdDir]}/ + if [[ "$OPTS" == *"isArray"* ]]; then + cp -p -f "`ls -tr | tail -n2`" ${ARGS[outputXrootdDir]}/ + fi fi ### one can also consider origanizing the root files in the subdirectory structure ### diff --git a/metadata/test_bta_run3.json b/metadata/test_bta_run3.json index 426670d9..1da3a091 100644 --- a/metadata/test_bta_run3.json +++ b/metadata/test_bta_run3.json @@ -1,6 +1,6 @@ { - "JetMET_Run2022F-PromptReco-v1":[ - "root://cceos.ihep.ac.cn:1094//eos/ihep/cms/store/user/coli/PFNano_Run3/data_2022FG_prompt/JetMET/Run2022F-PromptReco-v1_BTV_Run3_2022_Comm_v2/230808_133855/0000/nano_data2022FG_687.root" + "JetMETRun2022D-27Jun2023-v2": [ + "root://eoscms.cern.ch//eos/cms/store/group/cmst3/group/deepjet/PFNano_Run3_v12/data_2022CDE_rereco_JetMET/JetMET/Run2022D-27Jun2023-v2_BTV_Run3_2022_Comm_v2_NanoV12/230927_120318/0000/nano_data2022CDE_135.root" ], "QCD_PT-120to170_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8":[ "root://eoscms.cern.ch//store/group/phys_btag/PFNano_Run3/mc_summer22EE/QCD_PT-120to170_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v1_BTV_Run3_2022_Comm_v2_NanoV12/231001_184438/0000/nano_mcRun3_EE_1-1.root" diff --git a/src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root b/src/BTVNanoCommissioning/data/JPCalib/Summer22EERun3/calibeHistoWrite_Data2022E_NANO130X_v1.root new file mode 100644 index 0000000000000000000000000000000000000000..d324ceb3b02cc1e9f7456f99efee7ef15d90cdcc GIT binary patch literal 91233 zcmb5V2UHVV6tHW(=tYek8$?A#MTwo7d5C1MODq+KrxB1%A1q$MIM zASD7nTFKeAylbJL7?EUS%&zw1P<}MO> zZ`Le%b&YJy7^?F{kV%Ze4Dfr@^ zTBgK&_W#rG-&y|&x_*~A!Jl>de@YJd@4ETtkKeczy3;-I){UUMf%k48BmVo30tNqf zAoRoy)IFrn-5d8p5vY414tM`k_5V-ZS@ZvE?=EvPZPu(gFU-wh%;kT!J8O1e)c>0? zvoHOp^SmqO>o?4T{ipNnHUC||%02L2Xc+P?_GsuecjT>Gp~3&@{r`M))|Jx>7R;V? zW!@~zY}D1O3xluDJF@ZWoFI!oRy$gF?x9+4I_3J(z)9b@$1*!=U{=+FF`I=87N^Ef zTOasd|8yfho@lveu4iugT&wsD%l#G(N!OOtpa1&SVDV_(z2CDxtn#!xJa5D61JyBW zfF+c_iLVcApL$fgk-984@LK7tj^VoIzp&Rf{_#V-=WIsIm&5adR(~2Z{Wa^rveB@t z17XLnMV@4$f)ZwDg)RtNTYI_j&dY^ap?`*@*IpjI^KyPx==hf}uN%IcJatJqb0B@+ zo_15_y0ZM)ZvnN4^|OZD3G9J^SwqX_C?(O8*qZep{#>(MDY3dx_)pNQ`#-??*-Z!j z_(L;)BgEzE;C_^&bjj+*Lmkp>^-{h`hPw* z6W;TG?wJ|B-#V+rWj1E^WY(FYtPwPukN@}Xn-gf?ojLh8VHeI{f3UOSjBm#Kwz;p! zTeeiKnLCQRg;+m#o8OoBe=MT^vHZ!VJEhjQCc^i7)%@kPIv^zF*v_YK^1uBvKk?MD z3s$)wEO&+u&VO;~-wW}oEWZ2HT4TC%g-znc$Sp<`2St%jLxosgbYnyd3}Rx82EWsc zX|MU;$Ow?9Oq&`>kj?{QNU3-#ex{Gq&H!K88|af0Rcy3bQJx}0l8#?$iY_nIbBbRyNz!ZPH+jUBZ9 z84HA(3}h)Nu__4J2jUv_FLN3?;(^y*-38nrO(~eoN2!QkA}^Wb4dwsa!5;;)eSDm7 zU-te$BBFleO<_UVEe_gxDDA5UDOz`i8j;zu+9ZY{4PvChARX!D`9^&4RBKGn-)oek zKD*THn{Cjry;I_2towe(?~oVv8)(2N;J24Sm@tboJtEl*F>kx8AMfBk4X;y5$r&_& z>-uf$wz4e_hac$)MxC8m(iXul8?2jK2aAu>ao0em#AM1rP4kir*#lYyGSm3iUVKbq zpzdW$gsL5q*3Wf>Z6nFi?ASQ|x-}5o)4|%#k;QTGj|Xd`t@}+m)C_%}IF5_Bj=5ed zZ9ta*tMu+^fOW)Pc}(*pBBn(F!e*t#Yy%;})kB$apc;dWRY~Vcr4H=jl4w&r=#Js> zU{1-jqO1=2PQ9myBs+J~*zRvFK^&sa~^@P=)y)AiZ8C8VxU#ro64&)q3_06S1cYkmo+Hc0?;*x58WL+0gBnw;Qla=Q^ z7ol>pGc`KpQmIR%{8sWVt9Fo3gwIP2vySHm*IWDdjGXrt#<@}U8h@CSFJz2#&|R+dEsd(b-)t`x z(zEe(lL68C^uYnPgDcIB8d)V#yVtE?5{J%o;V5&-(OYn0t z@9ygvK4lj(!9wJ@%@X?0qB zlJ$WR>9b}UJpxm&ahsrT2-st2q3(CnuVs^6BlfsyZR^s=>l|=Q5JD8gufTV9@$WKp z;NK|C9Cr8y1~0S%F@sM-d{lO zGMhk*ZAk(d+66)|+1)nH-{i*?xF>NJpN3RkRlgaoC6usDy$%&g1a?YpFBoy!*jWw+-Vc@&-1QLGeQQbZUFrH_=HLqJ0}mye z;7d-MiWf7PJZYv`XdHR>8grdKNs}sz?TYrMOzTyEwyE?)>wbxCaWlMz#r7jMj<6jo z8C_hXp+U8HF;Ki7f@+j{rBMS8X;OmJ{|Zg*HQS&fF}&t91fKm#NpR;o-mQ|9bwyrn z7Q`nG-p^?%flA#|O^r&6?ymg?W>7a}FTOJN{YHr|G6sWD7d2ZPkAqjz!)iy&-1Ash zh}U~Yas~tVss}BtTwajbrnN(9l3LuMSH@{&oX#4!ri!@+GNuEf@E;F?QGYMu>$qxW zXdR4OJ)r~k4&2=vVzim4(Z3&rq@}GsP5jr)_IrlDsp(F$;j4tdtA?k_LAV6RXcd3= zf`_!#y!3;iNbW>*%?3F(gi#Dyyhv3AC9=C~uEtD6sZJ9s57Jo@+4qs4%C68+Au&xA z@exgg_VhYd>GodNGjQbIexX|WtXOh;vBY{UWCGjYyC2KFT!+)e0i1cmmC=mxQr&Ux z$ksZ4Tlb;9$$j#ffwjJ@ir7d>gP?z|duNX-xtHHBSEdB>?}Y8`+rOu8Q2qU%=9;)T zK*Sz;*nsSEokdJs^s2h86*b}4_vu#am;sB@Yy3+{Um_#N#FlZm22%uyAd*Ia8w2 z!uuOK6JY*|$jA_J^u0YLtgwC90VMm2!tqm_niYCo))|Be4{yRxj-}&&eNUz*z zEfVft{4F$C)Av1tI_X}w+hM<>uZvQxQZb8>*6VoZ{HE6PCS*Z&hu%T=8QzE!ScI$E z;^M)lNeboXpqPmW>x?I0v3gRcoy_i08^_bZ%3lc4SMHl$WnzzHZ2dECXG*hgTwL!4 zQMr<#Pj29PB zv2VET&HBFYw~^ocnMjZEl_S@>_!HV1?Rz`wdVdmQ_|5Prr)Wo4+LZg{TZi)hA!y8+z*nb;vR2E*6$GpuLWk5r{ z#ZCw6B{M0_g2Vh*s8iUSKxHbdIQJk+y~#nf96N-pokRkEGs9gmP~J9#&@d=w zdeU9vvfnHPfQ4k$lW;sxUi}HF8v|&*vu_s{BgBsoqoTqRi@{aAvHd7>MCc=zbi?}A zkPRDEoFjXo^}|MX5?WjK=^$=2gUBBz=7*>D*4pChEC|}N-u`j*Dwy`G{H40yaQByC z2i>B*vV_%dIBTUVkt>ZKb!R2fqc4PuW)v$-2Fhga5>b4#=yinbi9Xo^b(D#QRPPy< zOV)^COvb%GMns)U19Wp!o9E*6`)Tbb35fB}Plso2Lk*g9;rq~Ee83g%zVSYoKoZM0 z;?I3z1lq7WNs)~mC5(A6IrzUTmef2vV%>dT-QS&It(=C`-pxkb3XmMEA7<9{$p;PbmFxWx+>Vb} z2|UL}|B=HibS;11=T!|D$>>}Pj+BhGp9u`e2R!i62Mo@%N59Z9zNQ%a1W~P)#sVtp z0Wnv?>RGlnU<``&@3}|%lNhmcn-3v;pB$Il(v6&WnW<$i1l9MB%?MCcz23sb@4Q#a za+XN9@wt90(;QucU~ZU)j-zQ1+x@h$bPw4kxJZ}i&^9eUU*CV;CH5ciCGm!m0JiBV z6Tk$CTQg+GVA_YL8PZnyV+?6TSIH_MYc_id$OcC(adZQYBOm>_cIBuI?-1Y&9IsDN zp_!hffrl}JFN`0T&;(?t{tl_!lhL=Lb$4Vp0NI@?*~XQFYVPu&+=*P`(4ZB?iA$Q) zO#`4!B$2q?6561AHwjs(E&UNXQ|GGO4=~r77)V6x&-wJRnuiHYkK7$Xr zs%83fQ2ic&AeR4hii*}ArsgNg-2)IZLhCBy!1{oJ)M}Y+9 z&zb$?EK8XoqYHqD1kzK0$~xcivGAQFL4$J=`is3-3Ii6z>YFTV(tU=`0)?;K3gXeS ztu_nz-Gga#tj%DWzEl`6+Ls*N8jlq_BO(d0;&HyD=Com>FdifQN;r%cZA45RocQ5w zhyDoY>yAoTIaE&84=jTWWINm0=$hB_Qc4r$C&8pK{2iO-*y`lLs#jps?$%Pdk5W3S z^Z~1?R4fsg_#y!~`S`LFclMJV?*Sq4Wc++r7VOe4pLA>Gc`!jrxB%e#^fEtCA0h3x ziU>fyt(YiFBwDVXA`AbfA}_Wye%3Xi+g=|#GoFjqA0tq>DH zOxka@^L%4vmxtiJ;Z#w$`Bso^|YxZ9K!338E;l^SHfb@VVHl2~aG+`od@ z%b9+_e_Eo7amk$~i8Lx~QH)4lc>y@Afl#_SlJK_3KKuC|b<4&7sJa28yJc~NRx3y@ zq;pVq)OswK=|&yG>rhD|k?KKHtdPs_o9rOuDpD$9n9}PfvX*1-5bdVgnm}A{5_8y^ zxs78*h@yM|b0;y92KvWD;Vc%B^8wM3*G;z127H3bn)UTMs>+d_5#Q^RuCtTHK{$>o zn7~%{MfaTgYaN-`h)=J0Wr06#Dm78K_3~$KN0}>BXR|DZV1&}g+om4=7QTGux~rjn zxi}H4(bhYk#qNpU%X0F$3DqAZj-wPFbSG*6^@20Aq6a8OlN$J@LI#_f@5-?!W(%vS za-dTE6uSqRLQ;7fzWV-~3s14oALk7b^^FE;p>|Mw5UTPWawbn#M%zLK%OtBr>Rl;| zumP__jT+{8r6TvWd1Py+J#C#r?gr=^g{x3S>ICADz7{UHuZg7O$HjOkTJSL58w7?N z)fznk<);~Nh&J0s5T~4lJnyPq%bks_*K7*-m#q3ze-!LiPu$1r_~^k=Yf0cl5H%Y%`fk*c%A|<~_w&lV zD2?t#v8WZA1Ys&Yh!N0LFaKM0v;kHG>devBGM1}Q99!;Q#3*PgFUbk2fO0Hj_Qrog z3RY>}nNoz@Zq9Of5<#x_pr_#x3H1F|(^dZvia@dxj1?i{J;hcwzz z1_Fl&N!SG9W>))p`PP65J1s_X%oX!!dSFxMV3gi)aimT@WMGJfiJaWvPqzGS=qQBa z)tcsApnTL6#T7zvMe#Je3^$)qV%V)DvEYwek30C4HbQP2b zzv-qZjZjPz-%d4=p1_ztO2Se+1ZNr&>A_a2Utz4Ua6%u=?Az%TnkV~&8ykapZ)|i; zu;&RtRZV|A%8D>iE}>Rh1-Y3$8efsmhH#Fxrm4N)CR=KKqNWy>mDcUZxs4|e;Z7FC z;#@|T34ag2bb{8`BsWi+UC!j}DM)ZlGu^B}Hfnh=fYE?uCjH zRS|+S9fxg7fja~KmFw+z76rDlVRS9D!)o+Qw~s5C%fc1Lh#twG5(KuLwVFq6AMmAQ z6dBT(DE}Zj2AnJanfJcv8&H4qn*j0^hI7$b?hWvX_3{B2T+O}8`f+M0I3sD$E;J#@nQDj(;2}sjn8xtq4k&`z3LG$7*EZ+dpO@` z`Y%GHgLH*1XLR38D&_~J>al#CCe$W~Azi^;ObljMkqZW&}LE`XV~~=TaiDd$@X^&vel9`jURCAd`g&r(V=7UuU7CZcLJEC zA)Qwr0J;~VKMp1&5%XL=4~ z)C3mdZPHkpe#nrc-7s80cjFvo)+eIY7|y{a))V^yMKVIr=76F^>?N+JyY}_WFx5W` z`B5~Sbrvb`&tA_14q?xmN#p>h^|@qv9ZXOTJ7#WUI_nFvk4tZ09=E|5>s`8mIwAH< zmiOpp8E_bvl^_95kWp~cJmAOkTvQQ&m`gFT^-X3pgjn-j;5U%!l;E=Fsd?~H%2n9P z8o@vV%vE+_+MGAGvelZ+eDk>e2L;lgeZ|Efj;3QGp{NbRweVI@rw7%R+`bGer*Grz zAUr0%dBVRGp8@1}x7t$bHaZ&ZD0LqIB>pAkCfWypD!3yaON)`%@5`4JhEYOtagec;3#=wo6)}jshE@gyO`bONx(H&Z!u2tln zpj8OzyQy@wB>E=g8~J+|;W7Uf^k|ma=Hl>9(;$D@1>Ft9S>t(XSqwVjML;&7HoDlm z-=kRvmzC)AjRp9a5PfYEi~OYUF3~KFDXNg=Dh9!kn-L9ZF5GVcBle@4jEr5_X6Bzz zH1z`_d+s1vf>qBSmUv#E=@aFxsx33H=Mvy!m6VqN)ev(zhd(a~L<|>JT|~W`T5-_l z8^o77KdS8R+rsj_p+LAm6UcgOm5jS5+X-QHbygY2~^Rxu4Wtv%+ATL3eD| zELBkjUTwu0v6fA@4t`(;z3U7m>}38d)aAkcC@d{P?6xhC_@MpU62@}rFdWA3>9p#^ z#SxXms_5UEv#5+>cu%48dCgA9QI1N^Cj=ZU5Xi7c4)1@8D>CD0SXdcrA zhHdIXbUx$*-{JujyW~9K=91@(vG8JdFme@QXVQ>+J=6!?<#Im2j3zY$sAO*D6yult zNx5nLfpwF}c|nk2txSyhn%JBEvNzhd+7DVg^$YH*T7J7ryXGv~Oc-~*E$3&VuDmm6 zra=7|c7ZzN-chV|DF*IL>h|fZ{c`g;Kevo)hXy^uHyz=T1|_>cFoygU{v6y(=#RXN zw8ym3GYs-$Ct0-BK_Bow-=~iOMURKTg;s<#zDGNwP_&e8HVE<}?E}0%1)Wda&UoZ2 zUMiO9USx!iz&i3U=g^N(m>hQdR#vvYqU3_C_bVg|u*maZlJYf2*da1^2q2CVD zWn4q5jD}f`@)n<^KO)>Md4}4}XP-CKZ|HP6&kUl*K+m#LoAF&KwKt!$_CGR~x)QkC zna=~-2LIT1>8T8SQXN>K)h%nz{pQnlAu6Invs75rxkZPJU6ci0sP zRH#LBzG+vIMbXP5$=`5C)pp?C#=-s>$5|GF?Ss}no&d0hfRj=HIH_e8Vj zjC&toA7U@-C(8vML~K`;UWqq%ZP}-!o5kMP9nhP+|3YY`WM@*D4?cv;YVuKj>WnOr zosn&qfIFaGh+_BYeAzj4p*#g_@qzS9bfOc)w|@bAkv0S$Z*c1(<~ud(mXnr^Xt*=z zE7r~0Q0Q}DgZHlPP%QjUQ)LRaK)wl+V$S#`4<;+Y*kQ&TymSwNoA1)jcr98H^E1`7 z`=lta=tG(Y@yw7zGl1>b?_8)C+!xiq3_wl zCp7grosbpi|Tm_vtONXU3D4UJJY$eDphY zx0q(<5RP7!Y2NYd$}~HnADC}VSK^0!#?6__EVH}+caP?(SshW6EML?#b5dP^4#A$E zaWY$QQLq)eDso{S2VT4J>J`wC2b8h&`>_{xozFmv=A2@3ma$}2yY#7)zP!=2r?Xcf z&e1s3$M&49H=3N*%sVd$FQfefyFn9WUX0H`jDVWcw7j!(ppU)ga2~2yIFD`5sNr_(1iAH^>+cipk?&htSvhJ0(trNp-lzE z0++Xj2Vvg%&bz(^Om9**KKTui6djVcJ@3~>Au_r*i^sLr0>d`~M{x{WW&w(92 zUr+Lm0bf8bN6#=fmj3+#(i#%*hFmsP#2DH!9`CY}QZCN|1HT1ikz{G++rUcl=AJ?R5eQRSuFL1+Sa z_5U*Wwy_z&A9ngI*T;7ifwkRJ$qg{;{!l(Au!M5(Q1PZE(v6ZMz&X^6u;E z(v8D^8t>!|+1re`J#zX9H7ASP4sdU1RtV`GaL)Ya_<62JN2utBWk3di=LNaczuo2q zkUYwLP&q0qCVoKUb0QYYcd~ahYbP=^1p+{PQ!f zn(2EMntg+M2VtrUWR(^EdxbsQbh5t_L;(I4_r?q{{uOIhAS@)>o1dL1w zyjc}Iwgdla*)KU|WQTLb+iZ^gT05OFV-itptK;nnBX;@0qIl(o6Iw2h`U!~Q*yBtg zli}7Unca@|9GyM|_8$TQuuY4Q`)$>wOyWK#O`uk5e_=zpzp~5~dx#cU2o^hrcZWVvCv&>*jJd-8!B1$pVFGP8P`mBv8|@> zWLFB_rl@MkpBXDklzrEJ?dVy2QdeZU#Y!DNFUPVk%l+Ck_z*E?2Jp`>)k3pxKFM5j zbvG}H@_Ha|#h%Qt5cwwY1mT(4Fv3eaQB%+%T9IiNO${>prW_q2|E9H@yk$L+xr*EC z4CmGKRF|WRs({TZ>aDC>{pB+nQg~W%FmI+kbtIgJ4HYK4jAr|El4gjxNxQC5y?b2B zG*_ulQ$KNKnV<5KCYa`E+uO@p+wb|REt{Y4h;^y7v$_QoGrW@w2pZz zpht72H?=!!Z;MYSq{V*Z+J9&}Q$EqqTljO!BFoTWlLfY!R%ZBEogMjB)`Z04;a~fM zI&CU?AlD|#-BNs3mq(8J!wvyOyUoCa{_H0=PQMBjbAPA(XIzSsT(OHak!f{JvP{<0 zi7;pRdvgTr|Jl@8%e)-PGd2(78#eLid;XV`!w%6V7)*Sjye%=c~|q|%eq_rmvKM2qYcc<({!b+Mi>5)R%9sBAFWxw%3B~ulRZxc2RXO+ zq)VlVt8SR*CzgW$6W=U0xm?4(;eDD4HdQr#8ZGZ6l#h~_Q~j6awGO^2a|Qdv9y%w@ zWQO9rqxndgW`J0%>xM2CPLi(ZQJ*Nqw&8G!`F0r8NjzTBvCFjr9V~NyNqeTCeu7ui zMuDBGdie#?)*w${8S0tY;m?(T-SVW=Hv3EfI%N1G@?t9w8s27C0}6+RGlabkEy$DG z)PW=8CJ*b&#B#Jp8USfBic>=ml`kv=tY?L{ zg%vB|OE<3!Z}X^36_w>pb{Z}CSNqn_nzd#0|GL6!`?>%73a`EY#|p2#<`rHaw*0RZ zUj5m)R)G@DV>?9_gl=8WetI_Kn60Jrddp*(&npj1k0df0yK6)4j|4qw-jx0hwm)*CNQ#Z_Xl86R_IKv(% z@i$Rf`uC3*RDStw?z^s;&JOkrv7`&vWwHSh1uBY>EHS7-6xDj54oEUicFm<5u?B&y z`2Hb<;unOSSJ61rxe%F^E>+$^Zt;T`QsFkEzkGvn;s=gxr=6Pb7$1nA5-012Nh45t z04IS>8sMK9U{jq&-WUgY39({k%p{4(effhRWDxu2vcG1UU}7b)KqXJn_gf1cFBfr@ zU3_xi=Ot`lZ_?p`gRXO<$vIsSw>I(D$Zt9xmH&R~dxRu^|7Ec7Yv90b;XEEBE}(|6 zTj08dKYgVsnz|IjB|iYnC;CR3uJ0Bgckl`8k1!EYs*_~AiIgC>SZS)Ui`VxL&jI4M zN^!fTIlvPC^QNWix=$%W|zLZ`c*YF{Q(HB1F-x8}m&MrjY?g`Rz%OE{rLr0TKF zc@_{;;5d9?p9+#~KP8VI_d|nCX=T0Z)cTXpNE`Ln2aNEOt7%s4G{OfGOHG#&dpt~E z0b5PkX9+HQm|(_d6V;vcmww43_TlMn6Fic5Ry$W1uOFiRd5~;%uq)QigH$4&J$Py$ zhxJl#_x0&lge87_#WNE`I)MDM0jV5M1{A<8RAN8WCBui1X;($E064$o11+9nsrep! zAJo4EyRuTtdfR1WY@vV(Kp@kbiB+cWwq-1P=}7R_a3G@EQP9C(YCJC_ZS`A0S)ndd zGZlcJlEr@DQ^JZmfCmnNIdeb3(YJn!S2Y8MIV8Eg>xGjiex>vq- zNvV~nE{EKp+0-`t9T7*5Nm10B_BVek-)W4G%ORbNEI=y7IZ(_cqR#@*(vm-zZ({(E z6|zL>a+8$_qOjoS$$@`H&u8MF2*eLz3p@B$rfq`QZ@9COfa|o2CN~b?5mcrBaw4Vy zyeGK`E9t@w{XMnA&`pa`g#%QkE&60YKGRU&zfM@l+U2SYWGO)TQwG)tIb!KeGL%YpKrOKKo&oT+P4*d6mu!xg|f0le|e1hLr*zxZEpfA>?@ijD~_}Uj-1bit~!CB zbnh@MybtfQ->|@E4$##5MIzSgpi49b!*5wfqI|a^SKfq5N&5TWq1$TgUZ|#-ih;8- z?!r*j7~lx;9%3Wi<^t0^Ih8_sEQi&bmbIw{ecVlVpwb)?P^}KXPreQUUPL&NFz#7U z`eou{-BM+N0~1P=y!fc&Wk?+clfGEMj&$g{gP&bc#a5iKnMd@|1J%CG?t|~YSUApu zY_753Tgm2Tw9Iwg3bob0KC6V@31|XDEYx!l3sehNnT(8Ql2tQvCAjU<+81ARq+N^& z32tw*X*)JgYIk2{Ixlm+&+p%$ZoAMNJoc$Z^+0bu*e?=C*GpV0*cxzVh@A;Ha|*Ia zTC)4TD$&&Mx)r%MtU#5|zXw)M4!EDw#b#dJ@ge6^-cch08S)}oeo=@~w!)Ooix|;)Fb4M0+dVqm@ z;QAKmP9vZ;UdBoW^>#U?QTwkizR)Hu>9Faz@J;+;ZM-Ym!Gy^w=Hk4^B+qPWYJA7y z*WWWH3u@*_`qpE_fz97Yc@s$MhsLDT(0KYfna_jh#Ye6IA}-RA8^AYIiyIi&HCnYx zM|j0mmZPG=gLz{MHh7>-W@>z&j9f0m$ta8*llCw5sez|s@C8`z31Q)V$6E{OXY{Pk zFm3kz3hD}sd`-+`c)UBWe6{)$aDIU6vm#7uAouDyl3|Y^N6}@^mFDHJi0%VEz5~)# z<0%iP(Ki{C;30jr&s?Pc!VMov`kx`K9}rc0?qL26(KiOsCVA_%zMXRlf};_#mw$=$ zkM+@($d{&))ln5i^LW+kF#Q{o4LzUs3o_Bf$x9QTXt(|}JT-jr-<@0~i8(09^qCWV zdjZ``>;IEa->+zuWH2`I|L)%-03R9Z>jM}{_9}j#DPu*h)Mgjn$7%0({rhFT-O zzB$P5wU79Ve@dQ%bu}oDZhyx`^q}3+IIn?-hAKZTW|8Xm1^Y-MLtj_aRg%`w?jOnnc*NgzfnrsJ13xkW!| zP*yuWFqV03#9?1>qLF_Z(7tm(VvDJD^CHX$aZb|5W+gw-PO;Wi2Cu2~h;r@Rf?P;H zDm&=Hy1rEFpZOqo?4UXzmVZ`A`y)yiz6r7K&k&@vmv@9zJcI;3#GirQfmzaHc1tq? zuhNg>o>n_d#oGk*b{)CKk1BeASMHI1@Y+c9DKh8L)CPB&|1QnW!TI6Cv7fzVs|?AY z%a-)Jix|fVX&yWW`rQM@?HzHUsG-KgQpks(iRQr@rvDo+C9=|!~xA2*+wbdYooGOl~o!;0HAq2i|dRYyQM=f zzF4xqhYQI^nAg`}rq*<-!dA+#yOXg|ccBWa;`v1Eno7bk*$LU6WUYgrC3epO`X$*+ zU{l!VFNqiDaBb$7IU?4@;cGYE!CAWbU=Bk=M28{BHQL+u_Z1caz4wTpr9&wbR|X!& zeks4QafalS@tkWNr*BxjfL3k}XF}u}E$Ts9@tJSFuuX^q3qowd4m9U}Ni?ezX32d< z5e}q3tN2`cIG5b}&dvs%wcB-w=oOV`3A!R?7=LkY+*b@f@oKUH%qcJx1vd4Gs@LYagMRL!I2~X=dO7&-@J0y4!BhDJ_@AL$P`9Xy~2V*^9FTvPSI|!lY zXXBE^B+>7F44*$a!A#g}z#lnzH0j1EY+3KV zMXn0Ox`(Ix>q9wx(F#N|6yWii$XQlJl7mw_2**q{YRhr+%XX^t zk7=Q^4mkqHPqne%vH=2{P)Z+s$PlhcmHhkT(vMdbG07>cB544USKPak`toT_+ z71~b^u$>8^OX}++{OvZz_BP&Gwxl@;D`jq(TIiC8tXd+=+UYt9_Y=KkZmUVMD3eA% zs1JYEJQv8RqPD|{oWc80$z1(Mwh3?!B5EWve^`m$(FD1iw#P7jx9cb)^uVF(f;`V5 z%5%{si0UQ82IM;P61>p?Jq#lVY9;&Ynq#DFGIJT(slB;x@Gz;0Td&*QfqN!fmgXWA z8oELN2p+t9MH=?DXJopS?!*Snfa$U(5bh?*g{teQggUZzTButblgu={SMP<5ewAms zG_&0vaRa`@styoY#p>?T`1(2rp)D^`CUic+FGyns0wSIRm0uI_id3ieI-AHO3S^Ll zb@Kc^<{Gt;unl6Ye`h1Bor~k74DuUq@G(jIVcJY_pp9a_tM;4xA#;cf)Ii_Rn*{w^ zz(j=|+txHX*qu|GX>jt299aB}HmL$5nFEjmS1quH_a<6LM~h& zq~ykfRLfk4_NBqM+DO|7wxG!I^^s0O-ck!*pSSiDsXJH{Op(5Zx5wISfd~bgAh-@6 zYH1!o9SFBp*OE~om>{^D*4+P3}zC45BwD z0#V1|ezJXb3dQ_%y4tZVp;BFr94oM3_C<5XLHkt6*dGYdTbn7M5l^in>%Qp=0B;>Q z1(HkCK>_u1OJgmjKjuLdWNksJ^D?r_V1u*jX=UqLoail5okB)wj}tk~FqU&3aRNhG z1_1L>O>j33s;?*yxsg5wns$PbPX{EUw5RxxR}?#GeG+qd8eMUp`OG53*sXjKuU2Hc zi~*;Ut9%3vWNo+i(09A$6tqDyC`DdB4?y2c%8KH1>sh~An5n&Y^eOy!7qAMXD+jqq zCQyutcx_itt-B=N6Yi(X`{f-!<&o#3_k7Q)S~5yCBos2nhVq%7*8-{n)S)=p4M4S1 zx6lb|F|;Ww@yOwoODQ)Z1%jEC_oDeJFETuBqMtUiJO zGQ#*~{6H0YrvZrOw$dHZ2R6?;)RTK#6yAbQ$fSC-+6r4xc@k#_^avrBS_R?l$4XFs zTJsx4mB(kHA%p6Z4w5(NIEHV^AgXX4i;l$7#^EKg!fQOM8K+*M=4u)?8N>zXTFE-9 z?j@B=SD~yOsF+WE6|Ek!cAIiLET=san-B2DA!YD>n0`N$nI{0ZMkzLl6Eel`sOdn> zN?J`!G2D!>DqX&p+(&LrG=|tr zL{oq>Ra03OHGWnoj-ejXwW(^vMP>|4Gx$ULEme$yULPUXC;-1t@}mu>8OCu_09*={ zJdraLjTTn+k@fU9yex8Mx<#bSW`tSi*!2#h$DQ&4Mat#FYj(}a6uT;~5z9xzFsYxa zB!Ko5O&~PUf_uB|Q;TD`k+5rSjqpZET^p2}>O7)ral4z9MTIOVNYZ_yzgJWRj6N5p zss60-OUs1n?`E~8;gVI02_=b@>G5LN)OsVv1>+UAdMGPy!Ti%54Xtu-hPUcK zZxsQp`r8~NS(;~1K3w}!=V@I96toaHT-s$mSEf(*o`RKF*;F~`QNS@@js>}hi)+Ar z?LI>=1tac~$`+CPqA?-7)*W5Kp;wU40L3<9H!QjC4{{&3HMUv?K1-yi{Qah2Nw!tW z(nbHOI2z;$Bc9u$dnQH`!bo@d&%YAEogZxUn6b#m zSfHw!ct1KgvzreeMT#;Wdsu6Tf~p_!w}he*oqJN9`~cUM`?M14*%v#(+Ocgv8Y;sj zGdSof!=UpkA=?i{sFHMtlC-J1}t*dH(S0d||(0Q3-uLu7ZKvGqpE7E2bgnzT)X(*v53Ct3A!U6myjci#@MP7mpB+Ox)C6mJSN62&iY6xv4c z65XOlCq`4Sb-9k3I{Dqlh|wIqH^DAqbT(^)UCR{lM||sC-G+EZlf*Q^Pox&$axvb7 zzY&}?VRM$;Eeoo->(@+m>&sN9$1JIHcAa_itEO@yhvTXv;)isH z^SGLXOksUixecyCGBgSq!|yalGDESyE1tkf3l)7+o`ZF|>gYbt@WlefrL;$8NBxT~ylQ4GmA3qI&(@@M?Y zGv3oG7^Ig>S2!t6tRO(n1o8HJ-e%l@WD{Z{qGQ6S#;JJlb@3_P_a2qzK!QfK$Wt!y z$c9WF%ZtWc#Y7V$n4ZX?9-^Z8K!Tf{-KSsN`5b>}HL4#J@_i~HGgX}1yQ0f38u66i zL+f$vMXVr8*!A-#QMHpVGApV~{x+xxY$el`k%$-x9Q{3gf;-|V8SP~UEuUo8fbS8a zv0>A940m>4kFrE^!6t%sn&oO! z0xDrm86+5=;Yu}9Ww?X&KK22Pl>up__m;nVNuQa&?&~$7+r7` zTn=yIHoK0&_4jvRiEEmXe7OVdhqI$tta_Phc}2Vfa~yb~l2OiIamGzWIAAjN zj-Uzq2+`9u7!J21oI;9%_Yq2Dd$^Kxw++xV{`fCaUjIlj&*K-%fg-Ny^;Wq>(z6*Y z;-Oc%_USu>iQv5nQ@Sfg-I9P#-b4a}_MYZ%Q^6wa+V+Eq^yjxhx^;rl5K)ecYQx8v z6|`FtObv4#fnC>H*cWZZ?hua(6z@sa02HaOPtH%QaZ0lIW8tK(S<$b2@o|PYQ~K&? z81#lRP9WoN^DR!K3Bq|^}0ufPBED=LV2uX%PMMa2+iU=ek zDkVsjP7__i$fwe!|x8EPizTD6~N7f&Vej25+?Pq8hU?eM=9#wbLXKkENdC zJei~4Vfp7q%P}!7{(4xSV&Rrba*=ooGigFF!>bl9SY-2&6n%#fZ3u|XjfQ4&CO6lQ zIxYMCAAGB)cH@xN-TsPqAT*6x3liD8(G!6@iem*r8(Ew~{a)7GxrcgF=`J$dD&uel zU~tWe`}3RXs;(5dc~DgNG+M`GsrZ}=;AUO(2U;7us?Mf$^d5Wmm4k8hZ_Fs!N0wq# zFA@@abN~CZu;ufx==to@dH@JX_MdS&g$mdbUk&Mug%4LIaav(96G%JDC`M20t@W)kO zV7XbGQBZDf$z73qQaWB-O}OE<((v1Jj_&wnBZSJBUTeJB4zc9ez|+T5l!VcmVX!N?fIfax zy!qbd2tspb7p>5hWD$Y66Vt&`ptq3Wt5dIP{lw=Yy;~?VBkI+|kY4LyuU6J*#v4Lw zJZSN}T29>aY)aLyYGltU&{>tewT2JnFAW#;BFfSt=iF$_o|uAiGji>f;CE&G*EzRFxM4RnKjM5Md@QM7)N$KsvpI<)Zj zTH=5?E%i{J64gF64j2K@Vw!FXwFDZQdrsJKPETWV}rpIs5HzaW_BRmWt(_%*lz zVJR)~-^Dj=TZgB802Si+<`_)CWJ`j3&-W0KRWRV~Kq7ZU9<|{bDB~h<_)Tadmp!Yh zO4*uSfr=;|F|C{!B)(La^M!LKP}j(b!kL1Zo7~X8BZSv9%y;b$gyC~lA~kVBv|BrB zES28=dy2QI+&e;=#p!zfZxU#67M0-qie4F+PQPQk&9eRyC47;9cm8cxHh-MwMjt=n zaUSx^;to|ixK!$pJ(1P<{_y#<*+jg32C=4g$ai!0ZRHxd_h>CL6+FW5n|<|IcfXIL zag(;UxDuKNIY3|yL9f^sF`dzW^*?lm{KCdAZ@ueGP80(NPeiV*M7anaAf{yJ=?~Gf zyX7KT9kzwVPiI49an8wgX+_{bsN4`9S%W=;)=lz!{ExQUc&2grrTSX}FUsR0v2$^+ zRezShvRrorUh+ertCMMX6{{s*^kMLjHFaM#Cbt!mGas_=*_>crCsN!+#~!;nd&js( z-PnTE{`P_XkW8IV)DxIrLXHw=UfxRv6JG#HGZ5+;ZNnS_VOU#P-!JRV7Ns3t++kRT zZt$?*hfG1aGxGb{E{O>pWYp2L)-Kiz=0dxuCcY-I6?aq}z0|suk9IG)6e`voUXw0RQ`)qPXhz}?Dr+N&(3@v=_>svZMdq6#z}{E%0Fw}iHglR6XObJ zM!6%^Gn&hib_|pqEbASvZ+3g>udS=KMORh5X#Gz;(&8ktA+%3n{pB8bSq(HZG(zPq zmU-f7u7vsNR(}4>!?d2}YlA1tfbeXn#zdntDOmZN#0h{U>DN}AOGZr8bX`}4_QVvh zz-g`1cH{y|RIRpF_^!h7!a;xkJsI0-Nr;9XezeS+InwtooDgP zD5C~m%k|H5%1MmRqE!Vy`8w!H??5Gqc_%5J(UJ7Pn6!Q=CI(ww>&BW=ISxCdsV!PJ zIC~D2TOhmd#V(Fv zbx1=Ep6escg=ZPa=DQ!Rl5rKz20`;oP?wGCu%G(vm%1CMSXM)>G}wEG7_W3M8#Csq zXkS9QRS{PbTY%E0s;EH=|ETSJU-$+32ve+z4z@qe;ch1vz~b{|kYQ_~KfPFzck#Iw zpcOw;{QVxc{_MQC0a~CA30hF*#0*W8?k-l*0{knGNAOtRQV(?jfwp>+z5sv>2-32J6|mNTMGnQI;o2->~n{?pbDTn}`j+Y{v0r_RbnL88>^buV|HBNBs{W z-KAf0ZZO9T1-Js^havyj>1p9Hz5{nhY%aXGfKV{hn>J(26I|Q$%8Djkd|pYD!B0bh z|AkKV1EX>Z?||OU1m3ac?+$g(I=2_eW_-zLSgmX{&$ry8)-^M&{c!%X1>I!$nb`t? z`)TNy3*-!L$1tTfZL~NncBbH>lZP)C>~+KbxZspgE#Hp*Qmm?iGNY%MUVeH%!HM|9 zvt2&R&}Q|GS~oU)Medi79_Zxx)xgm>xtG~l6P1N89nx^D2Wez$0@qhRe22GIR)$Mu zWaet3)5EBFv`3fio5ii{nAQA1{;3M|kqvCk-C{vLFw%mS1h2gyqWt1sBAen-pda`# z5*6lt)*hOycnG;U;OQF=@^*O| z%V{<7t?uJoZ2{rUiA3EvVkr%nw^Zg#KOnzDO8%&1$qiyBVZgb#8r zvN7B{AS(7tp5Qb3+`#H(0l-8S4MC2DOzY3j_X5s?D-dUd88$ZOyvnWh{~;<7uu$02 zEgq+Ft9PJpRUOf?GG4D^4*AcVjiQ7B(pK~10Kew%MvvU+{}FH>Xkn-ip+{@X{mHa? z>zyB8g$}9!7i6$#xPp3`w6s`u)vf!X*Q3^yFD{Pr-8Tj!cX|@N-fDt>Jb*`}WrYq( z$t%f6-)wNsAni4!@J{_WqHSY?prh#epwxjeH6o?nOKd5Yk#YxFGabW`LGx%}-e|^V z^ttM*uteR?#MU?A+-uNeUl<$OQ5j0?=q{hr0B0;CiU0Fj1(>M??U%4jb>$op`0!Bic5|5F2+r47pz1Ku|7Dz+Z9oSVc874P2X75R?=a5Y$+&!> zdw7=#blwPl#i0%V?|&N<|2O4y!tMW0IqmsBl+zx7a;o0&|MjuDUidEBuf_HCl}($H zhh7rbUupf#)@JW2+L^<8$g+wHpR;$~ytXtm{ly;oXNBP7yPb9KhL*njJ9xFE!*vRcg@9L(?J~gZ57X)b7L1t3FrmTeHlf_?(_K#G3sj{w9K<)(zh>YdoX4rWgK{ z?>8!!2kD2Lki#Ef=7F(_>y_p*l|omMyLS|q^LdEHGWWd_2tLpDoAkL%2ye_wJVFpE ztCoN7L$5QmU68yozp|w$&wH6nN~Y1u-`p^4nz&Ad*^MdWL+$6T#{oZ9^>UhfX(4#! z-RKi1upT2$i~GOL2qSZr;WUolS6YrMBN$-bzT-5AhoP_m|SSK*W8`6 zgl@$ZOR!@?hO^<3r1VpK=rNP`SgO^UkBR#x{wFUg`%Ev z509pqCa00=Uuj zHpt_G)Z1}%e3u43aRTO&--G9Q=|Hw9>S zP#`%x_T_S%m-<)k`q=AZrFENW$vGR_fl-Cz9)!#Mzfqk=Hbd87|E^Ci;5zY03Wgg= z`roJL?>^7OW%XW%C|+29b+H+4)PYmS^iO|uW{;9=8k$VjY}NsI+N;e2Qj27guk}Nbv#lVjyoWtKipoUF;sqP ztUAtpi*Pt6WL-m0JhvKG9aK&q=PuJqeBxN!x#gY*P2bdSt(l?b9g`6F4p^kKOX|e9j?C*E*5iZb$Jp5M{cR}CdqvtW_O<_Dkz*Lo&7?pqR5IaYz~(nb_J})ghYu6xuYK-+GXET4>?F8L>w5jA!Rd zrPS|JSTxVB?e>yQ7-(hqGkH)dY10$5X5Z7Yb>H3q988;Un}!;&iwQm78BJ5+Gzog z+A8@;OVD`()B%#}bWSscxNB$&8=E@0J`yTfp2b|L`JXnyfvlP_@INK2jQ(RuI(MT8 z_720>Pu^(*K^AdbEn}w+X3x~B54Vvvnem`wx8l@)U-)X0bUy)aGC8+Te5&(`BUM96 zt->aX?qbF%RE zNBU2v+d#_}ieG(t-6KStU2ZfsenOly^<+7S{WJCNn9TND{$o?mCavPAD>>nn-3f7R z>WU|TY2lW*kFZ@uV_Q$RsVU3qk6>B(Pte1w9&iCF1yQ=gczSH! zaT6L;U$KZoUx!VUh_;*yPwyqR>m$0M=(Pz(6Z;dvV!^c7Wc3Y5Fm6@Hm}cLp{OjgH z2U4v2ZS$YmbLu4E^G%}Ug$`Ud%lhl6u@fC}RkNAek-oQxwOC`=m}xb3Vyh&1@v?Oo z&A^>0w9O*U*9GWvOGfI}VP_wHvf0FaZ>ZXiN+Yd|0^3<|?o>_&k9}yM=R8qoJq?m6 z4^3BD1bHsG0^xapK%M!!O+bp+B-DxilF>re&TgEBxo*?#F-gPz7&j?+YL?b(Y znZM6(KNR2kEv(J;@q*%%SovYwkJn!uBK5l6W^I+^(BkHrEzY-fVpzK-=@Xwek1s#& z;L;BwZ-Q7j@BGu=f_M@;8rD{qwy+p%5he9{nzrC!2PO9E8~cysB?z}Ao&qd=lJ-h5 zv43W$Zsi{NYj0j4%-#Ou?2F6&3lJOX!&b^7Cq99GRqsgXG!)t1Gpuk>qCA%w{U$zL zcieTg>A)4Z^m^m#`Jm-`+9gtwM7COY-7Bu{{Mf1nSP0<3@7ViiHnI3t${`AHQLLI& zlMe-j#ibo*9F?ug`6@oQ{Bdz~{83Um_uYh>qjzPFX*8!~xO^qH`RDJvKN&Yx>OfVW zj&Fi2F6F|K<)e+C)K#BA33w0Wl?Drw=v zM)x-SE5e}r61*&SzpM@bvk+ea0Yi&`3uabB)zazKdr!yP?de`If-1}(ry}H}-0pS@ zV4c50mP3-@(iED&J(Qp4G$u;-xHh?6`nty&n}W`rW2M=N4$z32NKiLp@6gZR zZ~uY2I=RsjH|?TcfY3D<8$hOk@M0qV>6NdX?e$pT-Kq9Qco{e|6y7(ul5Bc{7GAyc zmGcHO6U%i|bTX$iJxW6CneQ;7&4xTHm`ZYq?3{wwqg-F!-Q9;EY40sYNdChGTuRXCKT7QUJgKA@D z8<+qRB)MxHKJB#USb$&|NziC|Le_u6uY^gbY}D4osX+@>8pBXKGiHpZRG$#KLzHiF zEwL-o@ef>e<_AJo5&{sE#Vc|lmnk5 z9)Uh2rCgeuhSaA>b2+xw@TP2%@NKN*5^8!Wh8649O2Hcvw>c9wn<2Bdcuiv}MwX2@ zPLu?9XZ9lC3Hcxx{&3c0bF%g+6*|XW^o2#7UzF5SVg1ygjSR%LmdS!Pf}-5*V|Y9-J4HtAw3BLJ zx7U+uMVh`7%GtzFEayxH+e?}$*jUqsiB?VtQnDVdm4<-RUGewqlo(4CfQ>-0@e)B$ zcBr#rR@euc`9wD6TB;V3x=S4`@kd5AR@C}7O|R?B0)U+O9b|vPfFTTgj>quES;X7P za5;3N@*zgknC5Z6EWsjt8kpHQ_uXn2KG{y4?l#a9J+lcSe}k56w6D*zNjLI{DQVS{ zj?T~lAKiZx;>KPu?};^W#B(km1edge)A4`W8paM~X@b3|oR_*2@R|QW;dx+F-@{Jh z7LZBv88n$mcGjVOU1A~b^F zP0eJ+CH&k!j}DR2U8LiC0fhB4=Yj>A*Nf7%5RTk;G&OAoNjdN9`#{L<{8Y>n#uJN8 zaQ$Dz?uW-mGs}ycj$G+((|le?GCV-SHDg}pN}6aSlo#%eDB0*7+wEt|qd26yH(CHJ z&P8O9>?By;MD@sD>dCu8nrrhyR6TSI@0kEWX5uZN50`>~ z^{|g^zs1Z31ZK0PuuYN;(X0T&6{{$H$Uq6uqpOG83Rbci9HsD_&5tMCwWyamGT_XMv)@f4 z>qyP>ipidO4;W@;l(kN0W{EbtJzF=N-ROiP2 z4%>TKFk@%+=C>bsU=n-)ZNb)6o(1|_B z53xU2Oc2dY;RTDxb4Y{>dBkGw4qUaj^`2KH^_#HBa;8gtpTWo7AuD0|iK+8bXc21{ z^dE-BK%IxIzWi_Q9*}CUI*I-zQivO)DtUuIH<|57^N42oG>LV18 zxXPPldVoSwXSbk=AOIq=lVwF$<#l)=(^h$T&Cxp|0kLK%Quk87w0N!?N;*fZ|ir?riT_G3Dfh7R5i&X(JEMf0=$1* zmpbtjF*|(-z@GMi=73Xx1)1|-L-B)3hQELqju-)08UT_ip`I(&UG)6U@anAs$d@am zS3S|;(;?jna3-nA3La>ys1ZS3=VZ_+0QNXc1umQrOo#FjnQj4KE1}89Nea`v?h`{$ z-Is+Eno9g@$W2}PNAT9oC{d{32&s&@WQLBu)L#d#LCjsJ*ysW*Y*p82Z-AF6=rO5?%-}O}SZZf|V?R4Z zeV4)40Rx_lmCYI{uaCMEk3G{pd%XmSW{wUQiGz}Tm!86l}LzD&DkxvvK9lO`3s)n3}h)uYeJXcY(xps+aBce4b4bQWsO|+W zbZyW%GAVf}w{s!gu;#d!u@xyMB*5htAa@XDf19A8Gaag?dwC^w$eLsT*9m3JofmwJZ`a1wdnh905=pR+MuBx3PmS6^L|y=fr?$}B`ri@Dq54KAVI!j7izK7B zM{R$=jgL{f+vAD{5(`<{@mWE-R!ZNa-l_NTs>EnZScWU}8Hsfp7u2!pICzKtrI6m% z_n3cK$4hz}LH9~RT^}zLtrg52LLvittMW|>R~AyLsh?`zt;))pxCa+YR}!rI=l7b{ zESW}k=pwp-*Z&6Jzq+6_#5q%j`-IB{%T^8yUZ$%GT|==i-PN*u@TJRUEr#O#!}9wP zn9NLY9TYk5Rg4%AR&VH|ZRC2Y_6l z4%Dc$3>*PInh8-S=^i5p8=MGJT@ZaDiA7c4DgxOjqlRd<*6FMd_NbMU;e_t`sgNR& zc?6|!w-k$Q9og)$v;6JiU+U2?Xvmi}ohy2s_Sr@K|b2&)i zI=iac+M0+XW5DZQluYanAnm7cgcrIeG<%TJjUM6c!_&&IC)W!-K7tis4DY`zd;6_G zI$VFN@(@-1w0fImq*8QFv=Dk4-V{Wbw2F#K_OIMXEl28#l6_H}5LKfJCcl6>9Uwbp zeMb}mbiP+O4L4S)Ych=Ee8DqaZ}Yv9Sx7hryb{E@8%H{HAb@v?=t(C_b8I1W2920|x^p^TzrZ>pT{5#c>LId8B+%&ohBaE6~bL3vD{NKx2< zx=Ir}7D`WN*$Rn~I$wXl`###=v?UY=py?_x{~Lh^HPctee9aQ7Lqn;$Z_{=Vpdy)K z3d#YXhS}~>0Da(xN4gPodPy>w#!`d?Av~i~TZcfwCHC|7FLjb49Unj3y!OXY?QVG& zfv*rRbx=LCICCMUSn=Em=DJ@NYt?K2gpJWhdO_t^=r{EInSoLcxLpvfZf}l`abf0b z14*MJqxjF$ftha@w2-#mn2*Lt;~i}lJtH--oDzf_Dq(GNQQwJmMU;bAHVNT-u5v>} z#Fx;de;3c=A%hMcdeI0U$;G@Msxz+T)!5rXh7m64H$&>@G*;K>WGUY7!>}TU)+oIr zzpeh-9Ig^zy1w7!MMO%Td?k`1FnfRs!-zDTUG)K6J64fp73c>Q zGY>l+_24qTu{=?z<15(WBZu~U@H+1m4tfyAMX=R%9mqF#ceX!Z>pT!uVi9ac0oV_2 z-8wJ-NZ%uj@^&VVA7SnpQva8TRy0*`qm!rvW-YNAF90BcE%3+zMhH+DP1BES*3lC| zFg;@*{vsj)Kt5Wc<+sIYD_s+l(`Zco|DFbBmT@{8>8-CP;Eo?S%AV;_7$&w0cAGFi zb6fg1(YkoWuIwzYvO^zL?~z$x(Bkt?SIq0bOor>nc*F2?_sIGHqN`)5n6q@#Usv_x zvR9hBAG%A&Uw-8{rg8<5sw=GQajc*4x;oblfxR3dEiEU6%OmSMO)n6xfw3-*GbIEt zVAGqUet3VNXB#9C(KU#GGFnbQQ0U-|0iKO5pO;RAR4u%AvgK=an-1@gAMz8(Xo%QqxC0( z-qc|$QEppyh#%5Cn~y|5-K%0pp|}4Au#&5@n8=sL@bFrwjZ$d)^WRswv;XgeMh7q- z@&uQaMdT|aTD>i*pIl_=;$_2{�qrVbEAAP{S{yoIxl+5dhDc!y_|HDV5SEUuS6A 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 literal 0 HcmV?d00001 diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index e015a2ee..1438aec8 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -1440,4 +1440,201 @@ "energy": "13.6", "comment": "from TOP-22-012 with PDG 2023 value", }, + ## numbers from Denise Muller + { + "DAS": "/QCD_PT-15to30_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-15to30_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "1301000000.0", + "energy": "13p6", + "total_uncertainty": "2135000.0", + "equivalent_lumi": "7.684e-07", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "JME-Run3Summer22MiniAODv3-01052", + }, + { + "DAS": "/QCD_PT-30to50_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-30to50_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "113100000.0", + "energy": "13p6", + "total_uncertainty": "186400.0", + "equivalent_lumi": "8.839e-06", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "JME-Run3Summer22MiniAODv3-01051", + }, + { + "DAS": "/QCD_PT-50to80_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-50to80_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "16760000.0", + "energy": "13p6", + "total_uncertainty": "27450.0", + "equivalent_lumi": "5.966e-05", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00041", + }, + { + "DAS": "/QCD_PT-80to120_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-80to120_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "2514000.0", + "energy": "13p6", + "total_uncertainty": "4155.0", + "equivalent_lumi": "0.0003977", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00042", + }, + { + "DAS": "/QCD_PT-170to300_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-170to300_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "113400.0", + "energy": "13p6", + "total_uncertainty": "175.7", + "equivalent_lumi": "0.00882", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00044", + }, + { + "DAS": "/QCD_PT-300to470_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-300to470_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "7610.0", + "energy": "13p6", + "total_uncertainty": "11.76", + "equivalent_lumi": "0.1314", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00045", + }, + { + "DAS": "/QCD_PT-470to600_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-470to600_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "626.6", + "energy": "13p6", + "total_uncertainty": "0.9279", + "equivalent_lumi": "1.596", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00046", + }, + { + "DAS": "/QCD_PT-600to800_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-600to800_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "179.5", + "energy": "13p6", + "total_uncertainty": "0.2683", + "equivalent_lumi": "5.571", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00105", + }, + { + "DAS": "/QCD_PT-800to1000_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-800to1000_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "30.69", + "energy": "13p6", + "total_uncertainty": "0.04498", + "equivalent_lumi": "32.59", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00106", + }, + { + "DAS": "/QCD_PT-1000to1400_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1000to1400_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "8.956", + "energy": "13p6", + "total_uncertainty": "0.01354", + "equivalent_lumi": "111.7", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00107", + }, + { + "DAS": "/QCD_PT-1400to1800_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1400to1800_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.8112", + "energy": "13p6", + "total_uncertainty": "0.001218", + "equivalent_lumi": "1233.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00108", + }, + { + "DAS": "/QCD_PT-1800to2400_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1800to2400_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.1152", + "energy": "13p6", + "total_uncertainty": "0.0001783", + "equivalent_lumi": "8684.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00109", + }, + { + "DAS": "/QCD_PT-2400to3200_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-2400to3200_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.007574", + "energy": "13p6", + "total_uncertainty": "1.208e-05", + "equivalent_lumi": "132000.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00110", + }, + { + "DAS": "/QCD_PT-3200_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-3200_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "0.0002313", + "energy": "13p6", + "total_uncertainty": "3.835e-07", + "equivalent_lumi": "4323000.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00111", + }, ] diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 6b8ac89a..76971f10 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -57,7 +57,7 @@ "Summer22EERun3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", "PU": "puweight_Summer22EERun3.histo.root", # 80mb - "JME": "jec_compiled.pkl.gz", + # "JME": "jec_compiled.pkl.gz", "LSF": { "ele_json": "electron.json.gz", "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022EE_Prompt_ID_ISO_schemaV2.json", @@ -69,7 +69,7 @@ "ele_Reco_high 2022FG 2022FG-Electron-ID-SF": "RecoAbove75", }, "JPCalib": { - "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", # to be updated + "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022F": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022G": "calibeHistoWrite_Data2022G_NANO130X_v1.root", "MC": "calibeHistoWrite_MC2022EE_NANO130X_v1.root", diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index bda1aa37..8d996393 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -268,7 +268,7 @@ def process_shift(self, events, shift_name): btagSFs(sel_jet, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sel_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sel_jet.pt) + genflavor = ak.zeros_like(sel_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index 6b526216..faffa136 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -333,8 +333,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py index b0a2d972..4943e245 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py @@ -301,8 +301,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py index 905ab9d1..b9dd81c5 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py @@ -268,7 +268,7 @@ def process_shift(self, events, shift_name): btagSFs(sel_jet, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sel_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sel_jet.pt) + genflavor = ak.zeros_like(sel_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py index df0d34bf..39670667 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py @@ -324,8 +324,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py index a2766dee..03308887 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py @@ -296,8 +296,8 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py index d49f10ef..854c7591 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py @@ -344,8 +344,8 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py index ab3788c9..1c32c895 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py @@ -339,8 +339,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py index 2ed6da8b..b7af4fe0 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py @@ -355,8 +355,8 @@ def process_shift(self, events, shift_name): btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) - smflav = ak.zeros_like(smuon_jet.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) + smflav = ak.zeros_like(smuon_jet.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/example.py b/src/BTVNanoCommissioning/workflows/example.py index ec989624..e3d2072f 100644 --- a/src/BTVNanoCommissioning/workflows/example.py +++ b/src/BTVNanoCommissioning/workflows/example.py @@ -215,7 +215,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information (add name of systematics) if shift_name is None: # weight variations diff --git a/src/BTVNanoCommissioning/workflows/ttbar_validation.py b/src/BTVNanoCommissioning/workflows/ttbar_validation.py index 3883eedf..edb71779 100644 --- a/src/BTVNanoCommissioning/workflows/ttbar_validation.py +++ b/src/BTVNanoCommissioning/workflows/ttbar_validation.py @@ -204,7 +204,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py index a674acd9..3159e9cb 100644 --- a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py @@ -275,7 +275,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py index d2fa3773..91212028 100644 --- a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py @@ -252,7 +252,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: diff --git a/src/BTVNanoCommissioning/workflows/validation.py b/src/BTVNanoCommissioning/workflows/validation.py index c10708d9..db2c735e 100644 --- a/src/BTVNanoCommissioning/workflows/validation.py +++ b/src/BTVNanoCommissioning/workflows/validation.py @@ -208,7 +208,7 @@ def process_shift(self, events, shift_name): btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) else: - genflavor = ak.zeros_like(sjets.pt) + genflavor = ak.zeros_like(sjets.pt, dtype=int) # Systematics information if shift_name is None: From af51af058a35c72d149466e18446006e037a73aa Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Mon, 6 Nov 2023 03:37:56 -0500 Subject: [PATCH 07/22] Fixing Summer22/EE PU files --- .../puweight_Summer22EERun3-69p2mb.histo.root} | Bin .../puweight_Winter22Run3-80p0mb.histo.root} | Bin src/BTVNanoCommissioning/utils/AK4_parameters.py | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/BTVNanoCommissioning/data/PU/{Summer22Run3/puweight_Winter22Run3.histo.root => Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root} (100%) rename src/BTVNanoCommissioning/data/PU/{Summer22EERun3/puweight_Summer22EERun3.histo.root => Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root} (100%) diff --git a/src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3.histo.root b/src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root similarity index 100% rename from src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3.histo.root rename to src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root diff --git a/src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3.histo.root b/src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root similarity index 100% rename from src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3.histo.root rename to src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 9a36dc4d..0af726d6 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -41,7 +41,7 @@ }, "Summer22Run3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Winter22Run3.histo.root", # use same 69.2mb for Summer22 + "PU": "puweight_Winter22Run3-80p0mb.histo.root", # use same 80.0mb for Summer22 "JME": "winter_jec_compiled.pkl.gz", # not this is from Winter22Run3 since this is not yet finished "LSF": { "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022_Prompt_ID_ISO_schemaV2.json", @@ -56,8 +56,8 @@ }, "Summer22EERun3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Summer22EERun3.histo.root", # 80mb - #"JME": "jec_compiled.pkl.gz", + "PU": "puweight_Summer22EERun3-69p2mb.histo.root", # 69.2mb + # "JME": "jec_compiled.pkl.gz", "LSF": { "ele_json": "electron.json.gz", "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022EE_Prompt_ID_ISO_schemaV2.json", @@ -69,7 +69,7 @@ "ele_Reco_high 2022FG 2022FG-Electron-ID-SF": "RecoAbove75", }, "JPCalib": { - "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", + "Run2022E": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022F": "calibeHistoWrite_Data2022F_NANO130X_v1.root", "Run2022G": "calibeHistoWrite_Data2022G_NANO130X_v1.root", "MC": "calibeHistoWrite_MC2022EE_NANO130X_v1.root", From f3517a19a3b0e99117c6a45383b7d8d9609c401b Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 7 Nov 2023 13:12:37 -0500 Subject: [PATCH 08/22] Fixing file handling --- condor/execute.sh | 4 ++-- runner.py | 13 +++---------- scripts/fetch.py | 2 +- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/condor/execute.sh b/condor/execute.sh index 8f97cc10..03ff7fad 100755 --- a/condor/execute.sh +++ b/condor/execute.sh @@ -82,8 +82,8 @@ if [[ ${ARGS[outputXrootdDir]} == root://* ]]; then xrdcp --silent -p -f *.root ${ARGS[outputXrootdDir]}/ else mkdir -p ${ARGS[outputXrootdDir]} - cp -p -f *.coffea ${ARGS[outputXrootdDir]}/ - cp -p -f *.root ${ARGS[outputXrootdDir]}/ + cp -p -f -r hists_* ${ARGS[outputXrootdDir]}/ + cp -p -f -r arrays_* ${ARGS[outputXrootdDir]}/ fi ### one can also consider origanizing the root files in the subdirectory structure ### diff --git a/runner.py b/runner.py index b286f7b4..a3cbd573 100644 --- a/runner.py +++ b/runner.py @@ -331,7 +331,7 @@ def get_main_parser(): processor_instance = workflows[args.workflow]( args.year, args.campaign, - basename, + outdir, args.isSyst, args.isArray, args.noHist, @@ -346,12 +346,11 @@ def get_main_parser(): if args.isArray: outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" - if path.exists("tmp"): - os.system("rm -r tmp") - os.mkdir("tmp") if path.exists(outdir) and args.overwrite == False and args.only is None: raise Exception("Directory exists") + else: + os.system(f"mkdir -p {outdir}") if args.executor not in ["futures", "iterative", "dask/lpc", "dask/casa"]: """ @@ -793,12 +792,6 @@ def get_main_parser(): if not "lxplus" in args.executor: if args.noHist == False: save(output, coffeaoutput) - if args.isArray: - if args.overwrite and path.exists(outdir): - os.system(f"rm -r {outdir}") - os.system(f"mkdir -p {outdir}") - os.system(f"cp -r tmp/* {outdir}/") - os.system("rm -rf tmp") if args.noHist == False: # print(output) print(f"Saving output to {coffeaoutput}") diff --git a/scripts/fetch.py b/scripts/fetch.py index a0874dd8..615d2481 100644 --- a/scripts/fetch.py +++ b/scripts/fetch.py @@ -26,7 +26,7 @@ ) parser.add_argument( "--xrd", - default="root://cmsxrootd.fnal.gov//", + default=None, type=str, help="xrootd prefix string otherwise get from available sites", ) From 3132d9635850d8677e136bee055595587010e264 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 7 Nov 2023 13:19:01 -0500 Subject: [PATCH 09/22] Switch back PU files --- .../puweight_Summer22EERun3-80p0mb.histo.root} | Bin .../puweight_Winter22Run3-69p2mb.histo.root} | Bin src/BTVNanoCommissioning/utils/AK4_parameters.py | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/BTVNanoCommissioning/data/PU/{Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root => Summer22EERun3/puweight_Summer22EERun3-80p0mb.histo.root} (100%) rename src/BTVNanoCommissioning/data/PU/{Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root => Summer22Run3/puweight_Winter22Run3-69p2mb.histo.root} (100%) diff --git a/src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root b/src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-80p0mb.histo.root similarity index 100% rename from src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-80p0mb.histo.root rename to src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-80p0mb.histo.root diff --git a/src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root b/src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-69p2mb.histo.root similarity index 100% rename from src/BTVNanoCommissioning/data/PU/Summer22EERun3/puweight_Summer22EERun3-69p2mb.histo.root rename to src/BTVNanoCommissioning/data/PU/Summer22Run3/puweight_Winter22Run3-69p2mb.histo.root diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 0af726d6..da3184db 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -41,7 +41,7 @@ }, "Summer22Run3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Winter22Run3-80p0mb.histo.root", # use same 80.0mb for Summer22 + "PU": "puweight_Winter22Run3-69p2mb.histo.root", # use same 80.0mb for Summer22 "JME": "winter_jec_compiled.pkl.gz", # not this is from Winter22Run3 since this is not yet finished "LSF": { "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022_Prompt_ID_ISO_schemaV2.json", @@ -56,7 +56,7 @@ }, "Summer22EERun3": { "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Summer22EERun3-69p2mb.histo.root", # 69.2mb + "PU": "puweight_Summer22EERun3-80p0mb.histo.root", # 69.2mb # "JME": "jec_compiled.pkl.gz", "LSF": { "ele_json": "electron.json.gz", From f420b68f07c83fcac5d5ffc58a69e54723993305 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 7 Nov 2023 13:32:30 -0500 Subject: [PATCH 10/22] Fix output dir --- runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runner.py b/runner.py index a3cbd573..6141d600 100644 --- a/runner.py +++ b/runner.py @@ -227,11 +227,13 @@ def get_main_parser(): ogoutput = args.output histoutdir = ogoutput.split(".")[0] coffeaoutput = f"{histoutdir}/{ogoutput}" + outdir = histoutdir basename = ogoutput.replace(".coffea", "").replace("hists_", "") if args.output == parser.get_default("output"): index = args.samplejson.rfind("/") + 1 sample_json = args.samplejson[index:] histoutdir = f"hists_{args.workflow}_{sample_json.rstrip('.json')}" + outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" coffeaoutput = ( f'{histoutdir}/hists_{args.workflow}_{(sample_json).rstrip(".json")}.coffea' ) @@ -345,8 +347,6 @@ def get_main_parser(): raise Exception(f"{coffeaoutput} exists") if args.isArray: - outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" - if path.exists(outdir) and args.overwrite == False and args.only is None: raise Exception("Directory exists") else: From ca11c3636eb95bcfbce4746ec3bfc54b7c2e0935 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 7 Nov 2023 13:38:20 -0500 Subject: [PATCH 11/22] Fix xrdcp --- condor/execute.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/condor/execute.sh b/condor/execute.sh index 3829b043..5a621c44 100755 --- a/condor/execute.sh +++ b/condor/execute.sh @@ -78,9 +78,9 @@ python runner.py $OPTS # Transfer output if [[ ${ARGS[outputXrootdDir]} == root://* ]]; then - xrdcp --silent -p -f *.coffea ${ARGS[outputXrootdDir]}/ + xrdcp --silent -p -f -r hists_* ${ARGS[outputXrootdDir]}/ if [[ "$OPTS" == *"isArray"* ]]; then - xrdcp --silent -p -f "`ls -tr | tail -n2`" ${ARGS[outputXrootdDir]}/ + xrdcp --silent -p -f -r arrays_* ${ARGS[outputXrootdDir]}/ fi else mkdir -p ${ARGS[outputXrootdDir]} From c40d26aabff95364be04081988e739a263ed0d43 Mon Sep 17 00:00:00 2001 From: Ming-Yan Date: Wed, 8 Nov 2023 00:01:48 +0100 Subject: [PATCH 12/22] fix: merge Spandan's dev ci:skip syst --- .github/workflows/ctag_DY_workflow.yml | 46 ++--- .github/workflows/ctag_Wc_workflow.yml | 46 ++--- ...L_workflow.yml => ctag_ttbar_workflow.yml} | 112 ++++++----- ...bar_SL_workflow.yml => ttbar_workflow.yml} | 74 +++---- condor/execute.sh | 5 +- scripts/plotdataMC.py | 9 +- .../data/JME/Summer22Run3/compile_F.pkl.gz | Bin 0 -> 181552 bytes .../helpers/definitions.py | 2 +- .../helpers/update_branch.py | 19 +- src/BTVNanoCommissioning/helpers/xsection.py | 188 ++++++++++++++++-- .../utils/histogrammer.py | 17 +- .../workflows/ctag_Wc_valid_sf.py | 13 +- 12 files changed, 354 insertions(+), 177 deletions(-) rename .github/workflows/{ttbar_DL_workflow.yml => ctag_ttbar_workflow.yml} (55%) rename .github/workflows/{ttbar_SL_workflow.yml => ttbar_workflow.yml} (63%) create mode 100644 src/BTVNanoCommissioning/data/JME/Summer22Run3/compile_F.pkl.gz diff --git a/.github/workflows/ctag_DY_workflow.yml b/.github/workflows/ctag_DY_workflow.yml index df33a07e..df36124c 100644 --- a/.github/workflows/ctag_DY_workflow.yml +++ b/.github/workflows/ctag_DY_workflow.yml @@ -4,14 +4,14 @@ on: push: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag_*DY*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - '.github/workflows/ctag_DY_workflow.yml' pull_request_target: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag_*DY*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - '.github/workflows/ctag_DY_workflow.yml' @@ -99,36 +99,30 @@ jobs: - name: ctag muon DY workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ctag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts - name: ctag electron DY workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ectag_DY_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 --year 2022 $opts diff --git a/.github/workflows/ctag_Wc_workflow.yml b/.github/workflows/ctag_Wc_workflow.yml index c04be733..a268aefc 100644 --- a/.github/workflows/ctag_Wc_workflow.yml +++ b/.github/workflows/ctag_Wc_workflow.yml @@ -4,7 +4,7 @@ on: push: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag_*Wc*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - '.github/workflows/ctag_Wc_workflow.yml' @@ -12,7 +12,7 @@ on: pull_request_target: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag_*Wc*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - '.github/workflows/ctag_Wc_workflow.yml' @@ -103,35 +103,29 @@ jobs: - name: ctag muon W+c workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ctag_Wc_sf --json metadata/test_bta_run3.json --campaign Summer22Run3 --executor iterative $opts - name: ctag electron W+c workflows with correctionlib run: | message=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ectag_Wc_sf --json metadata/test_bta_run3.json --executor iterative --campaign Summer22Run3 --overwrite $opts \ No newline at end of file diff --git a/.github/workflows/ttbar_DL_workflow.yml b/.github/workflows/ctag_ttbar_workflow.yml similarity index 55% rename from .github/workflows/ttbar_DL_workflow.yml rename to .github/workflows/ctag_ttbar_workflow.yml index d2e7d978..50fd28de 100644 --- a/.github/workflows/ttbar_DL_workflow.yml +++ b/.github/workflows/ctag_ttbar_workflow.yml @@ -1,20 +1,20 @@ -name: ttbar dileptonic Workflows +name: ctag ttbar workflows on: push: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag*tt*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - - '.github/workflows/ttbar_DL_workflow.yml' + - '.github/workflows/ctag_ttbar_workflow.yml' pull_request_target: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/ctag*tt*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - - '.github/workflows/ttbar_DL_workflow.yml' + - '.github/workflows/ctag_ttbar_workflow.yml' workflow_dispatch: jobs: @@ -95,72 +95,78 @@ jobs: - name: Install Repo run: | pip install -e . - - name: btag dileptonic ttbar workflows with correctionlib + + + - name: ctag semileptonic muon ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') + fi + python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts + + - name: ctag semileptonic electron ttbar workflows with correctionlib + run: | + string=$(git log -1 --pretty=format:'%s') + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts + python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic muon ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi python runner.py --workflow ctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic electron ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ectag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - name: ctag dileptonic emu ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow emctag_ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts + diff --git a/.github/workflows/ttbar_SL_workflow.yml b/.github/workflows/ttbar_workflow.yml similarity index 63% rename from .github/workflows/ttbar_SL_workflow.yml rename to .github/workflows/ttbar_workflow.yml index 5b7ca3fb..ad0de3e9 100644 --- a/.github/workflows/ttbar_SL_workflow.yml +++ b/.github/workflows/ttbar_workflow.yml @@ -1,20 +1,20 @@ -name: ttbar semileptonic Workflows +name: ttbar bSF semileptonic/dileptonic Workflows on: push: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/tt*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - - '.github/workflows/ttbar_SL_workflow.yml' + - '.github/workflows/ttbar_workflow.yml' pull_request_target: branches: [ master ] paths: - - 'src/BTVNanoCommissioning/workflows/*BTA*' + - 'src/BTVNanoCommissioning/workflows/tt*' - 'src/BTVNanoCommissioning/helpers/*' - 'src/BTVNanoCommissioning/utils/*' - - '.github/workflows/ttbar_SL_workflow.yml' + - '.github/workflows/ttbar_workflow.yml' workflow_dispatch: jobs: @@ -99,54 +99,32 @@ jobs: - name: btag semileptonic ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi python runner.py --workflow ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts - - name: ctag semileptonic muon ttbar workflows with correctionlib - run: | - string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" - fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi - python runner.py --workflow ctag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts + - - name: ctag semileptonic electron ttbar workflows with correctionlib + - name: btag dileptonic ttbar workflows with correctionlib run: | string=$(git log -1 --pretty=format:'%s') - opts="--overwrite" - if [[ $string == *"[run array]"* ]]; then - opts="$opts --isArray" + if [[ $string == *"ci:skip array"* ]]; then + opts=$(echo "$opts" | sed 's/--isArray //g') + fi + if [[ $string == *"ci:skip syst"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all//g') + elif [[ $string == *"ci:JERC_split"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst JERC_split/g') + elif [[ $string == *"ci:weight_only"* ]]; then + opts=$(echo "$opts" | sed 's/--isSyst all/--isSyst weight_only/g') fi - if [[ $string == *"[run syst all]"* ]]; then - opts="$opts --isSyst all" - fi - if [[ $string == *"[run syst jerc]"* ]]; then - opts="$opts --isSyst JERC_split" - fi - if [[ $string == *"[run syst wei]"* ]]; then - opts="$opts --isSyst weight_only" - fi - python runner.py --workflow ectag_ttsemilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts + python runner.py --workflow ttdilep_sf --json metadata/test_bta_run3.json --limit 1 --executor iterative --campaign Summer22Run3 $opts diff --git a/condor/execute.sh b/condor/execute.sh index 5a621c44..5da7a440 100755 --- a/condor/execute.sh +++ b/condor/execute.sh @@ -78,6 +78,7 @@ python runner.py $OPTS # Transfer output if [[ ${ARGS[outputXrootdDir]} == root://* ]]; then + xrdcp --silent -p -f -r hists_* ${ARGS[outputXrootdDir]}/ if [[ "$OPTS" == *"isArray"* ]]; then xrdcp --silent -p -f -r arrays_* ${ARGS[outputXrootdDir]}/ @@ -85,7 +86,9 @@ if [[ ${ARGS[outputXrootdDir]} == root://* ]]; then else mkdir -p ${ARGS[outputXrootdDir]} cp -p -f -r hists_* ${ARGS[outputXrootdDir]}/ - cp -p -f -r arrays_* ${ARGS[outputXrootdDir]}/ + if [[ "$OPTS" == *"isArray"* ]]; then + cp -p -f -r arrays_* ${ARGS[outputXrootdDir]}/ + fi fi ### one can also consider origanizing the root files in the subdirectory structure ### diff --git a/scripts/plotdataMC.py b/scripts/plotdataMC.py index 3b8df6b6..e456c0b5 100644 --- a/scripts/plotdataMC.py +++ b/scripts/plotdataMC.py @@ -122,6 +122,7 @@ mergemap = sample_mergemap mergemap["mc"] = mclist mergemap["data"] = datalist + collated = collate(output, mergemap) for sample in mergemap.keys(): @@ -170,20 +171,20 @@ if args.variable.count("*") > 1: var_set = [ var - for var in collated[args.ref].keys() + for var in collated["mc"].keys() if args.variable.replace("*", "") in var ] elif args.variable.startswith("*") or args.variable.endswith("*"): var_set = [ var - for var in collated[args.ref].keys() + for var in collated["mc"].keys() if var.startswith(args.variable.replace("*", "")) or var.endswith(args.variable.replace("*", "")) ] else: var_set = [ var - for var in collated[args.ref].keys() + for var in collated["mc"].keys() if re.match( f"^{args.variable.split('*')[0]}.*{args.variable.split('*')[1]}$", var ) @@ -566,7 +567,7 @@ ax.legend(ncols=2, prop={"size": 16}) else: ax.legend() - rax.set_ylim(0, 2.0) + rax.set_ylim(0.5, 1.5) ax.set_ylim(bottom=0.0) rax.autoscale(True, axis="x", tight=True) diff --git a/src/BTVNanoCommissioning/data/JME/Summer22Run3/compile_F.pkl.gz b/src/BTVNanoCommissioning/data/JME/Summer22Run3/compile_F.pkl.gz new file mode 100644 index 0000000000000000000000000000000000000000..657484368bd440b13532cee568fd7549a0781d8d GIT binary patch literal 181552 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 literal 0 HcmV?d00001 diff --git a/src/BTVNanoCommissioning/helpers/definitions.py b/src/BTVNanoCommissioning/helpers/definitions.py index c3a9cb85..31ef960e 100644 --- a/src/BTVNanoCommissioning/helpers/definitions.py +++ b/src/BTVNanoCommissioning/helpers/definitions.py @@ -6166,7 +6166,7 @@ def axes_name(var): unit = unit + " CvL" elif "CvB" in var: unit = unit + " CvB" - elif "B_b" in var or "ProbB": + elif "B_b" in var or "ProbB" in var: unit = unit + " Prob(b)" elif "B_bb" in var: unit = unit + " Prob(bb)" diff --git a/src/BTVNanoCommissioning/helpers/update_branch.py b/src/BTVNanoCommissioning/helpers/update_branch.py index 9048b728..c667b5e3 100644 --- a/src/BTVNanoCommissioning/helpers/update_branch.py +++ b/src/BTVNanoCommissioning/helpers/update_branch.py @@ -9,7 +9,17 @@ def missing_branch(events): if hasattr(events, "fixedGridRhoFastjetAll") else events.Rho.fixedGridRhoFastjetAll ) - + if not hasattr(events.Jet, "btagDeepFlavB"): + jets = events.Jet + jets["btagDeepFlavB"] = ( + events.Jet.btagDeepFlavB_b + + events.Jet.btagDeepFlavB_bb + + events.Jet.btagDeepFlavB_lepb + ) + events.Jet = update( + events.Jet, + {"btagDeepFlavB": jets.btagDeepFlavB}, + ) if hasattr(events.Jet, "btagDeepFlavCvL") and not hasattr( events.Jet, "btagDeepFlavC" ): @@ -73,6 +83,13 @@ def missing_branch(events): "btagDeepFlavCvB": jets.btagDeepFlavCvB, }, ) + if not hasattr(events.Jet, "btagDeepB"): + jets = events.Jet + jets["btagDeepB"] = events.Jet.btagDeepB_b + events.Jet.btagDeepB_bb + events.Jet = update( + events.Jet, + {"btagDeepB": jets.btagDeepB}, + ) if hasattr(events.Jet, "btagDeepC") and not hasattr(events.Jet, "btagDeepCvL"): jets["btagDeepCvL"] = np.maximum( np.minimum( diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index 1438aec8..b5f91974 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -482,19 +482,17 @@ }, { "process_name": "WtoLNu-4Jets_1J_TuneCP5_13p6TeV_madgraphMLM-pythia8", - "cross_section": "9625", - "total_uncertainty": "24.09", + "cross_section": "7944", "accuracy": "LO", "DAS": "/WtoLNu-4Jets_1J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v2/NANOAODSIM", "MCM": "BTV-RunIISummer20UL16MiniAOD-00004", - "equivalent_lumi": "0.112", "matrix_generator": "Madgraph", "energy": "13", }, { "id": "60d062fd2946173d80086b13", "process_name": "W2JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "3161", + "cross_section": "2873", "total_uncertainty": "8.201", "accuracy": "LO", "DAS": "/W2JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", @@ -505,7 +503,7 @@ }, { "process_name": "WtoLNu-4Jets_2J_TuneCP5_13p6TeV_madgraphMLM-pythia8", - "cross_section": "3161", + "cross_section": "2873", "total_uncertainty": "8.201", "accuracy": "LO", "DAS": "/WtoLNu-4Jets_2J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v2/NANOAODSIM", @@ -582,9 +580,9 @@ { "id": "64204f0229461764a903bf9b", "process_name": "DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", - "cross_section": "20950.0", - "total_uncertainty": "183.5", + "cross_section": "19317.5", "accuracy": "unknown", + "accuracy": "NLO", "DAS": "/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v4/MINIAODSIM", "equivalent_lumi": "0.02612", "fraction_negative_weight": "0.1301", @@ -592,11 +590,9 @@ }, { "process_name": "DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", - "cross_section": "22635.1", - "total_uncertainty": "5.764", + "cross_section": "6346.0", "other_uncertainty": "", - "accuracy": "LO", - "contact": "Izaak Neutelings", + "accuracy": "NLO", "DAS": "/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v1/NANOAODSIM", "equivalent_lumi": "", "fraction_negative_weight": "", @@ -605,7 +601,7 @@ "kFactor": "", "matrix_generator": "Madgraph", "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", + "comments": "SMP-22-017", }, { "process_name": "DY1JetsToLL_M-10to50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", @@ -1497,6 +1493,20 @@ "shower": "Pythia8", "MCM": "TSG-Run3Summer22MiniAODv3-00042", }, + { + "DAS": "/QCD_PT-120to170_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-120to170_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "442300.0", + "energy": "13p6", + "total_uncertainty": "694.5", + "equivalent_lumi": "0.002261", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "TSG-Run3Summer22MiniAODv3-00043", + }, { "DAS": "/QCD_PT-170to300_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", "comments": "Automatically computed", @@ -1637,4 +1647,158 @@ "shower": "Pythia8", "MCM": "TSG-Run3Summer22MiniAODv3-00111", }, + { + "DAS": "/QCD_PT-15to20_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-15to20_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "2956000.0", + "energy": "13p6", + "total_uncertainty": "9310.0", + "equivalent_lumi": "0.0003383", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00004", + }, + { + "DAS": "/QCD_PT-20to30_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-20to30_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "2689000.0", + "energy": "13p6", + "total_uncertainty": "8473.0", + "equivalent_lumi": "0.0003718", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00005", + }, + { + "DAS": "/QCD_PT-30to50_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-30to50_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "1442000.0", + "energy": "13p6", + "total_uncertainty": "4514.0", + "equivalent_lumi": "0.0006936", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00006", + }, + { + "DAS": "/QCD_PT-50to80_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v2/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-50to80_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "405800.0", + "energy": "13p6", + "total_uncertainty": "1270.0", + "equivalent_lumi": "0.002464", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00032", + }, + { + "DAS": "/QCD_PT-80to120_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-80to120_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "96060.0", + "energy": "13p6", + "total_uncertainty": "298.6", + "equivalent_lumi": "0.01041", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00007", + }, + { + "DAS": "/QCD_PT-170to300_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-170to300_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "7763.0", + "energy": "13p6", + "total_uncertainty": "23.67", + "equivalent_lumi": "0.1288", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00009", + }, + { + "DAS": "/QCD_PT-300to470_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-300to470_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "701.4", + "energy": "13p6", + "total_uncertainty": "2.116", + "equivalent_lumi": "1.426", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00010", + }, + { + "DAS": "/QCD_PT-470to600_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-470to600_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "68.24", + "energy": "13p6", + "total_uncertainty": "0.2049", + "equivalent_lumi": "14.65", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00011", + }, + { + "DAS": "/QCD_PT-600to800_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-600to800_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "21.23", + "energy": "13p6", + "total_uncertainty": "0.06332", + "equivalent_lumi": "47.11", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00012", + }, + { + "DAS": "/QCD_PT-800to1000_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v1/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-800to1000_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "3.9", + "energy": "13p6", + "total_uncertainty": "0.01157", + "equivalent_lumi": "256.4", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00013", + }, + { + "DAS": "/QCD_PT-1000_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8/Run3Summer22MiniAODv3-124X_mcRun3_2022_realistic_v12-v3/MINIAODSIM", + "comments": "Automatically computed", + "process_name": "QCD_PT-1000_MuEnrichedPt5_TuneCP5_13p6TeV_pythia8", + "accuracy": "unknown", + "cross_section": "1.323", + "energy": "13p6", + "total_uncertainty": "0.003921", + "equivalent_lumi": "756.0", + "fraction_negative_weight": "0.0", + "matrix_generator": "none", + "shower": "Pythia8", + "MCM": "BTV-Run3Summer22MiniAODv3-00014", + }, ] diff --git a/src/BTVNanoCommissioning/utils/histogrammer.py b/src/BTVNanoCommissioning/utils/histogrammer.py index ac3eb309..f6889f3b 100644 --- a/src/BTVNanoCommissioning/utils/histogrammer.py +++ b/src/BTVNanoCommissioning/utils/histogrammer.py @@ -452,7 +452,15 @@ def histogrammer(events, workflow): njet = 4 for i in range(njet): if "Wc_sf" in workflow: - if "btag" in disc or "ProbaN" == disc: + if "Trans" in disc: + _hist_dict[f"{disc}_{i}"] = Hist.Hist( + syst_axis, + flav_axis, + osss_axis, + Hist.axis.Regular(40, 0, 8, name="discr", label=disc), + Hist.storage.Weight(), + ) + elif "btag" in disc or "ProbaN" == disc: _hist_dict[f"{disc}_{i}"] = Hist.Hist( syst_axis, flav_axis, @@ -486,6 +494,13 @@ def histogrammer(events, workflow): ) else: + if "Trans" in disc: + _hist_dict[f"{disc}_{i}"] = Hist.Hist( + syst_axis, + flav_axis, + Hist.axis.Regular(40, 0, 8, name="discr", label=disc), + Hist.storage.Weight(), + ) if "btag" in disc or "ProbaN" == disc: _hist_dict[f"{disc}_{i}"] = Hist.Hist( syst_axis, diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index faffa136..ebd23945 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -257,7 +257,12 @@ def process_shift(self, events, shift_name): with_name="PtEtaPhiMLorentzVector", ) Wmass = MET + iso_muon - req_Wmass = Wmass.mass > 55 + # modified to transverse mass + req_mtw = ( + np.sqrt(2 * iso_muon.pt * MET.pt * (1 - np.cos(iso_muon.delta_phi(MET)))) + > 55 + ) + # Wmass.mass > 55 event_level = ( req_trig @@ -267,9 +272,9 @@ def process_shift(self, events, shift_name): & req_softmu & req_dilepmass & req_mujet - & req_Wmass + & req_mtw & req_dilepveto - & req_QCDveto + # & req_QCDveto & req_pTratio ) event_level = ak.fill_none(event_level, False) @@ -466,7 +471,7 @@ def process_shift(self, events, shift_name): syst="noSF", flav=smflav, osss=osss, - discr=np.tanh(smuon_jet[histname]), + discr=1.0 / np.tanh(smuon_jet[histname]), weight=weights.partial_weight(exclude=exclude_btv), ) From 2e2d36c00a1b9fa88acee75d9aff1bef720580e8 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 05:30:56 -0500 Subject: [PATCH 13/22] Unify Wc mu, elec and ttbarsemi mu, elec workflows; new common arraywriter function --- runner.py | 9 +- src/BTVNanoCommissioning/helpers/func.py | 79 +++++++ .../utils/histogrammer.py | 46 ---- src/BTVNanoCommissioning/utils/selection.py | 4 +- .../workflows/__init__.py | 14 +- .../workflows/ctag_Wc_valid_sf.py | 222 +++++++++++------- 6 files changed, 226 insertions(+), 148 deletions(-) diff --git a/runner.py b/runner.py index 6141d600..2f852fdd 100644 --- a/runner.py +++ b/runner.py @@ -232,8 +232,8 @@ def get_main_parser(): if args.output == parser.get_default("output"): index = args.samplejson.rfind("/") + 1 sample_json = args.samplejson[index:] - histoutdir = f"hists_{args.workflow}_{sample_json.rstrip('.json')}" - outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" + histoutdir = f"hists_{args.workflow}" + outdir = f"arrays_{args.workflow}" coffeaoutput = ( f'{histoutdir}/hists_{args.workflow}_{(sample_json).rstrip(".json")}.coffea' ) @@ -347,10 +347,7 @@ def get_main_parser(): raise Exception(f"{coffeaoutput} exists") if args.isArray: - if path.exists(outdir) and args.overwrite == False and args.only is None: - raise Exception("Directory exists") - else: - os.system(f"mkdir -p {outdir}") + os.system(f"mkdir -p {outdir}") if args.executor not in ["futures", "iterative", "dask/lpc", "dask/casa"]: """ diff --git a/src/BTVNanoCommissioning/helpers/func.py b/src/BTVNanoCommissioning/helpers/func.py index 509abdb6..217c874b 100644 --- a/src/BTVNanoCommissioning/helpers/func.py +++ b/src/BTVNanoCommissioning/helpers/func.py @@ -2,6 +2,7 @@ import numpy as np from coffea import processor import psutil, os +import uproot def memory_usage_psutil(): @@ -115,3 +116,81 @@ def uproot_writeable(events, include=["events", "run", "luminosityBlock"]): ) ev[bname] = ak.zip(b_nest) return ev + + +def array_writer( + processor_class, # the NanoProcessor class ("self") + pruned_event, # the event with specific calculated variables stored + nano_event, # entire NanoAOD/PFNano event with many variables + systname, # name of systematic shift + dataset, # dataset name + isRealData, # boolean + remove=["SoftMuon", "MuonJet", "dilep", "OtherJets"], # remove from variable list + kinOnly=[ + "Muon", + "SoftMuon", + "dilep", + "charge", + "MET", + ], # variables for which only kinematic properties are kept + kins=[ + "pt", + "eta", + "phi", + "mass", + "pfRelIso04_all", + "dxy", + "dz", + ], # kinematic propoerties for the above variables + othersData=[ + "Jet_*", + "PFCands_*", + "MuonJet_*", + "SV_*", + "PV_npvs", + "PV_npvsGood", + "Rho_*", + "SoftMuon_dxySig", + "Muon_sip3d", + ], # other fields, for Data and MC + othersMC=["Pileup_nTrueInt", "Pileup_nPU"], # other fields, for MC only +): + # Get only the variables that were added newly + out_branch = np.setdiff1d( + np.array(pruned_event.fields), np.array(nano_event.fields) + ) + + # Handle kinOnly vars + for v in remove: + out_branch = np.delete(out_branch, np.where((out_branch == v))) + + for kin in kins: + for obj in kinOnly: + if "MET" in obj and ("pt" != kin or "phi" != kin): + continue + if (obj != "Muon" and obj != "SoftMuon") and ( + "pfRelIso04_all" == kin or "d" in kin + ): + continue + out_branch = np.append(out_branch, [f"{obj}_{kin}"]) + + # Handle data vars + out_branch = np.append(out_branch, othersData) + + if not isRealData: + out_branch = np.append(out_branch, othersMC) + + # Write to root files + print("Branches to write:", out_branch) + outdir = f"{processor_class.name}/{systname}/{dataset}/" + os.system(f"mkdir -p {outdir}") + + with uproot.recreate( + f"{outdir}/{nano_event.metadata['filename'].split('/')[-1].replace('.root','')}_{int(nano_event.metadata['entrystop']/processor_class.chunksize)}.root" + ) as fout: + fout["Events"] = uproot_writeable(pruned_event, include=out_branch) + fout["TotalEventCount"] = ak.Array( + [nano_event.metadata["entrystop"] - nano_event.metadata["entrystart"]] + ) + if not isRealData: + fout["TotalEventWeight"] = ak.Array([ak.sum(nano_event.genWeight)]) diff --git a/src/BTVNanoCommissioning/utils/histogrammer.py b/src/BTVNanoCommissioning/utils/histogrammer.py index ac3eb309..5ecbaa65 100644 --- a/src/BTVNanoCommissioning/utils/histogrammer.py +++ b/src/BTVNanoCommissioning/utils/histogrammer.py @@ -124,52 +124,6 @@ def histogrammer(events, workflow): _hist_dict[f"{i}_ptratio"] = Hist.Hist( syst_axis, flav_axis, ptratio_axis, Hist.storage.Weight() ) - elif "ctag_ttsemilep_sf" in workflow: - obj_list = ["hl", "soft_l", "MET", "z", "w", "mujet"] - _hist_dict["z_mass"] = Hist.Hist( - syst_axis, - Hist.axis.Regular(50, 50, 100, name="mass", label="$m_{\\ell\\ell}$ [GeV]"), - Hist.storage.Weight(), - ) - _hist_dict["w_mass"] = Hist.Hist( - syst_axis, - Hist.axis.Regular(50, 50, 100, name="mass", label="$m_{\\ell\\nu}$ [GeV]"), - Hist.storage.Weight(), - ) - # delta R between soft muon and mu-jet - _hist_dict["dr_lmujetsmu"] = Hist.Hist( - syst_axis, flav_axis, dr_s_axis, Hist.storage.Weight() - ) - # delta R between hard muon and mu-jet - _hist_dict["dr_lmujethmu"] = Hist.Hist( - syst_axis, flav_axis, dr_axis, Hist.storage.Weight() - ) - # delta R between hard muon and soft-muon - _hist_dict["dr_lmusmu"] = Hist.Hist(syst_axis, dr_axis, Hist.storage.Weight()) - for i in ["hl", "soft_l"]: - if i == "soft_l": - _hist_dict[f"soft_l_pfRelIso04_all"] = Hist.Hist( - syst_axis, flav_axis, softliso_axis, Hist.storage.Weight() - ) - _hist_dict[f"{i}_dxy"] = Hist.Hist( - syst_axis, flav_axis, dxy_axis, Hist.storage.Weight() - ) - _hist_dict[f"{i}_dz"] = Hist.Hist( - syst_axis, flav_axis, dz_axis, Hist.storage.Weight() - ) - else: - _hist_dict[f"{i}_pfRelIso04_all"] = Hist.Hist( - syst_axis, iso_axis, Hist.storage.Weight() - ) - _hist_dict[f"{i}_dxy"] = Hist.Hist( - syst_axis, dxy_axis, Hist.storage.Weight() - ) - _hist_dict[f"{i}_dz"] = Hist.Hist( - syst_axis, dz_axis, Hist.storage.Weight() - ) - _hist_dict[f"{i}_ptratio"] = Hist.Hist( - syst_axis, flav_axis, ptratio_axis, Hist.storage.Weight() - ) elif "Wc_sf" in workflow: obj_list = ["hl", "soft_l", "MET", "z", "w", "mujet"] _hist_dict["SV_charge"] = Hist.Hist( diff --git a/src/BTVNanoCommissioning/utils/selection.py b/src/BTVNanoCommissioning/utils/selection.py index 9d234b02..fb4a780a 100644 --- a/src/BTVNanoCommissioning/utils/selection.py +++ b/src/BTVNanoCommissioning/utils/selection.py @@ -46,12 +46,12 @@ def ele_mvatightid(events, campaign): return elemask -def softmu_mask(events, campaign): +def softmu_mask(events, campaign, dxySigCut=0): softmumask = ( (events.Muon.pt < 25) & (abs(events.Muon.eta) < 2.4) & (events.Muon.tightId > 0.5) - & (events.Muon.pfRelIso04_all > 0.2) + & (abs(events.Muon.dxy / events.Muon.dxyErr) > dxySigCut) & (events.Muon.jetIdx != -1) ) diff --git a/src/BTVNanoCommissioning/workflows/__init__.py b/src/BTVNanoCommissioning/workflows/__init__.py index 95a7a2e5..f71847f7 100644 --- a/src/BTVNanoCommissioning/workflows/__init__.py +++ b/src/BTVNanoCommissioning/workflows/__init__.py @@ -66,13 +66,19 @@ workflows["emctag_ttdilep_sf"] = CTAGEMDilepttValidSFProcessor workflows["ctag_ttdilep_sf"] = CTAGDilepttValidSFProcessor workflows["ectag_ttdilep_sf"] = CTAGEDilepttValidSFProcessor -workflows["ctag_ttsemilep_sf"] = CTAGSemilepttValidSFProcessor -workflows["ectag_ttsemilep_sf"] = CTAGETTSemilepValidSFProcessor +# workflows["ctag_ttsemilep_sf"] = CTAGSemilepttValidSFProcessor +workflows["ctag_ttsemilep_sf"] = partial( + CTAGWcValidSFProcessor, selectionModifier="semittM" +) +# workflows["ectag_ttsemilep_sf"] = CTAGETTSemilepValidSFProcessor +workflows["ectag_ttsemilep_sf"] = partial( + CTAGWcValidSFProcessor, selectionModifier="semittE" +) # W+c -workflows["ctag_Wc_sf"] = CTAGWcValidSFProcessor -workflows["ectag_Wc_sf"] = CTAGeWcValidSFProcessor +workflows["ctag_Wc_sf"] = partial(CTAGWcValidSFProcessor, selectionModifier="WcM") +workflows["ectag_Wc_sf"] = partial(CTAGWcValidSFProcessor, selectionModifier="WcE") # DY workflows["ctag_DY_sf"] = CTAGDYValidSFProcessor diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index faffa136..2f4734d7 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -1,6 +1,5 @@ import os import collections, awkward as ak, numpy as np -import os import uproot from coffea import processor from coffea.analysis_tools import Weights @@ -9,6 +8,7 @@ load_lumi, load_SF, muSFs, + eleSFs, puwei, btagSFs, JME_shifts, @@ -17,7 +17,7 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, + array_writer, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch @@ -40,6 +40,7 @@ def __init__( isArray=False, noHist=False, chunksize=75000, + selectionModifier="WcM", ): self._year = year self._campaign = campaign @@ -51,6 +52,7 @@ def __init__( self.chunksize = chunksize ## Load corrections self.SF_map = load_SF(self._campaign) + self.selMod = selectionModifier @property def accumulator(self): @@ -97,8 +99,34 @@ def process(self, events): def process_shift(self, events, shift_name): dataset = events.metadata["dataset"] isRealData = not hasattr(events, "genWeight") + + isMu = False + isEle = False + if "WcM" in self.selMod or "semittM" in self.selMod: + triggers = ["IsoMu27"] + isMu = True + dxySigcut = 1 + muNeEmSum = 0.7 + muonpTratioCut = 0.4 + isolepdz, isolepdxy, isolepsip3d = 0.01, 0.002, 2 + elif "WcE" in self.selMod or "semittE" in self.selMod: + triggers = ["Ele32_WPTight_Gsf_L1DoubleEG"] + isEle = True + dxySigcut = 0 + muNeEmSum = 1 + muonpTratioCut = 0.6 + isolepdz, isolepdxy, isolepsip3d = 0.02, 0.01, 2.5 + else: + raise ValueError(self.selMod, "is not a valid selection modifier.") + + histoname = { + "WcM": "ctag_Wc_sf", + "WcE": "ectag_Wc_sf", + "semittM": "ctag_Wc_sf", # same histogram representation as W+c + "semittE": "ectag_Wc_sf", # same histogram representation as W+c + } _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ctag_Wc_sf") + {"": None} if self.noHist else histogrammer(events, histoname[self.selMod]) ) output = { @@ -122,7 +150,6 @@ def process_shift(self, events, shift_name): output = dump_lumi(events[req_lumi], output) ## HLT - triggers = ["IsoMu27"] checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) if ak.all(checkHLT == False): raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) @@ -135,46 +162,63 @@ def process_shift(self, events, shift_name): for t in trig_arrs: req_trig = req_trig | t - ## Muon cuts - # muon twiki: https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMuonIdRun2 - iso_muon = events.Muon[(events.Muon.pt > 30) & mu_idiso(events, self._campaign)] - req_muon = ak.count(iso_muon.pt, axis=1) == 1 + ## Lepton cuts + if isMu: + # muon twiki: https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMuonIdRun2 + iso_lep = events.Muon[ + (events.Muon.pt > 30) & mu_idiso(events, self._campaign) + ] + elif isEle: + iso_lep = events.Electron[ + (events.Electron.pt > 34) & ele_mvatightid(events, self._campaign) + ] + req_lep = ak.count(iso_lep.pt, axis=1) == 1 jet_sel = ak.fill_none( jet_id(events, self._campaign) - & (ak.all(events.Jet.metric_table(iso_muon) > 0.5, axis=2)), + & (ak.all(events.Jet.metric_table(iso_lep) > 0.5, axis=2)), False, axis=-1, ) - iso_muon = ak.pad_none(iso_muon, 1, axis=1) - iso_muon = iso_muon[:, 0] - iso_muindx = ak.mask( - ak.local_index(events.Muon.pt), - ((events.Muon.pt > 30) & mu_idiso(events, self._campaign)) == 1, - ) - iso_muindx = ak.pad_none(iso_muindx, 1) - iso_muindx = iso_muindx[:, 0] + iso_lep = ak.pad_none(iso_lep, 1, axis=1) + iso_lep = iso_lep[:, 0] + if isMu: + iso_lepindx = ak.mask( + ak.local_index(events.Muon.pt), + ((events.Muon.pt > 30) & mu_idiso(events, self._campaign)) == 1, + ) + elif isEle: + iso_lepindx = ak.mask( + ak.local_index(events.Electron.pt), + ((events.Electron.pt > 34) & ele_mvatightid(events, self._campaign)) + == 1, + ) + iso_lepindx = ak.pad_none(iso_lepindx, 1) + iso_lepindx = iso_lepindx[:, 0] ## Jet cuts if "DeepJet_nsv" in events.Jet.fields: jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) event_jet = events.Jet[jet_sel] - req_jets = (ak.num(event_jet.pt) >= 1) & (ak.num(event_jet.pt) <= 3) + if "Wc" in self.selMod: + req_jets = (ak.num(event_jet.pt) >= 1) & (ak.num(event_jet.pt) <= 3) + else: + req_jets = ak.num(event_jet.pt) >= 4 ## Soft Muon cuts - soft_muon = events.Muon[softmu_mask(events, self._campaign)] + soft_muon = events.Muon[softmu_mask(events, self._campaign, dxySigcut)] req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 mujetsel = ak.fill_none( ( (ak.all(event_jet.metric_table(soft_muon) <= 0.4, axis=2)) & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)) - & ((event_jet.muEF + event_jet.neEmEF) < 0.7) + & ((event_jet.muEF + event_jet.neEmEF) < muNeEmSum) ), False, axis=-1, ) mujetsel2 = ak.fill_none( ( - ((events.Jet.muEF + events.Jet.neEmEF) < 0.7) + ((events.Jet.muEF + events.Jet.neEmEF) < muNeEmSum) & ( ak.all( events.Jet.metric_table(soft_muon) <= 0.4, @@ -188,8 +232,10 @@ def process_shift(self, events, shift_name): axis=-1, ) soft_muon = ak.pad_none(soft_muon, 1, axis=1) + soft_muon["dxySig"] = soft_muon.dxy / soft_muon.dxyErr ## Muon-jet cuts + event_jet["isMuonJet"] = mujetsel mu_jet = event_jet[mujetsel] otherjets = event_jet[~mujetsel] req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 @@ -204,24 +250,24 @@ def process_shift(self, events, shift_name): jetindx = jetindx[:, 0] # Other cuts - req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < 0.4 - idx = np.where(iso_muon.jetIdx == -1, 0, iso_muon.jetIdx) - req_QCDveto = ( - (iso_muon.pfRelIso04_all < 0.05) - & (abs(iso_muon.dz) < 0.01) - & (abs(iso_muon.dxy) < 0.002) - & (iso_muon.sip3d < 2) - & ( - iso_muon.pt - / ak.firsts( - events.Jet[ - (events.Jet.muonIdx1 == iso_muindx) - | ((events.Jet.muonIdx2 == iso_muindx)) - ].pt - ) - > 0.75 - ) - ) + req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < muonpTratioCut + idx = np.where(iso_lep.jetIdx == -1, 0, iso_lep.jetIdx) + # req_QCDveto = ( + # (iso_lep.pfRelIso04_all < 0.05) + # & (abs(iso_lep.dz) < isolepdz) + # & (abs(iso_lep.dxy) < isolepdxy) + # & (iso_lep.sip3d < isolepsip3d) + # & ( + # iso_lep.pt + # / ak.firsts( + # events.Jet[ + # (events.Jet.muonIdx1 == iso_lepindx) + # | ((events.Jet.muonIdx2 == iso_lepindx)) + # ].pt + # ) + # > 0.75 + # ) + # ) dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] dilep_ele = events.Electron[ @@ -231,11 +277,23 @@ def process_shift(self, events, shift_name): ak.count(dilep_mu.pt, axis=1) + ak.count(dilep_ele.pt, axis=1) != 2 ) - dilep_mass = iso_muon + soft_muon[:, 0] - req_dilepmass = (dilep_mass.mass > 12.0) & ( - (dilep_mass.mass < 80) | (dilep_mass.mass > 100) - ) + if isMu: + dilep_mass = iso_lep + soft_muon[:, 0] + req_dilepmass = (dilep_mass.mass > 12.0) & ( + (dilep_mass.mass < 80) | (dilep_mass.mass > 100) + ) + elif isEle: + req_dilepmass = iso_lep.pt > 0 + iso_lep_trans = ak.zip( + { + "pt": iso_lep.pt, + "eta": ak.zeros_like(iso_lep.pt), + "phi": iso_lep.phi, + "mass": iso_lep.mass, + }, + with_name="PtEtaPhiMLorentzVector", + ) if "Run3" not in self._campaign: MET = ak.zip( { @@ -256,20 +314,32 @@ def process_shift(self, events, shift_name): }, with_name="PtEtaPhiMLorentzVector", ) - Wmass = MET + iso_muon - req_Wmass = Wmass.mass > 55 + + wmasscut = 55 + if "semitt" in self.selMod: + wmasscut = 0 + Wcand = MET + iso_lep_trans # transverse mass + Wmass = Wcand.mass + Wpt = Wcand.pt + req_Wmass = Wmass > wmasscut + + # ==This is the manual calculation for transverse mass== + # dphi = iso_lep.phi-events.PuppiMET.phi + # dphi = np.where(dphinp.pi,dphi-2*np.pi,dphi) + # trans = np.sqrt(2*iso_lep.pt*events.PuppiMET.pt*(1-np.cos(dphi))) event_level = ( req_trig & req_lumi - & req_muon + & req_lep & req_jets & req_softmu & req_dilepmass & req_mujet & req_Wmass & req_dilepveto - & req_QCDveto + # & req_QCDveto & req_pTratio ) event_level = ak.fill_none(event_level, False) @@ -279,7 +349,9 @@ def process_shift(self, events, shift_name): # Selected objects # #################### - shmu = iso_muon[event_level] + shmu = iso_lep[event_level] + wm = Wmass[event_level] + wp = Wpt[event_level] sjets = event_jet[event_level] ssmu = soft_muon[event_level] smet = MET[event_level] @@ -291,7 +363,9 @@ def process_shift(self, events, shift_name): ssmu = ssmu[:, 0] sz = shmu + ssmu sw = shmu + smet - osss = shmu.charge * ssmu.charge * -1 + osss = 1 + if "Wc" in self.selMod: + osss = shmu.charge * ssmu.charge * -1 njet = ak.count(sjets.pt, axis=1) # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand if "PFCands" in events.fields: @@ -324,8 +398,10 @@ def process_shift(self, events, shift_name): weights, syst_wei, ) - if "MUO" in self.SF_map.keys(): + if isMu and "MUO" in self.SF_map.keys(): muSFs(shmu, self.SF_map, weights, syst_wei, False) + if isEle and "EGM" in self.SF_map.keys(): + eleSFs(shmu, self.SF_map, weights, syst_wei, False) if "BTV" in self.SF_map.keys(): btagSFs(smuon_jet, self.SF_map, weights, "DeepJetC", syst_wei) btagSFs(smuon_jet, self.SF_map, weights, "DeepJetB", syst_wei) @@ -460,6 +536,8 @@ def process_shift(self, events, shift_name): weight=weight, ) elif "btag" in histname and "Trans" in histname: + if histname not in smuon_jet: + continue for i in range(2): histname = histname.replace("Trans", "").replace(f"_{i}", "") h.fill( @@ -526,6 +604,9 @@ def process_shift(self, events, shift_name): pruned_ev["SoftMuon"] = ssmu pruned_ev["OtherJets"] = sotherjets pruned_ev["osss"] = osss + pruned_ev["njet"] = njet + pruned_ev["W_transmass"] = wm + pruned_ev["W_pt"] = wp if "PFCands" in events.fields: pruned_ev.PFCands = spfcands # Add custom variables @@ -542,46 +623,7 @@ def process_shift(self, events, shift_name): pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - | (out_branch == "MuonJet") - | (out_branch == "dilep") - | (out_branch == "OtherJets") - ), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in [ - "Muon", - "Jet", - "SoftMuon", - "MuonJet", - "dilep", - "charge", - "MET", - ]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/{systematics[0]}_{events.metadata['filename'].split('/')[-1].replace('.root','')}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) return {dataset: output} From e7d7e1ba7cfac3fb2ec16123867818f258aa5b85 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 05:39:01 -0500 Subject: [PATCH 14/22] Add back soft mu iso cut --- src/BTVNanoCommissioning/utils/selection.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BTVNanoCommissioning/utils/selection.py b/src/BTVNanoCommissioning/utils/selection.py index fb4a780a..93c6de2c 100644 --- a/src/BTVNanoCommissioning/utils/selection.py +++ b/src/BTVNanoCommissioning/utils/selection.py @@ -51,6 +51,7 @@ def softmu_mask(events, campaign, dxySigCut=0): (events.Muon.pt < 25) & (abs(events.Muon.eta) < 2.4) & (events.Muon.tightId > 0.5) + & (events.Muon.pfRelIso04_all > 0.2) & (abs(events.Muon.dxy / events.Muon.dxyErr) > dxySigCut) & (events.Muon.jetIdx != -1) ) From 25cc2570a84334fbdc34732350b28cd72178e7c9 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 08:44:05 -0500 Subject: [PATCH 15/22] Sync variable names --- src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index 5655f5a2..8fd8f12c 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -321,7 +321,7 @@ def process_shift(self, events, shift_name): Wcand = MET + iso_lep_trans # transverse mass Wmass = Wcand.mass Wpt = Wcand.pt - req_Wmass = Wmass > wmasscut + req_mtw = Wmass > wmasscut # ==This is the manual calculation for transverse mass== # dphi = iso_lep.phi-events.PuppiMET.phi From 8a05e0aa6e49705f950881c72c014e9c17e3bfd8 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 12:25:42 -0500 Subject: [PATCH 16/22] Compatibility with missing DeepCSV info in inputs --- src/BTVNanoCommissioning/helpers/update_branch.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BTVNanoCommissioning/helpers/update_branch.py b/src/BTVNanoCommissioning/helpers/update_branch.py index c667b5e3..3f7281b7 100644 --- a/src/BTVNanoCommissioning/helpers/update_branch.py +++ b/src/BTVNanoCommissioning/helpers/update_branch.py @@ -83,7 +83,7 @@ def missing_branch(events): "btagDeepFlavCvB": jets.btagDeepFlavCvB, }, ) - if not hasattr(events.Jet, "btagDeepB"): + if hasattr(events.Jet, "btagDeepB_b") and not hasattr(events.Jet, "btagDeepB"): jets = events.Jet jets["btagDeepB"] = events.Jet.btagDeepB_b + events.Jet.btagDeepB_bb events.Jet = update( @@ -125,7 +125,7 @@ def missing_branch(events): ) if hasattr(events, "METFixEE2017"): events.MET = events.METFixEE2017 - if not hasattr(events.PuppiMET, "MetUnclustEnUpDeltaX"): + if hasattr(events.PuppiMET, "ptUnclusteredUp") and not hasattr(events.PuppiMET, "MetUnclustEnUpDeltaX"): met = events.PuppiMET met["MetUnclustEnUpDeltaX"] = met.ptUnclusteredUp * np.cos(met.phiUnclusteredUp) met["MetUnclustEnUpDeltaY"] = met.ptUnclusteredUp * np.sin(met.phiUnclusteredUp) From 9c7e5b174d50de4e3ad0727570f0834f9d08ad41 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 12:28:21 -0500 Subject: [PATCH 17/22] Lint --- src/BTVNanoCommissioning/helpers/update_branch.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/BTVNanoCommissioning/helpers/update_branch.py b/src/BTVNanoCommissioning/helpers/update_branch.py index 3f7281b7..3147e8d4 100644 --- a/src/BTVNanoCommissioning/helpers/update_branch.py +++ b/src/BTVNanoCommissioning/helpers/update_branch.py @@ -125,7 +125,9 @@ def missing_branch(events): ) if hasattr(events, "METFixEE2017"): events.MET = events.METFixEE2017 - if hasattr(events.PuppiMET, "ptUnclusteredUp") and not hasattr(events.PuppiMET, "MetUnclustEnUpDeltaX"): + if hasattr(events.PuppiMET, "ptUnclusteredUp") and not hasattr( + events.PuppiMET, "MetUnclustEnUpDeltaX" + ): met = events.PuppiMET met["MetUnclustEnUpDeltaX"] = met.ptUnclusteredUp * np.cos(met.phiUnclusteredUp) met["MetUnclustEnUpDeltaY"] = met.ptUnclusteredUp * np.sin(met.phiUnclusteredUp) From f794f3b35ff8336153a1185a9a83313627b0c075 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Tue, 14 Nov 2023 12:42:28 -0500 Subject: [PATCH 18/22] Lint --- src/BTVNanoCommissioning/helpers/xsection.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index b81a46aa..33c095f8 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -1191,7 +1191,6 @@ "energy": "13", }, { - "process_name": "DYJetsToLL_M-10to50_TuneCP5_13p6TeV-madgraphMLM-pythia8", "cross_section": "19317.5", "DAS": "/DYJetsToLL_M-10to50_TuneCP5_13p6TeV-madgraphMLM-pythia8/Run3Winter22NanoAOD-122X_mcRun3_2021_realistic_v9-v1/NANOAODSIM", From 965df296a305f6187b493c699d087bf1becb166b Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Thu, 16 Nov 2023 11:21:37 -0500 Subject: [PATCH 19/22] Merge DY mu and DY e workflows --- runner.py | 2 +- src/BTVNanoCommissioning/helpers/func.py | 6 +- .../workflows/__init__.py | 4 +- .../workflows/ctag_DY_valid_sf.py | 125 +++++++++--------- 4 files changed, 66 insertions(+), 71 deletions(-) diff --git a/runner.py b/runner.py index 2f852fdd..8eb236f4 100644 --- a/runner.py +++ b/runner.py @@ -264,7 +264,7 @@ def get_main_parser(): isamp = int(args.only) nsamp = len(sample_dict.keys()) if isamp >= nsamp: - print( + raise RuntimeError( f"There are {nsamp} datasets, please use --only n with n<{nsamp}." ) key = list(sample_dict.keys())[isamp] diff --git a/src/BTVNanoCommissioning/helpers/func.py b/src/BTVNanoCommissioning/helpers/func.py index 217c874b..5230c29a 100644 --- a/src/BTVNanoCommissioning/helpers/func.py +++ b/src/BTVNanoCommissioning/helpers/func.py @@ -104,9 +104,9 @@ def uproot_writeable(events, include=["events", "run", "luminosityBlock"]): and "Flavor" not in n ): continue - if not _is_rootcompat(events[bname][n]) and ak.num( - events[bname][n], axis=0 - ) != len(flatten(events[bname][n])): + evnums = ak.num(events[bname][n], axis=0) + if not isinstance(evnums,int): continue + if not _is_rootcompat(events[bname][n]) and evnums != len(flatten(events[bname][n])): continue # skip IdxG if "IdxG" in n: diff --git a/src/BTVNanoCommissioning/workflows/__init__.py b/src/BTVNanoCommissioning/workflows/__init__.py index f71847f7..3d1bfaba 100644 --- a/src/BTVNanoCommissioning/workflows/__init__.py +++ b/src/BTVNanoCommissioning/workflows/__init__.py @@ -81,8 +81,8 @@ workflows["ectag_Wc_sf"] = partial(CTAGWcValidSFProcessor, selectionModifier="WcE") # DY -workflows["ctag_DY_sf"] = CTAGDYValidSFProcessor -workflows["ectag_DY_sf"] = CTAGeDYValidSFProcessor +workflows["ctag_DY_sf"] = partial(CTAGDYValidSFProcessor, selectionModifier="DYM") +workflows["ectag_DY_sf"] = partial(CTAGDYValidSFProcessor, selectionModifier="DYE") # Tutorial workflows["example"] = ExampleProcessor diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index 8d996393..97a8acc5 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -8,6 +8,7 @@ load_lumi, load_SF, muSFs, + eleSFs, puwei, btagSFs, JME_shifts, @@ -17,7 +18,7 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, + array_writer, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch @@ -36,6 +37,7 @@ def __init__( isArray=False, noHist=False, chunksize=75000, + selectionModifier="DYM" ): self._year = year self._campaign = campaign @@ -45,6 +47,7 @@ def __init__( self.noHist = noHist self.lumiMask = load_lumi(self._campaign) self.chunksize = chunksize + self.selMod = selectionModifier ## Load corrections self.SF_map = load_SF(self._campaign) @@ -93,8 +96,22 @@ def process(self, events): def process_shift(self, events, shift_name): dataset = events.metadata["dataset"] isRealData = not hasattr(events, "genWeight") + + isMu = False + isEle = False + if "DYM" in self.selMod: + triggers = ["Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8"] + isMu = True + elif "DYE" in self.selMod: + triggers = ["Ele23_Ele12_CaloIdL_TrackIdL_IsoVL"] + isEle = True + else: + raise ValueError(self.selMod, "is not a valid selection modifier.") + + histname = {"DYM":"ctag_DY_sf", + "DYE":"ectag_DY_sf"} _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ctag_DY_sf") + {"": None} if self.noHist else histogrammer(events, histname[self.selMod]) ) output = { @@ -119,7 +136,6 @@ def process_shift(self, events, shift_name): output = dump_lumi(events[req_lumi], output) ## HLT - triggers = ["Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8"] checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) if ak.all(checkHLT == False): raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) @@ -138,41 +154,38 @@ def process_shift(self, events, shift_name): dilep_ele = events.Electron[ (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) ] + if isMu: + thisdilep = dilep_mu + otherdilep = dilep_ele + else: + thisdilep = dilep_ele + otherdilep = dilep_mu ## dilepton - pos_dilep = dilep_mu[dilep_mu.charge > 0] - neg_dilep = dilep_mu[dilep_mu.charge < 0] + pos_dilep = thisdilep[thisdilep.charge > 0] + neg_dilep = thisdilep[thisdilep.charge < 0] req_dilep = ak.fill_none( ( (ak.num(pos_dilep.pt) >= 1) & (ak.num(neg_dilep.pt) >= 1) - & (ak.num(dilep_mu.charge) >= 2) - & (ak.num(dilep_ele.charge) == 0) + & (ak.num(thisdilep.charge) >= 2) + & (ak.num(otherdilep.charge) == 0) ), False, axis=-1, ) - pos_dilep = ak.pad_none(pos_dilep, 1, axis=1) - neg_dilep = ak.pad_none(neg_dilep, 1, axis=1) - - dilep_mass = pos_dilep[:, 0] + neg_dilep[:, 0] - req_dilepmass = ( - (dilep_mass.mass > 81) & (dilep_mass.mass < 101) & (dilep_mass.pt > 15) - ) - ## Jet cuts - event_jet = events.Jet[ - ak.fill_none( + jet_sel = ak.fill_none( jet_id(events, self._campaign) & ( ak.all( - events.Jet.metric_table(pos_dilep[:, 0]) > 0.4, + events.Jet.metric_table(pos_dilep) > 0.4, axis=2, mask_identity=True, ) ) & ( ak.all( - events.Jet.metric_table(neg_dilep[:, 0]) > 0.4, + events.Jet.metric_table(neg_dilep) > 0.4, axis=2, mask_identity=True, ) @@ -180,31 +193,24 @@ def process_shift(self, events, shift_name): False, axis=-1, ) - ] + + pos_dilep = ak.pad_none(pos_dilep, 1, axis=1) + neg_dilep = ak.pad_none(neg_dilep, 1, axis=1) + + dilep_mass = pos_dilep[:, 0] + neg_dilep[:, 0] + req_dilepmass = ( + (dilep_mass.mass > 81) & (dilep_mass.mass < 101) & (dilep_mass.pt > 15) + ) + + ## Jet cuts + event_jet = events.Jet[jet_sel] req_jets = ak.num(event_jet.pt) >= 1 - event_jet = ak.pad_none(event_jet, 1, axis=1) + # event_jet = ak.pad_none(event_jet, 1, axis=1) ## store jet index for PFCands, create mask on the jet index jetindx = ak.mask( ak.local_index(events.Jet.pt), - ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(pos_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ) - & ( - ak.all( - events.Jet.metric_table(neg_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ) - ) - == 1, + jet_sel == 1, ) jetindx = ak.pad_none(jetindx, 1) jetindx = jetindx[:, 0] @@ -260,8 +266,10 @@ def process_shift(self, events, shift_name): weights, syst_wei, ) - if "MUO" in self.SF_map.keys(): + if isMu and "MUO" in self.SF_map.keys(): muSFs(smu, self.SF_map, weights, syst_wei, False) + if isEle and "EGM" in self.SF_map.keys(): + eleSFs(smu, self.SF_map, weights, syst_wei, False) if "BTV" in self.SF_map.keys(): btagSFs(sel_jet, self.SF_map, weights, "DeepJetC", syst_wei) btagSFs(sel_jet, self.SF_map, weights, "DeepJetB", syst_wei) @@ -387,13 +395,21 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sel_jet - pruned_ev.Muon = smu + pruned_ev["LeadJet"] = sel_jet + if isMu: + pruned_ev["MuonPlus"] = sposmu + pruned_ev["MuonMinus"] = snegmu + kinOnly=["Muon","MuonPlus","MuonMinus"] + else: + pruned_ev["ElectronPlus"] = sposmu + pruned_ev["ElectronMinus"] = snegmu + kinOnly=["Electron","ElectronPlus","ElectronMinus"] pruned_ev["dilep"] = sposmu + snegmu pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta pruned_ev["dilep", "phi"] = pruned_ev.dilep.phi pruned_ev["dilep", "mass"] = pruned_ev.dilep.mass + pruned_ev["njet"] = njet if "PFCands" in events.fields: pruned_ev.PFCands = spfcands # Add custom variables @@ -406,30 +422,9 @@ def process_shift(self, events, shift_name): pruned_ev["dr_mu1jet"] = sposmu.delta_r(sel_jet) pruned_ev["dr_mu2jet"] = snegmu.delta_r(sel_jet) + + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData, kinOnly=kinOnly,remove=kinOnly) - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where((out_branch == "dilep")), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in ["Muon", "Jet", "dilep"]: - if (obj != "Muon") and ("pfRelIso04_all" == kin or "d" in kin): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) return {dataset: output} def postprocess(self, accumulator): From 8978fba593eeb44b9d1a07e0de33310db761db94 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Thu, 16 Nov 2023 11:26:26 -0500 Subject: [PATCH 20/22] Lint --- src/BTVNanoCommissioning/helpers/func.py | 7 ++- .../workflows/ctag_DY_valid_sf.py | 54 +++++++++++-------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/BTVNanoCommissioning/helpers/func.py b/src/BTVNanoCommissioning/helpers/func.py index 5230c29a..9af3b13f 100644 --- a/src/BTVNanoCommissioning/helpers/func.py +++ b/src/BTVNanoCommissioning/helpers/func.py @@ -105,8 +105,11 @@ def uproot_writeable(events, include=["events", "run", "luminosityBlock"]): ): continue evnums = ak.num(events[bname][n], axis=0) - if not isinstance(evnums,int): continue - if not _is_rootcompat(events[bname][n]) and evnums != len(flatten(events[bname][n])): + if not isinstance(evnums, int): + continue + if not _is_rootcompat(events[bname][n]) and evnums != len( + flatten(events[bname][n]) + ): continue # skip IdxG if "IdxG" in n: diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index 97a8acc5..a1c30e84 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -37,7 +37,7 @@ def __init__( isArray=False, noHist=False, chunksize=75000, - selectionModifier="DYM" + selectionModifier="DYM", ): self._year = year self._campaign = campaign @@ -108,8 +108,7 @@ def process_shift(self, events, shift_name): else: raise ValueError(self.selMod, "is not a valid selection modifier.") - histname = {"DYM":"ctag_DY_sf", - "DYE":"ectag_DY_sf"} + histname = {"DYM": "ctag_DY_sf", "DYE": "ectag_DY_sf"} _hist_event_dict = ( {"": None} if self.noHist else histogrammer(events, histname[self.selMod]) ) @@ -175,24 +174,24 @@ def process_shift(self, events, shift_name): ) jet_sel = ak.fill_none( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(pos_dilep) > 0.4, - axis=2, - mask_identity=True, - ) + jet_id(events, self._campaign) + & ( + ak.all( + events.Jet.metric_table(pos_dilep) > 0.4, + axis=2, + mask_identity=True, ) - & ( - ak.all( - events.Jet.metric_table(neg_dilep) > 0.4, - axis=2, - mask_identity=True, - ) - ), - False, - axis=-1, ) + & ( + ak.all( + events.Jet.metric_table(neg_dilep) > 0.4, + axis=2, + mask_identity=True, + ) + ), + False, + axis=-1, + ) pos_dilep = ak.pad_none(pos_dilep, 1, axis=1) neg_dilep = ak.pad_none(neg_dilep, 1, axis=1) @@ -399,11 +398,11 @@ def process_shift(self, events, shift_name): if isMu: pruned_ev["MuonPlus"] = sposmu pruned_ev["MuonMinus"] = snegmu - kinOnly=["Muon","MuonPlus","MuonMinus"] + kinOnly = ["Muon", "MuonPlus", "MuonMinus"] else: pruned_ev["ElectronPlus"] = sposmu pruned_ev["ElectronMinus"] = snegmu - kinOnly=["Electron","ElectronPlus","ElectronMinus"] + kinOnly = ["Electron", "ElectronPlus", "ElectronMinus"] pruned_ev["dilep"] = sposmu + snegmu pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta @@ -422,8 +421,17 @@ def process_shift(self, events, shift_name): pruned_ev["dr_mu1jet"] = sposmu.delta_r(sel_jet) pruned_ev["dr_mu2jet"] = snegmu.delta_r(sel_jet) - - array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData, kinOnly=kinOnly,remove=kinOnly) + + array_writer( + self, + pruned_ev, + events, + systematics[0], + dataset, + isRealData, + kinOnly=kinOnly, + remove=kinOnly, + ) return {dataset: output} From 84ceba8fc117f4f418a3572786c5b1858bca8339 Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Wed, 29 Nov 2023 02:42:09 -0500 Subject: [PATCH 21/22] Update to latest 2022pre-EE recommendations; sync W+c selections --- ...isions2022_eraCD_355862_357900_Golden.json | 178 ++++++++++++ ...sions2022_eraEFG_359022_362760_Golden.json | 258 ++++++++++++++++++ src/BTVNanoCommissioning/helpers/func.py | 10 +- .../utils/AK4_parameters.py | 10 +- .../workflows/ctag_DY_valid_sf.py | 5 +- .../workflows/ctag_Wc_valid_sf.py | 11 +- 6 files changed, 461 insertions(+), 11 deletions(-) create mode 100644 src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraCD_355862_357900_Golden.json create mode 100644 src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraEFG_359022_362760_Golden.json diff --git a/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraCD_355862_357900_Golden.json b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraCD_355862_357900_Golden.json new file mode 100644 index 00000000..f7e30033 --- /dev/null +++ b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraCD_355862_357900_Golden.json @@ -0,0 +1,178 @@ +{ + "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]] +} \ No newline at end of file diff --git a/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraEFG_359022_362760_Golden.json b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraEFG_359022_362760_Golden.json new file mode 100644 index 00000000..6a14fd64 --- /dev/null +++ b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2022_eraEFG_359022_362760_Golden.json @@ -0,0 +1,258 @@ +{ + "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/src/BTVNanoCommissioning/helpers/func.py b/src/BTVNanoCommissioning/helpers/func.py index 9af3b13f..5d02e754 100644 --- a/src/BTVNanoCommissioning/helpers/func.py +++ b/src/BTVNanoCommissioning/helpers/func.py @@ -128,9 +128,16 @@ def array_writer( systname, # name of systematic shift dataset, # dataset name isRealData, # boolean - remove=["SoftMuon", "MuonJet", "dilep", "OtherJets"], # remove from variable list + remove=[ + "SoftMuon", + "MuonJet", + "dilep", + "OtherJets", + "Jet", + ], # remove from variable list kinOnly=[ "Muon", + "Jet", "SoftMuon", "dilep", "charge", @@ -146,7 +153,6 @@ def array_writer( "dz", ], # kinematic propoerties for the above variables othersData=[ - "Jet_*", "PFCands_*", "MuonJet_*", "SV_*", diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 2029020f..279301e7 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -40,9 +40,9 @@ "JME": "jec_compiled.pkl.gz", }, "Summer22Run3": { - "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Winter22Run3-69p2mb.histo.root", # use same 80.0mb for Summer22 - "JME": "winter_jec_compiled.pkl.gz", # not this is from Winter22Run3 since this is not yet finished + "lumiMask": "Cert_Collisions2022_eraCD_355862_357900_Golden.json", + "PU": "puweight_Winter22Run3-69p2mb.histo.root", + "JME": "jec_compiled.pkl.gz", "LSF": { "mu_json": "ScaleFactors_Muon_trackerMuons_Z_2022_Prompt_ID_ISO_schemaV2.json", "mu_ID": "NUM_TightID_DEN_TrackerMuons", @@ -55,8 +55,8 @@ }, }, "Summer22EERun3": { - "lumiMask": "Cert_Collisions2022_355100_362760_Golden.json", - "PU": "puweight_Summer22EERun3-80p0mb.histo.root", # 69.2mb + "lumiMask": "Cert_Collisions2022_eraEFG_359022_362760_Golden.json", + "PU": "puweight_Summer22EERun3-80p0mb.histo.root", # This is outdated "JME": "jec_compiled.pkl.gz", "LSF": { "ele_json": "electron.json.gz", diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index a1c30e84..555e4bbb 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -394,15 +394,16 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] + pruned_ev["SelJet"] = sjets pruned_ev["LeadJet"] = sel_jet if isMu: pruned_ev["MuonPlus"] = sposmu pruned_ev["MuonMinus"] = snegmu - kinOnly = ["Muon", "MuonPlus", "MuonMinus"] + kinOnly = ["Muon", "MuonPlus", "MuonMinus", "Jet"] else: pruned_ev["ElectronPlus"] = sposmu pruned_ev["ElectronMinus"] = snegmu - kinOnly = ["Electron", "ElectronPlus", "ElectronMinus"] + kinOnly = ["Electron", "ElectronPlus", "ElectronMinus", "Jet"] pruned_ev["dilep"] = sposmu + snegmu pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py index 8fd8f12c..a311e976 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py @@ -212,6 +212,8 @@ def process_shift(self, events, shift_name): (ak.all(event_jet.metric_table(soft_muon) <= 0.4, axis=2)) & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)) & ((event_jet.muEF + event_jet.neEmEF) < muNeEmSum) + & (event_jet.pt > 20) + & ((event_jet.pt / event_jet.E) > 0.03) ), False, axis=-1, @@ -364,6 +366,7 @@ def process_shift(self, events, shift_name): sz = shmu + ssmu sw = shmu + smet osss = 1 + ossswrite = shmu.charge * ssmu.charge * -1 if "Wc" in self.selMod: osss = shmu.charge * ssmu.charge * -1 njet = ak.count(sjets.pt, axis=1) @@ -598,12 +601,15 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev["Jet"] = sjets + pruned_ev["SelJet"] = sjets pruned_ev["Muon"] = shmu pruned_ev["MuonJet"] = smuon_jet pruned_ev["SoftMuon"] = ssmu pruned_ev["OtherJets"] = sotherjets - pruned_ev["osss"] = osss + if "Wc" in self.selMod: + pruned_ev["osss"] = osss + else: + pruned_ev["osss"] = ossswrite pruned_ev["njet"] = njet pruned_ev["W_transmass"] = wm pruned_ev["W_pt"] = wp @@ -622,6 +628,7 @@ def process_shift(self, events, shift_name): pruned_ev["dr_lep1_softmu"] = shmu.delta_r(ssmu) pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt + pruned_ev["MuonJet_beta"] = smuon_jet.pt / smuon_jet.E array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) From 87ce5355c5693e0a855ea78983414810fe22b3aa Mon Sep 17 00:00:00 2001 From: mondalspandan Date: Mon, 20 May 2024 17:30:52 -0400 Subject: [PATCH 22/22] fix: Merge with new JEC/jet map features feat: new xsec, add assertion - helper:add new xs - scripts:assertion - scripts: hadd feat: merge array_writer - utils: add array_writer - wf: merge Wc/tt and rename, merge e/mu DY, ttdilep - wf: use array writer --- quickcheck.py | 28 + runner.py | 17 +- scripts/dohadd.py | 25 + scripts/dump_prescale.py | 2 - scripts/fetch.py | 31 +- scripts/plotdataMC.py | 10 +- setup.cfg | 2 +- ...t_Collisions2024_378981_380649_Golden.json | 111 ++ .../helpers/definitions.py | 1 - src/BTVNanoCommissioning/helpers/func.py | 84 -- .../helpers/update_branch.py | 40 - src/BTVNanoCommissioning/helpers/xsection.py | 1290 ++--------------- .../utils/AK4_parameters.py | 18 +- .../utils/array_writer.py | 95 ++ src/BTVNanoCommissioning/utils/compile_jec.py | 9 +- .../utils/histogrammer.py | 73 +- .../workflows/BTA_producer.py | 15 +- .../workflows/QCD_validation.py | 7 +- .../workflows/__init__.py | 50 +- .../workflows/ctag_DY_valid_sf.py | 26 +- ...g_Wc_valid_sf.py => ctag_Wctt_valid_sf.py} | 68 +- .../workflows/ctag_dileptt_valid_sf.py | 179 +-- .../workflows/ctag_eDY_valid_sf.py | 448 ------ .../workflows/ctag_eWc_valid_sf.py | 565 -------- .../workflows/ctag_edileptt_valid_sf.py | 523 ------- .../workflows/ctag_emdileptt_valid_sf.py | 4 +- .../workflows/ctag_ettsemilep_valid_sf.py | 563 ------- .../workflows/ctag_semileptt_valid_sf.py | 580 -------- src/BTVNanoCommissioning/workflows/example.py | 23 +- .../workflows/ttdilep_valid_sf.py | 46 +- .../workflows/ttsemilep_valid_sf.py | 44 +- .../workflows/validation.py | 25 +- 32 files changed, 722 insertions(+), 4280 deletions(-) create mode 100644 quickcheck.py create mode 100644 scripts/dohadd.py create mode 100644 src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2024_378981_380649_Golden.json create mode 100644 src/BTVNanoCommissioning/utils/array_writer.py rename src/BTVNanoCommissioning/workflows/{ctag_Wc_valid_sf.py => ctag_Wctt_valid_sf.py} (92%) delete mode 100644 src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py delete mode 100644 src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py delete mode 100644 src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py delete mode 100644 src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py delete mode 100644 src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py diff --git a/quickcheck.py b/quickcheck.py new file mode 100644 index 00000000..5cc4ba0d --- /dev/null +++ b/quickcheck.py @@ -0,0 +1,28 @@ +import matplotlib.pyplot as plt +import mplhep as hep +from coffea.util import load + +out = load("hists_ctag_Wc_sf_test/hists_ctag_Wc_sf_test.coffea") +for i in range(4): + hep.histplot( + out[list(out.keys())[0]]["weird_MET_phi"][i, :], + label=out[list(out.keys())[0]]["weird_MET_phi"].axes[0].value(i), + ) +plt.legend() +plt.savefig("all_MET_phi.pdf") +plt.cla() +for i in range(4): + hep.histplot( + out[list(out.keys())[0]]["weird_MET_pt"][i, :], + label=out[list(out.keys())[0]]["weird_MET_pt"].axes[0].value(i), + ) +plt.legend() +plt.savefig("all_MET_pt.pdf") +plt.cla() + +print(out[list(out.keys())[0]]["MET_phi"]) +hep.histplot(out[list(out.keys())[0]]["MET_phi"][0, sum, :]) +plt.savefig("selcted_phi.pdf") +plt.cla() +hep.histplot(out[list(out.keys())[0]]["MET_pt"][0, sum, :]) +plt.savefig("selcted_pt.pdf") diff --git a/runner.py b/runner.py index a05ec080..0e5bdc00 100644 --- a/runner.py +++ b/runner.py @@ -86,7 +86,7 @@ def get_main_parser(): "2017_UL", "2016preVFP_UL", "2016postVFP_UL", - "prompt_dataMC", + "CAMPAIGN_prompt_dataMC", ], help="Dataset campaign, change the corresponding correction files", ) @@ -94,7 +94,7 @@ def get_main_parser(): "--isSyst", default=False, type=str, - choices=[False, "all", "weight_only", "JERC_split"], + choices=[False, "all", "weight_only", "JERC_split", "JP_MC"], help="Run with systematics, all, weights_only(no JERC uncertainties included),JERC_split, None", ) parser.add_argument("--isArray", action="store_true", help="Output root files") @@ -235,8 +235,8 @@ def get_main_parser(): if args.output == parser.get_default("output"): index = args.samplejson.rfind("/") + 1 sample_json = args.samplejson[index:] - histoutdir = f"hists_{args.workflow}" - outdir = f"arrays_{args.workflow}" + histoutdir = f"hists_{args.workflow}_{sample_json.rstrip('.json')}" + outdir = f"arrays_{args.workflow}_{sample_json.rstrip('.json')}" coffeaoutput = ( f'{histoutdir}/hists_{args.workflow}_{(sample_json).rstrip(".json")}.coffea' ) @@ -262,12 +262,12 @@ def get_main_parser(): if args.only is not None: if args.only in sample_dict.keys(): # is dataset sample_dict = dict([(args.only, sample_dict[args.only])]) - coffeaoutput = coffeaoutput.replace(".coffea", f"_{key}.coffea") + coffeaoutput = coffeaoutput.replace(".coffea", f"_{args.only}.coffea") elif args.only.isdigit(): isamp = int(args.only) nsamp = len(sample_dict.keys()) if isamp >= nsamp: - raise RuntimeError( + print( f"There are {nsamp} datasets, please use --only n with n<{nsamp}." ) key = list(sample_dict.keys())[isamp] @@ -350,7 +350,10 @@ def get_main_parser(): raise Exception(f"{coffeaoutput} exists") if args.isArray: - os.system(f"mkdir -p {outdir}") + if path.exists(outdir) and args.overwrite == False and args.only is None: + raise Exception("Directory exists") + else: + os.system(f"mkdir -p {outdir}") if args.executor not in ["futures", "iterative", "dask/lpc", "dask/casa"]: """ diff --git a/scripts/dohadd.py b/scripts/dohadd.py new file mode 100644 index 00000000..da42168b --- /dev/null +++ b/scripts/dohadd.py @@ -0,0 +1,25 @@ +import os, sys +from glob import glob + +indir = sys.argv[1] + +systs = os.listdir(indir) + +outfile = open("hadd.sh", "w") + +for syst in systs: + roots = glob(f"{indir}/{syst}/*/*.root") + if len(roots) == 0: + print(f"Skipping {indir}/{syst}. Not the right directory structure.") + continue + samps = os.listdir(f"{indir}/{syst}") + for samp in samps: + if len(glob(f"{indir}/{syst}/{samp}/*.root")) == 0: + continue + outfile.write( + f"hadd -v 0 {indir}/{syst}/{samp}.root {indir}/{syst}/{samp}/*.root\n" + ) + +print( + "Now run `parallel :::: hadd.sh` from an environment with ROOT installed. E.g. \nconda activate rootenv\nparallel :::: hadd.sh\nconda activate btv_coffea" +) diff --git a/scripts/dump_prescale.py b/scripts/dump_prescale.py index 43b49c13..cb7c0768 100644 --- a/scripts/dump_prescale.py +++ b/scripts/dump_prescale.py @@ -25,9 +25,7 @@ def get_prescale(HLT, lumimask, verbose=False): if not os.path.exists( f"src/BTVNanoCommissioning/data/Prescales/HLTinfo_{HLT}_run{runs[0]}_{runs[-1]}.csv" ): - for run in runs: - os.system( f"brilcalc trg --prescale --hltpath 'HLT_{HLT}*' -r {run} --output-style csv &>tmp.csv" ) diff --git a/scripts/fetch.py b/scripts/fetch.py index cb6899ce..a77ecd16 100644 --- a/scripts/fetch.py +++ b/scripts/fetch.py @@ -62,6 +62,23 @@ action="store_true", default=False, ) +parser.add_argument( + "-r", + "--redirector", + help="xrootd ridirector in case sites are not found", + choices=["infn", "fnal", "cern"], + default="infn", +) +parser.add_argument( + "-j", "--ncpus", help="Number of CPUs to use for validation", default="4" +) +parser.add_argument( + "--skipvalidation", + action="store_true", + help="If true, the readability of files will not be validated.", + default=False, +) + parser.add_argument("--campaign", help="campaign info", default=None, type=str) @@ -210,9 +227,14 @@ def getFilesFromDas(args): if xrd is None: print( - f"No SITE available in the whitelist for file {dsname}, change to global redirector" + f"No SITE available in the whitelist for file {dsname}, change to global redirector: {args.redirector}" ) - xrd = "root://xrootd-cms.infn.it//" + redirector = { + "infn": "root://xrootd-cms.infn.it//", + "fnal": "root://cmsxrootd.fnal.gov/", + "cern": "root://cms-xrd-global.cern.ch/", + } + xrd = redirector[args.redirector] if args.limit is not None: flist = flist[: args.limit] if dsname not in fdict: @@ -335,7 +357,7 @@ def remove_bad_files(sample_dict, outname, remove_bad=True): _rmap = p_map( validate, sample_dict[sample], - num_cpus=4, + num_cpus=int(args.ncpus), desc=f"Validating {sample[:20]}...", ) @@ -419,7 +441,8 @@ def main(args): empty = False assert empty, "you have empty lists" output_file = "./%s" % (args.output) - # fdict = remove_bad_files(fdict, args.output, True) # remove bad files + if not args.skipvalidation: + fdict = remove_bad_files(fdict, args.output, True) # remove bad files with open(output_file, "w") as fp: json.dump(fdict, fp, indent=4) print("The file is saved at: ", output_file) diff --git a/scripts/plotdataMC.py b/scripts/plotdataMC.py index 59ef7d3c..a616f03c 100644 --- a/scripts/plotdataMC.py +++ b/scripts/plotdataMC.py @@ -1,5 +1,5 @@ import numpy as np -import argparse, os, arrow, glob, re +import argparse, os, arrow, glob, re, sys from coffea.util import load import matplotlib.pyplot as plt from matplotlib.offsetbox import AnchoredText @@ -195,8 +195,12 @@ else: var_set = args.variable.split(",") for index, discr in enumerate(var_set): - if not isinstance(collated["mc"][discr], hist.hist.Hist): - continue + try: + if not isinstance(collated["mc"][discr], hist.hist.Hist): + continue + except: + print(f"{discr} not found. Variable must be in", collated["mc"].keys()) + sys.exit(1) ## remove empty if ( discr not in collated["mc"].keys() diff --git a/setup.cfg b/setup.cfg index 4dffc29b..55a098db 100644 --- a/setup.cfg +++ b/setup.cfg @@ -54,7 +54,7 @@ where = src [options.extras_require] dev = pytest>=6 - black>=23.1.0 + black==24.2.0 # docs = # Sphinx~=3.0 # myst_parser>=0.13 diff --git a/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2024_378981_380649_Golden.json b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2024_378981_380649_Golden.json new file mode 100644 index 00000000..1c0462e3 --- /dev/null +++ b/src/BTVNanoCommissioning/data/lumiMasks/Cert_Collisions2024_378981_380649_Golden.json @@ -0,0 +1,111 @@ +{ + "378985": [[57, 824]], + "378993": [[121, 200]], + "379006": [[1, 23]], + "379011": [[1, 399]], + "379012": [[1, 73]], + "379028": [[66, 599]], + "379031": [[1, 289]], + "379058": [[38, 863]], + "379075": [[33, 407]], + "379154": [[17, 1065]], + "379238": [[11, 296]], + "379243": [[39, 337]], + "379252": [[34, 677]], + "379253": [[1, 104]], + "379338": [[1, 170]], + "379355": [[1, 20]], + "379416": [ + [1, 34], + [56, 88], + [94, 102], + [107, 225] + ], + "379420": [[38, 497], [499, 554]], + "379425": [[29, 231]], + "379433": [[27, 47]], + "379442": [[19, 287]], + "379454": [[33, 530]], + "379456": [[1, 1199]], + "379470": [[5, 804]], + "379530": [[30, 622]], + "379613": [[38, 157]], + "379617": [[1, 130], [132, 665]], + "379618": [[1, 360]], + "379660": [[60, 1566]], + "379661": [[1, 406]], + "379729": [[57, 668], [670, 1522]], + "379765": [[43, 682], [684, 1738]], + "379774": [[29, 213]], + "379866": [[26, 1375]], + "379984": [[36, 948]], + "380001": [[36, 616], [618, 727]], + "380005": [ + [33, 79], + [82, 311], + [317, 1101] + ], + "380007": [[1, 129]], + "380029": [[35, 89]], + "380030": [[1, 346]], + "380032": [[149, 167]], + "380033": [[1, 53]], + "380043": [[33, 932]], + "380049": [[33, 903]], + "380051": [[1, 735]], + "380052": [[1, 12]], + "380053": [[1, 128]], + "380056": [[1, 168]], + "380066": [[34, 585]], + "380074": [[29, 840], [842, 1335]], + "380115": [[27, 1818]], + "380126": [[40, 991]], + "380127": [[1, 535]], + "380128": [[1, 387]], + "380195": [[87, 93]], + "380197": [[1, 357]], + "380235": [[32, 287]], + "380236": [[1, 52], [59, 63]], + "380306": [[28, 273]], + "380308": [[1, 35]], + "380309": [[1, 351]], + "380310": [[1, 1131]], + "380346": [[34, 334], [342, 606]], + "380348": [[1, 341]], + "380349": [[1, 695]], + "380360": [ + [32, 147], + [149, 954], + [967, 1972] + ], + "380377": [[36, 455]], + "380384": [[48, 798]], + "380385": [[1, 1247]], + "380399": [[38, 531]], + "380403": [[9, 259]], + "380444": [[4, 328]], + "380446": [[1, 321], [327, 1033]], + "380447": [[1, 810]], + "380466": [[37, 400], [416, 555]], + "380470": [[1, 1634]], + "380481": [[25, 884]], + "380513": [[5, 1162]], + "380517": [[1, 39]], + "380531": [ + [28, 355], + [362, 913], + [919, 1062] + ], + "380534": [[1, 746]], + "380537": [[1, 58]], + "380538": [[1, 144]], + "380564": [[38, 779]], + "380567": [[1, 1081]], + "380623": [[30, 417]], + "380624": [[1, 809]], + "380625": [[1, 7]], + "380626": [[1, 9], [13, 17]], + "380627": [[1, 808]], + "380647": [[35, 409]], + "380649": [[1, 401]] +} diff --git a/src/BTVNanoCommissioning/helpers/definitions.py b/src/BTVNanoCommissioning/helpers/definitions.py index a0f6e93d..f55074fa 100644 --- a/src/BTVNanoCommissioning/helpers/definitions.py +++ b/src/BTVNanoCommissioning/helpers/definitions.py @@ -6216,7 +6216,6 @@ def SV_definitions(): def axes_name(var): - output = {} unit = "" diff --git a/src/BTVNanoCommissioning/helpers/func.py b/src/BTVNanoCommissioning/helpers/func.py index 5d02e754..9041afe6 100644 --- a/src/BTVNanoCommissioning/helpers/func.py +++ b/src/BTVNanoCommissioning/helpers/func.py @@ -119,87 +119,3 @@ def uproot_writeable(events, include=["events", "run", "luminosityBlock"]): ) ev[bname] = ak.zip(b_nest) return ev - - -def array_writer( - processor_class, # the NanoProcessor class ("self") - pruned_event, # the event with specific calculated variables stored - nano_event, # entire NanoAOD/PFNano event with many variables - systname, # name of systematic shift - dataset, # dataset name - isRealData, # boolean - remove=[ - "SoftMuon", - "MuonJet", - "dilep", - "OtherJets", - "Jet", - ], # remove from variable list - kinOnly=[ - "Muon", - "Jet", - "SoftMuon", - "dilep", - "charge", - "MET", - ], # variables for which only kinematic properties are kept - kins=[ - "pt", - "eta", - "phi", - "mass", - "pfRelIso04_all", - "dxy", - "dz", - ], # kinematic propoerties for the above variables - othersData=[ - "PFCands_*", - "MuonJet_*", - "SV_*", - "PV_npvs", - "PV_npvsGood", - "Rho_*", - "SoftMuon_dxySig", - "Muon_sip3d", - ], # other fields, for Data and MC - othersMC=["Pileup_nTrueInt", "Pileup_nPU"], # other fields, for MC only -): - # Get only the variables that were added newly - out_branch = np.setdiff1d( - np.array(pruned_event.fields), np.array(nano_event.fields) - ) - - # Handle kinOnly vars - for v in remove: - out_branch = np.delete(out_branch, np.where((out_branch == v))) - - for kin in kins: - for obj in kinOnly: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - - # Handle data vars - out_branch = np.append(out_branch, othersData) - - if not isRealData: - out_branch = np.append(out_branch, othersMC) - - # Write to root files - print("Branches to write:", out_branch) - outdir = f"{processor_class.name}/{systname}/{dataset}/" - os.system(f"mkdir -p {outdir}") - - with uproot.recreate( - f"{outdir}/{nano_event.metadata['filename'].split('/')[-1].replace('.root','')}_{int(nano_event.metadata['entrystop']/processor_class.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_event, include=out_branch) - fout["TotalEventCount"] = ak.Array( - [nano_event.metadata["entrystop"] - nano_event.metadata["entrystart"]] - ) - if not isRealData: - fout["TotalEventWeight"] = ak.Array([ak.sum(nano_event.genWeight)]) diff --git a/src/BTVNanoCommissioning/helpers/update_branch.py b/src/BTVNanoCommissioning/helpers/update_branch.py index 5dbeb9ef..9476a52f 100644 --- a/src/BTVNanoCommissioning/helpers/update_branch.py +++ b/src/BTVNanoCommissioning/helpers/update_branch.py @@ -77,46 +77,6 @@ def missing_branch(events): "btagDeepFlavCvB": jets.btagDeepFlavCvB, }, ) - if hasattr(events.Jet, "btagDeepB_b") and not hasattr(events.Jet, "btagDeepB"): - jets = events.Jet - jets["btagDeepB"] = events.Jet.btagDeepB_b + events.Jet.btagDeepB_bb - events.Jet = update( - events.Jet, - {"btagDeepB": jets.btagDeepB}, - ) - if hasattr(events.Jet, "btagDeepC") and not hasattr(events.Jet, "btagDeepCvL"): - jets["btagDeepCvL"] = np.maximum( - np.minimum( - np.where( - (events.Jet.btagDeepC > 0) & (events.Jet.pt > 15), - (events.Jet.btagDeepC / (1.0 - events.Jet.btagDeepB)), - -1, - ), - 0.999999, - ), - -1, - ) - jets["btagDeepCvB"] = np.maximum( - np.minimum( - np.where( - (events.Jet.btagDeepC > 0) & (events.Jet.pt > 15), - ( - events.Jet.btagDeepC - / (events.Jet.btagDeepC + events.Jet.btagDeepB) - ), - -1, - ), - 0.999999, - ), - -1, - ) - events.Jet = update( - events.Jet, - { - "btagDeepCvL": jets.btagDeepCvL, - "btagDeepCvB": jets.btagDeepCvB, - }, - ) if hasattr(events, "METFixEE2017"): events.MET = events.METFixEE2017 if hasattr(events.PuppiMET, "ptUnclusteredUp") and not hasattr( diff --git a/src/BTVNanoCommissioning/helpers/xsection.py b/src/BTVNanoCommissioning/helpers/xsection.py index 442c60de..b6aca97b 100644 --- a/src/BTVNanoCommissioning/helpers/xsection.py +++ b/src/BTVNanoCommissioning/helpers/xsection.py @@ -1,1195 +1,4 @@ xsection = [ - { - "id": "61641f28294617432cff1379", - "process_name": "QCD_Pt-30to50_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "6447000.0", - "total_uncertainty": "19870.0", - "equivalent_lumi": "0.0001551", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "61641f29294617432cff137a", - "process_name": "QCD_Pt-50to80_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "1988000.0", - "total_uncertainty": "5961.0", - "equivalent_lumi": "0.0005029", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "61641f2a294617432cff137b", - "process_name": "QCD_Pt-80to120_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "367500.0", - "total_uncertainty": "1091.0", - "equivalent_lumi": "0.002721", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "61641f25294617432cff1374", - "process_name": "QCD_Pt-120to170_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "66590.0", - "total_uncertainty": "196.6", - "equivalent_lumi": "0.01502", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "61641f26294617432cff1376", - "process_name": "QCD_Pt-170to300_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "16620.0", - "total_uncertainty": "49.1", - "equivalent_lumi": "0.06016", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "61641f28294617432cff1378", - "process_name": "QCD_Pt-300toInf_EMEnriched_TuneCP5_13TeV_pythia8", - "cross_section": "1104.0", - "total_uncertainty": "3.282", - "equivalent_lumi": "0.9057", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5b44aa73f368576cbd3d4d07", - "process_name": "QCD_Pt-15To20_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "3820000", - "total_uncertainty": "8817.0", - "DAS": "/QCD_Pt-15to20_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa76f368576cbd3d4d0c", - "process_name": "QCD_Pt-20To30_MuEnrichedPt5_TuneCP5_13TeV-pythia8", - "cross_section": "2960000", - "total_uncertainty": "7955.0", - "DAS": "/QCD_Pt-20to30_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa79f368576cbd3d4d10", - "process_name": "QCD_Pt-30To50_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "1652471", - "total_uncertainty": "4275.0", - "DAS": "/QCD_Pt-30to50_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa7cf368576cbd3d4d15", - "process_name": "QCD_Pt-50To80_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "437504", - "total_uncertainty": "1178.0", - "DAS": "/QCD_Pt-50to80_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa7df368576cbd3d4d16", - "process_name": "QCD_Pt-80To120_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "106033", - "total_uncertainty": "276.1", - "DAS": "/QCD_Pt-80to120_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa71f368576cbd3d4d05", - "process_name": "QCD_Pt-120To170_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "24720", - "total_uncertainty": "65.63", - "DAS": "/QCD_Pt-120to170_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aa75f368576cbd3d4d0a", - "process_name": "QCD_Pt-170To300_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "8654", - "total_uncertainty": "21.62", - "DAS": "/QCD_Pt-170to300_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5f6c27c8f368571e6ae3c3c5", - "process_name": "QCD_Pt-300To470_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "797", - "total_uncertainty": "1.889", - "DAS": "/QCD_Pt-300to470_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5b44aa7bf368576cbd3d4d13", - "process_name": "QCD_Pt-470To600_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": " 79", - "total_uncertainty": "0.1789", - "DAS": "/QCD_Pt-470to600_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5f6c27c9f368571e6ae3c3c6", - "process_name": "QCD_Pt-600To800_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "25", - "total_uncertainty": "0.05469", - "DAS": "/QCD_Pt-600to800_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "BTV-RunIIFall17MiniAODv2-00070", - "equivalent_lumi": "54.91", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5f6c27c9f368571e6ae3c3c7", - "process_name": "QCD_Pt-800To1000_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "4.7", - "total_uncertainty": "0.009809", - "DAS": "/QCD_Pt-800to1000_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "BTV-RunIIFall17MiniAODv2-00071", - "equivalent_lumi": "305.3", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5f6c27c5f368571e6ae3c3bf", - "process_name": "QCD_Pt-1000_MuEnrichedPt5_TuneCP5_13TeV_pythia8", - "cross_section": "1.6", - "total_uncertainty": "0.003236", - "DAS": "/QCD_Pt-1000toInf_MuEnrichedPt5_TuneCP5_13TeV_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5f695547f368571e6ae3bb23", - "process_name": "GluGluHToZZTo2L2Nu_M125_TuneCP5_13TeV_powheg2_JHUGenV735_pythia8", - "cross_section": "28.87", - "total_uncertainty": "0.02027", - "accuracy": "NLO", - "equivalent_lumi": "33.89", - "fraction_negative_weight": "0.00544", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "5b44a986f368576cbd3d4ba7", - "process_name": "GluGluHToZZTo2L2Q_M125_TuneCP5_13TeV_powheg2_JHUGenV7011_pythia8", - "cross_section": "28.87", - "total_uncertainty": "0.02027", - "accuracy": "NLO", - "equivalent_lumi": "33.89", - "fraction_negative_weight": "0.005416", - "energy": "13", - }, - { - "id": "5f695539f368571e6ae3bb0a", - "process_name": "GluGluHToWWToLNuQQ_M125_TuneCP5_PSweight_13TeV-powheg2-jhugen727-pythia8", - "cross_section": "28.87", - "total_uncertainty": "0.02027", - "accuracy": "NLO", - "equivalent_lumi": "33.92", - "fraction_negative_weight": "0.00522", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "61641e96294617432cff12a8", - "process_name": "GluGluHToWWTo2L2Nu_M-125_TuneCP5_13TeV-powheg-jhugen727-pythia8", - "cross_section": "0.9913", - "total_uncertainty": "0.01033", - "accuracy": "NLO", - "equivalent_lumi": "46.56", - "fraction_negative_weight": "2e-05", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "61641eb3294617432cff12d2", - "process_name": "GluGluZH_HToWWTo2L2Nu_M-125_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "0.00275", - "total_uncertainty": "6.738e-05", - "accuracy": "NLO", - "DAS": "/GluGluZH_HToWWTo2L2Nu_M-125_TuneCP5_13TeV-powheg-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "HIG-RunIISummer20UL16MiniAOD-00802", - "equivalent_lumi": "16230.0", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "5f819e4ef368571e6ae3e83d", - "process_name": "VBFHToWWTo2L2Nu_M125_TuneCP5_13TeV_powheg2_JHUGenV714_pythia8_withDipoleRecoil", - "cross_section": "0.0846", - "total_uncertainty": "0.01573", - "accuracy": "NLO", - "DAS": "/VBFHToWWTo2L2Nu_M125_TuneCP5_13TeV_powheg2_JHUGenV714_pythia8_withDipoleRecoil/RunIIAutumn18MiniAOD-102X_upgrade2018_realistic_v15-v1/MINIAODSIM", - "MCM": "HIG-RunIIAutumn18MiniAOD-02997", - "equivalent_lumi": "257.1", - "fraction_negative_weight": "0.00071", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "5f819e4ef368571e6ae3e83d", - "process_name": "VBFHToWWTo2L2Nu_M125_TuneCP5_13TeV_powheg2_JHUGenV714_pythia8", - "cross_section": "0.0846", - "total_uncertainty": "0.01573", - "accuracy": "NLO", - "DAS": "/VBFHToWWTo2L2Nu_M125_TuneCP5_13TeV_powheg2_JHUGenV714_pythia8/RunIIAutumn18MiniAOD-102X_upgrade2018_realistic_v15-v1/MINIAODSIM", - "MCM": "HIG-RunIIAutumn18MiniAOD-02997", - "equivalent_lumi": "257.1", - "fraction_negative_weight": "0.00071", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "621f115e29461703023b3efb", - "process_name": "HWplusJ_HToWWTo2L2Nu_WTo2L_M-125_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "0.0143296614", - "total_uncertainty": "0.0002201", - "accuracy": "NLO", - "DAS": "/HWplusJ_HToWWTo2L2Nu_WTo2L_M-125_TuneCP5_13TeV-powheg-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "HIG-RunIISummer20UL16MiniAOD-00878", - "equivalent_lumi": "3156.0", - "fraction_negative_weight": "0.02699", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "621f115d29461703023b3efa", - "process_name": "HWminusJ_HToWW_M-125_TuneCP5_13TeV-powheg-jhugen727-pythia8", - "cross_section": "0.116", - "total_uncertainty": "0.0004197", - "accuracy": "NLO", - "DAS": "/HWminusJ_HToWW_M-125_TuneCP5_13TeV-powheg-jhugen727-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "HIG-RunIISummer20UL16MiniAOD-00877", - "equivalent_lumi": "1650.0", - "fraction_negative_weight": "0.02613", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "621f115f29461703023b3efd", - "process_name": "HZJ_HToWWTo2L2Nu_ZTo2L_M-125_TuneCP5_13TeV-powheg-jhugen727-pythia8", - "cross_section": "0.0171", - "total_uncertainty": "0.002358", - "accuracy": "NLO", - "DAS": "/HZJ_HToWWTo2L2Nu_ZTo2L_M-125_TuneCP5_13TeV-powheg-jhugen727-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "HIG-RunIISummer20UL16MiniAOD-00880", - "equivalent_lumi": "10690.0", - "fraction_negative_weight": "0.03091", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "5b44ad08f368576cbd3d50bf", - "process_name": "ttHToNonbb_M125_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "0.212", - "total_uncertainty": "0.02855", - "accuracy": "NLO", - "DAS": "/ttHToNonbb_M125_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "HIG-RunIIFall17MiniAODv2-00114", - "equivalent_lumi": "1707.0", - "fraction_negative_weight": "0.009538", - "energy": "13", - }, - { - "id": "5b44abfff368576cbd3d4f4a", - "process_name": "WW_TuneCP5_13TeV-pythia8", - "cross_section": "75.9", - "total_uncertainty": "0.1123", - "DAS": "/WW_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44ac04f368576cbd3d4f51", - "process_name": "WZ_TuneCP5_13TeV-pythia8", - "cross_section": "27.57", - "total_uncertainty": "0.04", - "DAS": "/WZ_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44acc5f368576cbd3d5068", - "process_name": "ZZ_TuneCP5_13TeV-pythia8", - "cross_section": "16.523", - "total_uncertainty": "0.01964", - "DAS": "/ZZ_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5f81a066f368571e6ae3ebc1", - "process_name": "ZZTo2L2Nu_TuneCP5_13TeV_powheg_pythia8", - "cross_section": "0.6008", - "total_uncertainty": "0.0002789", - "other_uncertainty": "", - "accuracy": "NLO", - "DAS": "/ZZTo2L2Nu_TuneCP5_13TeV_powheg_pythia8/RunIIAutumn18MiniAOD-102X_upgrade2018_realistic_v15_ext1-v2/MINIAODSIM", - "MCM": "HIG-RunIIAutumn18MiniAOD-00017", - "equivalent_lumi": "1660.0", - "fraction_negative_weight": "0.0006294", - "reweighting": "", - "kFactor": "", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "process_name": "ZZTo2Q2L_mllmin4p0_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "3.74", - "matrix_generator": "amcatnloFXFX", - "energy": "13", - }, - { - "id": "60d0634e2946173d80086b31", - "process_name": "WWTo2L2Nu_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "11.09", - "total_uncertainty": "0.00704", - "accuracy": "NLO", - "DAS": "/WWTo2L2Nu_TuneCP5_13TeV-powheg-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SUS-RunIISummer20UL16MiniAOD-00056", - "equivalent_lumi": "89.45", - "fraction_negative_weight": "0.00209", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "id": "5b44ac03f368576cbd3d4f4f", - "process_name": "WZTo3LNu_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "5.052", - "total_uncertainty": "0.0175", - "DAS": "/WZTo3LNu_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00015", - "equivalent_lumi": "77.14", - "fraction_negative_weight": "0.1879", - "energy": "13", - }, - { - "id": "61641f8a294617432cff1405", - "process_name": "WZTo2Q2L_mllmin4p0_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "6.419", - "total_uncertainty": "0.01984", - "DAS": "/WZTo2Q2L_mllmin4p0_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00100", - "equivalent_lumi": "60.52", - "fraction_negative_weight": "0.1884", - "matrix_generator": "none", - "energy": "13", - }, - { - "id": "5f81a066f368571e6ae3ebc1", - "process_name": "ZZTo2L2Nu_TuneCP5_13TeV_powheg_pythia8", - "cross_section": "0.6008", - "total_uncertainty": "0.0002789", - "other_uncertainty": "", - "accuracy": "NLO", - "DAS": "/ZZTo2L2Nu_TuneCP5_13TeV_powheg_pythia8/RunIIAutumn18MiniAOD-102X_upgrade2018_realistic_v15_ext1-v2/MINIAODSIM", - "MCM": "HIG-RunIIAutumn18MiniAOD-00017", - "equivalent_lumi": "1660.0", - "fraction_negative_weight": "0.0006294", - "reweighting": "", - "kFactor": "", - "matrix_generator": "Powheg", - "energy": "13", - }, - { - "process_name": "WWJJToLNuLNu_EWK_noTop_TuneCP5_13TeV-madgraph-pythia8", - "cross_section": "0.284", - "matrix_generator": "amcatnloFXFX", - "energy": "13", - }, - { - "process_name": "WWJJToLNuLNu_QCD_noTop_TuneCP5_13TeV-madgraph-pythia8", - "cross_section": "2.19", - "matrix_generator": "amcatnloFXFX", - "energy": "13", - }, - { - "id": "5b44abfdf368576cbd3d4f47", - "process_name": "WWW_4F_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "0.2086", - "total_uncertainty": "0.0002024", - "DAS": "/WWW_4F_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00024", - "equivalent_lumi": "3680.0", - "fraction_negative_weight": "0.06197", - "energy": "13", - }, - { - "id": "5b44abfef368576cbd3d4f48", - "process_name": "WWZ_4F_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "0.1651", - "total_uncertainty": "0.0001724", - "DAS": "/WWZ_4F_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00025", - "equivalent_lumi": "4770.0", - "fraction_negative_weight": "0.05631", - "energy": "13", - }, - { - "id": "5b44ac04f368576cbd3d4f50", - "process_name": "WZZ_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "0.05565", - "total_uncertainty": "5.5e-05", - "DAS": "/WZZ_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00026", - "equivalent_lumi": "13850.0", - "fraction_negative_weight": "0.06099", - "energy": "13", - }, - { - "id": "5b44acc4f368576cbd3d5067", - "process_name": "ZZZ_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "0.01398", - "total_uncertainty": "1.496e-05", - "DAS": "/ZZZ_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00027", - "equivalent_lumi": "52140.0", - "fraction_negative_weight": "0.0731", - "energy": "13", - }, - { - "id": "5b45c7f7f368576cbd3d532f", - "process_name": "WJetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "61526.7", - "total_uncertainty": "121.9", - "DAS": "/WJetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v2/MINIAODSIM", - "fraction_negative_weight": "0.0004079", - "energy": "13", - }, - { - "id": "5b45c7f7f368576cbd3d532f", - "process_name": "WJetsToLNu_012JetsNLO_34JetsLO_EWNLOcorr_13TeV-sherpa", - "cross_section": "46745", - "fraction_negative_weight": "0.0004079", - "energy": "13", - }, - { - "id": "5b45c7f7f368576cbd3d532f", - "process_name": "WJetsToLNu_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "61526.7", - "total_uncertainty": "121.9", - "DAS": "/WJetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v2/MINIAODSIM", - "fraction_negative_weight": "0.0004079", - "energy": "13", - }, - { - "id": "60d062fb2946173d80086b12", - "process_name": "W1JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "9625", - "total_uncertainty": "24.09", - "accuracy": "LO", - "DAS": "/W1JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "BTV-RunIISummer20UL16MiniAOD-00004", - "equivalent_lumi": "0.112", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "process_name": "WtoLNu-4Jets_1J_TuneCP5_13p6TeV_madgraphMLM-pythia8", - "cross_section": "7944", - "accuracy": "LO", - "DAS": "/WtoLNu-4Jets_1J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v2/NANOAODSIM", - "MCM": "BTV-RunIISummer20UL16MiniAOD-00004", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "60d062fd2946173d80086b13", - "process_name": "W2JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "2873", - "total_uncertainty": "8.201", - "accuracy": "LO", - "DAS": "/W2JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "BTV-RunIISummer20UL16MiniAOD-00005", - "equivalent_lumi": "0.356", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "process_name": "WtoLNu-4Jets_2J_TuneCP5_13p6TeV_madgraphMLM-pythia8", - "cross_section": "2873", - "total_uncertainty": "8.201", - "accuracy": "LO", - "DAS": "/WtoLNu-4Jets_2J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v2/NANOAODSIM", - "MCM": "BTV-RunIISummer20UL16MiniAOD-00005", - "equivalent_lumi": "0.356", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "60d062ff2946173d80086b14", - "process_name": "W3JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "1468", - "total_uncertainty": "2.511", - "accuracy": "LO", - "DAS": "/W3JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "BTV-RunIISummer20UL16MiniAOD-00006", - "equivalent_lumi": "1.21", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "process_name": "WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8", - "cross_section": "1468", - "total_uncertainty": "2.511", - "accuracy": "LO", - "DAS": "/WtoLNu-4Jets_3J_TuneCP5_13p6TeV_madgraphMLM-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v2/NANOAODSIM", - "equivalent_lumi": "1.21", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "5b44abdcf368576cbd3d4f15", - "process_name": "W4JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "494", - "total_uncertainty": "1.656", - "accuracy": "LO", - "DAS": "/W4JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "BTV-RunIIFall17MiniAODv2-00051", - "equivalent_lumi": "1.829", - "fraction_negative_weight": "0.00113", - "energy": "13", - }, - { - "id": "5b44abdcf368576cbd3d4f15", - "process_name": "W4JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "494", - "total_uncertainty": "1.656", - "accuracy": "LO", - "DAS": "/W4JetsToLNu_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "BTV-RunIIFall17MiniAODv2-00051", - "equivalent_lumi": "1.829", - "fraction_negative_weight": "0.00113", - "energy": "13", - }, - { - "id": "5da44b3af368571e6ae3b183", - "process_name": "DYJetsToLL_M-10to50_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "22635.1", - "total_uncertainty": "5.764", - "other_uncertainty": "", - "accuracy": "LO", - "contact": "Izaak Neutelings", - "DAS": "/DYJetsToLL_M-10to50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAOD-94X_mc2017_realistic_v10-v2/MINIAODSIM", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "id": "64204f0229461764a903bf9b", - "process_name": "DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", - "cross_section": "19317.5", - "accuracy": "unknown", - "accuracy": "NLO", - "DAS": "/DYto2L-2Jets_MLL-10to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v4/MINIAODSIM", - "equivalent_lumi": "0.02612", - "fraction_negative_weight": "0.1301", - "comments": "Automatically computed", - }, - { - "process_name": "DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8", - "cross_section": "6346.0", - "other_uncertainty": "", - "accuracy": "NLO", - "DAS": "/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv11-126X_mcRun3_2022_realistic_v2-v1/NANOAODSIM", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "SMP-22-017", - }, - { - "process_name": "DY1JetsToLL_M-10to50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "566.8", - "total_uncertainty": "2.121", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY2JetsToLL_M-10to50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "314.6", - "total_uncertainty": "0.9805", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY3JetsToLL_M-10to50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "77.65", - "total_uncertainty": "0.3186", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY4JetsToLL_M-10to50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "28.54", - "total_uncertainty": "0.1197", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY1JetsToLL_M-50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "929.0", - "total_uncertainty": "2.727", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY2JetsToLL_M-50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "294.4", - "total_uncertainty": "0.9428", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY3JetsToLL_M-50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "86.49", - "total_uncertainty": "0.2879", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DY4JetsToLL_M-50_MatchEWPDG20_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "41.07", - "total_uncertainty": "0.2048", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-70to100_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "139.2", - "total_uncertainty": "0.5640", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-100to200_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "140.9", - "total_uncertainty": "0.6166", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-200to400_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "38.37", - "total_uncertainty": "0.1252", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-400to600_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "5.205", - "total_uncertainty": "1.844e-02", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-600to800_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "1.281", - "total_uncertainty": "1.001e-02", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-800to1200_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "0.5705", - "total_uncertainty": "3.237e-03", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-1200to2500_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "0.1328", - "total_uncertainty": "4.369e-04", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "process_name": "DYJetsToLL_M-50_HT-2500toInf_TuneCP5_PSweights_13TeV-madgraphMLM-pythia8", - "cross_section": "2.985e-03", - "total_uncertainty": "9.819e-06", - "other_uncertainty": "", - "accuracy": "LO", - "DAS": "", - "MCM": "BTV-RunIIFall17MiniAOD-00042", - "equivalent_lumi": "", - "fraction_negative_weight": "", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - "comments": "Computed using GenXSecAnalyzer.", - }, - { - "id": "5be159a8f368572e353ddaad", - "process_name": "DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "6077.22", - "total_uncertainty": "2%", - "other_uncertainty": "", - "DAS": "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017RECOSIMstep_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.0004962", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "61641e8f294617432cff129d", - "process_name": "DYJetsToTauTauToMuTauh_M-50_TuneCP5_13TeV-madgraphMLM-pythia8", - "cross_section": "54.06", - "total_uncertainty": "0.1495", - "accuracy": "LO", - "DAS": "/DYJetsToTauTauToMuTauh_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v1/MINIAODSIM", - "MCM": "TAU-RunIISummer20UL16MiniAOD-00002", - "equivalent_lumi": "21.03", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "5be159a8f368572e353ddaad", - "process_name": "DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "6077.22", - "total_uncertainty": "2%", - "other_uncertainty": "", - "DAS": "/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIIFall17MiniAODv2-PU2017RECOSIMstep_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.0004962", - "reweighting": "", - "cuts": "", - "kFactor": "", - "matrix_generator": "Madgraph", - "energy": "13", - }, - { - "id": "5f69541ff368571e6ae3b91a", - "process_name": "DYJetsToLL_0J_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "5333.0", - "total_uncertainty": "9.294", - "DAS": "/DYJetsToLL_0J_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00018", - "equivalent_lumi": "0.1214", - "fraction_negative_weight": "0.09838", - "matrix_generator": "none", - "energy": "13", - "comments": "Take from https://github.com/mastrolorenzo/AnalysisTools-1/blob/07a3386692642e76ad78c9671a8b906757e88362/VHccAnalysis/cfg/samples_2017_vhcc.txt", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_1J_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "965", - "total_uncertainty": "6.425", - "DAS": "/DYJetsToLL_1J_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "https://github.com/mastrolorenzo/AnalysisTools-1/blob/07a3386692642e76ad78c9671a8b906757e88362/VHccAnalysis/cfg/samples_2017_vhcc.txt#L118", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_2J_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "362.0", - "total_uncertainty": "6.425", - "DAS": "/DYJetsToLL_2J_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "https://github.com/mastrolorenzo/AnalysisTools-1/blob/07a3386692642e76ad78c9671a8b906757e88362/VHccAnalysis/cfg/samples_2017_vhcc.txt#L119", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "1501", - "total_uncertainty": "11.04", - "DAS": "/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17NanoAODv9-106X_mc2017_realistic_v9-v1/NANOAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "GENXSAnalyzer", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "399.2", - "total_uncertainty": "3.367", - "DAS": "/DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17NanoAODv9-106X_mc2017_realistic_v9-v1/NANOAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "GENXSAnalyzer", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "96.56", - "total_uncertainty": "1.206", - "DAS": "/DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17NanoAODv9-106X_mc2017_realistic_v9-v1/NANOAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "matrix_generator": "none", - "energy": "13", - "comments": "GenXSanalyzer", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "3.727", - "total_uncertainty": "0.04041", - "DAS": "/DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17NanoAODv9-106X_mc2017_realistic_v9-v1/NANOAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "GenXSanalyzer", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "0.5029", - "total_uncertainty": "5.713e-03", - "DAS": "/DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17NanoAODv9-106X_mc2017_realistic_v9-v1/NANOAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "0.208", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "GenXSanalyzer", - }, - { - "id": "5f695420f368571e6ae3b91b", - "process_name": "DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "0.04782", - "total_uncertainty": "5.042e-04", - "DAS": "/DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", - "MCM": "SMP-RunIIFall17MiniAODv2-00019", - "equivalent_lumi": "", - "fraction_negative_weight": "0.2771", - "matrix_generator": "none", - "energy": "13", - "comments": "GENXSanalyzer", - }, - { - "id": "60d05b7b2946173d8008686f", - "process_name": "DYJetsToLL_Pt-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "398.8", - "total_uncertainty": "2.664", - "DAS": "/DYJetsToLL_Pt-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00047", - "equivalent_lumi": "0.3599", - "fraction_negative_weight": "0.3106", - "matrix_generator": "none", - "energy": "13", - "comments": "https://cms-gen-dev.cern.ch/xsdb/?columns=40632192¤tPage=0&pageSize=10&searchQuery=process_name%3DDYJetsToLL_Pt-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - }, - { - "id": "60d05b752946173d8008686c", - "process_name": "DYJetsToLL_Pt-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "93.61", - "total_uncertainty": "0.6145", - "DAS": "/DYJetsToLL_Pt-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00048", - "equivalent_lumi": "1.497", - "fraction_negative_weight": "0.3129", - "matrix_generator": "none", - "energy": "13", - "comments": "https://cms-gen-dev.cern.ch/xsdb/?columns=40632192¤tPage=0&pageSize=10&searchQuery=process_name%3DDYJetsToLL_Pt-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - }, - { - "id": "60d05b772946173d8008686d", - "process_name": "DYJetsToLL_Pt-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "3.67", - "total_uncertainty": "0.02248", - "DAS": "/DYJetsToLL_Pt-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00049", - "equivalent_lumi": "42.28", - "fraction_negative_weight": "0.303", - "matrix_generator": "none", - "energy": "13", - "comments": "https://cms-gen-dev.cern.ch/xsdb/?columns=40632192¤tPage=0&pageSize=10&searchQuery=process_name%3DDYJetsToLL_Pt-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - }, - { - "id": "60d05b792946173d8008686e", - "process_name": "DYJetsToLL_Pt-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "0.5", - "total_uncertainty": "0.002869", - "DAS": "/DYJetsToLL_Pt-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00050", - "equivalent_lumi": "352.3", - "fraction_negative_weight": "0.2901", - "matrix_generator": "none", - "energy": "13", - "comments": "https://cms-gen-dev.cern.ch/xsdb/?columns=40632192¤tPage=0&pageSize=10&searchQuery=process_name%3DDYJetsToLL_Pt-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - }, - { - "id": "60d05b7e2946173d80086870", - "process_name": "DYJetsToLL_Pt-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - "cross_section": "0.04704", - "total_uncertainty": "0.0002513", - "DAS": "/DYJetsToLL_Pt-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAOD-106X_mcRun2_asymptotic_v13-v2/MINIAODSIM", - "MCM": "SMP-RunIISummer20UL16MiniAOD-00051", - "equivalent_lumi": "4373.0", - "fraction_negative_weight": "0.2732", - "matrix_generator": "none", - "energy": "13", - "comments": "https://cms-gen-dev.cern.ch/xsdb/?columns=40632192¤tPage=0&pageSize=10&searchQuery=process_name%3DDYJetsToLL_Pt-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8", - }, - { - "id": "5b44ab37f368576cbd3d4e20", - "process_name": "TTToHadronic_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "378.9", - "total_uncertainty": "0.5174", - "DAS": "/TTToHadronic_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44ab2cf368576cbd3d4e0f", - "process_name": "TTTo2L2Nu_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "88.51", - "total_uncertainty": "0.5174", - "DAS": "/TTTo2L2Nu_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.004373", - "energy": "13", - }, - { - "id": "5b44ab3df368576cbd3d4e2a", - "process_name": "TTToSemiLeptonic_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "366.3", - "total_uncertainty": "0.5174", - "DAS": "/TTToSemiLeptonic_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM", - "fraction_negative_weight": "0.003957", - "energy": "13", - }, - { - "id": "5b44aad2f368576cbd3d4d90", - "process_name": "ST_tW_top_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "39.65", - "total_uncertainty": "0.02817", - "DAS": "/ST_tW_top_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.003758", - "energy": "13", - }, - { - "id": "5b44aacef368576cbd3d4d8b", - "process_name": "ST_tW_antitop_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8", - "cross_section": "39.65", - "total_uncertainty": "0.02827", - "DAS": "/ST_tW_antitop_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.0034", - "energy": "13", - }, - { - "id": "5b44aacbf368576cbd3d4d86", - "process_name": "ST_t-channel_top_4f_InclusiveDecays_TuneCP5_13TeV-powheg-madspin-pythia8", - "cross_section": "134.2", - "total_uncertainty": "0.6404", - "DAS": "/ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aac8f368576cbd3d4d82", - "process_name": "ST_t-channel_antitop_4f_InclusiveDecays_TuneCP5_13TeV-powheg-madspin-pythia8", - "cross_section": "80.0", - "total_uncertainty": "0.3487", - "DAS": "/ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aacbf368576cbd3d4d86", - "process_name": "ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powheg-madspin-pythia8", - "cross_section": "134.2", - "total_uncertainty": "0.6404", - "DAS": "/ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aac8f368576cbd3d4d82", - "process_name": "ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powheg-madspin-pythia8", - "cross_section": "80.0", - "total_uncertainty": "0.3487", - "DAS": "/ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "energy": "13", - }, - { - "id": "5b44aac4f368576cbd3d4d7d", - "process_name": "ST_s-channel_4f_leptonDecays_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "3.74", - "total_uncertainty": "0.003533", - "DAS": "/ST_s-channel_4f_leptonDecays_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.1875", - "energy": "13", - }, - { - "id": "5f6c2a01f368571e6ae3c791", - "process_name": "ST_s-channel_4f_hadronicDecays_TuneCP5_13TeV-amcatnlo-pythia8", - "cross_section": "11.24", - "total_uncertainty": "0.0108", - "DAS": "/ST_s-channel_4f_hadronicDecays_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM", - "fraction_negative_weight": "0.1867", - "matrix_generator": "none", - "energy": "13", - }, { "process_name": "DYJetsToLL_M-10to50_TuneCP5_13p6TeV-madgraphMLM-pythia8", "cross_section": "19317.5", @@ -1417,6 +226,105 @@ "energy": "13.6", "comment": "from TOP-22-012", }, + { + "id": "65e2afb6c9012c00640bfa4d", + "process_name": "ZZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 6.788, + "total_uncertainty": 0.003501, + "accuracy": "NLO", + "DAS": "/ZZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 145.3, + "fraction_negative_weight": 0.003407, + }, + { + "id": "65e2af77c9012c00640bf9f8", + "process_name": "ZZto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 1.031, + "total_uncertainty": 0.0005268, + "accuracy": "NLO", + "DAS": "/ZZto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 965.6, + "fraction_negative_weight": 0.001157, + }, + { + "id": "65e2af6cc9012c00640bf9e8", + "process_name": "WZto3LNu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 4.924, + "total_uncertainty": 0.00237, + "accuracy": "NLO", + "DAS": "/WZto3LNu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 202.3, + "fraction_negative_weight": 0.001026, + }, + { + "id": "65e2af6fc9012c00640bf9ec", + "process_name": "WZtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 15.87, + "total_uncertainty": 0.007874, + "accuracy": "NLO", + "DAS": "/WZtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 62.96, + "fraction_negative_weight": 0.0002186, + }, + { + "id": "65e2af6bc9012c00640bf9e6", + "process_name": "WZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 7.568, + "total_uncertainty": 0.003908, + "accuracy": "NLO", + "DAS": "/WZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 131.8, + "fraction_negative_weight": 0.0005877, + }, + { + "id": "65e2af6ac9012c00640bf9e4", + "process_name": "WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 48.94, + "total_uncertainty": 0.0175, + "accuracy": "NLO", + "DAS": "/WWtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 20.43, + "fraction_negative_weight": 0.00009933, + }, + { + "id": "65e2af68c9012c00640bf9e1", + "process_name": "WWto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 11.79, + "total_uncertainty": 0.004216, + "accuracy": "NLO", + "DAS": "/WWto2L2Nu_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 84.79, + "fraction_negative_weight": 0.0001096, + }, + { + "id": "65e2af69c9012c00640bf9e3", + "process_name": "WWto4Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 50.79, + "total_uncertainty": 0.01816, + "accuracy": "NLO", + "DAS": "/WWto4Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 19.68, + "fraction_negative_weight": 0.00007948, + }, + { + "id": "65e2afd5c9012c00640bfa77", + "process_name": "ZZto2Nu2Q_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 4.826, + "total_uncertainty": 0.001296, + "accuracy": "NLO", + "DAS": "/ZZto2Nu2Q_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 206.5, + "fraction_negative_weight": 0.0008741, + }, + { + "process_name": "ZZto4L_TuneCP5_13p6TeV_powheg-pythia8", + "cross_section": 1.39, + "total_uncertainty": 0.0007001, + "accuracy": "NLO", + "DAS": "/ZZto4L_TuneCP5_13p6TeV_powheg-pythia8/Run3Summer22EEMiniAODv3-124X_mcRun3_2022_realistic_postEE_v1-v2/MINIAODSIM", + "equivalent_lumi": 703.5, + "fraction_negative_weight": 0.005481, + }, { "process_name": "WZ_TuneCP5_13p6TeV-pythia8", "cross_section": "27.6", diff --git a/src/BTVNanoCommissioning/utils/AK4_parameters.py b/src/BTVNanoCommissioning/utils/AK4_parameters.py index 301c3973..156824e4 100644 --- a/src/BTVNanoCommissioning/utils/AK4_parameters.py +++ b/src/BTVNanoCommissioning/utils/AK4_parameters.py @@ -99,7 +99,7 @@ # "Run2023C-22Sep2023_v4": "Summer23Prompt23_RunCv4_V1", # }, "JME": "jec_compiled.pkl.gz", - # "jetveto": {"Run2023BC jetvetomap_all": "Summer23Prompt23_RunC_v1.histo.root"}, + "jetveto": {"Run2023BC jetvetomap_all": "Summer23Prompt23_RunC_v1.histo.root"}, "JPCalib": { "Run2023C-22Sep2023_v1": "calibeHistoWrite_Data2023C-22Sep2023_v1.root", "Run2023C-22Sep2023_v2": "calibeHistoWrite_Data2023C-22Sep2023_v2.root", @@ -111,14 +111,14 @@ "Summer23BPix": { "lumiMask": "Cert_Collisions2023_366442_370790_Golden.json", "PU": "puwei_Summer23BPix.histo.root", - # "JME": { - # "MC": "Summer23BPixPrompt23_V1", - # "Run2023D": "Summer23BPixPrompt23_RunD_V1", - # }, - "JME": "jec_compiled.pkl.gz", - # "jetveto": { - # "Run2023D jetvetomap_all": "Summer23BPixPrompt23_RunD_v1.histo.root" - # }, # this is from Mikko https://indico.cern.ch/event/1315421/contributions/5532963/attachments/2697975/4683826/2023_08_16_jetvetomaps_v3.pdf + "JME": { + "MC": "Summer23BPixPrompt23_V1", + "Run2023D": "Summer23BPixPrompt23_RunD_V1", + }, + # "JME": "jec_compiled.pkl.gz", + "jetveto": { + "Run2023D jetvetomap_all": "Summer23BPixPrompt23_RunD_v1.histo.root" + }, # this is from Mikko https://indico.cern.ch/event/1315421/contributions/5532963/attachments/2697975/4683826/2023_08_16_jetvetomaps_v3.pdf "JPCalib": { "Run2023D-22Sep2023_v1": "calibeHistoWrite_Data2023D-22Sep2023_v1.root", "Run2023D-22Sep2023_v2": "calibeHistoWrite_Data2023D-22Sep2023_v2.root", diff --git a/src/BTVNanoCommissioning/utils/array_writer.py b/src/BTVNanoCommissioning/utils/array_writer.py new file mode 100644 index 00000000..144db85b --- /dev/null +++ b/src/BTVNanoCommissioning/utils/array_writer.py @@ -0,0 +1,95 @@ +from BTVNanoCommissioning.helpers.func import uproot_writeable +import numpy as np +import awkward as ak +import os, uproot + + +def array_writer( + processor_class, # the NanoProcessor class ("self") + pruned_event, # the event with specific calculated variables stored + nano_event, # entire NanoAOD/PFNano event with many variables + systname, # name of systematic shift + dataset, # dataset name + isRealData, # boolean + remove=[ + "SoftMuon", + "MuonJet", + "dilep", + "OtherJets", + "Jet", + ], # remove from variable list + kinOnly=[ + "Muon", + "Jet", + "SoftMuon", + "dilep", + "charge", + "MET", + ], # variables for which only kinematic properties are kept + kins=[ + "pt", + "eta", + "phi", + "mass", + "pfRelIso04_all", + "pfRelIso03_all", + "dxy", + "dz", + ], # kinematic propoerties for the above variables + othersData=[ + "PFCands_*", + "MuonJet_*", + "SV_*", + "PV_npvs", + "PV_npvsGood", + "Rho_*", + "SoftMuon_dxySig", + "Muon_sip3d", + ], # other fields, for Data and MC + othersMC=["Pileup_nTrueInt", "Pileup_nPU"], # other fields, for MC only + empty=False, +): + if empty: + print("WARNING: No events selected. Writing blank file.") + out_branch = [] + else: + # Get only the variables that were added newly + out_branch = np.setdiff1d( + np.array(pruned_event.fields), np.array(nano_event.fields) + ) + + # Handle kinOnly vars + for v in remove: + out_branch = np.delete(out_branch, np.where((out_branch == v))) + + for kin in kins: + for obj in kinOnly: + if "MET" in obj and ("pt" != kin or "phi" != kin): + continue + if (obj != "Muon" and obj != "SoftMuon") and ( + "pfRelIso04_all" == kin or "d" in kin + ): + continue + out_branch = np.append(out_branch, [f"{obj}_{kin}"]) + + # Handle data vars + out_branch = np.append(out_branch, othersData) + + if not isRealData: + out_branch = np.append(out_branch, othersMC) + + # Write to root files + # print("Branches to write:", out_branch) + outdir = f"{processor_class.name}/{systname}/{dataset}/" + os.system(f"mkdir -p {outdir}") + + with uproot.recreate( + f"{outdir}/{nano_event.metadata['filename'].split('/')[-1].replace('.root','')}_{int(nano_event.metadata['entrystop']/processor_class.chunksize)}.root" + ) as fout: + if not empty: + fout["Events"] = uproot_writeable(pruned_event, include=out_branch) + fout["TotalEventCount"] = ak.Array( + [nano_event.metadata["entrystop"] - nano_event.metadata["entrystart"]] + ) + if not isRealData: + fout["TotalEventWeight"] = ak.Array([ak.sum(nano_event.genWeight)]) diff --git a/src/BTVNanoCommissioning/utils/compile_jec.py b/src/BTVNanoCommissioning/utils/compile_jec.py index 662a4654..8f14aa42 100644 --- a/src/BTVNanoCommissioning/utils/compile_jec.py +++ b/src/BTVNanoCommissioning/utils/compile_jec.py @@ -282,7 +282,6 @@ def jet_factory_factory(files): "src/BTVNanoCommissioning/data/JME/Summer23/Summer23Prompt23_V1_MC_Uncertainty_AK4PFPuppi.junc.txt", "src/BTVNanoCommissioning/data/JME/Summer23/Summer23Prompt23_JRV1_MC_SF_AK4PFPuppi.jersf.txt", "src/BTVNanoCommissioning/data/JME/Summer23/Summer23Prompt23_JRV1_MC_PtResolution_AK4PFPuppi.jr.txt", - ], "dataCv123": [ "src/BTVNanoCommissioning/data/JME/Summer23/Summer23Prompt23_RunCv123_V1_DATA_L1FastJet_AK4PFPuppi.jec.txt", @@ -308,6 +307,14 @@ def jet_factory_factory(files): "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_JRV1_MC_PtResolution_AK4PFPuppi.jr.txt", "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_JRV1_MC_SF_AK4PFPuppi.jersf.txt", ], + # "dataD":[ + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_L1FastJet_AK4PFPuppi.jec.txt", + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_L2Relative_AK4PFPuppi.jec.txt", + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_L2Residual_AK4PFPuppi.jec.txt", + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_L3Absolute_AK4PFPuppi.jec.txt", + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_Uncertainty_AK4PFPuppi.junc.txt", + # "src/BTVNanoCommissioning/data/JME/Summer23BPix/Summer23BPixPrompt23_RunD_V1_DATA_UncertaintySources_AK4PFPuppi.junc.txt" + # ] }, } diff --git a/src/BTVNanoCommissioning/utils/histogrammer.py b/src/BTVNanoCommissioning/utils/histogrammer.py index 88fa9813..34d3cd06 100644 --- a/src/BTVNanoCommissioning/utils/histogrammer.py +++ b/src/BTVNanoCommissioning/utils/histogrammer.py @@ -170,6 +170,54 @@ def histogrammer(events, workflow): # delta R between soft muon and hard muon _hist_dict["dr_lmusmu"] = Hist.Hist(syst_axis, dr_axis, Hist.storage.Weight()) for i in ["hl", "sl", "soft_l"]: + if i == "soft_l": + _hist_dict[f"soft_l_pfRelIso04_all"] = Hist.Hist( + syst_axis, flav_axis, softliso_axis, Hist.storage.Weight() + ) + _hist_dict[f"{i}_dxy"] = Hist.Hist( + syst_axis, flav_axis, dxy_axis, Hist.storage.Weight() + ) + _hist_dict[f"{i}_dz"] = Hist.Hist( + syst_axis, flav_axis, dz_axis, Hist.storage.Weight() + ) + else: + if "m" in workflow: + _hist_dict[f"{i}_pfRelIso04_all"] = Hist.Hist( + syst_axis, iso_axis, Hist.storage.Weight() + ) + _hist_dict[f"{i}_dxy"] = Hist.Hist( + syst_axis, qcddxy_axis, Hist.storage.Weight() + ) + _hist_dict[f"{i}_dz"] = Hist.Hist( + syst_axis, dz_axis, Hist.storage.Weight() + ) + # lepton / jet pT ratio + _hist_dict[f"{i}_ptratio"] = Hist.Hist( + syst_axis, flav_axis, ptratio_axis, Hist.storage.Weight() + ) + elif "ctag_ttsemilep_sf" in workflow: + obj_list = ["hl", "soft_l", "MET", "z", "w", "mujet"] + _hist_dict["z_mass"] = Hist.Hist( + syst_axis, + Hist.axis.Regular(50, 50, 100, name="mass", label="$m_{\\ell\\ell}$ [GeV]"), + Hist.storage.Weight(), + ) + _hist_dict["w_mass"] = Hist.Hist( + syst_axis, + Hist.axis.Regular(50, 50, 100, name="mass", label="$m_{\\ell\\nu}$ [GeV]"), + Hist.storage.Weight(), + ) + # delta R between soft muon and mu-jet + _hist_dict["dr_lmujetsmu"] = Hist.Hist( + syst_axis, flav_axis, dr_s_axis, Hist.storage.Weight() + ) + # delta R between hard muon and mu-jet + _hist_dict["dr_lmujethmu"] = Hist.Hist( + syst_axis, flav_axis, dr_axis, Hist.storage.Weight() + ) + # delta R between hard muon and soft-muon + _hist_dict["dr_lmusmu"] = Hist.Hist(syst_axis, dr_axis, Hist.storage.Weight()) + for i in ["hl", "soft_l"]: if i == "soft_l": _hist_dict[f"soft_l_pfRelIso04_all"] = Hist.Hist( syst_axis, flav_axis, softliso_axis, Hist.storage.Weight() @@ -185,12 +233,11 @@ def histogrammer(events, workflow): syst_axis, iso_axis, Hist.storage.Weight() ) _hist_dict[f"{i}_dxy"] = Hist.Hist( - syst_axis, qcddxy_axis, Hist.storage.Weight() + syst_axis, dxy_axis, Hist.storage.Weight() ) _hist_dict[f"{i}_dz"] = Hist.Hist( syst_axis, dz_axis, Hist.storage.Weight() ) - # lepton / jet pT ratio _hist_dict[f"{i}_ptratio"] = Hist.Hist( syst_axis, flav_axis, ptratio_axis, Hist.storage.Weight() ) @@ -263,9 +310,10 @@ def histogrammer(events, workflow): ) _hist_dict["dr_mumu"] = Hist.Hist(syst_axis, dr_axis, Hist.storage.Weight()) for i in ["posl", "negl"]: - _hist_dict[f"{i}_pfRelIso04_all"] = Hist.Hist( - syst_axis, iso_axis, Hist.storage.Weight() - ) + if "m" in workflow: + _hist_dict[f"{i}_pfRelIso04_all"] = Hist.Hist( + syst_axis, iso_axis, Hist.storage.Weight() + ) _hist_dict[f"{i}_dxy"] = Hist.Hist( syst_axis, dxy_axis, Hist.storage.Weight() ) @@ -381,7 +429,7 @@ def histogrammer(events, workflow): ### Btag input variables & PFCands bininfo = definitions() for d in bininfo.keys(): - if d not in events.Jet.fields and "": + if d not in events.Jet.fields: continue ranges = bininfo[d]["manual_ranges"] binning = bininfo[d]["bins"] @@ -466,6 +514,12 @@ def histogrammer(events, workflow): "btagRobustParTAK4CvB", "btagRobustParTAK4CvL", "btagRobustParTAK4QG", + "btagUParTAK4B", + "btagUParTAK4CvL", + "btagUParTAK4CvB", + "btagUParTAK4CvNotB", + "btagUParTAK4QvG", + "btagUParTAK4TauVJet", ## Negative tagger "btagNegDeepFlavB", "btagNegDeepFlavB_b", @@ -499,6 +553,9 @@ def histogrammer(events, workflow): "PNetRegPtRawCorr", "PNetRegPtRawCorrNeutrino", "PNetRegPtRawRes", + "UParTAK4RegPtRawRes", + "UParTAK4RegPtRawCorrNeutrino", + "UParTAK4RegPtRawCorr", "Bprob", "BprobN", "ProbaN", @@ -537,7 +594,7 @@ def histogrammer(events, workflow): Hist.axis.Regular(50, 0, 10, name="discr", label=disc), Hist.storage.Weight(), ) - elif "PNetRegPtRawRes" == disc: + elif "Res" in disc: _hist_dict[f"{disc}_{i}"] = Hist.Hist( syst_axis, flav_axis, @@ -545,7 +602,7 @@ def histogrammer(events, workflow): Hist.axis.Regular(40, 0, 1, name="discr", label=disc), Hist.storage.Weight(), ) - elif "PNetRegPtRawCorr" in disc: + elif "Corr" in disc: _hist_dict[f"{disc}_{i}"] = Hist.Hist( syst_axis, flav_axis, diff --git a/src/BTVNanoCommissioning/workflows/BTA_producer.py b/src/BTVNanoCommissioning/workflows/BTA_producer.py index 127f5572..8902c15a 100644 --- a/src/BTVNanoCommissioning/workflows/BTA_producer.py +++ b/src/BTVNanoCommissioning/workflows/BTA_producer.py @@ -46,7 +46,7 @@ def __init__( # when running on data, requires events passing HLT_PFJet80 self.addPFMuons = addPFMuons self.addAllTracks = addAllTracks - self.isSyst = True if isSyst != False else False + self.isSyst = isSyst @property def accumulator(self): @@ -63,6 +63,8 @@ def process(self, events): dirname += "_addAllTracks" if self.addPFMuons: dirname += "_addPFMuons" + if self.isSyst: + fname = "systematic/" + fname checkf = os.popen( f"gfal-ls root://eoscms.cern.ch//eos/cms/store/group/phys_btag/milee/{dirname}/{self._campaign.replace('Run3','')}/{fname}" ).read() @@ -75,7 +77,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, False, True ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -104,8 +106,6 @@ def process_shift(self, events, shift_name): events = events[events.HLT.PFJet80] if len(events) == 0: return {dataset: len(events)} - if "JME" in self.SF_map.keys() or "jetveto" in self.SF_map.keys(): - events.Jet = update(events.Jet, {"veto": jetveto(events, self.SF_map)}) # basic variables basic_vars = { "Run": events.run, @@ -733,7 +733,8 @@ def process_shift(self, events, shift_name): ) # calculate track probability, based on IPsig and category - jpc = JPCalibHandler(self._campaign, isRealData, dataset, self.isSyst) + JPMC_syst = True if self.isSyst == "JP_MC" else False + jpc = JPCalibHandler(self._campaign, isRealData, dataset, JPMC_syst) trkj_jetbased["proba"] = jpc.calc_track_proba( trkj_jetbased.btagSip3dSig, ak.where(trkj_jetbased.category >= 0, trkj_jetbased.category, 0), @@ -1114,6 +1115,8 @@ def process_shift(self, events, shift_name): output["GenV0"] = GenV0 os.system(f"mkdir -p {dataset}") fname = f"{dataset}/{events.metadata['filename'].split('/')[-1].replace('.root','')}_{int(events.metadata['entrystop']/self.chunksize)}.root" + if self.isSyst: + fname = "systematic/" + fname dirname = "BTA" if self.addAllTracks: dirname += "_addAllTracks" @@ -1131,7 +1134,7 @@ def process_shift(self, events, shift_name): output_root[bname] = ak.zip(b_nest) fout["btagana/ttree"] = output_root os.system( - f"xrdcp -p --silent {fname} root://eoscms.cern.ch//eos/cms/store/group/phys_btag/milee/{dirname}/{self._campaign.replace('Run3','')}/{fname}" + f"xrdcp -p --silent {fname} root://eoscms.cern.ch//eos/cms/store/group/phys_btag/milee/{dirname}/{self._campaign.replace('Run3','')}/systematic/{fname}" ) os.system(f"rm {fname}") return {dataset: len(events)} diff --git a/src/BTVNanoCommissioning/workflows/QCD_validation.py b/src/BTVNanoCommissioning/workflows/QCD_validation.py index d55e1d80..3ca714e6 100644 --- a/src/BTVNanoCommissioning/workflows/QCD_validation.py +++ b/src/BTVNanoCommissioning/workflows/QCD_validation.py @@ -4,6 +4,7 @@ from BTVNanoCommissioning.utils.selection import jet_cut from BTVNanoCommissioning.helpers.func import flatten, update, dump_lumi from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.correction import ( load_SF, @@ -59,7 +60,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, False, True ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -124,9 +125,7 @@ def process_shift(self, events, shift_name): if shift_name is None: output = dump_lumi(events[req_lumi], output) ## Jet cuts - events.Jet = events.Jet[ - jet_cut(events, self._campaign) & (events.Jet.veto != 1) - ] + events.Jet = events.Jet[jet_cut(events, self._campaign)] req_jets = ak.count(events.Jet.pt, axis=1) >= 1 event_level = ak.fill_none(req_lumi & req_trig & req_jets, False) diff --git a/src/BTVNanoCommissioning/workflows/__init__.py b/src/BTVNanoCommissioning/workflows/__init__.py index ad2c85b4..51f8208f 100644 --- a/src/BTVNanoCommissioning/workflows/__init__.py +++ b/src/BTVNanoCommissioning/workflows/__init__.py @@ -20,41 +20,30 @@ from BTVNanoCommissioning.workflows.ctag_dileptt_valid_sf import ( NanoProcessor as CTAGDilepttValidSFProcessor, ) -from BTVNanoCommissioning.workflows.ctag_eDY_valid_sf import ( - NanoProcessor as CTAGeDYValidSFProcessor, -) -from BTVNanoCommissioning.workflows.ctag_eWc_valid_sf import ( - NanoProcessor as CTAGeWcValidSFProcessor, -) -from BTVNanoCommissioning.workflows.ctag_Wc_valid_sf import ( - NanoProcessor as CTAGWcValidSFProcessor, +from BTVNanoCommissioning.workflows.ctag_Wctt_valid_sf import ( + NanoProcessor as CTAGWcTTValidSFProcessor, ) from BTVNanoCommissioning.workflows.ctag_DY_valid_sf import ( NanoProcessor as CTAGDYValidSFProcessor, ) -from BTVNanoCommissioning.workflows.ctag_edileptt_valid_sf import ( - NanoProcessor as CTAGEDilepttValidSFProcessor, -) -from BTVNanoCommissioning.workflows.ctag_ettsemilep_valid_sf import ( - NanoProcessor as CTAGETTSemilepValidSFProcessor, -) -from BTVNanoCommissioning.workflows.ctag_semileptt_valid_sf import ( - NanoProcessor as CTAGSemilepttValidSFProcessor, + +##QCD +from BTVNanoCommissioning.workflows.QCD_validation import ( + NanoProcessor as QCDValidProcessor, ) + +## BTA - for SFs from BTVNanoCommissioning.workflows.BTA_producer import ( NanoProcessor as BTA_processor, ) from BTVNanoCommissioning.workflows.BTA_ttbar_producer import ( NanoProcessor as BTA_ttbar_processor, -) +) # ttbar -kinFit # from BTVNanoCommissioning.workflows.example import ( # NanoProcessor as ExampleProcessor, # ) -##QCD -from BTVNanoCommissioning.workflows.QCD_validation import ( - NanoProcessor as QCDValidProcessor, -) + # FIXME - make names more systematic? workflows = {} @@ -63,24 +52,27 @@ # TTBar workflows["ttdilep_sf"] = TTdilepValidSFProcessor workflows["ttsemilep_sf"] = TTsemilepValidSFProcessor + workflows["emctag_ttdilep_sf"] = CTAGEMDilepttValidSFProcessor -workflows["ctag_ttdilep_sf"] = CTAGDilepttValidSFProcessor -workflows["ectag_ttdilep_sf"] = CTAGEDilepttValidSFProcessor -# workflows["ctag_ttsemilep_sf"] = CTAGSemilepttValidSFProcessor +workflows["ctag_ttdilep_sf"] = partial( + CTAGDilepttValidSFProcessor, selectionModifier="dilepttM" +) +workflows["ectag_ttdilep_sf"] = partial( + CTAGDilepttValidSFProcessor, selectionModifier="dilepttE" +) workflows["ctag_ttsemilep_sf"] = partial( - CTAGWcValidSFProcessor, selectionModifier="semittM" + CTAGWcTTValidSFProcessor, selectionModifier="semittM" ) -# workflows["ectag_ttsemilep_sf"] = CTAGETTSemilepValidSFProcessor workflows["ectag_ttsemilep_sf"] = partial( - CTAGWcValidSFProcessor, selectionModifier="semittE" + CTAGWcTTValidSFProcessor, selectionModifier="semittE" ) ##QCD workflows["QCD_sf"] = QCDValidProcessor # W+c -workflows["ctag_Wc_sf"] = partial(CTAGWcValidSFProcessor, selectionModifier="WcM") -workflows["ectag_Wc_sf"] = partial(CTAGWcValidSFProcessor, selectionModifier="WcE") +workflows["ctag_Wc_sf"] = partial(CTAGWcTTValidSFProcessor, selectionModifier="WcM") +workflows["ectag_Wc_sf"] = partial(CTAGWcTTValidSFProcessor, selectionModifier="WcE") # DY workflows["ctag_DY_sf"] = partial(CTAGDYValidSFProcessor, selectionModifier="DYM") diff --git a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py index e7bffb7d..5e2b3f83 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_DY_valid_sf.py @@ -18,12 +18,11 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - array_writer, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch - from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -73,7 +72,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -122,11 +121,10 @@ def process_shift(self, events, shift_name): **_hist_event_dict, } - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) + if isRealData: + output["sumw"] = len(events) + else: + output["sumw"] = ak.sum(events.genWeight) #################### # Selections # @@ -231,7 +229,7 @@ def process_shift(self, events, shift_name): axis=-1, ) ] - req_jets = ak.num(event_jet.pt) >= 1 + req_jets = ak.count(event_jet.pt, axis=1) >= 1 # event_jet = ak.pad_none(event_jet, 1, axis=1) ## store jet index for PFCands, create mask on the jet index @@ -247,6 +245,16 @@ def process_shift(self, events, shift_name): False, ) if len(events[event_level]) == 0: + if self.isArray: + array_writer( + self, + events[event_level], + events, + "nominal", + dataset, + isRealData, + empty=True, + ) return {dataset: output} #################### # Selected objects # diff --git a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_Wctt_valid_sf.py similarity index 92% rename from src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py rename to src/BTVNanoCommissioning/workflows/ctag_Wctt_valid_sf.py index e0fff9fa..d813fac9 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_Wc_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_Wctt_valid_sf.py @@ -17,11 +17,11 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - array_writer, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -71,7 +71,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -103,18 +103,18 @@ def process_shift(self, events, shift_name): isMu = False isEle = False if "WcM" in self.selMod or "semittM" in self.selMod: - triggers = ["IsoMu27"] + triggers = ["IsoMu27", "IsoMu24"] isMu = True - dxySigcut = 1 - muNeEmSum = 0.7 - muonpTratioCut = 0.4 + dxySigcut = 0 # 1 + muNeEmSum = 1 # 0.7 + muonpTratioCut = 1 # 0.4 isolepdz, isolepdxy, isolepsip3d = 0.01, 0.002, 2 elif "WcE" in self.selMod or "semittE" in self.selMod: triggers = ["Ele32_WPTight_Gsf_L1DoubleEG"] isEle = True dxySigcut = 0 muNeEmSum = 1 - muonpTratioCut = 0.6 + muonpTratioCut = 1 # 0.6 isolepdz, isolepdxy, isolepsip3d = 0.02, 0.01, 2.5 else: raise ValueError(self.selMod, "is not a valid selection modifier.") @@ -134,11 +134,10 @@ def process_shift(self, events, shift_name): **_hist_event_dict, } - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) + if isRealData: + output["sumw"] = len(events) + else: + output["sumw"] = ak.sum(events.genWeight) #################### # Selections # #################### @@ -151,7 +150,6 @@ def process_shift(self, events, shift_name): output = dump_lumi(events[req_lumi], output) ## HLT - triggers = ["IsoMu24"] checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) if ak.all(checkHLT == False): raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) @@ -201,15 +199,16 @@ def process_shift(self, events, shift_name): if "DeepJet_nsv" in events.Jet.fields: jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) event_jet = events.Jet[jet_sel] + nseljet = ak.count(event_jet.pt, axis=1) if "Wc" in self.selMod: - req_jets = (ak.num(event_jet.pt) >= 1) & (ak.num(event_jet.pt) <= 3) + req_jets = (nseljet >= 1) & (nseljet <= 3) else: - req_jets = ak.num(event_jet.pt) >= 4 + req_jets = nseljet >= 4 ## Soft Muon cuts soft_muon = events.Muon[ softmu_mask(events, self._campaign) - & (abs(events.Muon.dxy / events.Muon.dxyErr) > 1.0) + & (abs(events.Muon.dxy / events.Muon.dxyErr) > dxySigcut) ] req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 mujetsel = ak.fill_none( @@ -284,11 +283,12 @@ def process_shift(self, events, shift_name): ak.count(dilep_mu.pt, axis=1) + ak.count(dilep_ele.pt, axis=1) != 2 ) + dilep_mass = iso_lep + soft_muon[:, 0] if isMu: - dilep_mass = iso_lep + soft_muon[:, 0] - req_dilepmass = (dilep_mass.mass > 12.0) & ( - (dilep_mass.mass < 80) | (dilep_mass.mass > 100) - ) + req_dilepmass = dilep_mass.mass > 12.0 + # & ( + # (dilep_mass.mass < 80) | (dilep_mass.mass > 100) + # ) elif isEle: req_dilepmass = iso_lep.pt > 0 @@ -350,6 +350,16 @@ def process_shift(self, events, shift_name): ) event_level = ak.fill_none(event_level, False) if len(events[event_level]) == 0: + if self.isArray: + array_writer( + self, + events[event_level], + events, + "nominal", + dataset, + isRealData, + empty=True, + ) return {dataset: output} #################### # Selected objects # @@ -363,6 +373,7 @@ def process_shift(self, events, shift_name): smet = MET[event_level] smuon_jet = mu_jet[event_level] sotherjets = otherjets[event_level] + sdilep = dilep_mass[event_level] nsoftmu = ak.count(ssmu.pt, axis=1) nmujet = ak.count(smuon_jet.pt, axis=1) smuon_jet = smuon_jet[:, 0] @@ -374,7 +385,7 @@ def process_shift(self, events, shift_name): ossswrite = shmu.charge * ssmu.charge * -1 if "Wc" in self.selMod: osss = shmu.charge * ssmu.charge * -1 - + njet = ak.count(sjets.pt, axis=1) # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand if "PFCands" in events.fields: @@ -525,7 +536,11 @@ def process_shift(self, events, shift_name): syst="noSF", flav=smflav, osss=osss, - discr=smuon_jet[histname.replace(f"_{i}", "")], + discr=np.where( + smuon_jet[histname.replace(f"_{i}", "")] < 0, + -0.2, + smuon_jet[histname.replace(f"_{i}", "")], + ), weight=weights.partial_weight(exclude=exclude_btv), ) if not isRealData and "btag" in self.SF_map.keys(): @@ -533,7 +548,11 @@ def process_shift(self, events, shift_name): syst=syst, flav=smflav, osss=osss, - discr=smuon_jet[histname.replace(f"_{i}", "")], + discr=np.where( + smuon_jet[histname.replace(f"_{i}", "")] < 0, + -0.2, + smuon_jet[histname.replace(f"_{i}", "")], + ), weight=weight, ) elif "btag" in histname and "Trans" in histname: @@ -625,6 +644,8 @@ def process_shift(self, events, shift_name): pruned_ev["njet"] = njet pruned_ev["W_transmass"] = wm pruned_ev["W_pt"] = wp + pruned_ev["dilep_mass"] = sdilep.mass + pruned_ev["dilep_pt"] = sdilep.pt if "PFCands" in events.fields: pruned_ev.PFCands = spfcands # Add custom variables @@ -641,6 +662,7 @@ def process_shift(self, events, shift_name): pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt pruned_ev["MuonJet_beta"] = smuon_jet.pt / smuon_jet.E + pruned_ev["MuonJet_muneuEF"] = smuon_jet.muEF + smuon_jet.neEmEF array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) diff --git a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py index c3e17df6..b9d99a47 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_dileptt_valid_sf.py @@ -8,6 +8,7 @@ load_lumi, load_SF, muSFs, + eleSFs, puwei, btagSFs, JME_shifts, @@ -17,12 +18,11 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, - _is_rootcompat, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -41,6 +41,7 @@ def __init__( isArray=False, noHist=False, chunksize=75000, + selectionModifier="DilepTTEM", ): self._year = year self._campaign = campaign @@ -50,6 +51,7 @@ def __init__( self.noHist = noHist self.lumiMask = load_lumi(self._campaign) self.chunksize = chunksize + self.selMod = selectionModifier ## Load corrections self.SF_map = load_SF(self._campaign) @@ -70,7 +72,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -98,20 +100,6 @@ def process(self, events): def process_shift(self, events, shift_name): dataset = events.metadata["dataset"] isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ctag_ttdilep_sf") - ) - - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) #################### # Selections # @@ -120,12 +108,12 @@ def process_shift(self, events, shift_name): req_lumi = np.ones(len(events), dtype="bool") if isRealData: req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) ## HLT - triggers = ["Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8"] + if self.selMod == "dilepttM": + triggers = ["Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8"] + elif self.selMod == "dilepttE": + triggers = ["Ele23_Ele12_CaloIdL_TrackIdL_IsoVL"] checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) if ak.all(checkHLT == False): raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) @@ -138,18 +126,43 @@ def process_shift(self, events, shift_name): for t in trig_arrs: req_trig = req_trig | t - ## Muon cuts - # muon twiki: https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMuonIdRun2 - iso_muon = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - iso_muon = ak.pad_none(iso_muon, 2) - req_muon = (ak.count(iso_muon.pt, axis=1) == 2) & (iso_muon[:, 0].pt > 20) + # Lepton selections + if self.selMod == "dilepttM": + # dilepton selections + iso_muon = events.Muon[ + (events.Muon.pt > 12) & mu_idiso(events, self._campaign) + ] + iso_lep = ak.pad_none(iso_muon, 2) + req_lep = (ak.count(iso_lep.pt, axis=1) == 2) & (iso_lep[:, 0].pt > 20) + # veto other flavors + dilep_ele = events.Electron[ + (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) + ] + req_dilepveto = ak.count(dilep_ele.pt, axis=1) == 0 + elif self.selMod == "dilepttE": + # dilepton selections + iso_ele = events.Electron[ + (events.Electron.pt > 25) & ele_mvatightid(events, self._campaign) + ] + iso_lep = ak.pad_none(iso_ele, 2) + req_lep = (ak.count(iso_lep.pt, axis=1) == 2) & (iso_lep[:, 0].pt > 27) + # veto other flavors + dilep_mu = events.Muon[ + (events.Muon.pt > 12) & mu_idiso(events, self._campaign) + ] + req_dilepveto = ak.count(dilep_mu.pt, axis=1) == 0 + # veto Z events + dilep_mass = iso_lep[:, 0] + iso_lep[:, 1] + req_dilepmass = (dilep_mass.mass > 12.0) & ( + (dilep_mass.mass < 75) | (dilep_mass.mass > 105) + ) ## Jet cuts event_jet = events.Jet[ ak.fill_none( jet_id(events, self._campaign) & ak.all( - events.Jet.metric_table(iso_muon) > 0.4, axis=2, mask_identity=True + events.Jet.metric_table(iso_lep) > 0.4, axis=2, mask_identity=True ), False, axis=-1, @@ -198,17 +211,6 @@ def process_shift(self, events, shift_name): jetindx = ak.pad_none(jetindx, 1) jetindx = jetindx[:, 0] - ## Other cuts - dilep_ele = events.Electron[ - (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) - ] - req_dilepveto = ak.count(dilep_ele.pt, axis=1) == 0 - - dilep_mass = iso_muon[:, 0] + iso_muon[:, 1] - req_dilepmass = (dilep_mass.mass > 12.0) & ( - (dilep_mass.mass < 75) | (dilep_mass.mass > 105) - ) - MET = ak.zip( { "pt": events.MET.pt, @@ -223,7 +225,7 @@ def process_shift(self, events, shift_name): event_level = ( req_trig & req_lumi - & req_muon + & req_lep & req_dilepveto & req_dilepmass & req_MET @@ -232,20 +234,50 @@ def process_shift(self, events, shift_name): & req_mujet ) event_level = ak.fill_none(event_level, False) + histname = { + "dilepttM": "ctag_ttdilep_sf", + "dilepttE": "ectag_ttdilep_sf", + } + _hist_event_dict = ( + {"": None} if self.noHist else histogrammer(events, histname[self.selMod]) + ) + + output = { + "sumw": processor.defaultdict_accumulator(float), + **_hist_event_dict, + } + if shift_name is None: + if isRealData: + output["sumw"] = len(events) + else: + output["sumw"] = ak.sum(events.genWeight) + # only dump for nominal case + if shift_name is None: + output = dump_lumi(events[req_lumi], output) if len(events[event_level]) == 0: + if self.isArray: + array_writer( + self, + events[event_level], + events, + "nominal", + dataset, + isRealData, + empty=True, + ) return {dataset: output} #################### # Selected objects # #################### - shmu = iso_muon[event_level] + shlep = iso_lep[event_level] ssmu = soft_muon[event_level] nsoftmu = ak.count(ssmu.pt, axis=1) softmu0 = ssmu softmu0 = ssmu[:, 0] - sz = shmu[:, 0] + shmu[:, 1] - isomu0 = shmu[:, 0] - isomu1 = shmu[:, 1] + sz = shlep[:, 0] + shlep[:, 1] + isomu0 = shlep[:, 0] + isomu1 = shlep[:, 1] sjets = event_jet[event_level] smuon_jet = mu_jet[event_level] nmujet = ak.count(smuon_jet.pt, axis=1) @@ -282,8 +314,10 @@ def process_shift(self, events, shift_name): weights, syst_wei, ) - if "MUO" in self.SF_map.keys(): - muSFs(shmu, self.SF_map, weights, syst_wei, False) + if "MUO" in self.SF_map.keys() and self.selMod == "dilepttM": + muSFs(shlep, self.SF_map, weights, syst_wei, False) + if "EGM" in self.SF_map.keys() and self.selMod == "dilepttE": + eleSFs(shlep, self.SF_map, weights, syst_wei, False) if "BTV" in self.SF_map.keys(): btagSFs(smuon_jet, self.SF_map, weights, "DeepJetC", syst_wei) btagSFs(smuon_jet, self.SF_map, weights, "DeepJetB", syst_wei) @@ -459,21 +493,27 @@ def process_shift(self, events, shift_name): ####################### # Create root files # ####################### + if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu - pruned_ev["dilep"] = shmu[:, 0] + shmu[:, 1] + # pruned_ev["SelJet"] = sjets + if self.selMod == "dilepttM": + pruned_ev["Muon1"] = shlep[:, 0] + pruned_ev["Muon2"] = shlep[:, 1] + if self.selMod == "dilepttE": + pruned_ev["Electron1"] = shlep[:, 0] + pruned_ev["Electron2"] = shlep[:, 1] + + pruned_ev["MuonJet"] = smuon_jet + pruned_ev["SoftMuon"] = ssmu + pruned_ev["dilep"] = shlep[:, 0] + shlep[:, 1] pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta pruned_ev["dilep", "phi"] = pruned_ev.dilep.phi pruned_ev["dilep", "mass"] = pruned_ev.dilep.mass if "PFCands" in events.fields: pruned_ev.PFCands = spfcands - pruned_ev["MuonJet"] = smuon_jet - pruned_ev["SoftMuon"] = ssmu - # Add custom variables if not isRealData: pruned_ev["weight"] = weights.weight() @@ -481,46 +521,11 @@ def process_shift(self, events, shift_name): pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( include=[ind_wei] ) - pruned_ev["dr_mujet_softmu"] = ssmu[:, 0].delta_r(smuon_jet) - pruned_ev["dr_mujet_lep1"] = shmu[:, 0].delta_r(smuon_jet) - pruned_ev["dr_mujet_lep2"] = shmu[:, 1].delta_r(smuon_jet) - pruned_ev["dr_lep1_softmu"] = shmu[:, 0].delta_r(ssmu[:, 0]) pruned_ev["soft_l_ptratio"] = ssmu[:, 0].pt / smuon_jet.pt - pruned_ev["l1_ptratio"] = shmu[:, 0].pt / smuon_jet.pt - pruned_ev["l2_ptratio"] = shmu[:, 1].pt / smuon_jet.pt - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - | (out_branch == "MuonJet") - | (out_branch == "dilep") - ), - ) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in ["Muon", "Jet", "SoftMuon", "MuonJet", "dilep", "MET"]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) return {dataset: output} def postprocess(self, accumulator): diff --git a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py deleted file mode 100644 index d834cab8..00000000 --- a/src/BTVNanoCommissioning/workflows/ctag_eDY_valid_sf.py +++ /dev/null @@ -1,448 +0,0 @@ -import collections, awkward as ak, numpy as np -import os -import uproot -from coffea import processor -from coffea.analysis_tools import Weights - -from BTVNanoCommissioning.utils.correction import ( - load_lumi, - load_SF, - eleSFs, - puwei, - btagSFs, - JME_shifts, - Roccor_shifts, -) -from BTVNanoCommissioning.helpers.func import ( - flatten, - update, - uproot_writeable, - dump_lumi, -) -from BTVNanoCommissioning.helpers.update_branch import missing_branch -from BTVNanoCommissioning.utils.histogrammer import histogrammer -from BTVNanoCommissioning.utils.selection import jet_id, mu_idiso, ele_mvatightid - - -class NanoProcessor(processor.ProcessorABC): - def __init__( - self, - year="2022", - campaign="Summer22Run3", - name="", - isSyst=False, - isArray=False, - noHist=False, - chunksize=75000, - ): - self._year = year - self._campaign = campaign - self.name = name - self.isSyst = isSyst - self.isArray = isArray - self.noHist = noHist - self.lumiMask = load_lumi(self._campaign) - self.chunksize = chunksize - ## Load corrections - self.SF_map = load_SF(self._campaign) - - @property - def accumulator(self): - return self._accumulator - - def process(self, events): - isRealData = not hasattr(events, "genWeight") - dataset = events.metadata["dataset"] - events = missing_branch(events) - shifts = [] - if "JME" in self.SF_map.keys(): - syst_JERC = self.isSyst - if self.isSyst == "JERC_split": - syst_JERC = "split" - shifts = JME_shifts( - shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC - ) - else: - if int(self._year) > 2020: - shifts = [ - ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) - ] - else: - shifts = [ - ( - { - "Jet": events.Jet, - "MET": events.PuppiMET, - "Muon": events.Muon, - }, - None, - ) - ] - if "roccor" in self.SF_map.keys(): - shifts = Roccor_shifts(shifts, self.SF_map, events, isRealData, False) - else: - shifts[0][0]["Muon"] = events.Muon - - return processor.accumulate( - self.process_shift(update(events, collections), name) - for collections, name in shifts - ) - - def process_shift(self, events, shift_name): - dataset = events.metadata["dataset"] - isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ectag_DY_sf") - ) - - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) - #################### - # Selections # - #################### - ## Lumimask - req_lumi = np.ones(len(events), dtype="bool") - if isRealData: - req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) - - ## HLT - triggers = ["Ele23_Ele12_CaloIdL_TrackIdL_IsoVL"] - checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) - if ak.all(checkHLT == False): - raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) - elif ak.any(checkHLT == False): - print(np.array(triggers)[~checkHLT], " not exist in", dataset) - trig_arrs = [ - events.HLT[_trig] for _trig in triggers if hasattr(events.HLT, _trig) - ] - req_trig = np.zeros(len(events), dtype="bool") - for t in trig_arrs: - req_trig = req_trig | t - - ## Muon cuts - dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - ## Electron cuts - dilep_ele = events.Electron[ - (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) - ] - - ## dilepton - pos_dilep = dilep_ele[dilep_ele.charge > 0] - neg_dilep = dilep_ele[dilep_ele.charge < 0] - req_dilep = ( - (ak.num(pos_dilep.pt) >= 1) - & (ak.num(neg_dilep.pt) >= 1) - & (ak.num(dilep_ele.charge) >= 2) - & (ak.num(dilep_mu.charge) == 0) - ) - pos_dilep = ak.pad_none(pos_dilep, 1, axis=1) - neg_dilep = ak.pad_none(neg_dilep, 1, axis=1) - - dilep_mass = pos_dilep[:, 0] + neg_dilep[:, 0] - req_dilepmass = ak.fill_none( - ( - (dilep_mass.mass > 81) - & (dilep_mass.mass < 101) - & (dilep_mass.pt > 15) - & ((pos_dilep[:, 0].pt > 27) | (neg_dilep[:, 0].pt > 27)) - ), - False, - axis=-1, - ) - - ## Jet cuts - event_jet = events.Jet[ - ak.fill_none( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(pos_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ) - & ( - ak.all( - events.Jet.metric_table(neg_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ), - False, - axis=-1, - ) - ] - req_jets = ak.num(event_jet.pt) >= 1 - - ## store jet index for PFCands, create mask on the jet index - jetindx = ak.mask( - ak.local_index(events.Jet.pt), - ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(pos_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ) - & ( - ak.all( - events.Jet.metric_table(neg_dilep[:, 0]) > 0.4, - axis=2, - mask_identity=True, - ) - ) - ) - == 1, - ) - jetindx = ak.pad_none(jetindx, 1) - jetindx = jetindx[:, 0] - - event_level = ak.fill_none( - req_lumi & req_trig & req_dilep & req_dilepmass & req_jets, False - ) - if len(events[event_level]) == 0: - return {dataset: output} - - #################### - # Selected objects # - #################### - sposmu = pos_dilep[event_level] - sposmu = sposmu[:, 0] - snegmu = neg_dilep[event_level] - snegmu = snegmu[:, 0] - sz = sposmu + snegmu - sjets = event_jet[event_level] - njet = ak.count(sjets.pt, axis=1) - sel_mu = ak.concatenate([sposmu, snegmu]) - sel_jet = sjets[:, 0] - sele = ak.zip( - { - b: ak.Array(np.reshape(sel_mu[b].to_numpy(), (len(sposmu[b]), 2))) - for b in sposmu.fields - } - ) - # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand - if "PFCands" in events.fields: - spfcands = events[event_level].PFCands[ - events[event_level] - .JetPFCands[ - events[event_level].JetPFCands.jetIdx == jetindx[event_level] - ] - .pFCandsIdx - ] - - #################### - # Weight & Geninfo # - #################### - weights = Weights(len(events[event_level]), storeIndividual=True) - if not isRealData: - weights.add("genweight", events[event_level].genWeight) - par_flav = (sel_jet.partonFlavour == 0) & (sel_jet.hadronFlavour == 0) - genflavor = sel_jet.hadronFlavour + 1 * par_flav - if len(self.SF_map.keys()) > 0: - syst_wei = True if self.isSyst != False else False - if "PU" in self.SF_map.keys(): - puwei( - events[event_level].Pileup.nTrueInt, - self.SF_map, - weights, - syst_wei, - ) - if "EGM" in self.SF_map.keys(): - eleSFs(sele, self.SF_map, weights, syst_wei, False) - if "BTV" in self.SF_map.keys(): - btagSFs(sel_jet, self.SF_map, weights, "DeepJetC", syst_wei) - btagSFs(sel_jet, self.SF_map, weights, "DeepJetB", syst_wei) - btagSFs(sel_jet, self.SF_map, weights, "DeepCSVB", syst_wei) - btagSFs(sel_jet, self.SF_map, weights, "DeepCSVC", syst_wei) - else: - genflavor = ak.zeros_like(sel_jet.pt, dtype=int) - - # Systematics information - if shift_name is None: - systematics = ["nominal"] + list(weights.variations) - else: - systematics = [shift_name] - exclude_btv = [ - "DeepCSVC", - "DeepCSVB", - "DeepJetB", - "DeepJetC", - ] # exclude b-tag SFs for btag inputs - - #################### - # Fill histogram # - #################### - for syst in systematics: - if self.isSyst == False and syst != "nominal": - break - if self.noHist: - break - weight = ( - weights.weight() - if syst == "nominal" or syst == shift_name - else weights.weight(modifier=syst) - ) - for histname, h in output.items(): - if ( - "Deep" in histname - and "btag" not in histname - and histname in events.Jet.fields - ): - h.fill( - syst, - genflavor, - sel_jet[histname], - weight=weights.partial_weight(exclude=exclude_btv), - ) - elif ( - "PFCands" in events.fields - and "PFCands" in histname - and histname.split("_")[1] in events.PFCands.fields - ): - h.fill( - syst, - flatten(ak.broadcast_arrays(genflavor, spfcands["pt"])[0]), - flatten(spfcands[histname.replace("PFCands_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), - spfcands["pt"], - )[0] - ), - ) - elif ( - "posl_" in histname - and histname.replace("posl_", "") in sposmu.fields - ): - h.fill( - syst, - flatten(sposmu[histname.replace("posl_", "")]), - weight=weight, - ) - elif ( - "negl_" in histname - and histname.replace("negl_", "") in snegmu.fields - ): - h.fill( - syst, - flatten(snegmu[histname.replace("negl_", "")]), - weight=weight, - ) - - elif "jet_" in histname: - h.fill( - syst, - genflavor, - sel_jet[histname.replace("jet_", "")], - weight=weight, - ) - elif ( - "btag" in histname - and "0" in histname - and histname.replace("_0", "") in events.Jet.fields - ): - h.fill( - syst="noSF", - flav=genflavor, - discr=np.where( - sel_jet[histname.replace("_0", "")] < 0, - -0.2, - sel_jet[histname.replace("_0", "")], - ), - weight=weights.partial_weight(exclude=exclude_btv), - ) - if not isRealData and "btag" in self.SF_map.keys(): - h.fill( - syst=syst, - flav=genflavor, - discr=np.where( - sel_jet[histname.replace("_0", "")] < 0, - -0.2, - sel_jet[histname.replace("_0", "")], - ), - weight=weight, - ) - output["njet"].fill(syst, njet, weight=weight) - output["dr_mumu"].fill(syst, snegmu.delta_r(sposmu), weight=weight) - output["z_pt"].fill(syst, flatten(sz.pt), weight=weight) - output["z_eta"].fill(syst, flatten(sz.eta), weight=weight) - output["z_phi"].fill(syst, flatten(sz.phi), weight=weight) - output["z_mass"].fill(syst, flatten(sz.mass), weight=weight) - output["npvs"].fill( - syst, - events[event_level].PV.npvs, - weight=weight, - ) - if not isRealData: - output["pu"].fill( - syst, - events[event_level].Pileup.nTrueInt, - weight=weight, - ) - ####################### - # Create root files # - ####################### - if self.isArray: - # Keep the structure of events and pruned the object size - pruned_ev = events[event_level] - pruned_ev.Jet = sel_jet - pruned_ev.Muon = sele - pruned_ev["dilep"] = sposmu + snegmu - pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt - pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta - pruned_ev["dilep", "phi"] = pruned_ev.dilep.phi - pruned_ev["dilep", "mass"] = pruned_ev.dilep.mass - if "PFCands" in events.fields: - pruned_ev.PFCands = spfcands - # Add custom variables - if not isRealData: - pruned_ev["weight"] = weights.weight() - for ind_wei in weights.weightStatistics.keys(): - pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( - include=[ind_wei] - ) - - pruned_ev["dr_mu1jet"] = sposmu.delta_r(sel_jet) - pruned_ev["dr_mu2jet"] = snegmu.delta_r(sel_jet) - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where((out_branch == "dilep")), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in ["Muon", "Jet", "dilep"]: - if (obj != "Muon") and ("pfRelIso04_all" == kin or "d" in kin): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) - return {dataset: output} - - def postprocess(self, accumulator): - return accumulator diff --git a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py deleted file mode 100644 index 966dfef8..00000000 --- a/src/BTVNanoCommissioning/workflows/ctag_eWc_valid_sf.py +++ /dev/null @@ -1,565 +0,0 @@ -import collections, awkward as ak, numpy as np -import os -import uproot - -from coffea import processor -from coffea.analysis_tools import Weights - -from BTVNanoCommissioning.utils.correction import ( - load_lumi, - load_SF, - eleSFs, - puwei, - btagSFs, - JME_shifts, - Roccor_shifts, -) -from BTVNanoCommissioning.helpers.func import ( - flatten, - update, - uproot_writeable, - dump_lumi, -) -from BTVNanoCommissioning.helpers.update_branch import missing_branch -from BTVNanoCommissioning.utils.histogrammer import histogrammer -from BTVNanoCommissioning.utils.selection import ( - jet_id, - mu_idiso, - ele_mvatightid, - softmu_mask, -) - - -class NanoProcessor(processor.ProcessorABC): - def __init__( - self, - year="2022", - campaign="Summer22Run3", - name="", - isSyst=False, - isArray=False, - noHist=False, - chunksize=75000, - ): - self._year = year - self._campaign = campaign - self.name = name - self.isSyst = isSyst - self.isArray = isArray - self.noHist = noHist - self.lumiMask = load_lumi(self._campaign) - self.chunksize = chunksize - ## Load corrections - self.SF_map = load_SF(self._campaign) - - @property - def accumulator(self): - return self._accumulator - - def process(self, events): - isRealData = not hasattr(events, "genWeight") - dataset = events.metadata["dataset"] - events = missing_branch(events) - shifts = [] - if "JME" in self.SF_map.keys(): - syst_JERC = self.isSyst - if self.isSyst == "JERC_split": - syst_JERC = "split" - shifts = JME_shifts( - shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC - ) - else: - if int(self._year) > 2020: - shifts = [ - ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) - ] - else: - shifts = [ - ( - { - "Jet": events.Jet, - "MET": events.PuppiMET, - "Muon": events.Muon, - }, - None, - ) - ] - if "roccor" in self.SF_map.keys(): - shifts = Roccor_shifts(shifts, self.SF_map, events, isRealData, False) - else: - shifts[0][0]["Muon"] = events.Muon - - return processor.accumulate( - self.process_shift(update(events, collections), name) - for collections, name in shifts - ) - - def process_shift(self, events, shift_name): - dataset = events.metadata["dataset"] - isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ectag_Wc_sf") - ) - - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) - #################### - # Selections # - #################### - ## Lumimask - req_lumi = np.ones(len(events), dtype="bool") - if isRealData: - req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) - - ## HLT - triggers = ["Ele32_WPTight_Gsf_L1DoubleEG"] - checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) - if ak.all(checkHLT == False): - raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) - elif ak.any(checkHLT == False): - print(np.array(triggers)[~checkHLT], " not exist in", dataset) - trig_arrs = [ - events.HLT[_trig] for _trig in triggers if hasattr(events.HLT, _trig) - ] - req_trig = np.zeros(len(events), dtype="bool") - for t in trig_arrs: - req_trig = req_trig | t - - ## Electron cuts - iso_ele = events.Electron[ - (events.Electron.pt > 34) & ele_mvatightid(events, self._campaign) - ] - req_ele = ak.count(iso_ele.pt, axis=1) == 1 - jet_sel = ak.fill_none( - jet_id(events, self._campaign) - & (ak.all(events.Jet.metric_table(iso_ele) > 0.5, axis=2)), - False, - axis=-1, - ) - iso_ele = ak.pad_none(iso_ele, 1, axis=1) - iso_ele = iso_ele[:, 0] - iso_eindx = ak.mask( - ak.local_index(events.Electron.pt), - ((events.Electron.pt > 34) & ele_mvatightid(events, self._campaign)) == 1, - ) - iso_eindx = ak.pad_none(iso_eindx, 1) - iso_eindx = iso_eindx[:, 0] - - ## Jet cuts - - if "DeepJet_nsv" in events.Jet.fields: - jet_sel = jet_sel & (events.Jet.DeepJet_nsv > 0) - event_jet = events.Jet[jet_sel] - req_jets = (ak.num(event_jet.pt) >= 1) & (ak.num(event_jet.pt) <= 3) - - ## Soft Muon cuts - soft_muon = events.Muon[softmu_Ï€mask(events, self._campaign)] - req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - mujetsel = ak.fill_none( - (ak.all(event_jet.metric_table(soft_muon) <= 0.4, axis=2)) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)), - False, - axis=-1, - ) - mujetsel2 = ak.fill_none( - ( - ak.all( - events.Jet.metric_table(soft_muon) <= 0.4, - axis=2, - ) - ) - & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)), - False, - axis=-1, - ) - - ## Muon-jet cuts - soft_muon = ak.pad_none(soft_muon, 1, axis=1) - - ## Muon-jet cuts - mu_jet = event_jet[mujetsel] - otherjets = event_jet[~mujetsel] - req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 - mu_jet = ak.pad_none(mu_jet, 1, axis=1) - - ## store jet index for PFCands, create mask on the jet index - jet_selpf = (jet_sel) & (mujetsel2) - if "DeepJet_nsv" in events.Jet.fields: - jet_selpf = jet_selpf & (events.Jet.DeepJet_nsv > 0) - jetindx = ak.mask(ak.local_index(events.Jet.pt), jet_selpf == True) - jetindx = ak.pad_none(jetindx, 1) - jetindx = jetindx[:, 0] - - # Other cuts - req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < 0.6 - - req_QCDveto = ( - (iso_ele.pfRelIso03_all < 0.05) - & (abs(iso_ele.dz) < 0.02) - & (abs(iso_ele.dxy) < 0.01) - & (iso_ele.sip3d < 2.5) - & ( - iso_ele.pt - / ak.firsts( - events.Jet[ - (events.Jet.electronIdx1 == iso_eindx) - | ((events.Jet.electronIdx2 == iso_eindx)) - ].pt - ) - > 0.75 - ) - ) - - dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - dilep_ele = events.Electron[ - (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) - ] - req_dilepveto = ( - ak.count(dilep_mu.pt, axis=1) + ak.count(dilep_ele.pt, axis=1) != 2 - ) - - MET = ak.zip( - { - "pt": events.MET.pt, - "eta": ak.zeros_like(events.MET.pt), - "phi": events.MET.phi, - "mass": ak.zeros_like(events.MET.pt), - }, - with_name="PtEtaPhiMLorentzVector", - ) - Wmass = MET + iso_ele - req_Wmass = Wmass.mass > 55 - - event_level = ( - req_trig - & req_lumi - & req_ele - & req_jets - & req_softmu - & req_mujet - & req_Wmass - & req_dilepveto - & req_QCDveto - & req_pTratio - ) - event_level = ak.fill_none(event_level, False) - if len(events[event_level]) == 0: - return {dataset: output} - - #################### - # Selected objects # - #################### - shmu = iso_ele[event_level] - sjets = event_jet[event_level] - ssmu = soft_muon[event_level] - smet = MET[event_level] - smuon_jet = mu_jet[event_level] - sotherjets = otherjets[event_level] - nsoftmu = ak.count(ssmu.pt, axis=1) - nmujet = ak.count(smuon_jet.pt, axis=1) - smuon_jet = smuon_jet[:, 0] - ssmu = ssmu[:, 0] - sz = shmu + ssmu - sw = shmu + smet - osss = ak.values_astype(shmu.charge * ssmu.charge * -1, int) - njet = ak.count(sjets.pt, axis=1) - # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand - if "PFCands" in events.fields: - spfcands = events[event_level].PFCands[ - events[event_level] - .JetPFCands[ - events[event_level].JetPFCands.jetIdx == jetindx[event_level] - ] - .pFCandsIdx - ] - - #################### - # Weight & Geninfo # - #################### - weights = Weights(len(events[event_level]), storeIndividual=True) - if not isRealData: - weights.add("genweight", events[event_level].genWeight) - genflavor = sjets.hadronFlavour + 1 * ( - (sjets.partonFlavour == 0) & (sjets.hadronFlavour == 0) - ) - smflav = smuon_jet.hadronFlavour + 1 * ( - (smuon_jet.partonFlavour == 0) & (smuon_jet.hadronFlavour == 0) - ) - if len(self.SF_map.keys()) > 0: - syst_wei = True if self.isSyst != False else False - if "PU" in self.SF_map.keys(): - puwei( - events[event_level].Pileup.nTrueInt, - self.SF_map, - weights, - syst_wei, - ) - if "EGM" in self.SF_map.keys(): - eleSFs(shmu, self.SF_map, weights, syst_wei, False) - if "BTV" in self.SF_map.keys(): - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetC", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) - - else: - genflavor = ak.zeros_like(sjets.pt, dtype=int) - smflav = ak.zeros_like(smuon_jet.pt, dtype=int) - - # Systematics information - if shift_name is None: - systematics = ["nominal"] + list(weights.variations) - else: - systematics = [shift_name] - exclude_btv = [ - "DeepCSVC", - "DeepCSVB", - "DeepJetB", - "DeepJetC", - ] # exclude b-tag SFs for btag inputs - - #################### - # Fill histogram # - #################### - for syst in systematics: - if self.isSyst == False and syst != "nominal": - break - if self.noHist: - break - weight = ( - weights.weight() - if syst == "nominal" or syst == shift_name - else weights.weight(modifier=syst) - ) - for histname, h in output.items(): - if ( - "Deep" in histname - and "btag" not in histname - and histname in events.Jet.fields - ): - h.fill( - syst, - flatten(genflavor), - flatten(ak.broadcast_arrays(osss, sjets["pt"])[0]), - flatten(sjets[histname]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif ( - "PFCands" in events.fields - and "PFCands" in histname - and histname.split("_")[1] in events.PFCands.fields - ): - h.fill( - syst, - flatten(ak.broadcast_arrays(smflav, spfcands["pt"])[0]), - flatten(ak.broadcast_arrays(osss, spfcands["pt"])[0]), - flatten(spfcands[histname.replace("PFCands_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), - spfcands["pt"], - )[0] - ), - ) - elif "jet_" in histname and "mu" not in histname: - h.fill( - syst, - flatten(genflavor), - flatten(ak.broadcast_arrays(osss, sjets["pt"])[0]), - flatten(sjets[histname.replace("jet_", "")]), - weight=flatten(ak.broadcast_arrays(weight, sjets["pt"])[0]), - ) - elif "hl_" in histname and histname.replace("hl_", "") in shmu.fields: - h.fill( - syst, - osss, - flatten(shmu[histname.replace("hl_", "")]), - weight=weight, - ) - elif ( - "soft_l" in histname - and histname.replace("soft_l_", "") in ssmu.fields - ): - h.fill( - syst, - smflav, - osss, - flatten(ssmu[histname.replace("soft_l_", "")]), - weight=weight, - ) - elif "mujet_" in histname: - h.fill( - syst, - smflav, - osss, - flatten(smuon_jet[histname.replace("mujet_", "")]), - weight=weight, - ) - elif "btag" in histname: - for i in range(2): - if ( - str(i) not in histname - or histname.replace(f"_{i}", "") not in events.Jet.fields - ): - continue - h.fill( - syst="noSF", - flav=smflav, - osss=osss, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weights.partial_weight(exclude=exclude_btv), - ) - if not isRealData and "btag" in self.SF_map.keys(): - h.fill( - syst=syst, - flav=smflav, - osss=osss, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weight, - ) - - output["njet"].fill(syst, osss, njet, weight=weight) - output["nmujet"].fill(syst, osss, nmujet, weight=weight) - output["nsoftmu"].fill(syst, osss, nsoftmu, weight=weight) - output["hl_ptratio"].fill( - syst, - genflavor[:, 0], - osss=osss, - ratio=shmu.pt / sjets[:, 0].pt, - weight=weight, - ) - output["soft_l_ptratio"].fill( - syst, - flav=smflav, - osss=osss, - ratio=ssmu.pt / smuon_jet.pt, - weight=weight, - ) - output["dr_lmujetsmu"].fill( - syst, - flav=smflav, - osss=osss, - dr=smuon_jet.delta_r(ssmu), - weight=weight, - ) - output["dr_lmujethmu"].fill( - syst, - flav=smflav, - osss=osss, - dr=smuon_jet.delta_r(shmu), - weight=weight, - ) - output["dr_lmusmu"].fill( - syst, - osss=osss, - dr=shmu.delta_r(ssmu), - weight=weight, - ) - output["z_pt"].fill(syst, osss, flatten(sz.pt), weight=weight) - output["z_eta"].fill(syst, osss, flatten(sz.eta), weight=weight) - output["z_phi"].fill(syst, osss, flatten(sz.phi), weight=weight) - output["z_mass"].fill(syst, osss, flatten(sz.mass), weight=weight) - output["w_pt"].fill(syst, osss, flatten(sw.pt), weight=weight) - output["w_eta"].fill(syst, osss, flatten(sw.eta), weight=weight) - output["w_phi"].fill(syst, osss, flatten(sw.phi), weight=weight) - output["w_mass"].fill(syst, osss, flatten(sw.mass), weight=weight) - output["MET_pt"].fill(syst, osss, flatten(smet.pt), weight=weight) - output["MET_phi"].fill(syst, osss, flatten(smet.phi), weight=weight) - output["npvs"].fill( - syst, - events[event_level].PV.npvs, - weight=weight, - ) - if not isRealData: - output["pu"].fill( - syst, - events[event_level].Pileup.nTrueInt, - weight=weight, - ) - ####################### - # Create root files # - ####################### - if self.isArray: - # Keep the structure of events and pruned the object size - pruned_ev = events[event_level] - pruned_ev["Jet"] = sjets - pruned_ev["Muon"] = shmu - pruned_ev["MuonJet"] = smuon_jet - pruned_ev["OtherJets"] = sotherjets - pruned_ev["SoftMuon"] = ssmu - pruned_ev["osss"] = osss - if "PFCands" in events.fields: - pruned_ev.PFCands = spfcands - # Add custom variables - if not isRealData: - pruned_ev["weight"] = weights.weight() - for ind_wei in weights.weightStatistics.keys(): - pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( - include=[ind_wei] - ) - - pruned_ev["dr_mujet_softmu"] = ssmu.delta_r(smuon_jet) - pruned_ev["dr_mujet_lep1"] = shmu.delta_r(smuon_jet) - pruned_ev["dr_lep1_softmu"] = shmu.delta_r(ssmu) - pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt - pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - # | (out_branch == "MuonJet") - | (out_branch == "dilep") - ), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in [ - "Muon", - "Jet", - "SoftMuon", - # "MuonJet", - "dilep", - "charge", - "MET", - ]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] - ) - # # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - - with uproot.recreate( - f"{self.name}/{dataset}/{events.metadata['filename'][events.metadata['filename'].rfind('/')+1:-5]}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) - return {dataset: output} - - def postprocess(self, accumulator): - return accumulator diff --git a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py deleted file mode 100644 index 43ae5801..00000000 --- a/src/BTVNanoCommissioning/workflows/ctag_edileptt_valid_sf.py +++ /dev/null @@ -1,523 +0,0 @@ -import collections, awkward as ak, numpy as np -import os -import uproot -from coffea import processor -from coffea.analysis_tools import Weights - -from BTVNanoCommissioning.utils.correction import ( - load_lumi, - load_SF, - eleSFs, - puwei, - btagSFs, - JME_shifts, - Roccor_shifts, -) -from BTVNanoCommissioning.helpers.func import ( - flatten, - update, - uproot_writeable, - dump_lumi, -) -from BTVNanoCommissioning.helpers.update_branch import missing_branch -from BTVNanoCommissioning.utils.histogrammer import histogrammer -from BTVNanoCommissioning.utils.selection import ( - jet_id, - mu_idiso, - ele_mvatightid, - softmu_mask, -) - - -class NanoProcessor(processor.ProcessorABC): - def __init__( - self, - year="2022", - campaign="Summer22Run3", - name="", - isSyst=False, - isArray=False, - noHist=False, - chunksize=75000, - ): - self._year = year - self._campaign = campaign - self.name = name - self.isSyst = isSyst - self.isArray = isArray - self.noHist = noHist - self.lumiMask = load_lumi(self._campaign) - self.chunksize = chunksize - ## Load corrections - self.SF_map = load_SF(self._campaign) - - @property - def accumulator(self): - return self._accumulator - - def process(self, events): - isRealData = not hasattr(events, "genWeight") - dataset = events.metadata["dataset"] - events = missing_branch(events) - shifts = [] - if "JME" in self.SF_map.keys(): - syst_JERC = False - - if self.isSyst == "JERC_split": - syst_JERC = "split" - shifts = JME_shifts( - shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC - ) - else: - if int(self._year) > 2020: - shifts = [ - ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) - ] - else: - shifts = [ - ( - { - "Jet": events.Jet, - "MET": events.PuppiMET, - "Muon": events.Muon, - }, - None, - ) - ] - if "roccor" in self.SF_map.keys(): - shifts = Roccor_shifts(shifts, self.SF_map, events, isRealData, False) - else: - shifts[0][0]["Muon"] = events.Muon - - return processor.accumulate( - self.process_shift(update(events, collections), name) - for collections, name in shifts - ) - - def process_shift(self, events, shift_name): - dataset = events.metadata["dataset"] - isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ectag_ttdilep_sf") - ) - - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) - #################### - # Selections # - #################### - ## Lumimask - req_lumi = np.ones(len(events), dtype="bool") - if isRealData: - req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) - - ## HLT - triggers = ["Ele23_Ele12_CaloIdL_TrackIdL_IsoVL"] - checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) - if ak.all(checkHLT == False): - raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) - elif ak.any(checkHLT == False): - print(np.array(triggers)[~checkHLT], " not exist in", dataset) - trig_arrs = [ - events.HLT[_trig] for _trig in triggers if hasattr(events.HLT, _trig) - ] - req_trig = np.zeros(len(events), dtype="bool") - for t in trig_arrs: - req_trig = req_trig | t - - ## Electron cuts - iso_ele = events.Electron[ - (events.Electron.pt > 25) & ele_mvatightid(events, self._campaign) - ] - iso_ele = ak.pad_none(iso_ele, 2) - req_ele = (ak.count(iso_ele.pt, axis=1) == 2) & (iso_ele[:, 0].pt > 27) - - ## Jet cuts - event_jet = events.Jet[ - ak.fill_none( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_ele) > 0.4, - axis=2, - mask_identity=True, - ) - ), - False, - axis=-1, - ) - ] - req_jets = ak.count(event_jet.pt, axis=1) >= 2 - - ## Soft Muon cuts - soft_muon = events.Muon[softmu_mask(events, self._campaign)] - req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - - ## Muon jet cuts - mu_jet = event_jet[ - ak.fill_none( - ( - ak.all( - event_jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)), - False, - axis=-1, - ) - ] - req_mujet = ak.count(mu_jet.pt, axis=1) >= 1 - - ## store jet index for PFCands, create mask on the jet index - jetindx = ak.mask( - ak.local_index(events.Jet.pt), - ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) - ) - == 1, - ) - jetindx = ak.pad_none(jetindx, 1) - jetindx = jetindx[:, 0] - - # Other cuts - dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - req_dilepveto = ak.count(dilep_mu.pt, axis=1) == 0 - - dilep_mass = iso_ele[:, 0] + iso_ele[:, 1] - req_dilepmass = (dilep_mass.mass > 12.0) & ( - (dilep_mass.mass < 75) | (dilep_mass.mass > 105) - ) - - MET = ak.zip( - { - "pt": events.MET.pt, - "eta": ak.zeros_like(events.MET.pt), - "phi": events.MET.phi, - "mass": ak.zeros_like(events.MET.pt), - }, - with_name="PtEtaPhiMLorentzVector", - ) - req_MET = MET.pt > 40 - - event_level = ( - req_trig - & req_lumi - & req_ele - & req_dilepveto - & req_dilepmass - & req_MET - & req_jets - & req_softmu - & req_mujet - ) - event_level = ak.fill_none(event_level, False) - if len(events[event_level]) == 0: - return {dataset: output} - - #################### - # Selected objects # - #################### - shmu = iso_ele[event_level] - ssmu = soft_muon[event_level] - nsoftmu = ak.count(ssmu.pt, axis=1) - softmu0 = ssmu[:, 0] - sz = shmu[:, 0] + shmu[:, 1] - isomu0 = shmu[:, 0] - isomu1 = shmu[:, 1] - sjets = event_jet[event_level] - smuon_jet = mu_jet[event_level] - nmujet = ak.count(smuon_jet.pt, axis=1) - smuon_jet = smuon_jet[:, 0] - smet = MET[event_level] - njet = ak.count(sjets.pt, axis=1) - # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand - if "PFCands" in events.fields: - spfcands = events[event_level].PFCands[ - events[event_level] - .JetPFCands[ - events[event_level].JetPFCands.jetIdx == jetindx[event_level] - ] - .pFCandsIdx - ] - - #################### - # Weight & Geninfo # - #################### - weights = Weights(len(events[event_level]), storeIndividual=True) - if not isRealData: - weights.add("genweight", events[event_level].genWeight) - par_flav = (sjets.partonFlavour == 0) & (sjets.hadronFlavour == 0) - genflavor = ak.values_astype(sjets.hadronFlavour + 1 * par_flav, int) - smpu = (smuon_jet.partonFlavour == 0) & (smuon_jet.hadronFlavour == 0) - smflav = ak.values_astype(1 * smpu + smuon_jet.hadronFlavour, int) - if len(self.SF_map.keys()) > 0: - syst_wei = True if self.isSyst != False else False - if "PU" in self.SF_map.keys(): - puwei( - events[event_level].Pileup.nTrueInt, - self.SF_map, - weights, - syst_wei, - ) - if "EGM" in self.SF_map.keys(): - eleSFs(shmu, self.SF_map, weights, syst_wei, False) - if "BTV" in self.SF_map.keys(): - btagSFs(sjets, self.SF_map, weights, "DeepJetC", syst_wei) - btagSFs(sjets, self.SF_map, weights, "DeepJetB", syst_wei) - btagSFs(sjets, self.SF_map, weights, "DeepCSVB", syst_wei) - btagSFs(sjets, self.SF_map, weights, "DeepCSVC", syst_wei) - else: - genflavor = ak.zeros_like(sjets.pt, dtype=int) - smflav = ak.zeros_like(smuon_jet.pt, dtype=int) - - # Systematics information - if shift_name is None: - systematics = ["nominal"] + list(weights.variations) - else: - systematics = [shift_name] - exclude_btv = [ - "DeepCSVC", - "DeepCSVB", - "DeepJetB", - "DeepJetC", - ] # exclude b-tag SFs for btag inputs - - #################### - # Fill histogram # - #################### - for syst in systematics: - if self.isSyst == False and syst != "nominal": - break - if self.noHist: - break - weight = ( - weights.weight() - if syst == "nominal" or syst == shift_name - else weights.weight(modifier=syst) - ) - for histname, h in output.items(): - if ( - "Deep" in histname - and "btag" not in histname - and histname in events.Jet.fields - ): - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif ( - "PFCands" in events.fields - and "PFCands" in histname - and histname.split("_")[1] in events.PFCands.fields - ): - h.fill( - syst, - flatten(ak.broadcast_arrays(smflav, spfcands["pt"])[0]), - flatten(spfcands[histname.replace("PFCands_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), - spfcands["pt"], - )[0] - ), - ) - elif "jet_" in histname and "mu" not in histname: - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname.replace("jet_", "")]), - weight=flatten(ak.broadcast_arrays(weight, sjets["pt"])[0]), - ) - elif "hl_" in histname and histname.replace("hl_", "") in isomu0.fields: - h.fill( - syst, - flatten(isomu0[histname.replace("hl_", "")]), - weight=weight, - ) - elif "sl_" in histname and histname.replace("sl_", "") in isomu1.fields: - h.fill( - syst, - flatten(isomu1[histname.replace("sl_", "")]), - weight=weight, - ) - elif "soft_l" in histname and not "ptratio" in histname: - h.fill( - syst, - smflav, - flatten(softmu0[histname.replace("soft_l_", "")]), - weight=weight, - ) - elif "lmujet_" in histname: - h.fill( - syst, - smflav, - flatten(smuon_jet[histname.replace("lmujet_", "")]), - weight=weight, - ) - elif "btag" in histname: - for i in range(2): - if ( - str(i) not in histname - or histname.replace(f"_{i}", "") not in events.Jet.fields - ): - continue - h.fill( - syst="noSF", - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weights.partial_weight(exclude=exclude_btv), - ) - if not isRealData and "btag" in self.SF_map.keys(): - h.fill( - syst=syst, - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weight, - ) - - output["njet"].fill(syst, njet, weight=weight) - output["nmujet"].fill(syst, nmujet, weight=weight) - output["nsoftmu"].fill(syst, nsoftmu, weight=weight) - output["hl_ptratio"].fill( - syst, - genflavor[:, 0], - ratio=isomu0.pt / sjets[:, 0].pt, - weight=weight, - ) - output["sl_ptratio"].fill( - syst, - genflavor[:, 0], - ratio=isomu1.pt / sjets[:, 0].pt, - weight=weight, - ) - output["soft_l_ptratio"].fill( - syst, - flav=smflav, - ratio=softmu0.pt / smuon_jet.pt, - weight=weight, - ) - output["dr_lmujetsmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(softmu0), - weight=weight, - ) - output["dr_lmujethmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(isomu0), - weight=weight, - ) - output["dr_lmusmu"].fill(syst, isomu0.delta_r(softmu0), weight=weight) - output["z_pt"].fill(syst, flatten(sz.pt), weight=weight) - output["z_eta"].fill(syst, flatten(sz.eta), weight=weight) - output["z_phi"].fill(syst, flatten(sz.phi), weight=weight) - output["z_mass"].fill(syst, flatten(sz.mass), weight=weight) - output["MET_pt"].fill(syst, flatten(smet.pt), weight=weight) - output["MET_phi"].fill(syst, flatten(smet.phi), weight=weight) - output["npvs"].fill( - syst, - events[event_level].PV.npvs, - weight=weight, - ) - if not isRealData: - output["pu"].fill( - syst, - events[event_level].Pileup.nTrueInt, - weight=weight, - ) - ####################### - # Create root files # - ####################### - if self.isArray: - # Keep the structure of events and pruned the object size - pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu - pruned_ev["dilep"] = shmu[:, 0] + shmu[:, 1] - pruned_ev["dilep", "pt"] = pruned_ev.dilep.pt - pruned_ev["dilep", "eta"] = pruned_ev.dilep.eta - pruned_ev["dilep", "phi"] = pruned_ev.dilep.phi - pruned_ev["dilep", "mass"] = pruned_ev.dilep.mass - if "PFCands" in events.fields: - pruned_ev.PFCands = spfcands - pruned_ev["MuonJet"] = smuon_jet - pruned_ev["SoftMuon"] = ssmu - - # Add custom variables - if not isRealData: - pruned_ev["weight"] = weights.weight() - for ind_wei in weights.weightStatistics.keys(): - pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( - include=[ind_wei] - ) - - pruned_ev["dr_mujet_softmu"] = ssmu[:, 0].delta_r(smuon_jet) - pruned_ev["dr_mujet_lep1"] = shmu[:, 0].delta_r(smuon_jet) - pruned_ev["dr_mujet_lep2"] = shmu[:, 1].delta_r(smuon_jet) - pruned_ev["dr_lep1_softmu"] = shmu[:, 0].delta_r(ssmu[:, 0]) - pruned_ev["soft_l_ptratio"] = ssmu[:, 0].pt / smuon_jet.pt - pruned_ev["l1_ptratio"] = shmu[:, 0].pt / smuon_jet.pt - pruned_ev["l2_ptratio"] = shmu[:, 1].pt / smuon_jet.pt - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - | (out_branch == "MuonJet") - | (out_branch == "dilep") - ), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in ["Muon", "Jet", "SoftMuon", "MuonJet", "MET"]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) - return {dataset: output} - - def postprocess(self, accumulator): - return accumulator diff --git a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py index dfebeee0..c56e86a1 100644 --- a/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ctag_emdileptt_valid_sf.py @@ -17,11 +17,11 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -69,7 +69,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] diff --git a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py deleted file mode 100644 index a22a8f24..00000000 --- a/src/BTVNanoCommissioning/workflows/ctag_ettsemilep_valid_sf.py +++ /dev/null @@ -1,563 +0,0 @@ -import gc, collections, pickle, os, sys, numpy as np, awkward as ak -import os -import uproot - -from coffea import processor -from coffea.analysis_tools import Weights - -from BTVNanoCommissioning.utils.correction import ( - load_lumi, - load_SF, - eleSFs, - puwei, - btagSFs, - JME_shifts, - Roccor_shifts, -) -from BTVNanoCommissioning.helpers.func import ( - flatten, - update, - uproot_writeable, - dump_lumi, -) -from BTVNanoCommissioning.helpers.update_branch import missing_branch -from BTVNanoCommissioning.utils.histogrammer import histogrammer -from BTVNanoCommissioning.utils.selection import ( - jet_id, - mu_idiso, - ele_mvatightid, - softmu_mask, -) - - -class NanoProcessor(processor.ProcessorABC): - # Define histograms - def __init__( - self, - year="2022", - campaign="Summer22Run3", - name="", - isSyst=False, - isArray=False, - noHist=False, - chunksize=75000, - ): - self._year = year - self._campaign = campaign - self.name = name - self.isSyst = isSyst - self.isArray = isArray - self.noHist = noHist - self.lumiMask = load_lumi(self._campaign) - self.chunksize = chunksize - ## Load corrections - self.SF_map = load_SF(self._campaign) - - @property - def accumulator(self): - return self._accumulator - - def process(self, events): - isRealData = not hasattr(events, "genWeight") - dataset = events.metadata["dataset"] - events = missing_branch(events) - shifts = [] - if "JME" in self.SF_map.keys(): - syst_JERC = self.isSyst - if self.isSyst == "JERC_split": - syst_JERC = "split" - shifts = JME_shifts( - shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC - ) - else: - if int(self._year) > 2020: - shifts = [ - ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) - ] - else: - shifts = [ - ( - { - "Jet": events.Jet, - "MET": events.PuppiMET, - "Muon": events.Muon, - }, - None, - ) - ] - if "roccor" in self.SF_map.keys(): - shifts = Roccor_shifts(shifts, self.SF_map, events, isRealData, False) - else: - shifts[0][0]["Muon"] = events.Muon - - return processor.accumulate( - self.process_shift(update(events, collections), name) - for collections, name in shifts - ) - - def process_shift(self, events, shift_name): - dataset = events.metadata["dataset"] - isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ectag_ttsemilep_sf") - ) - if _hist_event_dict == None: - _hist_event_dict[""]: None - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) - - #################### - # Selections # - #################### - ## Lumimask - req_lumi = np.ones(len(events), dtype="bool") - if isRealData: - req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) - - ## HLT - triggers = ["Ele32_WPTight_Gsf_L1DoubleEG"] - checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) - if ak.all(checkHLT == False): - raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) - elif ak.any(checkHLT == False): - print(np.array(triggers)[~checkHLT], " not exist in", dataset) - trig_arrs = [ - events.HLT[_trig] for _trig in triggers if hasattr(events.HLT, _trig) - ] - req_trig = np.zeros(len(events), dtype="bool") - for t in trig_arrs: - req_trig = req_trig | t - - ## Electron cuts - iso_ele = events.Electron[ - (events.Electron.pt > 34) & ele_mvatightid(events, self._campaign) - ] - req_ele = ak.count(iso_ele.pt, axis=1) == 1 - iso_ele = ak.pad_none(iso_ele, 1, axis=1) - iso_ele = iso_ele[:, 0] - iso_eindx = ak.mask( - ak.local_index(events.Electron.pt), - ((events.Electron.pt > 34) & ele_mvatightid(events, self._campaign)) == 1, - ) - iso_eindx = ak.pad_none(iso_eindx, 1) - iso_eindx = iso_eindx[:, 0] - ## Jet cuts - event_jet = events.Jet[ - ak.fill_none( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_ele) > 0.5, - axis=2, - mask_identity=True, - ) - ), - False, - axis=-1, - ) - ] - req_jets = ak.num(event_jet.pt) >= 4 - - ## Soft Muon cuts - soft_muon = events.Muon[softmu_mask(events, self._campaign)] - req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - soft_muon = ak.pad_none(soft_muon, 1, axis=1) - - ## Muon-jet cuts - mu_jet = event_jet[ - ak.fill_none( - ( - ak.all( - event_jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)), - False, - axis=-1, - ) - ] - req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 - mu_jet = ak.pad_none(mu_jet, 1, axis=1) - - ## store jet index for PFCands, create mask on the jet index - jetindx = ak.mask( - ak.local_index(events.Jet.pt), - ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_ele) > 0.5, - axis=2, - mask_identity=True, - ) - ) - & ( - ak.all( - events.Jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) - ) - == 1, - ) - jetindx = ak.pad_none(jetindx, 1) - jetindx = jetindx[:, 0] - - # Other cuts - req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < 0.6 - - req_QCDveto = ( - (iso_ele.pfRelIso03_all < 0.05) - & (abs(iso_ele.dz) < 0.02) - & (abs(iso_ele.dxy) < 0.01) - & (iso_ele.sip3d < 2.5) - & ( - iso_ele.pt - / ak.firsts( - events.Jet[ - (events.Jet.electronIdx1 == iso_eindx) - | ((events.Jet.electronIdx2 == iso_eindx)) - ].pt - ) - > 0.75 - ) - ) - - dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - dilep_ele = events.Electron[ - (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) - ] - req_dilepveto = ( - ak.count(dilep_mu.pt, axis=1) + ak.count(dilep_ele.pt, axis=1) != 2 - ) - - MET = ak.zip( - { - "pt": events.MET.pt, - "eta": ak.zeros_like(events.MET.pt), - "phi": events.MET.phi, - "mass": ak.zeros_like(events.MET.pt), - }, - with_name="PtEtaPhiMLorentzVector", - ) - Wmass = MET + iso_ele - req_Wmass = Wmass.mass > 55 - - event_level = ( - req_trig - & req_lumi - & req_ele - & req_jets - & req_softmu - & req_mujet - & req_Wmass - & req_dilepveto - & req_QCDveto - & req_pTratio - ) - event_level = ak.fill_none(event_level, False) - if len(events[event_level]) == 0: - return {dataset: output} - - #################### - # Selected objects # - #################### - shmu = iso_ele[event_level] - sjets = event_jet[event_level] - ssmu = soft_muon[event_level] - smet = MET[event_level] - smuon_jet = mu_jet[event_level] - nsoftmu = ak.count(ssmu.pt, axis=1) - nmujet = ak.count(smuon_jet.pt, axis=1) - smuon_jet = smuon_jet[:, 0] - ssmu = ssmu[:, 0] - sz = shmu + ssmu - sw = shmu + smet - njet = ak.count(sjets.pt, axis=1) - if "PFCands" in events.fields: - spfcands = events[event_level].PFCands[ - events[event_level] - .JetPFCands[ - events[event_level].JetPFCands.jetIdx == jetindx[event_level] - ] - .pFCandsIdx - ] - - #################### - # Weight & Geninfo # - #################### - weights = Weights(len(events[event_level]), storeIndividual=True) - if not isRealData: - weights.add("genweight", events[event_level].genWeight) - genflavor = sjets.hadronFlavour + 1 * ( - (sjets.partonFlavour == 0) & (sjets.hadronFlavour == 0) - ) - smflav = ( - 1 * ((smuon_jet.partonFlavour == 0) & (smuon_jet.hadronFlavour == 0)) - + smuon_jet.hadronFlavour - ) - if len(self.SF_map.keys()) > 0: - syst_wei = True if self.isSyst != False else False - if "PU" in self.SF_map.keys(): - puwei( - events[event_level].Pileup.nTrueInt, - self.SF_map, - weights, - syst_wei, - ) - if "EGM" in self.SF_map.keys(): - eleSFs(shmu, self.SF_map, weights, syst_wei, False) - if "BTV" in self.SF_map.keys(): - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetC", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) - - else: - genflavor = ak.zeros_like(sjets.pt, dtype=int) - smflav = ak.zeros_like(smuon_jet.pt, dtype=int) - - # Systematics information - if shift_name is None: - systematics = ["nominal"] + list(weights.variations) - else: - systematics = [shift_name] - exclude_btv = [ - "DeepCSVC", - "DeepCSVB", - "DeepJetB", - "DeepJetC", - ] # exclude b-tag SFs for btag inputs - - #################### - # Fill histogram # - #################### - for syst in systematics: - if self.isSyst == False and syst != "nominal": - break - if self.noHist: - break - weight = ( - weights.weight() - if syst == "nominal" or syst == shift_name - else weights.weight(modifier=syst) - ) - for histname, h in output.items(): - if ( - "Deep" in histname - and "btag" not in histname - and histname in events.Jet.fields - ): - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif "jet_" in histname and "mu" not in histname: - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname.replace("jet_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif "hl_" in histname and histname.replace("hl_", "") in shmu.fields: - h.fill( - syst, - flatten(shmu[histname.replace("hl_", "")]), - weight=weight, - ) - elif ( - "soft_l" in histname - and histname.replace("soft_l_", "") in ssmu.fields - ): - h.fill( - syst, - smflav, - flatten(ssmu[histname.replace("soft_l_", "")]), - weight=weight, - ) - elif "mujet_" in histname: - h.fill( - syst, - smflav, - flatten(smuon_jet[histname.replace("mujet_", "")]), - weight=weight, - ) - elif ( - "PFCands" in events.fields - and "PFCands" in histname - and histname.split("_")[1] in events.PFCands.fields - ): - h.fill( - syst, - flatten(ak.broadcast_arrays(smflav, spfcands["pt"])[0]), - flatten(spfcands[histname.replace("PFCands_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), - spfcands["pt"], - )[0] - ), - ) - elif "btag" in histname: - for i in range(2): - if ( - str(i) not in histname - or histname.replace(f"_{i}", "") not in events.Jet.fields - ): - continue - h.fill( - syst="noSF", - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weights.partial_weight(exclude=exclude_btv), - ) - if not isRealData and "btag" in self.SF_map.keys(): - h.fill( - syst=syst, - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weight, - ) - output["njet"].fill(syst, njet, weight=weight) - output["nmujet"].fill(syst, nmujet, weight=weight) - output["nsoftmu"].fill(syst, nsoftmu, weight=weight) - output["hl_ptratio"].fill( - syst, - genflavor[:, 0], - ratio=shmu.pt / sjets[:, 0].pt, - weight=weight, - ) - output["soft_l_ptratio"].fill( - syst, - flav=smflav, - ratio=ssmu.pt / smuon_jet.pt, - weight=weight, - ) - output["dr_lmujetsmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(ssmu), - weight=weight, - ) - output["dr_lmujethmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(shmu), - weight=weight, - ) - output["dr_lmusmu"].fill(syst, dr=shmu.delta_r(ssmu), weight=weight) - output["z_pt"].fill(syst, flatten(sz.pt), weight=weight) - output["z_eta"].fill(syst, flatten(sz.eta), weight=weight) - output["z_phi"].fill(syst, flatten(sz.phi), weight=weight) - output["z_mass"].fill(syst, flatten(sz.mass), weight=weight) - output["w_pt"].fill(syst, flatten(sw.pt), weight=weight) - output["w_eta"].fill(syst, flatten(sw.eta), weight=weight) - output["w_phi"].fill(syst, flatten(sw.phi), weight=weight) - output["w_mass"].fill(syst, flatten(sw.mass), weight=weight) - output["MET_pt"].fill(syst, flatten(smet.pt), weight=weight) - output["MET_phi"].fill(syst, flatten(smet.phi), weight=weight) - output["npvs"].fill( - syst, - events[event_level].PV.npvs, - weight=weight, - ) - if not isRealData: - output["pu"].fill( - syst, - events[event_level].Pileup.nTrueInt, - weight=weight, - ) - ####################### - # Create root files # - ####################### - if self.isArray: - # Keep the structure of events and pruned the object size - pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu - pruned_ev["MuonJet"] = smuon_jet - pruned_ev["SoftMuon"] = ssmu - if "PFCands" in events.fields: - pruned_ev.PFCands = spfcands - # Add custom variables - if not isRealData: - pruned_ev["weight"] = weights.weight() - for ind_wei in weights.weightStatistics.keys(): - pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( - include=[ind_wei] - ) - - pruned_ev["dr_mujet_softmu"] = ssmu.delta_r(smuon_jet) - pruned_ev["dr_mujet_lep1"] = shmu.delta_r(smuon_jet) - pruned_ev["dr_lep1_softmu"] = shmu.delta_r(ssmu) - pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt - pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - | (out_branch == "MuonJet") - | (out_branch == "dilep") - ), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in [ - "Muon", - "Jet", - "SoftMuon", - "MuonJet", - "dilep", - "charge", - "MET", - ]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) - return {dataset: output} - - def postprocess(self, accumulator): - return accumulator diff --git a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py b/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py deleted file mode 100644 index 62ca5d84..00000000 --- a/src/BTVNanoCommissioning/workflows/ctag_semileptt_valid_sf.py +++ /dev/null @@ -1,580 +0,0 @@ -import collections, awkward as ak, numpy as np -import os -import uproot - -from coffea import processor -from coffea.analysis_tools import Weights - -from BTVNanoCommissioning.utils.correction import ( - load_lumi, - load_SF, - muSFs, - puwei, - btagSFs, - JME_shifts, - Roccor_shifts, -) -from BTVNanoCommissioning.helpers.func import ( - flatten, - update, - uproot_writeable, - dump_lumi, -) -from BTVNanoCommissioning.helpers.update_branch import missing_branch -from BTVNanoCommissioning.utils.histogrammer import histogrammer -from BTVNanoCommissioning.utils.selection import ( - jet_id, - mu_idiso, - ele_mvatightid, - softmu_mask, -) - - -class NanoProcessor(processor.ProcessorABC): - def __init__( - self, - year="2022", - campaign="Summer22Run3", - name="", - isSyst=False, - isArray=False, - noHist=False, - chunksize=75000, - ): - self._year = year - self._campaign = campaign - self.name = name - self.isSyst = isSyst - self.isArray = isArray - self.noHist = noHist - self.lumiMask = load_lumi(self._campaign) - self.chunksize = chunksize - ## Load corrections - self.SF_map = load_SF(self._campaign) - - @property - def accumulator(self): - return self._accumulator - - def process(self, events): - isRealData = not hasattr(events, "genWeight") - dataset = events.metadata["dataset"] - events = missing_branch(events) - shifts = [] - if "JME" in self.SF_map.keys(): - syst_JERC = self.isSyst - if self.isSyst == "JERC_split": - syst_JERC = "split" - shifts = JME_shifts( - shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC - ) - else: - if int(self._year) > 2020: - shifts = [ - ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) - ] - else: - shifts = [ - ( - { - "Jet": events.Jet, - "MET": events.PuppiMET, - "Muon": events.Muon, - }, - None, - ) - ] - if "roccor" in self.SF_map.keys(): - shifts = Roccor_shifts(shifts, self.SF_map, events, isRealData, False) - else: - shifts[0][0]["Muon"] = events.Muon - - return processor.accumulate( - self.process_shift(update(events, collections), name) - for collections, name in shifts - ) - - def process_shift(self, events, shift_name): - dataset = events.metadata["dataset"] - isRealData = not hasattr(events, "genWeight") - _hist_event_dict = ( - {"": None} if self.noHist else histogrammer(events, "ctag_ttsemilep_sf") - ) - - output = { - "sumw": processor.defaultdict_accumulator(float), - **_hist_event_dict, - } - - if shift_name is None: - if isRealData: - output["sumw"] = len(events) - else: - output["sumw"] = ak.sum(events.genWeight) - - ############### - # Event level # - ############### - ## Lumimask - req_lumi = np.ones(len(events), dtype="bool") - if isRealData: - req_lumi = self.lumiMask(events.run, events.luminosityBlock) - # only dump for nominal case - if shift_name is None: - output = dump_lumi(events[req_lumi], output) - - ## HLT - triggers = ["IsoMu24", "IsoMu27"] - checkHLT = ak.Array([hasattr(events.HLT, _trig) for _trig in triggers]) - if ak.all(checkHLT == False): - raise ValueError("HLT paths:", triggers, " are all invalid in", dataset) - elif ak.any(checkHLT == False): - print(np.array(triggers)[~checkHLT], " not exist in", dataset) - trig_arrs = [ - events.HLT[_trig] for _trig in triggers if hasattr(events.HLT, _trig) - ] - req_trig = np.zeros(len(events), dtype="bool") - for t in trig_arrs: - req_trig = req_trig | t - - ## Muon cuts - # muon twiki: https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideMuonIdRun2 - iso_muon = events.Muon[(events.Muon.pt > 30) & mu_idiso(events, self._campaign)] - req_muon = ak.count(iso_muon.pt, axis=1) == 1 - iso_muon = ak.pad_none(iso_muon, 1, axis=1) - iso_muon = iso_muon[:, 0] - iso_muindx = ak.mask( - ak.local_index(events.Muon.pt), - ((events.Muon.pt > 30) & mu_idiso(events, self._campaign)) == 1, - ) - iso_muindx = ak.pad_none(iso_muindx, 1) - iso_muindx = iso_muindx[:, 0] - - ## Jet cuts - event_jet = events.Jet[ - ak.fill_none( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_muon) > 0.5, - axis=2, - mask_identity=True, - ) - ), - False, - axis=-1, - ) - ] - req_jets = ak.num(event_jet.pt) >= 4 - - ## Soft Muon cuts - - soft_muon = events.Muon[softmu_mask(events, self._campaign)] - req_softmu = ak.count(soft_muon.pt, axis=1) >= 1 - soft_muon = ak.pad_none(soft_muon, 1, axis=1) - - ## Muon-jet cuts - mu_jet = event_jet[ - ak.fill_none( - ( - ak.all( - event_jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((event_jet.muonIdx1 != -1) | (event_jet.muonIdx2 != -1)) - & ((event_jet.muEF + event_jet.neEmEF) < 0.7), - False, - axis=-1, - ) - ] - req_mujet = ak.num(mu_jet.pt, axis=1) >= 1 - mu_jet = ak.pad_none(mu_jet, 1, axis=1) - - ## store jet index for PFCands, create mask on the jet index - jetindx = ak.mask( - ak.local_index(events.Jet.pt), - ( - jet_id(events, self._campaign) - & ( - ak.all( - events.Jet.metric_table(iso_muon) > 0.5, - axis=2, - mask_identity=True, - ) - ) - & ((events.Jet.muEF + events.Jet.neEmEF) < 0.7) - & ( - ak.all( - events.Jet.metric_table(iso_muon) > 0.5, - axis=2, - mask_identity=True, - ) - ) - & ( - ak.all( - events.Jet.metric_table(soft_muon) <= 0.4, - axis=2, - mask_identity=True, - ) - ) - & ((events.Jet.muonIdx1 != -1) | (events.Jet.muonIdx2 != -1)) - ) - == 1, - ) - jetindx = ak.pad_none(jetindx, 1) - jetindx = jetindx[:, 0] - - ## Other cuts - req_pTratio = (soft_muon[:, 0].pt / mu_jet[:, 0].pt) < 0.4 - - req_QCDveto = ( - (iso_muon.pfRelIso04_all < 0.05) - & (abs(iso_muon.dz) < 0.01) - & (abs(iso_muon.dxy) < 0.002) - & (iso_muon.sip3d < 2) - & ( - iso_muon.pt - / ak.firsts( - events.Jet[ - (events.Jet.muonIdx1 == iso_muindx) - | ((events.Jet.muonIdx2 == iso_muindx)) - ].pt - ) - > 0.75 - ) - ) - - dilep_mu = events.Muon[(events.Muon.pt > 12) & mu_idiso(events, self._campaign)] - dilep_ele = events.Electron[ - (events.Electron.pt > 15) & ele_mvatightid(events, self._campaign) - ] - req_dilepveto = ( - ak.count(dilep_mu.pt, axis=1) + ak.count(dilep_ele.pt, axis=1) != 2 - ) - - dilep_mass = iso_muon + soft_muon[:, 0] - req_dilepmass = (dilep_mass.mass > 12.0) & ( - (dilep_mass.mass < 80) | (dilep_mass.mass > 100) - ) - MET = ak.zip( - { - "pt": events.MET.pt, - "eta": ak.zeros_like(events.MET.pt), - "phi": events.MET.phi, - "mass": ak.zeros_like(events.MET.pt), - }, - with_name="PtEtaPhiMLorentzVector", - ) - Wmass = MET + iso_muon - req_Wmass = Wmass.mass > 55 - - event_level = ( - req_trig - & req_lumi - & req_muon - & req_jets - & req_softmu - & req_dilepmass - & req_mujet - & req_Wmass - & req_dilepveto - & req_QCDveto - & req_pTratio - ) - - event_level = ak.fill_none(event_level, False) - if len(events[event_level]) == 0: - return {dataset: output} - - #################### - # Selected objects # - #################### - shmu = iso_muon[event_level] - sjets = event_jet[event_level] - ssmu = soft_muon[event_level] - smet = MET[event_level] - smuon_jet = mu_jet[event_level] - nsoftmu = ak.count(ssmu.pt, axis=1) - nmujet = ak.count(smuon_jet.pt, axis=1) - smuon_jet = smuon_jet[:, 0] - ssmu = ssmu[:, 0] - sz = shmu + ssmu - sw = shmu + smet - osss = ak.values_astype(shmu.charge * ssmu.charge * -1, int) - njet = ak.count(sjets.pt, axis=1) - # Find the PFCands associate with selected jets. Search from jetindex->JetPFCands->PFCand - if "PFCands" in events.fields: - spfcands = events[event_level].PFCands[ - events[event_level] - .JetPFCands[ - events[event_level].JetPFCands.jetIdx == jetindx[event_level] - ] - .pFCandsIdx - ] - - #################### - # Weight & Geninfo # - #################### - weights = Weights(len(events[event_level]), storeIndividual=True) - if not isRealData: - weights.add("genweight", events[event_level].genWeight) - genflavor = sjets.hadronFlavour + 1 * ( - (sjets.partonFlavour == 0) & (sjets.hadronFlavour == 0) - ) - smflav = smuon_jet.hadronFlavour + 1 * ( - (smuon_jet.partonFlavour == 0) & (smuon_jet.hadronFlavour == 0) - ) - if len(self.SF_map.keys()) > 0: - syst_wei = True if self.isSyst != False else False - if "PU" in self.SF_map.keys(): - puwei( - events[event_level].Pileup.nTrueInt, - self.SF_map, - weights, - syst_wei, - ) - if "MUO" in self.SF_map.keys(): - muSFs(shmu, self.SF_map, weights, syst_wei, False) - if "BTV" in self.SF_map.keys(): - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetC", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepJetB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVB", syst_wei) - btagSFs(smuon_jet, self.SF_map, weights, "DeepCSVC", syst_wei) - - else: - genflavor = ak.zeros_like(sjets.pt, dtype=int) - smflav = ak.zeros_like(smuon_jet.pt, dtype=int) - - # Systematics information - if shift_name is None: - systematics = ["nominal"] + list(weights.variations) - else: - systematics = [shift_name] - exclude_btv = [ - "DeepCSVC", - "DeepCSVB", - "DeepJetB", - "DeepJetC", - ] # exclude b-tag SFs for btag inputs - - #################### - # Fill histogram # - #################### - for syst in systematics: - if self.isSyst == False and syst != "nominal": - break - if self.noHist: - break - weight = ( - weights.weight() - if syst == "nominal" or syst == shift_name - else weights.weight(modifier=syst) - ) - for histname, h in output.items(): - if ( - "Deep" in histname - and "btag" not in histname - and histname in events.Jet.fields - ): - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif "jet_" in histname and "mu" not in histname: - h.fill( - syst, - flatten(genflavor), - flatten(sjets[histname.replace("jet_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), sjets["pt"] - )[0] - ), - ) - elif "hl_" in histname and histname.replace("hl_", "") in shmu.fields: - h.fill( - syst, - flatten(shmu[histname.replace("hl_", "")]), - weight=weight, - ) - elif ( - "soft_l" in histname - and histname.replace("soft_l_", "") in ssmu.fields - ): - print(histname) - h.fill( - syst, - smflav, - flatten(ssmu[histname.replace("soft_l_", "")]), - weight=weight, - ) - elif "mujet_" in histname: - h.fill( - syst, - smflav, - flatten(smuon_jet[histname.replace("mujet_", "")]), - weight=weight, - ) - elif ( - "PFCands" in events.fields - and "PFCands" in histname - and histname.split("_")[1] in events.PFCands.fields - ): - h.fill( - syst, - flatten(ak.broadcast_arrays(smflav, spfcands["pt"])[0]), - flatten(spfcands[histname.replace("PFCands_", "")]), - weight=flatten( - ak.broadcast_arrays( - weights.partial_weight(exclude=exclude_btv), - spfcands["pt"], - )[0] - ), - ) - elif "btag" in histname: - for i in range(2): - if ( - str(i) not in histname - or histname.replace(f"_{i}", "") not in events.Jet.fields - ): - continue - h.fill( - syst="noSF", - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weights.partial_weight(exclude=exclude_btv), - ) - if not isRealData and "btag" in self.SF_map.keys(): - h.fill( - syst=syst, - flav=smflav, - discr=smuon_jet[histname.replace(f"_{i}", "")], - weight=weight, - ) - output["njet"].fill(syst, njet, weight=weight) - output["nmujet"].fill(syst, nmujet, weight=weight) - output["nsoftmu"].fill(syst, nsoftmu, weight=weight) - output["hl_ptratio"].fill( - syst, - genflavor[:, 0], - ratio=shmu.pt / sjets[:, 0].pt, - weight=weight, - ) - output["soft_l_ptratio"].fill( - syst, - flav=smflav, - ratio=ssmu.pt / smuon_jet.pt, - weight=weight, - ) - output["dr_lmujetsmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(ssmu), - weight=weight, - ) - output["dr_lmujethmu"].fill( - syst, - flav=smflav, - dr=smuon_jet.delta_r(shmu), - weight=weight, - ) - output["dr_lmusmu"].fill(syst, dr=shmu.delta_r(ssmu), weight=weight) - output["z_pt"].fill(syst, flatten(sz.pt), weight=weight) - output["z_eta"].fill(syst, flatten(sz.eta), weight=weight) - output["z_phi"].fill(syst, flatten(sz.phi), weight=weight) - output["z_mass"].fill(syst, flatten(sz.mass), weight=weight) - output["w_pt"].fill(syst, flatten(sw.pt), weight=weight) - output["w_eta"].fill(syst, flatten(sw.eta), weight=weight) - output["w_phi"].fill(syst, flatten(sw.phi), weight=weight) - output["w_mass"].fill(syst, flatten(sw.mass), weight=weight) - output["MET_pt"].fill(syst, flatten(smet.pt), weight=weight) - output["MET_phi"].fill(syst, flatten(smet.phi), weight=weight) - output["npvs"].fill( - syst, - events[event_level].PV.npvs, - weight=weight, - ) - if not isRealData: - output["pu"].fill( - syst, - events[event_level].Pileup.nTrueInt, - weight=weight, - ) - ####################### - # Create root files # - ####################### - if self.isArray: - # Keep the structure of events and pruned the object size - pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = shmu - pruned_ev["MuonJet"] = smuon_jet - pruned_ev["SoftMuon"] = ssmu - - if "PFCands" in events.fields: - pruned_ev.PFCands = spfcands - # Add custom variables - if not isRealData: - pruned_ev["weight"] = weights.weight() - for ind_wei in weights.weightStatistics.keys(): - pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( - include=[ind_wei] - ) - - pruned_ev["dr_mujet_softmu"] = ssmu.delta_r(smuon_jet) - pruned_ev["dr_mujet_lep1"] = shmu.delta_r(smuon_jet) - pruned_ev["dr_lep1_softmu"] = shmu.delta_r(ssmu) - pruned_ev["soft_l_ptratio"] = ssmu.pt / smuon_jet.pt - pruned_ev["l1_ptratio"] = shmu.pt / smuon_jet.pt - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - out_branch = np.delete( - out_branch, - np.where( - (out_branch == "SoftMuon") - | (out_branch == "MuonJet") - | (out_branch == "dilep") - ), - ) - - for kin in ["pt", "eta", "phi", "mass", "pfRelIso04_all", "dxy", "dz"]: - for obj in [ - "Muon", - "Jet", - "SoftMuon", - "MuonJet", - "dilep", - "charge", - "MET", - ]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon" and obj != "SoftMuon") and ( - "pfRelIso04_all" == kin or "d" in kin - ): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*", "SV_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) - return {dataset: output} - - def postprocess(self, accumulator): - return accumulator diff --git a/src/BTVNanoCommissioning/workflows/example.py b/src/BTVNanoCommissioning/workflows/example.py index e140f1a7..d50b2873 100644 --- a/src/BTVNanoCommissioning/workflows/example.py +++ b/src/BTVNanoCommissioning/workflows/example.py @@ -27,6 +27,7 @@ ## load histograms & selctions for this workflow from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import jet_id, mu_idiso, ele_cuttightid @@ -70,7 +71,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -264,7 +265,14 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] # pruned events + pruned_ev.Muon = smu # replace muon collections with selected muon + if self.isArray: + # Keep the structure of events and pruned the object size + pruned_ev = events[event_level] + pruned_ev["SelJet"] = sjets + pruned_ev["Muon"] = smu + # Add custom variables if not isRealData: pruned_ev["weight"] = weights.weight() @@ -272,17 +280,8 @@ def process_shift(self, events, shift_name): pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( include=[ind_wei] ) - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) # stored customed variables - out_branch = np.append(out_branch, ["Jet_btagDeep*", "Muon_pt"]) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) + return {dataset: output} ## post process, return the accumulator, compressed diff --git a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py index b03ed6ff..10bdc3d0 100644 --- a/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttdilep_valid_sf.py @@ -20,13 +20,13 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch ## load histograms & selctions for this workflow from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -75,7 +75,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -223,6 +223,16 @@ def process_shift(self, events, shift_name): ) event_level = ak.fill_none(event_level, False) if len(events[event_level]) == 0: + if self.isArray: + array_writer( + self, + events[event_level], + events, + "nominal", + dataset, + isRealData, + empty=True, + ) return {dataset: output} #################### @@ -426,9 +436,9 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Electron = sel - pruned_ev.Muon = smu + pruned_ev["SelJet"] = sjets + pruned_ev["Muon"] = smu + pruned_ev["Electron"] = sel if "PFCands" in events.fields: pruned_ev.PFCands = spfcands # Add custom variables @@ -441,32 +451,8 @@ def process_shift(self, events, shift_name): pruned_ev["dr_mujet0"] = smu.delta_r(sjets[:, 0]) pruned_ev["dr_mujet1"] = smu.delta_r(sjets[:, 1]) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - for kin in ["pt", "eta", "phi", "mass", "dz", "dxy"]: - for obj in ["Jet", "Electron", "Muon"]: - if obj == "Jet" and "d" in kin: - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, - [ - "Jet_btagDeep*", - "Jet_DeepJet*", - "PFCands_*", - "Electron_pfRelIso03_all", - "Muon_pfRelIso03_all", - ], - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) return {dataset: output} def postprocess(self, accumulator): diff --git a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py index f543daca..eaee6736 100644 --- a/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py +++ b/src/BTVNanoCommissioning/workflows/ttsemilep_valid_sf.py @@ -23,6 +23,7 @@ ) from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import jet_id, btag_mu_idiso, MET_filters import hist @@ -67,7 +68,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -144,8 +145,7 @@ def process_shift(self, events, shift_name): ## Jet cuts event_jet = events.Jet[ - (events.Jet.veto != 1) - & ak.fill_none( + ak.fill_none( jet_id(events, self._campaign) & ( ak.all( @@ -165,7 +165,6 @@ def process_shift(self, events, shift_name): ak.local_index(events.Jet.pt), ( jet_id(events, self._campaign) - & (events.Jet.veto != 1) & ( ak.all( events.Jet.metric_table(events.Muon) > 0.4, @@ -198,6 +197,16 @@ def process_shift(self, events, shift_name): req_trig & req_jets & req_muon & req_MET & req_lumi & req_metfilter, False ) if len(events[event_level]) == 0: + if self.isArray: + array_writer( + self, + events[event_level], + events, + "nominal", + dataset, + isRealData, + empty=True, + ) return {dataset: output} #################### # Selected objects # @@ -384,8 +393,8 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets - pruned_ev.Muon = smu + pruned_ev["SelJet"] = sjets + pruned_ev["Muon"] = smu if "PFCands" in events.fields: pruned_ev.PFCands = spfcands # Add custom variables @@ -398,28 +407,7 @@ def process_shift(self, events, shift_name): for i in range(4): pruned_ev[f"dr_mujet{i}"] = smu.delta_r(sjets[:, i]) - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - for kin in ["pt", "eta", "phi", "mass"]: # ,"pfRelIso04_all","dxy", "dz"]: - # for obj in ["Jet", "Muon", "MET","PuppiMET"]: - for obj in ["Muon"]: - if "MET" in obj and ("pt" != kin or "phi" != kin): - continue - if (obj != "Muon") and ("pfRelIso04_all" == kin or "d" in kin): - continue - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) return {dataset: output} def postprocess(self, accumulator): diff --git a/src/BTVNanoCommissioning/workflows/validation.py b/src/BTVNanoCommissioning/workflows/validation.py index 7887b007..42a16c7a 100644 --- a/src/BTVNanoCommissioning/workflows/validation.py +++ b/src/BTVNanoCommissioning/workflows/validation.py @@ -21,12 +21,12 @@ from BTVNanoCommissioning.helpers.func import ( flatten, update, - uproot_writeable, dump_lumi, ) from BTVNanoCommissioning.helpers.update_branch import missing_branch from BTVNanoCommissioning.utils.histogrammer import histogrammer +from BTVNanoCommissioning.utils.array_writer import array_writer from BTVNanoCommissioning.utils.selection import ( jet_id, mu_idiso, @@ -76,7 +76,7 @@ def process(self, events): shifts, self.SF_map, events, self._campaign, isRealData, syst_JERC ) else: - if int(self._year) > 2020: + if int(self._year) < 2020: shifts = [ ({"Jet": events.Jet, "MET": events.MET, "Muon": events.Muon}, None) ] @@ -371,7 +371,8 @@ def process_shift(self, events, shift_name): if self.isArray: # Keep the structure of events and pruned the object size pruned_ev = events[event_level] - pruned_ev.Jet = sjets + pruned_ev["SelJet"] = sjets + # Add custom variables if not isRealData: pruned_ev["weight"] = weights.weight() @@ -379,23 +380,7 @@ def process_shift(self, events, shift_name): pruned_ev[f"{ind_wei}_weight"] = weights.partial_weight( include=[ind_wei] ) - - # Create a list of variables want to store. For objects from the PFNano file, specify as {object}_{variable}, wildcard option only accepted at the end of the string - out_branch = np.setdiff1d( - np.array(pruned_ev.fields), np.array(events.fields) - ) - for kin in ["pt", "eta", "phi", "mass"]: - for obj in ["Jet"]: - out_branch = np.append(out_branch, [f"{obj}_{kin}"]) - out_branch = np.append( - out_branch, ["Jet_btagDeep*", "Jet_DeepJet*", "PFCands_*"] - ) - # write to root files - os.system(f"mkdir -p {self.name}/{dataset}") - with uproot.recreate( - f"{self.name}/{dataset}/f{events.metadata['filename'].split('_')[-1].replace('.root','')}_{systematics[0]}_{int(events.metadata['entrystop']/self.chunksize)}.root" - ) as fout: - fout["Events"] = uproot_writeable(pruned_ev, include=out_branch) + array_writer(self, pruned_ev, events, systematics[0], dataset, isRealData) return {dataset: output} def postprocess(self, accumulator):