JERC and systematicsο
The JEC and JER could be considered via the correctionlib, which read JSON files of latest Jet Energy Scale, Jet Energy Resolution, and Jet Veto Maps.
The JEC and JER correct the 4-momentum of each jet. Thus, both jet pT and mass are corrected. So itβs not easy to applied the JERC corrections and systematics seperately as most of the other corrections and systematics. Also, if JER is considered, the JEC systematics should be derived based on the JER corrected jets.
A series of the functions are provided. Some of them also derive systematics, so the branches contain systematic variations are added to the jets collection. Then, function get_obj_syst_dict in dumping_utils.py splits the nominal and variations into the jet systematic dictionary, which has the same structure with the photons_dct in base.py.
The correction functions and their goals are as following:
jec_jet: redo the Jet Energy Scale Correctionjec_jet_syst: redo the Jet Energy Scale Correction and add total up/down systematicsjec_jet_regrouped_syst: redo the Jet Energy Scale Correction and add up/down systematics of each Regrouped sourcejerc_jet: redo the Jet Energy Scale Correction and apply the Jet Energy Resolution Smearingjerc_jet_syst: redo the Jet Energy Scale Correction and apply the Jet Energy Resolution Smearing. Also add total up/downJECsystematics andJERsystematicsjerc_jet_regrouped_syst: redo the Jet Energy Scale Correction and apply the Jet Energy Resolution Smearing. Also add up/downJECsystematics of each Regrouped source andJERsystematicsFor
data, only redo Jet Energy Scale Correction is allowed. But theJECfor data need to consider theEra, so please use the correctErafor the data sample from the following correction functionsjec_RunAjec_RunBjec_RunCjec_RunDjec_RunEjec_RunFjec_RunGjec_RunH
An example to do JEC and JER with considering their systematics is provided here. The configuration json test_run3_v0.json is as following:
{
"samplejson": "samples_nanov12_EE_v0.json",
"workflow": "base",
"metaconditions": "Era2022_v1",
"taggers": [],
"year": {
"DYto2L_EE": [
"2022postEE"
],
"EGammaF": [
"2022postEE"
]
},
"systematics": {
},
"corrections": {
"DYto2L_EE": [
"jerc_jet_syst","Smearing"
],
"EGammaF": [
"jec_RunF"
]
}
}
The sample json file samples_nanov12_EE_v0.json looks like
{
"DYto2L_EE": [
"/eos/lyoeos.in2p3.fr/grid/cms/store/mc/Run3Summer22EENanoAODv12/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/NANOAODSIM/130X_mcRun3_2022_realistic_postEE_v6-v2/50000/fa9b6dc8-06e7-46aa-a936-ca60aa8af867.root"
],
"EGammaF":[
"/eos/lyoeos.in2p3.fr/grid/cms/store/data/Run2022F/EGamma/NANOAOD/22Sep2023-v1/50000/2ada79a4-a7ce-4f4a-ad19-bd5d436a53c5.root"
]
}
With running the command
python ../scripts/run_analysis.py --dump output12 --json-analysis test_run3_v0.json --save nanov12.coffea --no-trigger --debug
The output files are in such a structure
output12/
|-- DYto2L_EE
| |-- jec_syst_Total_down
| | `-- 02b4758c-61dc-11ee-b6b1-ae013c0abeef_%2FEvents%3B1_0-695760.parquet
| |-- jec_syst_Total_up
| | `-- 02b4758c-61dc-11ee-b6b1-ae013c0abeef_%2FEvents%3B1_0-695760.parquet
| |-- jer_syst_down
| | `-- 02b4758c-61dc-11ee-b6b1-ae013c0abeef_%2FEvents%3B1_0-695760.parquet
| |-- jer_syst_up
| | `-- 02b4758c-61dc-11ee-b6b1-ae013c0abeef_%2FEvents%3B1_0-695760.parquet
| `-- nominal
| `-- 02b4758c-61dc-11ee-b6b1-ae013c0abeef_%2FEvents%3B1_0-695760.parquet
`-- EGammaF
`-- nominal
|-- f128d04c-5a97-11ee-8144-8bd09a83beef_%2FEvents%3B1_0-463938.parquet
`-- f128d04c-5a97-11ee-8144-8bd09a83beef_%2FEvents%3B1_463938-927875.parquet
Run3 splitted JEC systematicsο
Now, for Run3, only total uncertainty or full splitted JEC systematics available, Regrouped uncertainties are in development. The function jec_jet_regrouped_syst in fact give the full splitted JEC systematics. An example json configuration is
{
"samplejson": "samples_nanov12_dy_v0.json",
"workflow": "base",
"metaconditions": "Era2022_v1",
"taggers": [],
"year": {
"DYto2L_EE": [
"2022postEE"
]
},
"systematics": {},
"corrections": {
"DYto2L_EE": [
"jec_jet_regrouped_syst"
]
}
}
The related sample json is
{
"DYto2L_EE": [
"/eos/lyoeos.in2p3.fr/grid/cms/store/mc/Run3Summer22EENanoAODv12/DYto2L-2Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/NANOAODSIM/130X_mcRun3_2022_realistic_postEE_v6-v2/50000/d2b250b2-8886-4dcb-b20b-4e6c89a9dfa4.root"
]
}
The output files is in the following structure, each source has one dedicated folder
output_dl/DYto2L_EE/
|-- jec_syst_AbsoluteMPFBias_down
|-- jec_syst_AbsoluteMPFBias_up
|-- jec_syst_AbsoluteScale_down
|-- jec_syst_AbsoluteScale_up
|-- jec_syst_AbsoluteStat_down
|-- jec_syst_AbsoluteStat_up
|-- jec_syst_FlavorQCD_down
|-- jec_syst_FlavorQCD_up
|-- jec_syst_Fragmentation_down
|-- jec_syst_Fragmentation_up
|-- jec_syst_PileUpDataMC_down
|-- jec_syst_PileUpDataMC_up
|-- jec_syst_PileUpPtBB_down
|-- jec_syst_PileUpPtBB_up
|-- jec_syst_PileUpPtEC1_down
|-- jec_syst_PileUpPtEC1_up
|-- jec_syst_PileUpPtEC2_down
|-- jec_syst_PileUpPtEC2_up
|-- jec_syst_PileUpPtHF_down
|-- jec_syst_PileUpPtHF_up
|-- jec_syst_PileUpPtRef_down
|-- jec_syst_PileUpPtRef_up
|-- jec_syst_RelativeBal_down
|-- jec_syst_RelativeBal_up
|-- jec_syst_RelativeFSR_down
|-- jec_syst_RelativeFSR_up
|-- jec_syst_RelativeJEREC1_down
|-- jec_syst_RelativeJEREC1_up
|-- jec_syst_RelativeJEREC2_down
|-- jec_syst_RelativeJEREC2_up
|-- jec_syst_RelativeJERHF_down
|-- jec_syst_RelativeJERHF_up
|-- jec_syst_RelativePtBB_down
|-- jec_syst_RelativePtBB_up
|-- jec_syst_RelativePtEC1_down
|-- jec_syst_RelativePtEC1_up
|-- jec_syst_RelativePtEC2_down
|-- jec_syst_RelativePtEC2_up
|-- jec_syst_RelativePtHF_down
|-- jec_syst_RelativePtHF_up
|-- jec_syst_RelativeSample_down
|-- jec_syst_RelativeSample_up
|-- jec_syst_RelativeStatEC_down
|-- jec_syst_RelativeStatEC_up
|-- jec_syst_RelativeStatFSR_down
|-- jec_syst_RelativeStatFSR_up
|-- jec_syst_RelativeStatHF_down
|-- jec_syst_RelativeStatHF_up
|-- jec_syst_SinglePionECAL_down
|-- jec_syst_SinglePionECAL_up
|-- jec_syst_SinglePionHCAL_down
|-- jec_syst_SinglePionHCAL_up
|-- jec_syst_TimePtEta_down
|-- jec_syst_TimePtEta_up
|-- jec_syst_Total_down
|-- jec_syst_Total_up
`-- nominal
Run2UL Regrouped JEC systematicsο
For Run2UL, to consider Regrouped uncertainties of JEC. The function jerc_jet_regrouped_syst could be used.
The example json configuration is
{
"samplejson": "samples_nanov9_v0.json",
"workflow": "base",
"metaconditions": "Era2018_legacy_v1",
"taggers": [],
"year": {
"DYto2L": [
"2018"
]
},
"systematics": {
},
"corrections": {
"DYto2L": [
"jerc_jet_regrouped_syst"
]
}
}
The related sample json is
{
"DYto2L": [
"/eos/lyoeos.in2p3.fr/grid/cms/store/mc/RunIISummer20UL18NanoAODv9/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/NANOAODSIM/106X_upgrade2018_realistic_v16_L1v1-v2/230000/8559CF2F-9B52-3A4D-9780-5499A2751135.root"
]
}
The output files is in the following structure, each Regrouped source has one dedicated folder
output9/
`-- DYto2L
|-- jec_syst_Absolute_2018_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_Absolute_2018_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_Absolute_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_Absolute_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_BBEC1_2018_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_BBEC1_2018_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_BBEC1_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_BBEC1_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_EC2_2018_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_EC2_2018_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_EC2_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_EC2_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_FlavorQCD_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_FlavorQCD_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_HF_2018_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_HF_2018_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_HF_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_HF_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_Regrouped_Total_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_Regrouped_Total_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_RelativeBal_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_RelativeBal_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_RelativeSample_2018_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jec_syst_RelativeSample_2018_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jer_syst_down
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
|-- jer_syst_up
| |-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
| `-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet
`-- nominal
|-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_0-468807.parquet
`-- ce6b7240-1c7c-11ec-85e3-5c090d0abeef_%2FEvents%3B1_468807-937614.parquet