diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/data.yaml b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/data.yaml new file mode 100644 index 0000000000..d9b577a16a --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/data.yaml @@ -0,0 +1,14 @@ +data_central: +- 224.0 +- 102.0 +- 51.2 +- 2.84000000e+01 +- 1.87000000e+01 +- 10.7 +- 8.23000000e+00 +- 4.66 +- 1.7 +- 0.474 +- 0.146 +- 2.21000000e-02 +- 2.88000000e-03 diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter.py b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter.py new file mode 100644 index 0000000000..a1ea470b6e --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter.py @@ -0,0 +1,94 @@ +""" +filter.py module for ATLAS_Z0_7TEV_49FB dataset +When running `python filter.py` the relevant data yaml +file will be created in the `nnpdf_data/commondata/ATLAS_Z0_7TEV_LOMASS` directory. +""" + +import yaml +from filter_utils import get_data_values, get_kinematics, get_systematics +from nnpdf_data.filter_utils.utils import prettify_float + +yaml.add_representer(float, prettify_float) + + +def filter_ATLAS_Z0_7TEV_49FB_data_kinetic(): + """ + This function writes the central values to yaml files. + """ + central_values = list(get_data_values()) + + kin = get_kinematics() + + data_central_yaml = {"data_central": central_values} + + kinematics_yaml = {"bins": kin} + + # write central values and kinematics to yaml file + with open("data.yaml", "w") as file: + yaml.dump(data_central_yaml, file, sort_keys=False) + + with open("kinematics.yaml", "w") as file: + yaml.dump(kinematics_yaml, file, sort_keys=False) + + +def filter_ATLAS_Z0_7TEV_49FB_systematics(): + """ + This function writes the systematics to a yaml file. + """ + + with open("metadata.yaml", "r") as file: + metadata = yaml.safe_load(file) + + systematics = get_systematics() + + # error definition + error_definitions = {} + errors = [] + + for sys in systematics: + if sys[0]['name'] == 'Stat': + error_definitions[sys[0]['name']] = { + "description": f"{sys[0]['name']}", + "treatment": "ADD", + "type": "UNCORR", + } + + elif (sys[0]['name'] == 'Nbkg_stat') or (sys[0]['name'] == 'CDY_stat'): + error_definitions[sys[0]['name']] = { + "description": f"{sys[0]['name']}", + "treatment": "MULT", + "type": "UNCORR", + } + + elif sys[0]['name'] == 'Lumi': + error_definitions[sys[0]['name']] = { + "description": f"{sys[0]['name']}", + "treatment": "MULT", + "type": "ATLASLUMI11", + } + + else: + error_definitions[sys[0]['name']] = { + "description": f"{sys[0]['name']}", + "treatment": "MULT", + "type": "CORR", + } + + for i in range(metadata['implemented_observables'][0]['ndata']): + error_value = {} + + for sys in systematics: + error_value[sys[0]['name']] = float(sys[0]['values'][i]) + + errors.append(error_value) + + uncertainties_yaml = {"definitions": error_definitions, "bins": errors} + + # write uncertainties + with open(f"uncertainties.yaml", 'w') as file: + yaml.dump(uncertainties_yaml, file, sort_keys=False) + + +if __name__ == "__main__": + filter_ATLAS_Z0_7TEV_49FB_data_kinetic() + filter_ATLAS_Z0_7TEV_49FB_systematics() diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter_utils.py b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter_utils.py new file mode 100644 index 0000000000..8f4073c4d2 --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/filter_utils.py @@ -0,0 +1,83 @@ +""" +This module contains helper functions that are used to extract the data values +from the rawdata files. +""" + +import yaml +import pandas as pd +import numpy as np + + +def get_data_values(): + """ + returns the central data values in the form of a list. + """ + + data_central = [] + + hepdata_table = f"rawdata/HEPData-ins1234228-v1-Table_1.yaml" + + with open(hepdata_table, 'r') as file: + input = yaml.safe_load(file) + + values = input['dependent_variables'][0]['values'] + + for value in values: + # store data central and convert the units + data_central.append(value['value'] * 1000) + + return data_central + + +def get_kinematics(): + """ + returns the kinematics in the form of a list of dictionaries. + """ + kin = [] + + hepdata_table = f"rawdata/HEPData-ins1234228-v1-Table_1.yaml" + + with open(hepdata_table, 'r') as file: + input = yaml.safe_load(file) + + for i, M in enumerate(input["independent_variables"][0]['values']): + + kin_value = {'m_ll': {'min': None, 'mid': (0.5 * (M['low'] + M['high'])), 'max': None}} + + kin.append(kin_value) + + return kin + + +def get_systematics_dataframe(): + """ + returns the absolute systematic uncertainties in the form of a pandas dataframe. + """ + sys_rawdata_path = "rawdata/ATLAS-49fb-Zhighmass.csv" + + df = pd.read_csv(sys_rawdata_path) + data_central = np.array(get_data_values()) + + # convert (MULT) percentage unc to absolute unc + abs_unc_df = (df.T[2:] * data_central).T / 100 + + return abs_unc_df + + +def get_systematics(): + """ """ + abs_unc_df = get_systematics_dataframe() + + uncertainties = [] + + for i, unc_dp in enumerate(abs_unc_df.values.T): + name = f"{abs_unc_df.columns[i]}" + values = [unc_dp[j] for j in range(len(unc_dp))] + uncertainties.append([{"name": name, "values": values}]) + + return uncertainties + + +if __name__ == "__main__": + get_data_values() + get_systematics_dataframe() diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/kinematics.yaml b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/kinematics.yaml new file mode 100644 index 0000000000..4ef504f00f --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/kinematics.yaml @@ -0,0 +1,53 @@ +bins: +- m_ll: + min: null + mid: 123.0 + max: null +- m_ll: + min: null + mid: 140.0 + max: null +- m_ll: + min: null + mid: 160.0 + max: null +- m_ll: + min: null + mid: 180.0 + max: null +- m_ll: + min: null + mid: 200.0 + max: null +- m_ll: + min: null + mid: 220.0 + max: null +- m_ll: + min: null + mid: 240.0 + max: null +- m_ll: + min: null + mid: 275.0 + max: null +- m_ll: + min: null + mid: 350.0 + max: null +- m_ll: + min: null + mid: 450.0 + max: null +- m_ll: + min: null + mid: 600.0 + max: null +- m_ll: + min: null + mid: 850.0 + max: null +- m_ll: + min: null + mid: 1250.0 + max: null diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/metadata.yaml b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/metadata.yaml index 8ea136e9dc..d1c801d942 100644 --- a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/metadata.yaml +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/metadata.yaml @@ -1,6 +1,6 @@ setname: ATLAS_Z0_7TEV_49FB -version: 1 -version_comment: Port of old commondata +version: 2 +version_comment: Reimplementation of old commondata nnpdf_metadata: nnpdf31_process: DY NC experiment: ATLAS @@ -8,9 +8,9 @@ arXiv: url: https://arxiv.org/abs/1305.4192 journal: Phys.Lett. B725 (2013) 223 iNSPIRE: - url: '' + url: 'https://inspirehep.net/literature/1234228' hepdata: - url: 10.17182/hepdata.61422.v1/t1 + url: https://www.hepdata.net/record/ins1234228 version: -1 implemented_observables: - observable_name: HIMASS @@ -18,44 +18,35 @@ implemented_observables: description: Drell-Yan Mass Distribution label: ATLAS HM DY 7 TeV units: '' - process_type: EWK_MLL - tables: [] + process_type: "DY_MLL" + tables: [1] npoints: [] ndata: 13 plotting: - kinematics_override: ewk_mll_sqrt_scale + kinematics_override: identity dataset_label: ATLAS HM DY 7 TeV y_label: $d\sigma_{Z/\gamma^{*}}/dM_{ll}$ (fb) y_scale: log - plot_x: k2 + plot_x: m_ll kinematic_coverage: - - k1 - - k2 - - k3 + - m_ll kinematics: variables: - k1: - description: Variable k1 - label: k1 - units: '' - k2: - description: Variable k2 - label: k2 - units: '' - k3: - description: Variable k3 - label: k3 - units: '' - file: kinematics_HIMASS.yaml + m_ll: + description: Mass of lepton pair + label: "$m_{ll}$" + units: 'GeV' + file: kinematics.yaml theory: conversion_factor: 1000.0 operation: 'null' FK_tables: - - ATLAS_DY_7TEV_49FB_HIMASS - data_uncertainties: [] + data_uncertainties: + - uncertainties.yaml variants: legacy: data_uncertainties: - - uncertainties_legacy_HIMASS.yaml - data_central: data_legacy_HIMASS.yaml + - uncertainties.yaml + data_central: data.yaml ported_from: ATLASZHIGHMASS49FB diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.csv b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.csv new file mode 100644 index 0000000000..bb18e4d58f --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.csv @@ -0,0 +1,14 @@ +mee_xmin,mee_xmax,Stat,Nbkg_stat,CDY_stat,Nbkg,Reco,Id,Energy_scale_res,Unfolding,Trigger,MC_Modelling,Theoretical,Lumi +116,130,1.1,0.1,0.7,1.3,1.6,2.3,2.1,1.5,0.8,0.2,0.3,1.8 +130,150,1.4,0.2,0.7,1.8,1.6,2.3,1.7,1.5,0.8,0.5,0.2,1.8 +150,170,2.0,0.3,1.0,2.5,1.6,2.3,1.6,1.5,0.8,0.2,0.2,1.8 +170,190,2.7,0.4,1.3,2.8,1.6,2.3,1.0,1.5,0.8,0.2,0.2,1.8 +190,210,3.0,0.5,1.7,3.4,1.6,2.4,1.5,1.5,0.8,0.3,0.4,1.8 +210,230,4.4,0.9,2.0,4.1,1.6,2.4,2.0,1.5,0.8,0.8,0.5,1.8 +230,250,5.2,0.9,2.4,3.8,1.6,2.4,1.2,1.5,0.8,0.2,0.3,1.8 +250,300,4.3,0.7,0.9,4.1,1.6,2.4,1.7,1.5,0.8,0.2,0.2,1.8 +300,400,5.1,0.9,1.0,4.4,1.6,2.5,1.7,1.5,0.8,0.3,0.3,1.8 +400,500,9.4,2.0,0.9,4.0,1.6,2.6,2.3,1.5,0.8,0.5,0.4,1.8 +500,700,11,2.0,0.8,3.1,1.6,2.6,2.4,1.5,0.8,0.2,0.3,1.8 +700,1000,24,4.0,0.6,4.3,1.6,2.6,2.8,1.5,0.8,0.2,0.4,1.8 +1000,1500,50,7.6,0.4,3.1,1.7,2.5,3.3,1.5,0.8,0.3,0.4,1.8 diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.sys b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.sys new file mode 100644 index 0000000000..11171ba3bb --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/ATLAS-49fb-Zhighmass.sys @@ -0,0 +1,19 @@ +Born level +============================================================================================================ +mee mee Stat. Nbkg CDY Nbkg Reco. Id. Energy Unfolding Trigger MC Theoretical Lumi +xmin xmax stat. stat. scale&res modelling + GeV <-uncorrelated (%)-> <---------------------bin-to-bin correlated (%)---------------------> +============================================================================================================ +116 130 1.1 0.1 0.7 1.3 1.6 2.3 2.1 1.5 0.8 0.2 0.3 1.8 +130 150 1.4 0.2 0.7 1.8 1.6 2.3 1.7 1.5 0.8 0.5 0.2 1.8 +150 170 2.0 0.3 1.0 2.5 1.6 2.3 1.6 1.5 0.8 0.2 0.2 1.8 +170 190 2.7 0.4 1.3 2.8 1.6 2.3 1.0 1.5 0.8 0.2 0.2 1.8 +190 210 3.0 0.5 1.7 3.4 1.6 2.4 1.5 1.5 0.8 0.3 0.4 1.8 +210 230 4.4 0.9 2.0 4.1 1.6 2.4 2.0 1.5 0.8 0.8 0.5 1.8 +230 250 5.2 0.9 2.4 3.8 1.6 2.4 1.2 1.5 0.8 0.2 0.3 1.8 +250 300 4.3 0.7 0.9 4.1 1.6 2.4 1.7 1.5 0.8 0.2 0.2 1.8 +300 400 5.1 0.9 1.0 4.4 1.6 2.5 1.7 1.5 0.8 0.3 0.3 1.8 +400 500 9.4 2.0 0.9 4.0 1.6 2.6 2.3 1.5 0.8 0.5 0.4 1.8 +500 700 11 2.0 0.8 3.1 1.6 2.6 2.4 1.5 0.8 0.2 0.3 1.8 +700 1000 24 4.0 0.6 4.3 1.6 2.6 2.8 1.5 0.8 0.2 0.4 1.8 +1000 1500 50 7.6 0.4 3.1 1.7 2.5 3.3 1.5 0.8 0.3 0.4 1.8 diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/HEPData-ins1234228-v1-Table_1.yaml b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/HEPData-ins1234228-v1-Table_1.yaml new file mode 100644 index 0000000000..b696003121 --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/rawdata/HEPData-ins1234228-v1-Table_1.yaml @@ -0,0 +1,137 @@ +dependent_variables: +- header: {name: D(SIG)/DM(EE), units: PB/GEV} + qualifiers: + - {name: ABS(ETARAP(EE)), value: < 2.5} + - {name: PT(C=E), units: GEV, value: '> 25'} + - {name: RE, value: P P --> E+ E- X} + - {name: SQRT(S), units: GeV, value: '7000.0'} + - {name: '', value: BORN} + values: + - errors: + - {label: stat, symerror: 1.1%} + - {label: sys, symerror: 4.2%} + value: 0.224 + - errors: + - {label: stat, symerror: 1.4%} + - {label: sys, symerror: 4.3%} + value: 0.102 + - errors: + - {label: stat, symerror: 2.0%} + - {label: sys, symerror: 4.6%} + value: 0.0512 + - errors: + - {label: stat, symerror: 2.7%} + - {label: sys, symerror: 4.7%} + value: 0.0284 + - errors: + - {label: stat, symerror: 3.0%} + - {label: sys, symerror: 5.3%} + value: 0.0187 + - errors: + - {label: stat, symerror: 4.4%} + - {label: sys, symerror: 6.1%} + value: 0.0107 + - errors: + - {label: stat, symerror: 5.2%} + - {label: sys, symerror: 5.9%} + value: 0.00823 + - errors: + - {label: stat, symerror: 4.3%} + - {label: sys, symerror: 5.8%} + value: 0.00466 + - errors: + - {label: stat, symerror: 5.1%} + - {label: sys, symerror: 5.9%} + value: 0.0017 + - errors: + - {label: stat, symerror: 9.4%} + - {label: sys, symerror: 6.3%} + value: 0.000474 + - errors: + - {label: stat, symerror: 11.0%} + - {label: sys, symerror: 5.7%} + value: 0.000146 + - errors: + - {label: stat, symerror: 24.0%} + - {label: sys, symerror: 7.5%} + value: 2.21e-05 + - errors: + - {label: stat, symerror: 50.0%} + - {label: sys, symerror: 9.8%} + value: 2.88e-06 +- header: {name: D(SIG)/DM(EE), units: PB/GEV} + qualifiers: + - {name: ABS(ETARAP(EE)), value: < 2.5} + - {name: PT(C=E), units: GEV, value: '> 25'} + - {name: RE, value: P P --> E+ E- X} + - {name: SQRT(S), units: GeV, value: '7000.0'} + - {name: '', value: DRESSED} + values: + - errors: + - {label: stat, symerror: 1.1%} + - {label: sys, symerror: 4.2%} + value: 0.215 + - errors: + - {label: stat, symerror: 1.4%} + - {label: sys, symerror: 4.3%} + value: 0.0984 + - errors: + - {label: stat, symerror: 2.0%} + - {label: sys, symerror: 4.6%} + value: 0.0493 + - errors: + - {label: stat, symerror: 2.7%} + - {label: sys, symerror: 4.7%} + value: 0.0276 + - errors: + - {label: stat, symerror: 3.0%} + - {label: sys, symerror: 5.3%} + value: 0.0182 + - errors: + - {label: stat, symerror: 4.4%} + - {label: sys, symerror: 6.1%} + value: 0.0104 + - errors: + - {label: stat, symerror: 5.2%} + - {label: sys, symerror: 5.9%} + value: 0.00798 + - errors: + - {label: stat, symerror: 4.3%} + - {label: sys, symerror: 5.8%} + value: 0.00452 + - errors: + - {label: stat, symerror: 5.1%} + - {label: sys, symerror: 5.9%} + value: 0.00165 + - errors: + - {label: stat, symerror: 9.4%} + - {label: sys, symerror: 6.3%} + value: 0.000458 + - errors: + - {label: stat, symerror: 11.0%} + - {label: sys, symerror: 5.7%} + value: 0.000141 + - errors: + - {label: stat, symerror: 24.0%} + - {label: sys, symerror: 7.5%} + value: 2.13e-05 + - errors: + - {label: stat, symerror: 50.0%} + - {label: sys, symerror: 9.8%} + value: 2.76e-06 +independent_variables: +- header: {name: M(EE), units: GEV} + values: + - {high: 130.0, low: 116.0} + - {high: 150.0, low: 130.0} + - {high: 170.0, low: 150.0} + - {high: 190.0, low: 170.0} + - {high: 210.0, low: 190.0} + - {high: 230.0, low: 210.0} + - {high: 250.0, low: 230.0} + - {high: 300.0, low: 250.0} + - {high: 400.0, low: 300.0} + - {high: 500.0, low: 400.0} + - {high: 700.0, low: 500.0} + - {high: 1000.0, low: 700.0} + - {high: 1500.0, low: 1000.0} diff --git a/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/uncertainties.yaml b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/uncertainties.yaml new file mode 100644 index 0000000000..1c58b9975c --- /dev/null +++ b/nnpdf_data/nnpdf_data/commondata/ATLAS_Z0_7TEV_49FB/uncertainties.yaml @@ -0,0 +1,206 @@ +definitions: + Stat: + description: Stat + treatment: ADD + type: UNCORR + Nbkg_stat: + description: Nbkg_stat + treatment: MULT + type: UNCORR + CDY_stat: + description: CDY_stat + treatment: MULT + type: UNCORR + Nbkg: + description: Nbkg + treatment: MULT + type: CORR + Reco: + description: Reco + treatment: MULT + type: CORR + Id: + description: Id + treatment: MULT + type: CORR + Energy_scale_res: + description: Energy_scale_res + treatment: MULT + type: CORR + Unfolding: + description: Unfolding + treatment: MULT + type: CORR + Trigger: + description: Trigger + treatment: MULT + type: CORR + MC_Modelling: + description: MC_Modelling + treatment: MULT + type: CORR + Theoretical: + description: Theoretical + treatment: MULT + type: CORR + Lumi: + description: Lumi + treatment: MULT + type: ATLASLUMI11 +bins: +- Stat: 2.46400000e+00 + Nbkg_stat: 2.24000000e-01 + CDY_stat: 1.56800000e+00 + Nbkg: 2.912 + Reco: 3.58400000e+00 + Id: 5.15200000e+00 + Energy_scale_res: 4.70400000e+00 + Unfolding: 3.36 + Trigger: 1.79200000e+00 + MC_Modelling: 4.48000000e-01 + Theoretical: 0.672 + Lumi: 4.032 +- Stat: 1.428 + Nbkg_stat: 2.04000000e-01 + CDY_stat: 0.714 + Nbkg: 1.83600000e+00 + Reco: 1.63200000e+00 + Id: 2.346 + Energy_scale_res: 1.734 + Unfolding: 1.53 + Trigger: 8.16000000e-01 + MC_Modelling: 0.51 + Theoretical: 2.04000000e-01 + Lumi: 1.83600000e+00 +- Stat: 1.024 + Nbkg_stat: 0.1536 + CDY_stat: 0.512 + Nbkg: 1.28 + Reco: 8.19200000e-01 + Id: 1.1776 + Energy_scale_res: 8.19200000e-01 + Unfolding: 7.68000000e-01 + Trigger: 4.09600000e-01 + MC_Modelling: 1.02400000e-01 + Theoretical: 1.02400000e-01 + Lumi: 9.21600000e-01 +- Stat: 0.7668 + Nbkg_stat: 0.1136 + CDY_stat: 3.69200000e-01 + Nbkg: 7.95200000e-01 + Reco: 0.4544 + Id: 6.53200000e-01 + Energy_scale_res: 2.84000000e-01 + Unfolding: 0.426 + Trigger: 0.2272 + MC_Modelling: 0.0568 + Theoretical: 0.0568 + Lumi: 5.11200000e-01 +- Stat: 0.561 + Nbkg_stat: 9.35000000e-02 + CDY_stat: 0.3179 + Nbkg: 0.6358 + Reco: 2.99200000e-01 + Id: 4.48800000e-01 + Energy_scale_res: 0.2805 + Unfolding: 0.2805 + Trigger: 1.49600000e-01 + MC_Modelling: 5.61000000e-02 + Theoretical: 7.48000000e-02 + Lumi: 0.3366 +- Stat: 0.4708 + Nbkg_stat: 0.0963 + CDY_stat: 0.214 + Nbkg: 4.38700000e-01 + Reco: 1.71200000e-01 + Id: 0.2568 + Energy_scale_res: 0.214 + Unfolding: 1.60500000e-01 + Trigger: 8.56000000e-02 + MC_Modelling: 8.56000000e-02 + Theoretical: 0.0535 + Lumi: 0.1926 +- Stat: 4.27960000e-01 + Nbkg_stat: 0.07407 + CDY_stat: 1.97520000e-01 + Nbkg: 3.12740000e-01 + Reco: 0.13168 + Id: 1.97520000e-01 + Energy_scale_res: 9.87600000e-02 + Unfolding: 1.23450000e-01 + Trigger: 0.06584 + MC_Modelling: 0.01646 + Theoretical: 2.46900000e-02 + Lumi: 0.14814 +- Stat: 0.20038 + Nbkg_stat: 0.03262 + CDY_stat: 0.04194 + Nbkg: 1.91060000e-01 + Reco: 0.07456 + Id: 0.11184 + Energy_scale_res: 0.07922 + Unfolding: 0.0699 + Trigger: 0.03728 + MC_Modelling: 0.00932 + Theoretical: 0.00932 + Lumi: 0.08388 +- Stat: 0.0867 + Nbkg_stat: 1.53000000e-02 + CDY_stat: 0.017 + Nbkg: 0.0748 + Reco: 2.72000000e-02 + Id: 0.0425 + Energy_scale_res: 2.89000000e-02 + Unfolding: 0.0255 + Trigger: 1.36000000e-02 + MC_Modelling: 0.0051 + Theoretical: 0.0051 + Lumi: 3.06000000e-02 +- Stat: 0.044556 + Nbkg_stat: 9.48000000e-03 + CDY_stat: 0.004266 + Nbkg: 1.89600000e-02 + Reco: 0.007584 + Id: 0.012324 + Energy_scale_res: 1.09020000e-02 + Unfolding: 0.00711 + Trigger: 0.003792 + MC_Modelling: 2.37000000e-03 + Theoretical: 0.001896 + Lumi: 0.008532 +- Stat: 1.60600000e-02 + Nbkg_stat: 0.00292 + CDY_stat: 0.001168 + Nbkg: 0.004526 + Reco: 0.002336 + Id: 0.003796 + Energy_scale_res: 3.50400000e-03 + Unfolding: 2.19000000e-03 + Trigger: 0.001168 + MC_Modelling: 0.000292 + Theoretical: 4.38000000e-04 + Lumi: 2.62800000e-03 +- Stat: 0.005304 + Nbkg_stat: 8.84000000e-04 + CDY_stat: 1.32600000e-04 + Nbkg: 9.50300000e-04 + Reco: 3.53600000e-04 + Id: 5.74600000e-04 + Energy_scale_res: 6.18800000e-04 + Unfolding: 3.31500000e-04 + Trigger: 1.76800000e-04 + MC_Modelling: 4.42e-05 + Theoretical: 8.84e-05 + Lumi: 3.97800000e-04 +- Stat: 1.44000000e-03 + Nbkg_stat: 2.18880000e-04 + CDY_stat: 1.15200000e-05 + Nbkg: 8.92800000e-05 + Reco: 4.89600000e-05 + Id: 7.2e-05 + Energy_scale_res: 9.50400000e-05 + Unfolding: 4.32000000e-05 + Trigger: 2.30400000e-05 + MC_Modelling: 8.64000000e-06 + Theoretical: 1.15200000e-05 + Lumi: 5.18400000e-05 diff --git a/validphys2/src/validphys/commondataparser.py b/validphys2/src/validphys/commondataparser.py index b63dce6d97..9a3e9c3541 100644 --- a/validphys2/src/validphys/commondataparser.py +++ b/validphys2/src/validphys/commondataparser.py @@ -98,6 +98,7 @@ "DY_Z_Y": ("$y_Z$", "$\\M^2 (GeV^2)$", "$\\sqrt{s} (GeV)$"), "DY_W_ETA": ("$\\eta$", "$\\M^2 (GeV^2)$", "$\\sqrt{s} (GeV)$"), "SINGLETOP": ("$y$", "$m_t^2 (GeV^2)$", "$\\sqrt{s} (GeV)$"), + "DY_MLL": ("$M_{ll} (GeV)$", "$M_{ll}^2 (GeV^2)$", "$\\sqrt{s} (GeV)$"), } PROCESS_DESCRIPTION_LABEL = { @@ -125,6 +126,7 @@ "JET_POL": "Inclusive Jet longitudinal double-spin asymmetry", "DIJET_POL": "Dijets longitudinal double-spin asymmetry", "SHP_ASY": "double spin asymmetry in single hadron production", + "DY_MLL": "Drell-Yan Mass Distribution of Lepton Pairs", } diff --git a/validphys2/src/validphys/cuts/filters.yaml b/validphys2/src/validphys/cuts/filters.yaml index eb685532fd..c128210ea8 100644 --- a/validphys2/src/validphys/cuts/filters.yaml +++ b/validphys2/src/validphys/cuts/filters.yaml @@ -299,7 +299,7 @@ reason: Avoid the region where resummation effects become important. local_variables: max_M: 200.0 - rule: M_ll <= max_M + rule: m_ll <= max_M - dataset: ATLAS_Z0_7TEV_LOMASS_M diff --git a/validphys2/src/validphys/cuts/lockfiles/31_filters.lock.yaml b/validphys2/src/validphys/cuts/lockfiles/31_filters.lock.yaml index c5945c7ffa..631a3c7601 100644 --- a/validphys2/src/validphys/cuts/lockfiles/31_filters.lock.yaml +++ b/validphys2/src/validphys/cuts/lockfiles/31_filters.lock.yaml @@ -192,7 +192,7 @@ reason: Avoid the region where resummation effects become important. local_variables: max_M: 200.0 - rule: M_ll <= max_M + rule: m_ll <= max_M # - dataset: LHCBLOWMASS37PB # rule: "pT <= maxCMSDY2Dminv" diff --git a/validphys2/src/validphys/process_options.py b/validphys2/src/validphys/process_options.py index 590b99399d..7878a6c30a 100644 --- a/validphys2/src/validphys/process_options.py +++ b/validphys2/src/validphys/process_options.py @@ -37,6 +37,7 @@ class _Vars: abs_eta_2 = "abs_eta_2" eta_1 = "eta_1" eta_2 = "eta_2" + m_ll = "m_ll" m_ll2 = "m_ll2" @@ -302,6 +303,20 @@ def _singletop_xq2map(kin_dict): return np.clip(x, a_min=None, a_max=1, out=x), np.concatenate((q2, q2)) +def _dymll_xq2map(kin_info): + """ + Computes x and q2 mapping for DY Z -> 2 leptons mass. + x is approximated as x = sqrt(x1*x2) with m_ll^2 = x1*x2*s + """ + + m_ll = kin_info.get_one_of(_Vars.m_ll) + sqrts = kin_info.get_one_of(_Vars.sqrts) + m_ll2 = m_ll**2 + x = m_ll / sqrts + + return x, m_ll2 + + DIS = _Process( "DIS", "Deep Inelastic Scattering", @@ -409,6 +424,12 @@ def _singletop_xq2map(kin_dict): xq2map_function=_dyboson_xq2map, ) +DY_MLL = _Process( + "DY_MLL", + "DY Z -> ll mass of lepton pair", + accepted_variables=(_Vars.m_ll, _Vars.sqrts), + xq2map_function=_dymll_xq2map, +) DY_PT = _Process( "DY_PT", @@ -472,7 +493,8 @@ def _singletop_xq2map(kin_dict): "HERADIJET": dataclasses.replace(HERAJET, name="HERADIJET", description="DIS + jj production"), "JET_POL": JET_POL, "DIJET_POL": DIJET_POL, - "DY_Z_Y": dataclasses.replace(DY_2L, name="DY_Z_Y", description="DY Z -> ll rapidity"), + "DY_Z_Y": dataclasses.replace(DY_2L, name="DY_Z_Y", description="DY Z -> ll (pseudo)rapidity"), + "DY_MLL": DY_MLL, "DY_W_ETA": dataclasses.replace( DY_2L, name="DY_W_ETA", description="DY W -> l nu pseudorapidity" ),