From ca86ee6575a37aa4a94e8727a074dd09979aa62e Mon Sep 17 00:00:00 2001 From: Jason Robert Veatch <jason.veatch@cern.ch> Date: Mon, 18 Feb 2019 19:53:08 +0000 Subject: [PATCH] Adding generalized energy correlation tools --- .../python/JetRecStandardToolManager.py | 4 +- .../Jet/JetRec/python/JetRecStandardTools.py | 10 +- .../EnergyCorrelatorGeneralizedRatiosTool.h | 23 +++++ .../EnergyCorrelatorGeneralizedTool.h | 25 +++++ .../JetSubStructureMomentToolsDict.h | 4 +- .../EnergyCorrelatorGeneralizedRatiosTool.cxx | 95 +++++++++++++++++++ .../Root/EnergyCorrelatorGeneralizedTool.cxx | 76 +++++++++++++++ .../JetSubStructureMomentTools/Root/LinkDef.h | 6 +- .../python/DefaultTools.py | 9 +- .../JetSubStructureMomentTools/share/run.py | 12 ++- .../components/JetSubStructure_entries.cxx | 4 + .../EnergyCorrelatorGeneralized.h | 30 ++++++ 12 files changed, 292 insertions(+), 6 deletions(-) create mode 100644 Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h create mode 100644 Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h create mode 100644 Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx create mode 100644 Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx create mode 100644 Reconstruction/Jet/JetSubStructureUtils/JetSubStructureUtils/EnergyCorrelatorGeneralized.h diff --git a/Reconstruction/Jet/JetRec/python/JetRecStandardToolManager.py b/Reconstruction/Jet/JetRec/python/JetRecStandardToolManager.py index 4953194d4af..9a78390f956 100644 --- a/Reconstruction/Jet/JetRec/python/JetRecStandardToolManager.py +++ b/Reconstruction/Jet/JetRec/python/JetRecStandardToolManager.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration # JetRecStandardToolManager.py # @@ -222,6 +222,8 @@ groomed_modifiers = [ jtm.ktdr, jtm.ktsplitter, jtm.encorr, + jtm.energycorrelatorgeneralized, + jtm.energycorrelatorgeneralizedratios, jtm.charge, jtm.angularity, jtm.comshapes, diff --git a/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py b/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py index 8f3dd70a0eb..15fbb4d7ffe 100644 --- a/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py +++ b/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration # JetRecStandardTools.py # @@ -89,6 +89,8 @@ from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import Dipolarity from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import PlanarFlowTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import KtMassDropTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorTool +from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorGeneralizedTool +from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorGeneralizedRatiosTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import CenterOfMassShapesTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import JetPullTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import JetChargeTool @@ -786,6 +788,12 @@ jtm += KtMassDropTool("ktmassdrop") # Energy correlations. jtm += EnergyCorrelatorTool("encorr", Beta = 1.0) +# Generalized energy correlations +jtm += EnergyCorrelatorGeneralizedTool("energycorrelatorgeneralized") + +# ... & their ratios +jtm += EnergyCorrelatorGeneralizedRatiosTool("energycorrelatorgeneralizedratios") + # COM shapes. jtm += CenterOfMassShapesTool("comshapes") diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h new file mode 100644 index 00000000000..7eb332e2cf1 --- /dev/null +++ b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h @@ -0,0 +1,23 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef jetsubstructuremomenttools_energycorrelatorgeneralizedratiostool_header +#define jetsubstructuremomenttools_energycorrelatorgeneralizedratiostool_header + +#include "JetSubStructureMomentTools/JetSubStructureMomentToolsBase.h" + +class EnergyCorrelatorGeneralizedRatiosTool : + public JetSubStructureMomentToolsBase { + ASG_TOOL_CLASS(EnergyCorrelatorGeneralizedRatiosTool, IJetModifier) + + public: + // Constructor and destructor + EnergyCorrelatorGeneralizedRatiosTool(std::string name); + + int modifyJet(xAOD::Jet &jet) const; + + private: +}; + +#endif diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h new file mode 100644 index 00000000000..3834ad912ee --- /dev/null +++ b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef jetsubstructuremomenttools_energycorrelatorgeneralizedtool_header +#define jetsubstructuremomenttools_energycorrelatorgeneralizedtool_header + +#include "JetSubStructureMomentTools/JetSubStructureMomentToolsBase.h" + +class EnergyCorrelatorGeneralizedTool : + public JetSubStructureMomentToolsBase { + ASG_TOOL_CLASS(EnergyCorrelatorGeneralizedTool, IJetModifier) + + public: + // Constructor and destructor + EnergyCorrelatorGeneralizedTool(std::string name); + + int modifyJet(xAOD::Jet &jet) const; + + private: + float m_Beta; +}; + + +#endif diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/JetSubStructureMomentToolsDict.h b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/JetSubStructureMomentToolsDict.h index c2ae287a189..f34f681efac 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/JetSubStructureMomentToolsDict.h +++ b/Reconstruction/Jet/JetSubStructureMomentTools/JetSubStructureMomentTools/JetSubStructureMomentToolsDict.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #ifndef JETSUBSTRUCTUREMOMENTTOOLS_JETSUBSTRUCTUREMOMENTTOOLSDICT_H @@ -12,6 +12,7 @@ #include "JetSubStructureMomentTools/ShowerDeconstructionTool.h" #include "JetSubStructureMomentTools/BoostedXbbTagTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorRatiosTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h" #include "JetSubStructureMomentTools/JetPullTool.h" #include "JetSubStructureMomentTools/KTSplittingScaleTool.h" #include "JetSubStructureMomentTools/NSubjettinessTool.h" @@ -19,6 +20,7 @@ #include "JetSubStructureMomentTools/VolatilityTool.h" #include "JetSubStructureMomentTools/BosonTagTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h" #include "JetSubStructureMomentTools/JetSubStructureMomentToolsBase.h" #include "JetSubStructureMomentTools/KtDeltaRTool.h" #include "JetSubStructureMomentTools/PlanarFlowTool.h" diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx new file mode 100644 index 00000000000..e0a2fe425ff --- /dev/null +++ b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedRatiosTool.cxx @@ -0,0 +1,95 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h" +#include "JetSubStructureUtils/EnergyCorrelatorGeneralized.h" +#include <math.h> + +using namespace std; +using fastjet::PseudoJet; + +EnergyCorrelatorGeneralizedRatiosTool::EnergyCorrelatorGeneralizedRatiosTool(std::string name) : + JetSubStructureMomentToolsBase(name) +{ +} + +int EnergyCorrelatorGeneralizedRatiosTool::modifyJet(xAOD::Jet &jet) const { + float ecfg_2_1 = jet.getAttribute<float>("ECFG_2_1"); + float ecfg_3_2 = jet.getAttribute<float>("ECFG_3_2"); + + float ecfg_4_2 = jet.getAttribute<float>("ECFG_4_2"); + float ecfg_3_1 = jet.getAttribute<float>("ECFG_3_1"); + + // these ones for t/H discrimination + float ecfg_2_1_2 = jet.getAttribute<float>("ECFG_2_1_2"); + float ecfg_3_1_1 = jet.getAttribute<float>("ECFG_3_1_1"); + float ecfg_3_2_1 = jet.getAttribute<float>("ECFG_3_2_1"); + float ecfg_3_2_2 = jet.getAttribute<float>("ECFG_3_2_2"); + float ecfg_4_2_2 = jet.getAttribute<float>("ECFG_4_2_2"); + float ecfg_3_3_1 = jet.getAttribute<float>("ECFG_3_3_1"); + float ecfg_4_4_1 = jet.getAttribute<float>("ECFG_4_4_1"); + + // N2 + if(fabs(ecfg_2_1) > 1e-8) // Prevent div-0 + jet.setAttribute("N2", ecfg_3_2 / (pow(ecfg_2_1, 2.0))); + else + jet.setAttribute("N2", -999.0); + + // N3 + if(fabs(ecfg_3_1) > 1e-8) // Prevent div-0 + jet.setAttribute("N3", ecfg_4_2 / (pow(ecfg_3_1, 2.0))); + else + jet.setAttribute("N3", -999.0); + + // M2 + if(fabs(ecfg_2_1) > 1e-8) // Prevent div-0 + jet.setAttribute("M2", ecfg_3_2 / ecfg_2_1); + else + jet.setAttribute("M2", -999.0); + + // 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, n=Z + + e.g. for L1 + + ecfg_3_3_1 / ecfg_2_1_2 + E = (3*1) / (1*2) = 3./2. + */ + + if(fabs(ecfg_2_1_2) > 1e-8) + { + jet.setAttribute("L1", ecfg_3_2_1 / (pow(ecfg_2_1_2, (1.) ))); + jet.setAttribute("L2", ecfg_3_3_1 / (pow(ecfg_2_1_2, (3./2.) ))); + } + else + { + jet.setAttribute("L1",-999.0); + jet.setAttribute("L2",-999.0); + } + + if(fabs(ecfg_3_3_1) > 1e-8) + { + jet.setAttribute("L3", ecfg_3_1_1 / (pow(ecfg_3_3_1, (1./3.) )) ); + jet.setAttribute("L4", ecfg_3_2_2 / (pow(ecfg_3_3_1, (4./3.) )) ); + } + else + { + jet.setAttribute("L3",-999.0); + jet.setAttribute("L4",-999.0); + } + + if(fabs(ecfg_4_4_1) > 1e-8) + jet.setAttribute("L5", ecfg_4_2_2 / (pow(ecfg_4_4_1, (1.) )) ); + else + jet.setAttribute("L5",-999.0); + + return 0; +} diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx new file mode 100644 index 00000000000..05a8d7bced5 --- /dev/null +++ b/Reconstruction/Jet/JetSubStructureMomentTools/Root/EnergyCorrelatorGeneralizedTool.cxx @@ -0,0 +1,76 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h" +#include "JetSubStructureUtils/EnergyCorrelatorGeneralized.h" +#include "fastjet/contrib/EnergyCorrelator.hh" +#include "JetSubStructureUtils/EnergyCorrelator.h" + +using namespace std; +using fastjet::PseudoJet; + +EnergyCorrelatorGeneralizedTool::EnergyCorrelatorGeneralizedTool(std::string name) : + JetSubStructureMomentToolsBase(name) +{ + ATH_MSG_DEBUG("Initializing EnergyCorrelator tool."); + declareProperty("Beta", m_Beta = 1.0); +} + +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); + + 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)); + + // these ones for t/H discrimination + + // 332 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_3_2(3, 3, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_3_2", ECFG_3_3_2.result(jet)); + + // 461 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_4_6_1(6, 4, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_4_6_1", ECFG_4_6_1.result(jet)); + + // 322 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_2_2(2, 3, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_2_2", ECFG_3_2_2.result(jet)); + + // 331 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_3_1(3, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_3_1", ECFG_3_3_1.result(jet)); + + // 422 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_4_2_2(2, 4, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_4_2_2", ECFG_4_2_2.result(jet)); + + // 441 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_4_4_1(4, 4, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_4_4_1", ECFG_4_4_1.result(jet)); + + // 212 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_2_1_2(1, 2, 2, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_2_1_2", ECFG_2_1_2.result(jet)); + + // 321 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_2_1(2, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_2_1", ECFG_3_2_1.result(jet)); + + // 311 + JetSubStructureUtils::EnergyCorrelatorGeneralized ECFG_3_1_1(1, 3, 1, JetSubStructureUtils::EnergyCorrelator::pt_R); + jet.setAttribute("ECFG_3_1_1", ECFG_3_1_1.result(jet)); + + return 0; +} diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/Root/LinkDef.h b/Reconstruction/Jet/JetSubStructureMomentTools/Root/LinkDef.h index f0e745e3885..adec55f992c 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/Root/LinkDef.h +++ b/Reconstruction/Jet/JetSubStructureMomentTools/Root/LinkDef.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "JetSubStructureMomentTools/AngularityTool.h" @@ -9,6 +9,7 @@ #include "JetSubStructureMomentTools/ShowerDeconstructionTool.h" #include "JetSubStructureMomentTools/BoostedXbbTagTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorRatiosTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h" #include "JetSubStructureMomentTools/JetPullTool.h" #include "JetSubStructureMomentTools/KTSplittingScaleTool.h" #include "JetSubStructureMomentTools/NSubjettinessTool.h" @@ -16,6 +17,7 @@ #include "JetSubStructureMomentTools/VolatilityTool.h" #include "JetSubStructureMomentTools/BosonTagTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h" #include "JetSubStructureMomentTools/JetSubStructureMomentToolsBase.h" #include "JetSubStructureMomentTools/KtDeltaRTool.h" #include "JetSubStructureMomentTools/PlanarFlowTool.h" @@ -40,6 +42,8 @@ #pragma link C++ class DipolarityTool+; #pragma link C++ class EnergyCorrelatorRatiosTool+; #pragma link C++ class EnergyCorrelatorTool+; +#pragma link C++ class EnergyCorrelatorGeneralizedRatiosTool+; +#pragma link C++ class EnergyCorrelatorGeneralizedTool+; #pragma link C++ class ISubjetRecorderTool+; #pragma link C++ class JetChargeTool+; #pragma link C++ class JetPullTool+; diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/python/DefaultTools.py b/Reconstruction/Jet/JetSubStructureMomentTools/python/DefaultTools.py index 8280a38974a..dc049402ab4 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/python/DefaultTools.py +++ b/Reconstruction/Jet/JetSubStructureMomentTools/python/DefaultTools.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration @@ -10,6 +10,7 @@ from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import Dipolarity from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import PlanarFlowTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import KtMassDropTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorTool +from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorGeneralizedRatiosTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import CenterOfMassShapesTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import JetPullTool from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import JetChargeTool @@ -69,6 +70,12 @@ def declareDefaultTools(): # Jet charge jtm += JetChargeTool("charge", K=1.0) + # generalized ECFs + jtm += EnergyCorrelatorGeneralizedTool("energycorrelatorgeneralized") + + # ... & their ratios + jtm += EnergyCorrelatorGeneralizedRatiosTool("energycorrelatorgeneralizedratios") + # Shower deconstruction. if jtm.haveShowerDeconstructionTool: jtm += ShowerDeconstructionTool("showerdec") diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/share/run.py b/Reconstruction/Jet/JetSubStructureMomentTools/share/run.py index 4f480347f6d..3fb228597b1 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/share/run.py +++ b/Reconstruction/Jet/JetSubStructureMomentTools/share/run.py @@ -187,6 +187,16 @@ if 1: #energycorrelatorratios.IncludeBeta2 = True #energycorrelatorratios.IncludeECF4 = True jetrec2.JetModifiers += [energycorrelatorratios] + + from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorGeneralizedTool + ToolSvc += EnergyCorrelatorGeneralizedTool("energycorrelatorgeneralized") + energycorrelatorgeneralized = ToolSvc.energycorrelatorgeneralized + jetrec2.JetModifiers += [energycorrelatorgeneralized] + + from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import EnergyCorrelatorGeneralizedRatiosTool + ToolSvc += EnergyCorrelatorGeneralizedRatiosTool("energycorrelatorgeneralizedratios") + energycorrelatorgeneralizedratios = ToolSvc.energycorrelatorgeneralizedratios + jetrec2.JetModifiers += [energycorrelatorgeneralizedratios] from JetSubStructureMomentTools.JetSubStructureMomentToolsConf import JetPullTool ToolSvc += JetPullTool("pull") @@ -267,7 +277,7 @@ if 1: jdmp2.FloatMoments += ["FoxWolfram0", "FoxWolfram1", "FoxWolfram2", "FoxWolfram3", "FoxWolfram4"] jdmp2.FloatMoments += ["Sphericity", "Aplanarity"] jdmp2.FloatMoments += ["ECF1", "ECF2", "ECF3"]#, "ECF4"]#, "ECF1_Beta2", "ECF2_Beta2", "ECF3_Beta2", "ECF4_Beta2"] - jdmp2.FloatMoments += ["D2", "C1", "C2"]#, "C3"]#, "D2_Beta2", "C1_Beta2", "C2_Beta2", "C3_Beta2"] + jdmp2.FloatMoments += ["D2", "C1", "C2", "N2", "N3", "M2", "L1", "L2", "L3", "L4", "L5"]#, "C3"]#, "D2_Beta2", "C1_Beta2", "C2_Beta2", "C3_Beta2"] jdmp2.FloatMoments += ["PullMag", "PullPhi"]#, "Pull_C00", "Pull_C01", "Pull_C10", "Pull_C11"] jdmp2.FloatMoments += ["Charge"] #jdmp2.FloatMoments += ["Volatility"] diff --git a/Reconstruction/Jet/JetSubStructureMomentTools/src/components/JetSubStructure_entries.cxx b/Reconstruction/Jet/JetSubStructureMomentTools/src/components/JetSubStructure_entries.cxx index 62ccbeddd54..a0845d2dc50 100644 --- a/Reconstruction/Jet/JetSubStructureMomentTools/src/components/JetSubStructure_entries.cxx +++ b/Reconstruction/Jet/JetSubStructureMomentTools/src/components/JetSubStructure_entries.cxx @@ -11,6 +11,8 @@ #include "JetSubStructureMomentTools/CenterOfMassShapesTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorTool.h" #include "JetSubStructureMomentTools/EnergyCorrelatorRatiosTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedTool.h" +#include "JetSubStructureMomentTools/EnergyCorrelatorGeneralizedRatiosTool.h" #include "JetSubStructureMomentTools/JetPullTool.h" #include "JetSubStructureMomentTools/JetChargeTool.h" #include "JetSubStructureMomentTools/VolatilityTool.h" @@ -35,6 +37,8 @@ DECLARE_COMPONENT( PlanarFlowTool ) DECLARE_COMPONENT( CenterOfMassShapesTool ) DECLARE_COMPONENT( EnergyCorrelatorTool ) DECLARE_COMPONENT( EnergyCorrelatorRatiosTool ) +DECLARE_COMPONENT( EnergyCorrelatorGeneralizedTool ) +DECLARE_COMPONENT( EnergyCorrelatorGeneralizedRatiosTool ) DECLARE_COMPONENT( JetPullTool ) DECLARE_COMPONENT( JetChargeTool ) DECLARE_COMPONENT( VolatilityTool ) diff --git a/Reconstruction/Jet/JetSubStructureUtils/JetSubStructureUtils/EnergyCorrelatorGeneralized.h b/Reconstruction/Jet/JetSubStructureUtils/JetSubStructureUtils/EnergyCorrelatorGeneralized.h new file mode 100644 index 00000000000..cacb65d5acb --- /dev/null +++ b/Reconstruction/Jet/JetSubStructureUtils/JetSubStructureUtils/EnergyCorrelatorGeneralized.h @@ -0,0 +1,30 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef jetsubstructureutils_energycorrelatorgeneralized_header +#define jetsubstructureutils_energycorrelatorgeneralized_header + +#include "JetSubStructureUtils/SubstructureCalculator.h" +#include "fastjet/contrib/EnergyCorrelator.hh" + +namespace JetSubStructureUtils { + + class EnergyCorrelatorGeneralized : public SubstructureCalculator<double>, + public fastjet::contrib::EnergyCorrelatorGeneralized { + public: + EnergyCorrelatorGeneralized(int v_angles, int N, double beta, fastjet::contrib::EnergyCorrelator::Measure measure = fastjet::contrib::EnergyCorrelator::pt_R, fastjet::contrib::EnergyCorrelator::Strategy strategy = fastjet::contrib::EnergyCorrelator::storage_array) : + fastjet::contrib::EnergyCorrelatorGeneralized(v_angles, N, beta, measure, strategy) {}; + + using SubstructureCalculator::result; + virtual double result(const fastjet::PseudoJet &jet) const { + return fastjet::contrib::EnergyCorrelatorGeneralized::result(jet); + }; + + virtual std::string description() const{ + return fastjet::contrib::EnergyCorrelatorGeneralized::description(); + }; + }; +} + +#endif -- GitLab