From 0a067ea842e5686ad719b6d17fd01c5248285c76 Mon Sep 17 00:00:00 2001 From: mattleblanc <matt.leblanc@cern.ch> Date: Sat, 2 Jun 2018 18:59:28 -0500 Subject: [PATCH] Adding 3/2 prong discriminators for testing Former-commit-id: 3d4c8b17bbf378bd048c3c03b1e0d732f533a182 --- .../EnergyCorrelatorGeneralizedRatiosTool.cxx | 59 +++++++++++++++---- .../Root/EnergyCorrelatorGeneralizedTool.cxx | 51 ++++++++++++---- 2 files changed, 90 insertions(+), 20 deletions(-) diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx index 8e608310a44..fc31195d96a 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx +++ b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx @@ -22,10 +22,15 @@ int EnergyCorrelatorGeneralizedRatiosTool::modifyJet(xAOD::Jet &jet) const { float ecfg_3_1 = jet.getAttribute<float>("ECFG_3_1"); // these ones for t/H discrimination - float ecfg_1_4 = jet.getAttribute<float>("ECFG_1_4"); - float ecfg_3_4 = jet.getAttribute<float>("ECFG_3_4"); - float ecfg_1_3 = jet.getAttribute<float>("ECFG_1_3"); - float ecfg_2_3 = jet.getAttribute<float>("ECFG_2_3"); + float ecfg_0_2_2 = jet.getAttribute<float>("ECFG_0_2_2"); + float ecfg_0_3_1 = jet.getAttribute<float>("ECFG_0_3_1"); + float ecfg_1_3_1 = jet.getAttribute<float>("ECFG_1_3_1"); + float ecfg_1_3_2 = jet.getAttribute<float>("ECFG_1_3_2"); + float ecfg_1_4_2 = jet.getAttribute<float>("ECFG_1_4_2"); + float ecfg_2_3_1 = jet.getAttribute<float>("ECFG_2_3_1"); + float ecfg_2_3_2 = jet.getAttribute<float>("ECFG_2_3_2"); + float ecfg_3_4_1 = jet.getAttribute<float>("ECFG_3_4_1"); + float ecfg_5_4_1 = jet.getAttribute<float>("ECFG_5_4_1"); // N2 if(fabs(ecfg_2_1) > 1e-8) // Prevent div-0 @@ -45,17 +50,51 @@ int EnergyCorrelatorGeneralizedRatiosTool::modifyJet(xAOD::Jet &jet) const { else jet.setAttribute("M2", -999.0); - // L1 (experimental for ttH) - if(fabs(ecfg_3_4) > 1e-8) - jet.setAttribute("L1", ecfg_1_4 / pow(ecfg_3_4,2)); + // L-series variables + // (experimental for ttH t/H discrimination) + + /* + The exponents are determined in order to make + the whole thing dimensionless + + E = (a*n) / (b*m) + for an ECFG_X_Y_Z, a=Y+1, n=Z + + e.g. for L1 + + ecfg_0_2_2 / ecfg_2_3_1 + E = (3*2) / (4*1) = 3/2 + + The variables are just re-scaled to make them usually have values + between 1 and 10 for convenience. But this is important to keep in mind. + */ + + if(fabs(ecfg_2_3_1) > 1e-8) + jet.setAttribute("L1", ecfg_0_2_2 / pow(ecfg_2_3_1, (3/2) )/100. ); else jet.setAttribute("L1",-999.0); - // L2 (experimental for ttH) - if(fabs(ecfg_2_3) > 1e-8) - jet.setAttribute("L2", ecfg_1_3 / (pow(ecfg_2_3,(4/3)))); + if(fabs(ecfg_3_4_1) > 1e-8) + jet.setAttribute("L2", ecfg_1_4_2 / (pow(ecfg_3_4_1, (2) ))/1000000. ); else jet.setAttribute("L2",-999.0); + + if(fabs(ecfg_0_2_2) > 1e-8) + { + jet.setAttribute("L3", ecfg_1_3_1 / (pow(ecfg_0_2_2, (1) ))); + jet.setAttribute("L4", ecfg_2_3_1 / (pow(ecfg_0_2_2, (1) ))); + } + else + { + jet.setAttribute("L3",-999.0); + jet.setAttribute("L4",-999.0); + } + + if(fabs(ecfg_2_3_1) > 1e-8) + jet.setAttribute("L5", ecfg_0_3_1 / (pow(ecfg_2_3_1, (1) ))/100. ); + else + jet.setAttribute("L5",-999.0); + return 0; } diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx index 07d9acfad46..d8059c7bdef 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx +++ b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx @@ -20,26 +20,57 @@ EnergyCorrelatorGeneralizedTool::EnergyCorrelatorGeneralizedTool(std::string nam int EnergyCorrelatorGeneralizedTool::modifyJet(xAOD::Jet &jet) const { if(checkForConstituents(jet) == false) return 1; + // N.B. here _angles, _n, _beta !! + + // These ones are necessary for N2, M2, etc. + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_2(2, 3, m_Beta, JetSubStructureUtils::EnergyCorrelator::pt_R); JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_2_1(1, 2, m_Beta, JetSubStructureUtils::EnergyCorrelator::pt_R); JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_4_2(2, 4, m_Beta, JetSubStructureUtils::EnergyCorrelator::pt_R); JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_1(1, 3, m_Beta, JetSubStructureUtils::EnergyCorrelator::pt_R); - // these ones for t/H discrimination - JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_1_4(4, 1, 2.0, JetSubStructureUtils::EnergyCorrelator::pt_R); - JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_4(4, 3, 1.0, JetSubStructureUtils::EnergyCorrelator::pt_R); - JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_1_3(4, 2, 2.0, JetSubStructureUtils::EnergyCorrelator::pt_R); - JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_2_3(3, 1, 1.0, JetSubStructureUtils::EnergyCorrelator::pt_R); - jet.setAttribute("ECFG_2_1", ECFG_2_1.result(jet)); jet.setAttribute("ECFG_3_2", ECFG_3_2.result(jet)); jet.setAttribute("ECFG_3_1", ECFG_3_1.result(jet)); jet.setAttribute("ECFG_4_2", ECFG_4_2.result(jet)); - jet.setAttribute("ECFG_1_4", ECFG_1_4.result(jet)); - jet.setAttribute("ECFG_3_4", ECFG_3_4.result(jet)); - jet.setAttribute("ECFG_1_3", ECFG_1_3.result(jet)); - jet.setAttribute("ECFG_2_3", ECFG_2_3.result(jet)); + // these ones for t/H discrimination + + // 232 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_2_3_2(2, 3, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_2_3_2", ECFG_2_3_2.result(jet)); + + // 541 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_5_4_1(5, 4, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_5_4_1", ECFG_5_4_1.result(jet)); + + // 132 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_1_3_2(1, 3, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_1_3_2", ECFG_1_3_2.result(jet)); + + // 231 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_2_3_1(2, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_2_3_1", ECFG_2_3_1.result(jet)); + + // 142 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_1_4_2(1, 4, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_1_4_2", ECFG_1_4_2.result(jet)); + + // 341 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_4_1(3, 4, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_4_1", ECFG_3_4_1.result(jet)); + + // 022 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_0_2_2(0, 2, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_0_2_2", ECFG_0_2_2.result(jet)); + + // 131 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_1_3_1(1, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_1_3_1", ECFG_1_3_1.result(jet)); + + // 031 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_0_3_1(0, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_0_3_1", ECFG_0_3_1.result(jet)); return 0; } -- GitLab