From bdc348da8fb7107a5c0c7e88fc2c96dd6fb95831 Mon Sep 17 00:00:00 2001 From: Sebastian Brommer Date: Fri, 10 Mar 2023 11:17:39 +0100 Subject: [PATCH 1/5] add fastmtt producers --- producers/pairquantities.py | 133 ++++++++++++++++++++++++++++++++++++ quantities/output.py | 5 ++ 2 files changed, 138 insertions(+) diff --git a/producers/pairquantities.py b/producers/pairquantities.py index d83317f..89bd101 100644 --- a/producers/pairquantities.py +++ b/producers/pairquantities.py @@ -571,6 +571,7 @@ scopes=["em"], subproducers=[UnrollElLV1, UnrollMuLV2, m_vis, pt_vis, deltaR_ditaupair], ) + ## advanced event quantities (can be caluculated when ditau pair and met and all jets are determined) ## leptons: q.p4_1, q.p4_2 ## met: met_p4_recoilcorrected @@ -716,3 +717,135 @@ jet_hemisphere, ], ) + +p4_fastmtt_mt = Producer( + name="p4_fastmtt_mt", + call='quantities::p4_fastmtt({df}, {output}, {input}, "mt")', + input=[ + q.pt_1, + q.pt_2, + q.eta_1, + q.eta_2, + q.phi_1, + q.phi_2, + q.mass_1, + q.mass_2, + q.met, + q.metphi, + q.metcov00, + q.metcov01, + q.metcov11, + q.decaymode_2, + q.decaymode_2, + ], + output=[q.p4_fastmtt], + scopes=["mt"], +) +p4_fastmtt_et = Producer( + name="p4_fastmtt_et", + call='quantities::p4_fastmtt({df}, {output}, {input}, "et")', + input=[ + q.pt_1, + q.pt_2, + q.eta_1, + q.eta_2, + q.phi_1, + q.phi_2, + q.mass_1, + q.mass_2, + q.met, + q.metphi, + q.metcov00, + q.metcov01, + q.metcov11, + q.decaymode_2, + q.decaymode_2, + ], + output=[q.p4_fastmtt], + scopes=["et"], +) +p4_fastmtt_tt = Producer( + name="p4_fastmtt_tt", + call='quantities::p4_fastmtt({df}, {output}, {input}, "tt")', + input=[ + q.pt_1, + q.pt_2, + q.eta_1, + q.eta_2, + q.phi_1, + q.phi_2, + q.mass_1, + q.mass_2, + q.met, + q.metphi, + q.metcov00, + q.metcov01, + q.metcov11, + q.decaymode_2, + q.decaymode_2, + ], + output=[q.p4_fastmtt], + scopes=["tt"], +) +p4_fastmtt_em = Producer( + name="p4_fastmtt_em", + call='quantities::p4_fastmtt({df}, {output}, {input}, "em")', + input=[ + q.pt_1, + q.pt_2, + q.eta_1, + q.eta_2, + q.phi_1, + q.phi_2, + q.mass_1, + q.mass_2, + q.met, + q.metphi, + q.metcov00, + q.metcov01, + q.metcov11, + ], + output=[q.p4_fastmtt], + scopes=["em"], +) +pt_fastmtt = Producer( + name="pt_fastmtt", + call="quantities::pt({df}, {output}, {input})", + input=[q.p4_fastmtt], + output=[q.pt_fastmtt], + scopes=["mt", "et", "tt", "em"], +) +eta_fastmtt = Producer( + name="eta_fastmtt", + call="quantities::eta({df}, {output}, {input})", + input=[q.p4_fastmtt], + output=[q.eta_fastmtt], + scopes=["mt", "et", "tt", "em"], +) +phi_fastmtt = Producer( + name="phi_fastmtt", + call="quantities::phi({df}, {output}, {input})", + input=[q.p4_fastmtt], + output=[q.phi_fastmtt], + scopes=["mt", "et", "tt", "em"], +) +m_fastmtt = Producer( + name="m_fastmtt", + call="quantities::mass({df}, {output}, {input})", + input=[q.p4_fastmtt], + output=[q.m_fastmtt], + scopes=["mt", "et", "tt", "em"], +) +FastMTTQuantities = ProducerGroup( + name="FastMTTQuantities", + call=None, + input=None, + output=None, + scopes=["mt", "et", "tt", "em"], + subproducers={ + "mt": [p4_fastmtt_mt, pt_fastmtt, eta_fastmtt, phi_fastmtt, m_fastmtt], + "et": [p4_fastmtt_et, pt_fastmtt, eta_fastmtt, phi_fastmtt, m_fastmtt], + "tt": [p4_fastmtt_tt, pt_fastmtt, eta_fastmtt, phi_fastmtt, m_fastmtt], + "em": [p4_fastmtt_em, pt_fastmtt, eta_fastmtt, phi_fastmtt, m_fastmtt], + }, +) diff --git a/quantities/output.py b/quantities/output.py index b4a2e4f..5ab182e 100644 --- a/quantities/output.py +++ b/quantities/output.py @@ -87,6 +87,11 @@ # Combined event quantities m_vis = Quantity("m_vis") +p4_fastmtt = Quantity("p4_fastmtt") +m_fastmtt = Quantity("m_fastmtt") +pt_fastmtt = Quantity("pt_fastmtt") +eta_fastmtt = Quantity("eta_fastmtt") +phi_fastmtt = Quantity("phi_fastmtt") pt_vis = Quantity("pt_vis") pzetamissvis = Quantity("pzetamissvis") mTdileptonMET = Quantity("mTdileptonMET") From c2bb5659989ad210f55e4383ec37df310a288504 Mon Sep 17 00:00:00 2001 From: Sebastian Brommer Date: Fri, 10 Mar 2023 11:18:30 +0100 Subject: [PATCH 2/5] update config, but exclude fastMTT calculation --- config.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config.py b/config.py index 294c72a..b9c139e 100644 --- a/config.py +++ b/config.py @@ -725,6 +725,7 @@ def build_config( pairselection.LVMu1Uncorrected, pairselection.LVTau2Uncorrected, pairquantities.MTDiTauPairQuantities, + # pairquantities.FastMTTQuantities, genparticles.MTGenDiTauPairQuantities, # scalefactors.MuonIDIso_SF, scalefactors.Tau_2_VsJetTauID_lt_SF, @@ -1142,6 +1143,10 @@ def build_config( q.jtag_value_2, q.mjj, q.m_vis, + # q.m_fastmtt, + # q.pt_fastmtt, + # q.eta_fastmtt, + # q.phi_fastmtt, q.deltaR_ditaupair, q.pt_vis, q.nbtag, From 442344cf1f72f90775699a742b24c47ab276546e Mon Sep 17 00:00:00 2001 From: Sebastian Brommer Date: Fri, 10 Mar 2023 11:19:45 +0100 Subject: [PATCH 3/5] black --- tau_embedding_settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tau_embedding_settings.py b/tau_embedding_settings.py index ab4bf87..1d304cb 100644 --- a/tau_embedding_settings.py +++ b/tau_embedding_settings.py @@ -83,7 +83,7 @@ def setup_embedding(configuration: Configuration, scopes: List[str]): "truegen_mother_pdgid": 23, "truegen_daughter_1_pdgid": 15, "truegen_daugher_2_pdgid": 15, - } + }, ) configuration.add_config_parameters( ["mm"], @@ -91,7 +91,7 @@ def setup_embedding(configuration: Configuration, scopes: List[str]): "truegen_mother_pdgid": 23, "truegen_daughter_1_pdgid": 13, "truegen_daugher_2_pdgid": 13, - } + }, ) configuration.add_config_parameters( ["ee"], @@ -99,7 +99,7 @@ def setup_embedding(configuration: Configuration, scopes: List[str]): "truegen_mother_pdgid": 23, "truegen_daughter_1_pdgid": 11, "truegen_daugher_2_pdgid": 11, - } + }, ) # add embedding selection scalefactors From 97d5c858584299edca1efe3f1db3a4c03d58dde8 Mon Sep 17 00:00:00 2001 From: Sebastian Brommer Date: Thu, 16 Mar 2023 12:16:39 +0100 Subject: [PATCH 4/5] rename decaymode -> tau_decaymode, set -1 for channels without hadronic taus --- config.py | 12 +++++++---- producers/embedding.py | 4 ++-- producers/pairquantities.py | 42 +++++++++++++++++++++++++------------ producers/scalefactors.py | 14 ++++++------- quantities/output.py | 4 ++-- 5 files changed, 48 insertions(+), 28 deletions(-) diff --git a/config.py b/config.py index b9c139e..095c31b 100644 --- a/config.py +++ b/config.py @@ -1236,7 +1236,8 @@ def build_config( triggers.GenerateSingleTrailingTauTriggerFlags.output_group, q.taujet_pt_2, # q.gen_taujet_pt_2, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, q.tau_gen_match_2, q.muon_veto_flag, q.dimuon_veto, @@ -1261,7 +1262,8 @@ def build_config( triggers.GenerateSingleTrailingTauTriggerFlags.output_group, q.taujet_pt_2, # q.gen_taujet_pt_2, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, q.tau_gen_match_2, q.muon_veto_flag, q.dimuon_veto, @@ -1292,8 +1294,8 @@ def build_config( q.taujet_pt_1, q.taujet_pt_2, # q.gen_taujet_pt_2, - q.decaymode_1, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, q.tau_gen_match_1, q.tau_gen_match_2, q.muon_veto_flag, @@ -1312,6 +1314,8 @@ def build_config( q.muon_veto_flag, q.dimuon_veto, q.electron_veto_flag, + q.tau_decaymode_1, + q.tau_decaymode_2, ], ) diff --git a/producers/embedding.py b/producers/embedding.py index f1705f7..a71e5eb 100644 --- a/producers/embedding.py +++ b/producers/embedding.py @@ -249,7 +249,7 @@ Tau_1_VsJetTauID_tt_SF = ExtendedVectorProducer( name="Tau_1_VsJetTauID_tt_SF", call='scalefactor::tau::id_vsJet_tt_embedding({df}, {input}, "{vsjet_tau_id_WP}", "{tau_emb_sf_vsjet_tauDM0}", "{tau_emb_sf_vsjet_tauDM1}", "{tau_emb_sf_vsjet_tauDM10}", "{tau_emb_sf_vsjet_tauDM11}", {output}, "{tau_emb_sf_file}", "{tau_emb_id_sf_correctionset}")', - input=[q.decaymode_1], + input=[q.tau_decaymode_1], output="tau_1_vsjet_sf_outputname", scope=["tt"], vec_config="vsjet_tau_id_sf_embedding", @@ -258,7 +258,7 @@ Tau_2_VsJetTauID_tt_SF = ExtendedVectorProducer( name="Tau_2_VsJetTauID_tt_SF", call='scalefactor::tau::id_vsJet_tt_embedding({df}, {input}, "{vsjet_tau_id_WP}", "{tau_emb_sf_vsjet_tauDM0}", "{tau_emb_sf_vsjet_tauDM1}", "{tau_emb_sf_vsjet_tauDM10}", "{tau_emb_sf_vsjet_tauDM11}", {output}, "{tau_emb_sf_file}", "{tau_emb_id_sf_correctionset}")', - input=[q.decaymode_2], + input=[q.tau_decaymode_2], output="tau_2_vsjet_sf_outputname", scope=["tt"], vec_config="vsjet_tau_id_sf_embedding", diff --git a/producers/pairquantities.py b/producers/pairquantities.py index 89bd101..f1e4688 100644 --- a/producers/pairquantities.py +++ b/producers/pairquantities.py @@ -315,9 +315,16 @@ name="decaymode_1", call="quantities::tau::decaymode({df}, {output}, 0, {input})", input=[q.dileptonpair, nanoAOD.Tau_decayMode], - output=[q.decaymode_1], + output=[q.tau_decaymode_1], scopes=["tt"], ) +tau_decaymode_1_notau = Producer( + name="tau_decaymode_1_notau", + call="basefunctions::DefineQuantity({df}, {output}, -1)", + input=[], + output=[q.tau_decaymode_1], + scopes=["et", "mt", "em"], +) tau_gen_match_1 = Producer( name="gen_match_1", call="quantities::tau::genmatch({df}, {output}, 0, {input})", @@ -361,9 +368,16 @@ name="taudecaymode_2", call="quantities::tau::decaymode({df}, {output}, 1, {input})", input=[q.dileptonpair, nanoAOD.Tau_decayMode], - output=[q.decaymode_2], + output=[q.tau_decaymode_2], scopes=["mt", "et", "tt"], ) +tau_decaymode_2_notau = Producer( + name="tau_decaymode_2_notau", + call="basefunctions::DefineQuantity({df}, {output}, -1)", + input=[], + output=[q.tau_decaymode_2], + scopes=["em"], +) tau_gen_match_2 = Producer( name="taugen_match_2", call="quantities::tau::genmatch({df}, {output}, 1, {input})", @@ -529,7 +543,7 @@ input=None, output=None, scopes=["mt"], - subproducers=[UnrollMuLV1, UnrollTauLV2, m_vis, pt_vis, deltaR_ditaupair], + subproducers=[UnrollMuLV1, UnrollTauLV2, tau_decaymode_1_notau, m_vis, pt_vis, deltaR_ditaupair], ) MuMuPairQuantities = ProducerGroup( name="MuMuPairQuantities", @@ -537,7 +551,7 @@ input=None, output=None, scopes=["mm"], - subproducers=[UnrollMuLV1, UnrollMuLV2, m_vis, pt_vis, deltaR_ditaupair], + subproducers=[UnrollMuLV1, UnrollMuLV2, tau_decaymode_1_notau, tau_decaymode_2_notau, m_vis, pt_vis, deltaR_ditaupair], ) ElElPairQuantities = ProducerGroup( name="ElElPairQuantities", @@ -545,7 +559,7 @@ input=None, output=None, scopes=["ee"], - subproducers=[UnrollElLV1, UnrollElLV2, m_vis, pt_vis, deltaR_ditaupair], + subproducers=[UnrollElLV1, UnrollElLV2, tau_decaymode_1_notau, tau_decaymode_2_notau, m_vis, pt_vis, deltaR_ditaupair], ) ETDiTauPairQuantities = ProducerGroup( name="ETDiTauPairQuantities", @@ -553,7 +567,7 @@ input=None, output=None, scopes=["et"], - subproducers=[UnrollElLV1, UnrollTauLV2, m_vis, pt_vis, deltaR_ditaupair], + subproducers=[UnrollElLV1, UnrollTauLV2, tau_decaymode_1_notau, m_vis, pt_vis, deltaR_ditaupair], ) TTDiTauPairQuantities = ProducerGroup( name="TTDiTauPairQuantities", @@ -569,7 +583,7 @@ input=None, output=None, scopes=["em"], - subproducers=[UnrollElLV1, UnrollMuLV2, m_vis, pt_vis, deltaR_ditaupair], + subproducers=[UnrollElLV1, UnrollMuLV2, tau_decaymode_1_notau, tau_decaymode_2_notau, m_vis, pt_vis, deltaR_ditaupair], ) ## advanced event quantities (can be caluculated when ditau pair and met and all jets are determined) @@ -735,8 +749,8 @@ q.metcov00, q.metcov01, q.metcov11, - q.decaymode_2, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, ], output=[q.p4_fastmtt], scopes=["mt"], @@ -758,8 +772,8 @@ q.metcov00, q.metcov01, q.metcov11, - q.decaymode_2, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, ], output=[q.p4_fastmtt], scopes=["et"], @@ -781,8 +795,8 @@ q.metcov00, q.metcov01, q.metcov11, - q.decaymode_2, - q.decaymode_2, + q.tau_decaymode_1, + q.tau_decaymode_2, ], output=[q.p4_fastmtt], scopes=["tt"], @@ -804,6 +818,8 @@ q.metcov00, q.metcov01, q.metcov11, + q.tau_decaymode_1, + q.tau_decaymode_2, ], output=[q.p4_fastmtt], scopes=["em"], diff --git a/producers/scalefactors.py b/producers/scalefactors.py index b09035f..e08b064 100644 --- a/producers/scalefactors.py +++ b/producers/scalefactors.py @@ -119,7 +119,7 @@ Tau_1_VsJetTauID_SF = ExtendedVectorProducer( name="Tau_1_VsJetTauID_SF", call='scalefactor::tau::id_vsJet_tt({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsjet_tau_id_WP}", "{tau_sf_vsjet_tauDM0}", "{tau_sf_vsjet_tauDM1}", "{tau_sf_vsjet_tauDM10}", "{tau_sf_vsjet_tauDM11}", "{tau_vsjet_sf_dependence}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.pt_1, q.decaymode_1, q.tau_gen_match_1], + input=[q.pt_1, q.tau_decaymode_1, q.tau_gen_match_1], output="tau_1_vsjet_sf_outputname", scope=["tt"], vec_config="vsjet_tau_id", @@ -127,7 +127,7 @@ Tau_1_VsEleTauID_SF = ExtendedVectorProducer( name="Tau_1_VsEleTauID_SF", call='scalefactor::tau::id_vsEle({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsele_tau_id_WP}", "{tau_sf_vsele_barrel}", "{tau_sf_vsele_endcap}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.eta_1, q.decaymode_1, q.tau_gen_match_1], + input=[q.eta_1, q.tau_decaymode_1, q.tau_gen_match_1], output="tau_1_vsele_sf_outputname", scope=["tt"], vec_config="vsele_tau_id", @@ -135,7 +135,7 @@ Tau_1_VsMuTauID_SF = ExtendedVectorProducer( name="Tau_1_VsMuTauID_SF", call='scalefactor::tau::id_vsMu({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsmu_tau_id_WP}", "{tau_sf_vsmu_wheel1}", "{tau_sf_vsmu_wheel2}", "{tau_sf_vsmu_wheel3}", "{tau_sf_vsmu_wheel4}", "{tau_sf_vsmu_wheel5}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.eta_1, q.decaymode_1, q.tau_gen_match_1], + input=[q.eta_1, q.tau_decaymode_1, q.tau_gen_match_1], output="tau_1_vsmu_sf_outputname", scope=["tt"], vec_config="vsmu_tau_id", @@ -143,7 +143,7 @@ Tau_2_VsJetTauID_lt_SF = ExtendedVectorProducer( name="Tau_2_VsJetTauID_lt_SF", call='scalefactor::tau::id_vsJet_lt({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsjet_tau_id_WP}", "{tau_sf_vsjet_tau30to35}", "{tau_sf_vsjet_tau35to40}", "{tau_sf_vsjet_tau40to500}", "{tau_sf_vsjet_tau500to1000}", "{tau_sf_vsjet_tau1000toinf}", "{tau_vsjet_sf_dependence}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.pt_2, q.decaymode_2, q.tau_gen_match_2], + input=[q.pt_2, q.tau_decaymode_2, q.tau_gen_match_2], output="tau_2_vsjet_sf_outputname", scope=["et", "mt"], vec_config="vsjet_tau_id", @@ -151,7 +151,7 @@ Tau_2_VsJetTauID_tt_SF = ExtendedVectorProducer( name="Tau_2_VsJetTauID_tt_SF", call='scalefactor::tau::id_vsJet_tt({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsjet_tau_id_WP}", "{tau_sf_vsjet_tauDM0}", "{tau_sf_vsjet_tauDM1}", "{tau_sf_vsjet_tauDM10}", "{tau_sf_vsjet_tauDM11}", "{tau_vsjet_sf_dependence}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.pt_2, q.decaymode_2, q.tau_gen_match_2], + input=[q.pt_2, q.tau_decaymode_2, q.tau_gen_match_2], output="tau_2_vsjet_sf_outputname", scope=["tt"], vec_config="vsjet_tau_id", @@ -159,7 +159,7 @@ Tau_2_VsEleTauID_SF = ExtendedVectorProducer( name="Tau_2_VsEleTauID_SF", call='scalefactor::tau::id_vsEle({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsele_tau_id_WP}", "{tau_sf_vsele_barrel}", "{tau_sf_vsele_endcap}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.eta_2, q.decaymode_2, q.tau_gen_match_2], + input=[q.eta_2, q.tau_decaymode_2, q.tau_gen_match_2], output="tau_2_vsele_sf_outputname", scope=["et", "mt", "tt"], vec_config="vsele_tau_id", @@ -167,7 +167,7 @@ Tau_2_VsMuTauID_SF = ExtendedVectorProducer( name="Tau_2_VsMuTauID_SF", call='scalefactor::tau::id_vsMu({df}, {input}, {vec_open}{tau_dms}{vec_close}, "{vsmu_tau_id_WP}", "{tau_sf_vsmu_wheel1}", "{tau_sf_vsmu_wheel2}", "{tau_sf_vsmu_wheel3}", "{tau_sf_vsmu_wheel4}", "{tau_sf_vsmu_wheel5}", {output}, "{tau_sf_file}", "{tau_id_discriminator}")', - input=[q.eta_2, q.decaymode_2, q.tau_gen_match_2], + input=[q.eta_2, q.tau_decaymode_2, q.tau_gen_match_2], output="tau_2_vsmu_sf_outputname", scope=["et", "mt", "tt"], vec_config="vsmu_tau_id", diff --git a/quantities/output.py b/quantities/output.py index 5ab182e..c32ec07 100644 --- a/quantities/output.py +++ b/quantities/output.py @@ -62,8 +62,8 @@ iso_2 = Quantity("iso_2") is_global_1 = Quantity("is_global_1") is_global_2 = Quantity("is_global_2") -decaymode_1 = Quantity("decaymode_1") -decaymode_2 = Quantity("decaymode_2") +tau_decaymode_1 = Quantity("tau_decaymode_1") +tau_decaymode_2 = Quantity("tau_decaymode_2") gen_match_1 = Quantity("gen_match_1") gen_match_2 = Quantity("gen_match_2") tau_gen_match_1 = Quantity("tau_gen_match_1") From 070f7c511b23f6aee945126d3be6cb615f74fef2 Mon Sep 17 00:00:00 2001 From: Sebastian Brommer Date: Thu, 16 Mar 2023 15:29:58 +0100 Subject: [PATCH 5/5] fix ee, mm quantitites --- producers/pairquantities.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/producers/pairquantities.py b/producers/pairquantities.py index f1e4688..811cd87 100644 --- a/producers/pairquantities.py +++ b/producers/pairquantities.py @@ -323,7 +323,7 @@ call="basefunctions::DefineQuantity({df}, {output}, -1)", input=[], output=[q.tau_decaymode_1], - scopes=["et", "mt", "em"], + scopes=["et", "mt", "em", "ee", "mm"], ) tau_gen_match_1 = Producer( name="gen_match_1", @@ -376,7 +376,7 @@ call="basefunctions::DefineQuantity({df}, {output}, -1)", input=[], output=[q.tau_decaymode_2], - scopes=["em"], + scopes=["em", "ee", "mm"], ) tau_gen_match_2 = Producer( name="taugen_match_2",