diff --git a/cmsdb/campaigns/run3_2022_postEE_nano_v12/ewk.py b/cmsdb/campaigns/run3_2022_postEE_nano_v12/ewk.py index 1e89f945..72a6e97e 100644 --- a/cmsdb/campaigns/run3_2022_postEE_nano_v12/ewk.py +++ b/cmsdb/campaigns/run3_2022_postEE_nano_v12/ewk.py @@ -634,6 +634,121 @@ ) +# +# DY + photon (Zγ) +# + +cpn.add_dataset( + name="dyg_m50toinf_amcatnlo", + id=15618548, + processes=[procs.dyg_m50toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=291, + n_events=60_907_978, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg10to100_amcatnlo", + id=14887232, + processes=[procs.dyg_m50toinf_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=872, + n_events=171_496_738, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg100to200_amcatnlo", + id=14793597, + processes=[procs.dyg_m50toinf_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=27, + n_events=696_610, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg200to400_amcatnlo", + id=14886082, + processes=[procs.dyg_m50toinf_ptg200to400], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-200to400_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=29, + n_events=1_785_572, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg400to600_amcatnlo", + id=14887668, + processes=[procs.dyg_m50toinf_ptg400to600], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-400to600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=33, + n_events=1_776_157, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg600toinf_amcatnlo", + id=14886958, + processes=[procs.dyg_m50toinf_ptg600toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=62, + n_events=1_797_374, +) + +cpn.add_dataset( + name="dyg_m4to50_amcatnlo", + id=15671988, + processes=[procs.dyg_m4to50], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=394, + n_events=61_688_959, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg10to100_amcatnlo", + id=14809616, + processes=[procs.dyg_m4to50_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=576, + n_events=85_739_885, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg100to200_amcatnlo", + id=14809461, + processes=[procs.dyg_m4to50_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=75, + n_events=1_448_629, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg200toinf_amcatnlo", + id=14811651, + processes=[procs.dyg_m4to50_ptg200toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22EENanoAODv12-130X_mcRun3_2022_realistic_postEE_v6-v2/NANOAODSIM", # noqa + ], + n_files=30, + n_events=746_202, +) + + # # Triboson # diff --git a/cmsdb/campaigns/run3_2022_preEE_nano_v12/ewk.py b/cmsdb/campaigns/run3_2022_preEE_nano_v12/ewk.py index 89fd4974..8ffcc483 100644 --- a/cmsdb/campaigns/run3_2022_preEE_nano_v12/ewk.py +++ b/cmsdb/campaigns/run3_2022_preEE_nano_v12/ewk.py @@ -395,6 +395,120 @@ n_events=1181750, ) +# +# DY + photon (Zγ) +# + +cpn.add_dataset( + name="dyg_m50toinf_amcatnlo", + id=15618184, + processes=[procs.dyg_m50toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=167, + n_events=24_686_639, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg10to100_amcatnlo", + id=14887589, + processes=[procs.dyg_m50toinf_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=341, + n_events=49_496_896, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg100to200_amcatnlo", + id=14794999, + processes=[procs.dyg_m50toinf_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=17, + n_events=201_017, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg200to400_amcatnlo", + id=14887957, + processes=[procs.dyg_m50toinf_ptg200to400], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-200to400_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=23, + n_events=509_420, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg400to600_amcatnlo", + id=14887209, + processes=[procs.dyg_m50toinf_ptg400to600], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-400to600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=28, + n_events=490_675, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg600toinf_amcatnlo", + id=14886090, + processes=[procs.dyg_m50toinf_ptg600toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=21, + n_events=488_259, +) + +cpn.add_dataset( + name="dyg_m4to50_amcatnlo", + id=15671122, + processes=[procs.dyg_m4to50], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=211, + n_events=24_921_673, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg10to100_amcatnlo", + id=14811443, + processes=[procs.dyg_m4to50_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=135, + n_events=24_279_030, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg100to200_amcatnlo", + id=14811593, + processes=[procs.dyg_m4to50_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=21, + n_events=391_451, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg200toinf_amcatnlo", + id=14811610, + processes=[procs.dyg_m4to50_ptg200toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer22NanoAODv12-130X_mcRun3_2022_realistic_v5-v2/NANOAODSIM", # noqa + ], + n_files=18, + n_events=185_067, +) + # # Triboson # diff --git a/cmsdb/campaigns/run3_2023_postBPix_nano_v12/ewk.py b/cmsdb/campaigns/run3_2023_postBPix_nano_v12/ewk.py index b728a666..70294588 100644 --- a/cmsdb/campaigns/run3_2023_postBPix_nano_v12/ewk.py +++ b/cmsdb/campaigns/run3_2023_postBPix_nano_v12/ewk.py @@ -560,6 +560,120 @@ ), ) +# +# DY + photon (Zγ) +# + +cpn.add_dataset( + name="dyg_m50toinf_amcatnlo", + id=15617668, + processes=[procs.dyg_m50toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=180, + n_events=26_668_199, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg10to100_amcatnlo", + id=14930640, + processes=[procs.dyg_m50toinf_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=119, + n_events=48_023_180, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg100to200_amcatnlo", + id=14958503, + processes=[procs.dyg_m50toinf_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v3/NANOAODSIM", # noqa + ], + n_files=14, + n_events=929_434, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg200to400_amcatnlo", + id=14930629, + processes=[procs.dyg_m50toinf_ptg200to400], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-200to400_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=11, + n_events=502_620, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg400to600_amcatnlo", + id=14930551, + processes=[procs.dyg_m50toinf_ptg400to600], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-400to600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=9, + n_events=501_187, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg600toinf_amcatnlo", + id=14930882, + processes=[procs.dyg_m50toinf_ptg600toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=28, + n_events=461_697, +) + +cpn.add_dataset( + name="dyg_m4to50_amcatnlo", + id=15671905, + processes=[procs.dyg_m4to50], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=199, + n_events=25_602_889, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg10to100_amcatnlo", + id=15279848, + processes=[procs.dyg_m4to50_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=288, + n_events=97_324_198, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg100to200_amcatnlo", + id=15247647, + processes=[procs.dyg_m4to50_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=97, + n_events=11_439_928, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg200toinf_amcatnlo", + id=15251130, + processes=[procs.dyg_m4to50_ptg200toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23BPixNanoAODv12-130X_mcRun3_2023_realistic_postBPix_v6-v2/NANOAODSIM", # noqa + ], + n_files=50, + n_events=4_052_517, +) + # # Triboson # diff --git a/cmsdb/campaigns/run3_2023_preBPix_nano_v12/ewk.py b/cmsdb/campaigns/run3_2023_preBPix_nano_v12/ewk.py index 296ebe8e..4632b903 100644 --- a/cmsdb/campaigns/run3_2023_preBPix_nano_v12/ewk.py +++ b/cmsdb/campaigns/run3_2023_preBPix_nano_v12/ewk.py @@ -874,6 +874,122 @@ ), ) +#################################################################################################### +# +# DY + photon (Zγ) +# +#################################################################################################### + +cpn.add_dataset( + name="dyg_m50toinf_amcatnlo", + id=15618387, + processes=[procs.dyg_m50toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v2/NANOAODSIM", # noqa + ], + n_files=287, + n_events=49_351_934, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg10to100_amcatnlo", + id=15047524, + processes=[procs.dyg_m50toinf_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v4/NANOAODSIM", # noqa + ], + n_files=237, + n_events=97_352_254, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg100to200_amcatnlo", + id=14931202, + processes=[procs.dyg_m50toinf_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v3/NANOAODSIM", # noqa + ], + n_files=33, + n_events=1_889_390, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg200to400_amcatnlo", + id=14930013, + processes=[procs.dyg_m50toinf_ptg200to400], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-200to400_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v4/NANOAODSIM", # noqa + ], + n_files=5, + n_events=981_022, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg400to600_amcatnlo", + id=14930683, + processes=[procs.dyg_m50toinf_ptg400to600], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-400to600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v4/NANOAODSIM", # noqa + ], + n_files=21, + n_events=969_648, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg600toinf_amcatnlo", + id=14931380, + processes=[procs.dyg_m50toinf_ptg600toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-50_PTG-600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v4/NANOAODSIM", # noqa + ], + n_files=26, + n_events=940_148, +) + +cpn.add_dataset( + name="dyg_m4to50_amcatnlo", + id=15671863, + processes=[procs.dyg_m4to50], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v2/NANOAODSIM", # noqa + ], + n_files=353, + n_events=50_249_469, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg10to100_amcatnlo", + id=15281760, + processes=[procs.dyg_m4to50_ptg10to100], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-10to100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v2/NANOAODSIM", # noqa + ], + n_files=159, + n_events=50_266_088, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg100to200_amcatnlo", + id=15246913, + processes=[procs.dyg_m4to50_ptg100to200], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-100to200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v2/NANOAODSIM", # noqa + ], + n_files=44, + n_events=5_683_089, +) + +cpn.add_dataset( + name="dyg_m4to50_ptg200toinf_amcatnlo", + id=15251596, + processes=[procs.dyg_m4to50_ptg200toinf], + keys=[ + "/DYGto2LG-1Jets_MLL-4to50_PTG-200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/Run3Summer23NanoAODv12-130X_mcRun3_2023_realistic_v15-v2/NANOAODSIM", # noqa + ], + n_files=31, + n_events=2_045_586, +) + #################################################################################################### # # Triboson diff --git a/cmsdb/campaigns/run3_2024_nano_v15/ewk.py b/cmsdb/campaigns/run3_2024_nano_v15/ewk.py index a62ed36f..16664d29 100644 --- a/cmsdb/campaigns/run3_2024_nano_v15/ewk.py +++ b/cmsdb/campaigns/run3_2024_nano_v15/ewk.py @@ -805,7 +805,7 @@ n_events=4_800_000, ) -# further ww decay modes +# qqWW decay modes (Powheg NLO) cpn.add_dataset( name="ww_dl_powheg", id=15304453, @@ -839,7 +839,7 @@ n_events=151_214_029, ) -# further ww decay modes with specific leptons +# ggWW dilepton decay modes (MCFM LO) cpn.add_dataset( name="ww_wenu_wenu_pythia", id=15349213, @@ -909,6 +909,18 @@ n_events=1_999_273, ) +# same-sign WW +cpn.add_dataset( + name="ww_ss_2j_madgraph", + id=15515111, + processes=[procs.ww_ss_2j], + keys=[ + "/WpWpJJ-EWK-QCD_TuneCP5_13p6TeV_madgraph-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=17, + n_events=243_119, +) + # further wz decay modes cpn.add_dataset( name="wz_wlnu_zll_powheg", @@ -1092,6 +1104,91 @@ n_events=2_800_000, ) +# +# V + gamma +# + +cpn.add_dataset( + name="wg_wlnu_amcatnlo", + id=15467536, + processes=[procs.wg_wlnu], + keys=[ + "/WGtoLNuG-1Jets_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=2_424, + n_events=445_891_677, +) + +# +# DY + photon (Zγ) — 2024 uses Bin- convention with open PTG thresholds +# + +cpn.add_dataset( + name="dyg_m50toinf_amcatnlo", + id=15462713, + processes=[procs.dyg_m50toinf], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=1_527, + n_events=263_214_524, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg100toinf_amcatnlo", + id=15463184, + processes=[procs.dyg_m50toinf_ptg100toinf], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-50-PTG-100_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=301, + n_events=27_365_714, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg200toinf_amcatnlo", + id=15463372, + processes=[procs.dyg_m50toinf_ptg200toinf], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-50-PTG-200_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=207, + n_events=21_252_950, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg400toinf_amcatnlo", + id=15463178, + processes=[procs.dyg_m50toinf_ptg400toinf], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-50-PTG-400_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=236, + n_events=17_944_020, +) + +cpn.add_dataset( + name="dyg_m50toinf_ptg600toinf_amcatnlo", + id=15463007, + processes=[procs.dyg_m50toinf_ptg600toinf], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-50-PTG-600_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=253, + n_events=20_717_390, +) + +cpn.add_dataset( + name="dyg_m4to50_amcatnlo", + id=15463162, + processes=[procs.dyg_m4to50], + keys=[ + "/DYGto2LG-1Jets_Bin-MLL-4to50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=1_437, + n_events=250_363_098, +) + # # Triple-boson # diff --git a/cmsdb/campaigns/run3_2024_nano_v15/higgs.py b/cmsdb/campaigns/run3_2024_nano_v15/higgs.py index c91b6ab7..2b13697b 100644 --- a/cmsdb/campaigns/run3_2024_nano_v15/higgs.py +++ b/cmsdb/campaigns/run3_2024_nano_v15/higgs.py @@ -260,7 +260,27 @@ # tH # -# tba +cpn.add_dataset( + name="thq_4f_madgraph", + id=15537100, + processes=[procs.thq], + keys=[ + "/THQ-4FS-ctcvcp_Par-M-125_TuneCP5_13p6TeV_madgraph-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=352, + n_events=19_985_991, +) + +cpn.add_dataset( + name="thw_madgraph", + id=15539363, + processes=[procs.thw], + keys=[ + "/THW-5FS-ctcvcp_Par-M-125_TuneCP5_13p6TeV_madgraph-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=267, + n_events=14_995_985, +) # # ttVH diff --git a/cmsdb/campaigns/run3_2024_nano_v15/top.py b/cmsdb/campaigns/run3_2024_nano_v15/top.py index 8792a8a6..609ebe54 100644 --- a/cmsdb/campaigns/run3_2024_nano_v15/top.py +++ b/cmsdb/campaigns/run3_2024_nano_v15/top.py @@ -620,8 +620,50 @@ # 4 top # -# missing -# cpn.add_dataset( -# name="tttt_amcatnlo", -# ... -# ) +cpn.add_dataset( + name="tttt_amcatnlo", + id=15529183, + processes=[procs.tttt], + keys=[ + "/TTTT_TuneCP5_13p6TeV_amcatnlo-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=101, + n_events=9_776_800, +) + +# +# top + photon +# + +cpn.add_dataset( + name="ttg_amcatnlo", + id=15536929, + processes=[procs.ttg], + keys=[ + "/TTG-1Jets_TuneCP5_13p6TeV_amcatnloFXFXold-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=143, + n_events=19_416_271, +) + +cpn.add_dataset( + name="ttg_pt100to200_amcatnlo", + id=15536699, + processes=[procs.ttg_pt100to200], + keys=[ + "/TTG-1Jets_Bin-PTG-100_TuneCP5_13p6TeV_amcatnloFXFXold-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v2/NANOAODSIM", # noqa + ], + n_files=113, + n_events=10_495_130, +) + +cpn.add_dataset( + name="ttg_pt200toinf_amcatnlo", + id=15536925, + processes=[procs.ttg_pt200toinf], + keys=[ + "/TTG-1Jets_Bin-PTG-200_TuneCP5_13p6TeV_amcatnloFXFXold-pythia8/RunIII2024Summer24NanoAODv15-150X_mcRun3_2024_realistic_v2-v3/NANOAODSIM", # noqa + ], + n_files=107, + n_events=9_630_092, +) diff --git a/cmsdb/processes/ewk.py b/cmsdb/processes/ewk.py index 7b25450f..836cc6bc 100644 --- a/cmsdb/processes/ewk.py +++ b/cmsdb/processes/ewk.py @@ -88,14 +88,21 @@ "ewk", "ewk_wp_lnu_m50toinf", "ewk_wm_lnu_m50toinf", "ewk_z_ll_m50toinf", "vv", - "zz", + "zz", "qqzz", "ggzz", "zz_zqq_zll", "zz_zll_znunu", "zz_zll_zll", "zz_zqq_zqq", "zz_znunu_zqq", "zz_zee_zee", "zz_zee_zmm", "zz_zee_ztt", "zz_zmm_zmm", "zz_zmm_ztt", "zz_ztt_ztt", "wz", "wz_wlnu_zll", "wz_wqq_zll", "wz_wqq_zqq", "wz_wlnu_zqq", "wzg", "wzg_wlnu", - "ww", + "wg_wlnu", + "dyg", + "dyg_m50toinf", "dyg_m50toinf_ptg10to100", "dyg_m50toinf_ptg100to200", + "dyg_m50toinf_ptg200to400", "dyg_m50toinf_ptg400to600", "dyg_m50toinf_ptg600toinf", + "dyg_m50toinf_ptg100toinf", "dyg_m50toinf_ptg200toinf", "dyg_m50toinf_ptg400toinf", + "dyg_m4to50", "dyg_m4to50_ptg10to100", "dyg_m4to50_ptg100to200", "dyg_m4to50_ptg200toinf", + "ww", "qqww", "ggww", "ww_dl", "ww_sl", "ww_fh", "ww_wenu_wenu", "ww_wenu_wmnu", "ww_wenu_wtnu", "ww_wmnu_wmnu", "ww_wmnu_wtnu", "ww_wtnu_wtnu", + "ww_ss_2j", "vvv", "zzz", "wzz", "wwz", "www", ] @@ -106,7 +113,6 @@ import cmsdb.constants as const from cmsdb.processes.stitching import get_stitched_dy_m50toinf_br, get_stitched_w_lnu_br -from cmsdb.util import multiply_xsecs # @@ -2214,87 +2220,217 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): label="Di-Boson", ) -# ZZ 13 TeV xsec values at nNNLO from +# ZZ +# Theory inclusive XS (qqZZ + ggZZ): +# 13 TeV: NNLO+NNLL = 16.518 ± 1.84% pb from https://journals.aps.org/prd/abstract/10.1103/2rr7-5xv3, table 1 +# 13.6 TeV: NNLO+NNLL = 17.627 ± 1.93% pb from the same paper, table 1 +# For the inclusive Pythia sample (ZZ_TuneCP5_13p6TeV_pythia8), XSDB lists 12.75 pb. +# A second XSDB entry explicitly marks the order as LO (typical for Pythia-only samples). +# Applying k=1.51 (LO→NNLO) gives 12.75 × 1.51 = 19.2525 pb. +# +# NOTE on k-factor: k=1.15 is used for NLO→NNLO (powheg/amcatnlo samples); +# k=1.51 is used for LO→NNLO (Pythia-only/inclusive samples). +# See Torben's slides: https://indico.cern.ch/event/1677270/contributions/7200886/attachments/3317393/5938464/ZZXS.pdf +# +# NOTE on per-decay-mode normalization: each dataset is normalized by its own +# XSDB cross section (per decay mode) × k-factor. The per-decay-mode NLO values +# from XSDB do NOT sum to the inclusive (they exceed it due to overlap / different +# phase space cuts / EWK contributions at NLO enhancing leptonic modes). +# If combining multiple ZZ decay-mode samples, stitching would be required. + +# k-factors for ZZ +# See Torben's slides: https://indico.cern.ch/event/1677270/contributions/7200886/attachments/3317393/5938464/ZZXS.pdf +zz_k_nlo_to_nnlo = 1.15 # NLO→NNLO (powheg/amcatnlo samples) +zz_k_lo_to_nnlo = 1.51 # LO→NNLO (Pythia-only/inclusive samples) +# ggZZ: k=1.7 (LO MCFM → NLO) from the same slides +zz_gg_k_lo_to_nlo = 1.7 + zz = vv.add_process( name="zz", id=8100, label="ZZ", xsecs={ - # https://link.springer.com/article/10.1007/JHEP03(2019)070#preview, table 3, nNNLO - 13: Number(24.97, {"scale": (0.029j, 0.027j)}), - # no theory prediction found yet, so take accurate value at 13 TeV and scale by the ratio - # of XSDB values at https://xsdb-temp.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=40&searchQuery=process_name%3D%5EZZ_TuneCP5_13.%2Bpythia8%24 # noqa - 13.6: Number(24.97, {"scale": (0.029j, 0.027j)}) * (12.75 / 12.14), + # NNLO+NNLL from https://journals.aps.org/prd/abstract/10.1103/2rr7-5xv3, table 1 + 13: Number(16.518, {"scale": 0.0184j}), + 13.6: Number(17.627, {"scale": 0.0193j}), + }, +) + +# qqZZ: each decay mode normalized independently by its NLO XSDB value × k=1.15 +# NLO XS values from XSDB for individual powheg/amcatnlo samples +qqzz = zz.add_process( + name="qqzz", + id=8170, + label=r"$q\bar{q} \rightarrow ZZ$", + xsecs={ + # XSDB inclusive (LO, Pythia-only) × k(LO→NNLO) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=10&searchQuery=DAS%3DZZ_TuneCP5_13TeV-pythia8 + 13: Number(12.14) * zz_k_lo_to_nnlo, + # XSDB inclusive (LO, Pythia-only) × k(LO→NNLO) + 13.6: Number(12.75) * zz_k_lo_to_nnlo, + }, +) + +zz_zll_zll = zz.add_process( + name="zz_zll_zll", + id=8130, + xsecs={ + # 13 TeV: XSDB NLO 1.256 pb (ZZTo4L powheg) × k(NLO→NNLO) + # NOTE: ZZTo4L amcatnlo is not on XSDB; CMS AN-19-191 gives 1.5 pb × k=1.15 = 1.725 pb (NNLO+NNLL) + 13: Number(1.256) * zz_k_nlo_to_nnlo, + # 13.6 TeV: XSDB NLO 1.39 pb (ZZto4L powheg) × k(NLO→NNLO) + 13.6: Number(1.39) * zz_k_nlo_to_nnlo, }, ) zz_zqq_zll = zz.add_process( name="zz_zqq_zll", id=8110, - xsecs=multiply_xsecs(zz, const.br_zz.llqq), + xsecs={ + # 13 TeV: NLO from GenXSecAnalyzer on UL18 MiniAODv2 (1M events) × k=1.15 (NLO→NNLO) + # Sample: ZZTo2Q2L_mllmin4p0_TuneCP5_13TeV-amcatnloFXFX-pythia8 (amcatnloFXFX → NLO) + # Torben confirmed: XSDB "LO" label is misleading; generator is NLO (amcatnloFXFX) + # GenXSecAnalyzer After filter: 3.698 ± 0.004 pb × k=1.15 = 4.253 pb + # (consistent with XSDB value 3.676 pb for same sample) + # NOTE: 13 TeV sample has mllmin4p0 cut; 13.6 TeV uses powheg without this cut — different phase space + 13: Number(3.698, {"tot": 0.004}) * zz_k_nlo_to_nnlo, + # 13.6 TeV: XSDB NLO 6.788 pb (ZZto2L2Q powheg) × k(NLO→NNLO) + 13.6: Number(6.788) * zz_k_nlo_to_nnlo, + }, ) zz_zll_znunu = zz.add_process( name="zz_zll_znunu", id=8120, - xsecs=multiply_xsecs(zz, const.br_zz.llnunu), + xsecs={ + # 13 TeV: NLO from GenXSecAnalyzer on UL18 MiniAODv2 (1M events) × k=1.15 (NLO→NNLO) + # Sample: ZZTo2L2Nu_TuneCP5_13TeV_powheg_pythia8/RunIISummer20UL18MiniAODv2 (Powheg NLO, ~0% neg. weights) + # Gridpack: ZZ_slc7_amd64_gcc820_CMSSW_11_0_1_ZZ2L2Nu.tgz (UL v2, mll > 4 GeV) + # GenXSecAnalyzer After filter: 0.9738 ± 0.001 pb × k=1.15 = 1.1199 pb + # (sanity: 1.120 pb at 13 TeV < 1.186 pb at 13.6 TeV → ~5.5% energy scaling ✓) + # NOTE (Torben): the Autumn18 sample (RunIIAutumn18MiniAOD, gridpack v1 with mll > 40 GeV) gives 0.6008 pb — + # a different phase space; treat as ZZTo2L2Nu_mll40 if needed. + # The UL value (0.9738 pb, mll > 4 GeV) is used here. + 13: Number(0.9738, {"tot": 0.001}) * zz_k_nlo_to_nnlo, + # 13.6 TeV: XSDB NLO 1.031 pb (ZZto2L2Nu powheg) × k(NLO→NNLO) + 13.6: Number(1.031) * zz_k_nlo_to_nnlo, + }, ) -zz_zll_zll = zz.add_process( - name="zz_zll_zll", - id=8130, - xsecs=multiply_xsecs(zz, const.br_zz.llll), +zz_znunu_zqq = zz.add_process( + name="zz_znunu_zqq", + id=8150, + xsecs={ + # 13 TeV: NLO from GenXSecAnalyzer on UL18 MiniAODv2 (1M events) × k=1.15 (NLO→NNLO) + # Sample: ZZTo2Q2Nu_TuneCP5_13TeV-amcatnloFXFX-pythia8 (ZZTo2Q2Nu01j_5f_NLO_FXFX gridpack → amcatnloFXFX) + # Torben confirmed: XSDB "LO" label is misleading; generator is NLO (amcatnloFXFX) + # GenXSecAnalyzer After filter: 4.487 ± 0.008 pb × k=1.15 = 5.160 pb + # (sanity check: 5.160 pb at 13 TeV < 5.5499 pb at 13.6 TeV — physically consistent) + 13: Number(4.487, {"tot": 0.008}) * zz_k_nlo_to_nnlo, + # 13.6 TeV: XSDB NLO 4.826 pb (ZZto2Nu2Q powheg) × k(NLO→NNLO) + 13.6: Number(4.826) * zz_k_nlo_to_nnlo, + }, ) zz_zqq_zqq = zz.add_process( name="zz_zqq_zqq", id=8140, - xsecs=multiply_xsecs(zz, const.br_zz.qqqq), + xsecs={ + # 13 TeV: NLO from XSDB × k=1.15 (NLO→NNLO) + # Sample: ZZTo4Q_13TeV_amcatnloFXFX_madspin_pythia8 + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=40&searchQuery=process_name%3D%5EZZTo4Q_13TeV_amcatnloFXFX_madspin_pythia8 + # XSDB NLO: 6.912 pb × k(NLO→NNLO) + # NOTE: GenXSecAnalyzer on ZZTo4Q_5f (no madspin) gives only 3.305 pb — different generator setup, + # likely a mass cut difference (Torben). The madspin sample is consistent with the 13.6 TeV setup. + # (sanity: 6.912×k at 13 TeV < 7.832×k at 13.6 TeV → ~12% energy scaling ✓) + 13: Number(6.912) * zz_k_nlo_to_nnlo, + # 13.6 TeV: XSDB NLO 7.832 pb (ZZto4Q amcatnlo) × k(NLO→NNLO) + 13.6: Number(7.832) * zz_k_nlo_to_nnlo, + }, ) -zz_znunu_zqq = zz.add_process( - name="zz_znunu_zqq", - id=8150, - xsecs=multiply_xsecs(zz, const.br_zz.qqnunu), +# ggZZ: each decay mode normalized independently by its LO MCFM value × k=1.7 +# LO XS values in fb from XSDB for individual mcfm samples +# See slides: https://indico.cern.ch/event/1677270/contributions/7200886/attachments/3317393/5938464/ZZXS.pdf +# +# Same-flavor modes (4e, 4μ, 4τ) have the same XSDB LO value; +# different-flavor modes (2e2μ, 2e2τ, 2μ2τ) also share a common value. +# Store these as variables to avoid repetition and make the origin clear. + +# XSDB LO values (in fb) for same-flavor ggZZ modes (GluGlu2Zto4L mcfm) +gg_zz_lo_same_13 = Number(2.703e-03) # GluGlu2Zto4E / 4Mu / 4Tau, 13 TeV +gg_zz_lo_same_13p6 = Number(5.199467e-03) # GluGlu2Zto4E / 4Mu / 4Tau, 13.6 TeV + +# XSDB LO values (in fb) for different-flavor ggZZ modes (GluGlu2Zto2L2L' mcfm) +gg_zz_lo_diff_13 = Number(5.423e-03) # GluGlu2Zto2E2Mu / 2E2Tau / 2Mu2Tau, 13 TeV +gg_zz_lo_diff_13p6 = Number(10.610669e-03) # GluGlu2Zto2E2Mu / 2E2Tau / 2Mu2Tau, 13.6 TeV + +ggzz = zz.add_process( + name="ggzz", + id=8180, + label=r"$gg \rightarrow ZZ$", + xsecs={ + # sum of ggZZ decay modes: 3 same-flavor + 3 different-flavor + 13: (gg_zz_lo_same_13 + gg_zz_lo_diff_13) * const.n_leps, + 13.6: (gg_zz_lo_same_13p6 + gg_zz_lo_diff_13p6) * const.n_leps, + }, ) zz_zee_zee = zz.add_process( name="zz_zee_zee", id=8160, - xsecs=multiply_xsecs(zz, const.br_zz.eeee), + xsecs={ + 13: gg_zz_lo_same_13, + 13.6: gg_zz_lo_same_13p6, + }, ) zz_zee_zmm = zz.add_process( name="zz_zee_zmm", id=8161, - xsecs=multiply_xsecs(zz, const.br_zz.eemm), + xsecs={ + 13: gg_zz_lo_diff_13, + 13.6: gg_zz_lo_diff_13p6, + }, ) zz_zee_ztt = zz.add_process( name="zz_zee_ztt", id=8162, - xsecs=multiply_xsecs(zz, const.br_zz.eett), + xsecs={ + 13: gg_zz_lo_diff_13, + 13.6: gg_zz_lo_diff_13p6, + }, ) zz_zmm_zmm = zz.add_process( name="zz_zmm_zmm", id=8163, - xsecs=multiply_xsecs(zz, const.br_zz.mmmm), + xsecs={ + 13: gg_zz_lo_same_13, + 13.6: gg_zz_lo_same_13p6, + }, ) zz_zmm_ztt = zz.add_process( name="zz_zmm_ztt", id=8164, - xsecs=multiply_xsecs(zz, const.br_zz.mmtt), + xsecs={ + 13: gg_zz_lo_diff_13, + 13.6: gg_zz_lo_diff_13p6, + }, ) zz_ztt_ztt = zz.add_process( name="zz_ztt_ztt", id=8165, - xsecs=multiply_xsecs(zz, const.br_zz.tttt), + xsecs={ + 13: gg_zz_lo_same_13, + 13.6: gg_zz_lo_same_13p6, + }, ) -# WZ xsec values at NLO from https://arxiv.org/pdf/1105.0020.pdf v1 +# WZ inclusive NLO xsec values from https://arxiv.org/pdf/1105.0020.pdf v1 wp_z_xsec = { 13: Number(28.55, {"scale": (0.041j, 0.032j)}), } @@ -2321,34 +2457,70 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): }, ) +# WZto3LNu cross sections for the powheg decay-mode sample (W->lnu, Z->ll). +# Each decay mode is normalized independently by its XSDB NLO value × k-factor (NNLO QCD x NLO EW). +# k-factor is between NNLO QCD x NLO EW (MATRIX) and NLO POWHEG (not NLO MATRIX). +# MATRIX paper: https://arxiv.org/abs/1912.00068 + +# k-factors for WZ decay modes (NLO POWHEG -> NNLO QCD x NLO EW) +wz_k_run2 = 1.19 # from WZ Run2 paper: https://arxiv.org/pdf/2110.11231 +wz_k_run3 = 1.08 # from WZ Run3 paper: https://arxiv.org/pdf/2412.02477 wz_wlnu_zll = wz.add_process( name="wz_wlnu_zll", id=8210, - xsecs=multiply_xsecs(wz, const.br_w.lep * const.br_z.clep), + xsecs={ + # XSDB NLO (powheg) 4.42965 pb × k(NLO POWHEG -> NNLO QCD x NLO EW) + # https://twiki.cern.ch/twiki/bin/view/CMS/SummaryTable1G25ns#Diboson (NLO: 4.42965 pb) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=10&searchQuery=DAS=WZto3LNu_TuneCUETP8M1_13TeV-powheg-pythia8 # noqa + 13: Number(4.42965) * wz_k_run2, + # XSDB NLO (powheg) 4.924 pb × k(NLO POWHEG -> NNLO QCD x NLO EW) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=10&searchQuery=DAS=WZto3LNu_TuneCP5_13p6TeV_powheg-pythia8 # noqa + 13.6: Number(4.924) * wz_k_run3, + }, ) wz_wqq_zll = wz.add_process( name="wz_wqq_zll", id=8220, - xsecs=multiply_xsecs(wz, const.br_w.had * const.br_z.clep), + xsecs={ + 13: wz.get_xsec(13) * const.br_w.had * const.br_z.clep, + # XSDB NLO (powheg) 7.568 pb × k(NLO POWHEG -> NNLO QCD x NLO EW) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/ DAS=WZto2L2Q_TuneCP5_13p6TeV_powheg-pythia8 + # verified from CMS AN-2023/179 + # MATRIX paper: https://arxiv.org/abs/1912.00068 + 13.6: Number(7.568) * wz_k_run3, + }, ) wz_wqq_zqq = wz.add_process( name="wz_wqq_zqq", id=8240, - xsecs=multiply_xsecs(wz, const.br_w.had * const.br_z.qq), + xsecs={ + 13: wz.get_xsec(13) * const.br_w.had * const.br_z.qq, + # XSDB labels this as "LO" but it is actually NLO (amcatnloFXFX = NLO + FxFx jet merging): + # - 21% negative weights (impossible at LO) + # - FxFx matching efficiency ~63% (before: 39.31 pb, after: 24.97 pb) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/ DAS=WZto4Q-1Jets-4FS_TuneCP5_13p6TeV_amcatnloFXFX-pythia8 + # GenXSecAnalyzer (Run3Summer22EEMiniAODv4, 1M events): 24.97 ± 0.03314 pb (after matching) + # NLO (amcatnlo) 24.97 pb × k(NLO -> NNLO QCD x NLO EW) + # MATRIX paper: https://arxiv.org/abs/1912.00068 + 13.6: Number(24.97, {"tot": 0.03314}) * wz_k_run3, + }, ) -# no additional cut found in generator card in MCM: -# dataset: /WZTo1L1Nu2Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM # noqa -# therefore, value obtained from branching ratio. -# Log for GenXSecAnalyzer of -# for WZTo1L1Nu2Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8 (Summer20UL16, NLO) -> value : Number(9.159, {"tot": 0.008259}) -# also available, but not used here +# GenXSecAnalyzer of WZTo1L1Nu2Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8 (Summer20UL16, NLO) +# -> value: Number(9.159, {"tot": 0.008259}), also available but not used for 13 TeV wz_wlnu_zqq = wz.add_process( name="wz_wlnu_zqq", id=8230, - xsecs=multiply_xsecs(wz, const.br_w.lep * const.br_z.qq), + xsecs={ + 13: wz.get_xsec(13) * const.br_w.lep * const.br_z.qq, + # XSDB NLO (powheg) 15.87 pb × k(NLO POWHEG -> NNLO QCD x NLO EW) + # https://xsecdb-xsdb-official.app.cern.ch/xsdb/ DAS=WZtoLNu2Q_TuneCP5_13p6TeV_powheg-pythia8 + # GenXSecAnalyzer (Run3Summer22EEMiniAODv4, 1M events): 15.87 ± 0.007874 pb — exact match with XSDB + # MATRIX paper: https://arxiv.org/abs/1912.00068 + 13.6: Number(15.87, {"tot": 0.007874}) * wz_k_run3, + }, ) # wz + photon @@ -2370,21 +2542,255 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): }, ) +# w + photon +wg_wlnu = Process( + name="wg_wlnu", + id=9600, + label=r"$W\gamma \rightarrow \ell\nu\gamma$", + xsecs={ + # NLO from XSDB: https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=40&searchQuery=process_name%3D%5EWGtoLNuG-1Jets_TuneCP5_13p6TeV # noqa + 13.6: Number(671.5, { + "tot": 0.7548, + }), + }, +) + +# DY + photon (Zγ) +# Run 3 naming: DYGto2LG-1Jets (was ZGTo2LG in Run 2) +# NLO cross sections from XSDB for inclusive samples +# LO cross sections from XSDB for PTG-binned samples (bounded bins, 2022/2023) +# NLO cross sections from XSDB for PTG-binned samples (open thresholds, 2024 Bin- convention) + +dyg = Process( + name="dyg", + id=9700, + label=r"DY+$\gamma$", +) + +dyg_m50toinf = dyg.add_process( + name="dyg_m50toinf", + id=9710, + label=r"DY+$\gamma$ ($m_{\ell\ell} \geq 50$)", + xsecs={ + # NLO from XSDB: DYGto2LG-1Jets_MLL-50_TuneCP5_13p6TeV_amcatnloFXFX-pythia8 + 13.6: Number(127.0, { + "tot": 0.1484, + }), + }, + aux={ + "mll": (50.0, const.inf), + }, +) + +# bounded PTG bins (used in 2022/2023 campaigns) + +dyg_m50toinf_ptg10to100 = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg10to100", + id=9711, + xsecs={ + # LO from XSDB + 13.6: Number(126.6, { + "tot": 0.4287, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (10.0, 100.0), + }, +) + +dyg_m50toinf_ptg100to200 = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg100to200", + id=9712, + xsecs={ + # LO from XSDB + 13.6: Number(0.3493, { + "tot": 0.001778, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (100.0, 200.0), + }, +) + +dyg_m50toinf_ptg200to400 = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg200to400", + id=9713, + xsecs={ + # LO from XSDB + 13.6: Number(0.04331, { + "tot": 0.000221, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (200.0, 400.0), + }, +) + +dyg_m50toinf_ptg400to600 = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg400to600", + id=9714, + xsecs={ + # LO from XSDB + 13.6: Number(0.00313, { + "tot": 0.00001539, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (400.0, 600.0), + }, +) + +dyg_m50toinf_ptg600toinf = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg600toinf", + id=9715, + xsecs={ + # LO from XSDB + 13.6: Number(0.0006528, { + "tot": 0.000002983, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (600.0, const.inf), + }, +) + +# open-threshold PTG bins (used in 2024 Bin- convention) + +dyg_m50toinf_ptg100toinf = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg100toinf", + id=9716, + xsecs={ + # NLO from XSDB: DYGto2LG-1Jets_Bin-MLL-50-PTG-100 + 13.6: Number(0.3942, { + "tot": 0.0007196, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (100.0, const.inf), + }, +) + +dyg_m50toinf_ptg200toinf = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg200toinf", + id=9717, + xsecs={ + # NLO from XSDB: DYGto2LG-1Jets_Bin-MLL-50-PTG-200 + 13.6: Number(0.04738, { + "tot": 0.00008731, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (200.0, const.inf), + }, +) + +dyg_m50toinf_ptg400toinf = dyg_m50toinf.add_process( + name="dyg_m50toinf_ptg400toinf", + id=9718, + xsecs={ + # NLO from XSDB: DYGto2LG-1Jets_Bin-MLL-50-PTG-400 + 13.6: Number(0.003741, { + "tot": 0.00002272, + }), + }, + aux={ + "mll": (50.0, const.inf), + "ptg": (400.0, const.inf), + }, +) + +dyg_m4to50 = dyg.add_process( + name="dyg_m4to50", + id=9720, + label=r"DY+$\gamma$ ($4 \leq m_{\ell\ell} < 50$)", + xsecs={ + # NLO from XSDB: DYGto2LG-1Jets_Bin-MLL-4to50 (2024) + 13.6: Number(88.13, { + "tot": 0.09618, + }), + }, + aux={ + "mll": (4.0, 50.0), + }, +) + +dyg_m4to50_ptg10to100 = dyg_m4to50.add_process( + name="dyg_m4to50_ptg10to100", + id=9721, + xsecs={ + # LO from XSDB + 13.6: Number(88.17, { + "tot": 0.2807, + }), + }, + aux={ + "mll": (4.0, 50.0), + "ptg": (10.0, 100.0), + }, +) + +dyg_m4to50_ptg100to200 = dyg_m4to50.add_process( + name="dyg_m4to50_ptg100to200", + id=9722, + xsecs={ + # LO from XSDB + 13.6: Number(0.2413, { + "tot": 0.001249, + }), + }, + aux={ + "mll": (4.0, 50.0), + "ptg": (100.0, 200.0), + }, +) + +dyg_m4to50_ptg200toinf = dyg_m4to50.add_process( + name="dyg_m4to50_ptg200toinf", + id=9723, + xsecs={ + # LO from XSDB + 13.6: Number(0.02224, { + "tot": 0.0001052, + }), + }, + aux={ + "mll": (4.0, 50.0), + "ptg": (200.0, const.inf), + }, +) + # NNLO QCD from https://twiki.cern.ch/twiki/bin/view/CMS/StandardModelCrossSectionsat13TeV?rev=28 # itself from https://arxiv.org/pdf/1408.5243.pdf v1 +# +# 13.6 TeV: WW_TuneCP5_13p6TeV_pythia8 is LO Pythia (WeakDoubleBoson:ffbar2WW, qq only). +# McM fragment: BTV-Run3Summer22GS-00015, crossSection = 75.8 (hardcoded LO). +# GenXSecAnalyzer: 80.22 pb (LO). XSDB: 80.23 pb. +# k(LO→NNLO) ≈ 1.75 from Grazzini et al., JHEP 08 (2016) 140 [arXiv:1605.02716], Table 2: +# 13 TeV: NNLO/LO = 1370.9/778.99 = 1.76 +# +# k-factors for WW +# qqWW: k=1.14 (NLO→NNLO) from arXiv:1605.02716 (Grazzini et al., JHEP 08 (2016) 140) +# ggWW: k=1.41 (LO→NLO) from arXiv:1511.08617 (Caola et al., Phys. Lett. B 754 (2016) 275) +# LO→NNLO (Pythia inclusive): k≈1.75 from the same Grazzini et al. paper +ww_k_lo_to_nnlo = 1.75 # LO→NNLO (Pythia inclusive) +ww_k_nlo_to_nnlo = 1.14 # qqWW: NLO→NNLO +ww_gg_k_lo_to_nlo = 1.41 # ggWW: LO MCFM → NLO -# old value before update: -# https://cms.cern.ch/iCMS/jsp/db_notes/noteInfo.jsp?cmsnoteid=CMS%20AN-2019/197 (v3) Number(75.91) (LO) ww = vv.add_process( name="ww", id=8300, label="WW", xsecs={ 13: Number(118.7, {"scale": (0.025j, 0.022j)}), - # 13.6 from GenXSecAnalyzer: - 13.6: Number(80.22, { - "tot": 0.01677, # xsdb: Number(80.23, {"tot": 0.3733}) - }), + # 13.6: LO Pythia GenXSecAnalyzer × k(LO→NNLO) + 13.6: Number(80.22, {"tot": 0.01677}) * ww_k_lo_to_nnlo, }, ) @@ -2392,9 +2798,28 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): for cme in [13]: vv.set_xsec(cme, ww.get_xsec(cme) + wz.get_xsec(cme) + zz.get_xsec(cme)) +# qqWW: each decay mode normalized independently by its NLO XSDB value × k(NLO→NNLO) +# NLO XS values from XSDB for individual Powheg samples (WWto2L2Nu, WWtoLNu2Q, WWto4Q) + +# XSDB NLO values (pb) for individual qqWW decay modes at 13.6 TeV +ww_dl_nlo_13p6 = Number(11.79, {"tot": 0.004216}) +ww_sl_nlo_13p6 = Number(48.94, {"tot": 0.0175}) +ww_fh_nlo_13p6 = Number(50.79, {"tot": 0.01816}) + +qqww = ww.add_process( + name="qqww", + id=8370, + label=r"$q\bar{q} \rightarrow WW$", + xsecs={ + 13: ww.get_xsec(13), # at 13 TeV, qqWW ≈ inclusive (ggWW is small) + # 13.6: sum of Powheg NLO decay modes × k(NLO→NNLO) + 13.6: (ww_dl_nlo_13p6 + ww_sl_nlo_13p6 + ww_fh_nlo_13p6) * ww_k_nlo_to_nnlo, + }, +) + # no additional cut found in generator card: # https://raw.githubusercontent.com/cms-sw/genproductions/master/bin/Powheg/production/2017/13TeV/WWTo2L2Nu_NNPDF31nnlo_13TeV/WWTo2L2Nu_NNPDF31nnlo_13TeV.input # noqa -# therefore, value obtained from branching ratio. +# therefore, 13 TeV value obtained from branching ratio. # Log for GenXSecAnalyzer of # WWTo2L2Nu_TuneCP5_13TeV-powheg-pythia8 (Summer20UL16, NLO) with Number(11.09, {"tot": 0.00704}) # also available, but not used here @@ -2403,12 +2828,14 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): id=8310, xsecs={ 13: ww.get_xsec(13) * const.br_ww.dl, # value around 12.6 for comparison to GenXSecAnalyzer NLO result + # 13.6: XSDB NLO × k(NLO→NNLO) + 13.6: ww_dl_nlo_13p6 * ww_k_nlo_to_nnlo, }, ) # no additional cut found in generator card in MCM: # dataset: /WWTo1L1Nu2Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM # noqa -# therefore, value obtained from branching ratio. +# therefore, 13 TeV value obtained from branching ratio. # Log for GenXSecAnalyzer of # for WWTo1L1Nu2Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8 (Summer20UL16, NLO) -> value : Number(50.94, {"tot": 0.042}) # also available, but not used here @@ -2417,12 +2844,14 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): id=8320, xsecs={ 13: ww.get_xsec(13) * const.br_ww.sl, # value around 50.06 for comparison to GenXSecAnalyzer NLO result + # 13.6: XSDB NLO × k(NLO→NNLO) + 13.6: ww_sl_nlo_13p6 * ww_k_nlo_to_nnlo, }, ) # no additional cut found in generator card in MCM: # dataset: /WWTo4Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v3/MINIAODSIM # noqa -# therefore, value obtained from branching ratio. +# therefore, 13 TeV value obtained from branching ratio. # Log for GenXSecAnalyzer of # for WWTo4Q_4f_TuneCP5_13TeV-amcatnloFXFX-pythia8 (Summer20UL16, NLO) -> value : Number(51.53, {"tot": 0.04349}) # also available, but not used here @@ -2431,43 +2860,103 @@ def get_dy_ll_m50toinf_xsec_13p6(*name): id=8330, xsecs={ 13: ww.get_xsec(13) * const.br_ww.fh, # value around 53.94 for comparison to GenXSecAnalyzer NLO result + # 13.6: XSDB NLO × k(NLO→NNLO) + 13.6: ww_fh_nlo_13p6 * ww_k_nlo_to_nnlo, }, ) -ww_wenu_wenu = ww_dl.add_process( +# ggWW: each decay mode normalized independently by its LO MCFM value × k(LO→NLO) +# LO XS values in fb from XSDB for individual mcfm samples (XSDB mistakenly lists as pb; MCFM outputs in fb) +# See also CMS AN-2023/179. +# +# NOTE on same-flavor vs different-flavor: +# MCFM gridpacks give the same XS for all channels (per-sample). +# Same-flavor (ee, μμ, ττ): 1 sample per pair → XS = mcfm_lo × k +# Different-flavor (eμ, eτ, μτ): 2 samples per pair (e.g., ENuMuNu + MuNuENu) → XS = 2 × mcfm_lo × k +# Total ggWW→2l2ν = (same + diff) × n_leps + +# MCFM LO value (pb, converted from fb) — same for all channels at 13.6 TeV +gg_ww_mcfm_lo_13p6 = Number(49.63e-03) # 49.63 fb from XSDB + +# per-channel: same-flavor = 1× and different-flavor = 2× (two sample orderings) +gg_ww_same_13p6 = gg_ww_mcfm_lo_13p6 * ww_gg_k_lo_to_nlo +gg_ww_diff_13p6 = 2 * gg_ww_mcfm_lo_13p6 * ww_gg_k_lo_to_nlo + +ggww = ww.add_process( + name="ggww", + id=8380, + label=r"$gg \rightarrow WW$", + xsecs={ + # sum of ggWW decay modes: (same + diff) × n_leps + 13.6: (gg_ww_same_13p6 + gg_ww_diff_13p6) * const.n_leps, + }, +) + +ww_wenu_wenu = ww.add_process( name="ww_wenu_wenu", id=8311, - xsecs=multiply_xsecs(ww, const.br_ww.enuenu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.enuenu, + 13.6: gg_ww_same_13p6, # same-flavor, 1 sample + }, ) -ww_wenu_wmnu = ww_dl.add_process( +ww_wenu_wmnu = ww.add_process( name="ww_wenu_wmnu", id=8312, - xsecs=multiply_xsecs(ww, const.br_ww.enumnu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.enumnu, + 13.6: gg_ww_diff_13p6, # different-flavor, 2 samples (ENuMuNu + MuNuENu) + }, ) -ww_wenu_wtnu = ww_dl.add_process( +ww_wenu_wtnu = ww.add_process( name="ww_wenu_wtnu", id=8313, - xsecs=multiply_xsecs(ww, const.br_ww.enutnu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.enutnu, + 13.6: gg_ww_diff_13p6, # different-flavor, 2 samples + }, ) -ww_wmnu_wmnu = ww_dl.add_process( +ww_wmnu_wmnu = ww.add_process( name="ww_wmnu_wmnu", id=8314, - xsecs=multiply_xsecs(ww, const.br_ww.mnumnu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.mnumnu, + 13.6: gg_ww_same_13p6, # same-flavor, 1 sample + }, ) -ww_wmnu_wtnu = ww_dl.add_process( +ww_wmnu_wtnu = ww.add_process( name="ww_wmnu_wtnu", id=8315, - xsecs=multiply_xsecs(ww, const.br_ww.mnutnu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.mnutnu, + 13.6: gg_ww_diff_13p6, # different-flavor, 2 samples + }, ) -ww_wtnu_wtnu = ww_dl.add_process( +ww_wtnu_wtnu = ww.add_process( name="ww_wtnu_wtnu", id=8316, - xsecs=multiply_xsecs(ww, const.br_ww.tnutnu), + xsecs={ + 13: ww.get_xsec(13) * const.br_ww.tnutnu, + 13.6: gg_ww_same_13p6, # same-flavor, 1 sample + }, +) + +# same-sign WW (EWK+QCD) +ww_ss_2j = Process( + name="ww_ss_2j", + id=8400, + label=r"$W^{\pm}W^{\pm}jj$", + xsecs={ + # LO from XSDB: https://xsecdb-xsdb-official.app.cern.ch/xsdb/?columns=67108863¤tPage=0&pageSize=40&searchQuery=process_name%3D%5EWpWpJJ-EWK-QCD_TuneCP5_13p6TeV # noqa + 13.6: Number(0.0587, { + "tot": 0.00001523, + }), + }, ) #