Skip to content
Snippets Groups Projects
Commit 51a76539 authored by Russell Bate's avatar Russell Bate
Browse files

Squashed commit of the following:

commit 042d0e58312767a38132f32cda8f29e0d7df77ee
Author: Russell Bate <russell.bate@cern.ch>
Date:   Mon Mar 4 17:10:28 2024 +0100

    EMTopo backup working with PFlow. Not all AuxDyn show up but same as before.

commit 642b52de5dfcce68e8e94a3b1cf32f20be9dd0b8
Author: Russell Bate <russell.bate@cern.ch>
Date:   Thu Feb 29 18:56:45 2024 +0100

    Added legacy emtopo to output.

commit 7abe7262c51f4dfc6436b4876f6f8c4e05c3c0ff
Author: Russell Bate <russell.bate@cern.ch>
Date:   Tue Feb 27 14:41:03 2024 +0100

    Add Legacy EMTopo eventClean cpp.

commit 64b85e7b
Merge: 77ed4ce3 3ef09aad
Author: Russell Bate <russell.bate@cern.ch>
Date:   Tue Feb 20 16:44:53 2024 +0100

    Merge branch athena:main into main

commit 77ed4ce3
Author: Russell Bate <russell.bate@cern.ch>
Date:   Mon Feb 19 15:44:26 2024 +0100

    Cleaning update for PFlowJets and TightBad WP.

EventCleanTestAlg cpp added switch for EMTopo. If jet container is
AntiKt4EMTopo the eventclean gets an EMTopo tag. Event cleaning legacy
for LooseBad and LooseBadLLP. New PFlow event cleaning for LooseBad and
TightBad working points. AuxDyn jet cleaning variables show up as before
but with both EMTopo and EMPFlow.
parent c61daa03
No related branches found
No related tags found
No related merge requests found
......@@ -85,7 +85,7 @@ class OverlapRemovalGenUseAlg : public EL::AnaAlgorithm
SG::WriteDecorHandleKeyArray<ContainerType> m_writeDecorKeys{};
};
DataKeyHandler<xAOD::JetContainer> m_jetKey{this, "JetKey", "AntiKt4EMTopoJets",
DataKeyHandler<xAOD::JetContainer> m_jetKey{this, "JetKey", "AntiKt4EMPFlowJets",
"StoreGate/TEvent key for jets"};
DataKeyHandler<xAOD::ElectronContainer> m_electronKey{this, "ElectronKey", "Electrons",
......
......@@ -101,15 +101,16 @@ def AddSidebandEventShapeCfg(ConfigFlags):
return acc
def AddJvtDecorationAlgCfg(ConfigFlags, algName = "JvtPassDecorAlg", **kwargs):
def AddJvtDecorationAlgCfg(ConfigFlags, algName = "JvtPassDecorAlg", jetContainer='AntiKt4EMTopo', **kwargs):
acc = ComponentAccumulator()
# Decorate if jet passed JVT criteria
from JetJvtEfficiency.JetJvtEfficiencyToolConfig import getJvtEffToolCfg
passJvtTool = acc.popToolsAndMerge(getJvtEffToolCfg(ConfigFlags, 'AntiKt4EMTopo'))
passJvtTool.PassJVTKey = "AntiKt4EMTopoJets.DFCommonJets_passJvt"
passJvtTool = acc.popToolsAndMerge(getJvtEffToolCfg(ConfigFlags, jetContainer))
passJvtTool.PassJVTKey = "{}Jets.DFCommonJets_passJvt".format(jetContainer)
passJvtTool.SuppressOutputDependence = False
kwargs.setdefault("Decorators", [passJvtTool])
kwargs.setdefault("JetContainer", "AntiKt4EMTopoJets")
kwargs.setdefault("JetContainer", "{}Jets".format(jetContainer))
acc.addEventAlgo(CompFactory.JetDecorationAlg(algName, **kwargs), primary = True)
return acc
......@@ -117,16 +118,29 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
"""Add event cleaning flags"""
acc = ComponentAccumulator()
acc.merge(AddJvtDecorationAlgCfg(ConfigFlags))
acc.merge(AddJvtDecorationAlgCfg(ConfigFlags, algName="JvtPassDecorAlg_EMTopo", jetContainer='AntiKt4EMTopo'))
acc.merge(AddJvtDecorationAlgCfg(ConfigFlags, algName="JvtPassDecorAlg", jetContainer='AntiKt4EMPFlow'))
from DerivationFrameworkTau.TauCommonConfig import AddTauAugmentationCfg
acc.merge(AddTauAugmentationCfg(ConfigFlags, prefix="JetCommon", doLoose=True))
# Overlap for EMTopo
from AssociationUtils.AssociationUtilsConfig import OverlapRemovalToolCfg
outputLabel = 'DFCommonJets_passOR'
outputLabel_legacy = 'DFCommonJets_passOR'
bJetLabel = '' #default
tauLabel = 'DFTauLoose'
orTool_legacy = acc.popToolsAndMerge(OverlapRemovalToolCfg(ConfigFlags,outputLabel=outputLabel_legacy,bJetLabel=bJetLabel))
algOR_legacy = CompFactory.OverlapRemovalGenUseAlg('OverlapRemovalGenUseAlg_EMTopo',
JetKey="AntiKt4EMTopoJets",
OverlapLabel=outputLabel_legacy,
OverlapRemovalTool=orTool_legacy,
TauLabel=tauLabel,
BJetLabel=bJetLabel
)
acc.addEventAlgo(algOR_legacy)
# Overlap for EMPFlow
outputLabel = 'DFCommonJets_passOR'
orTool = acc.popToolsAndMerge(OverlapRemovalToolCfg(ConfigFlags,outputLabel=outputLabel,bJetLabel=bJetLabel))
algOR = CompFactory.OverlapRemovalGenUseAlg('OverlapRemovalGenUseAlg',
OverlapLabel=outputLabel,
......@@ -144,6 +158,7 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
supportedWPs = ['Loose', 'Tight', 'LooseLLP', 'VeryLooseLLP', 'SuperLooseLLP']
prefix = "DFCommonJets_"
evt_lvl_suppWPs_PFlow = ['LooseBad', 'TightBad']
for wp in workingPoints:
if wp not in supportedWPs:
......@@ -153,23 +168,59 @@ def AddEventCleanFlagsCfg(ConfigFlags, workingPoints = ['Loose', 'Tight', 'Loose
# LLP WPs have a slightly different name format
if 'LLP' in wp:
cleaningLevel = wp.replace('LLP', 'BadLLP')
jetCleaningTool = acc.popToolsAndMerge(JetCleaningToolCfg(ConfigFlags, 'JetCleaningTool_'+cleaningLevel, 'AntiKt4EMTopoJets', cleaningLevel, False))
acc.addPublicTool(jetCleaningTool)
ecTool = acc.popToolsAndMerge(EventCleaningToolCfg(ConfigFlags,'EventCleaningTool_' + wp, cleaningLevel))
ecTool.JetCleanPrefix = prefix
ecTool.JetContainer = "AntiKt4EMTopoJets"
ecTool.JetCleaningTool = jetCleaningTool
acc.addPublicTool(ecTool)
eventCleanAlg = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp,
EventCleaningTool=ecTool,
JetCollectionName="AntiKt4EMTopoJets",
EventCleanPrefix=prefix,
CleaningLevel=cleaningLevel,
doEvent = ('Loose' in wp)) # Only store event-level flags for Loose and LooseLLP
acc.addEventAlgo(eventCleanAlg)
# Add support for TightBad event flag as well
doEvent_PFlow=False
for evt_swp in evt_lvl_suppWPs_PFlow:
if evt_swp == cleaningLevel:
doEvent_PFlow=True
break
doEvent_EMTopo=False
if 'Loose' in cleaningLevel:
doEvent_EMTopo=True
## for EMTopo (Legacy), also support for LLPs
if doEvent_EMTopo:
jetCleaningTool_legacy = acc.popToolsAndMerge(JetCleaningToolCfg(
ConfigFlags, 'JetCleaningTool_'+cleaningLevel+'_EMTopo',
'AntiKt4EMTopo', cleaningLevel, False))
acc.addPublicTool(jetCleaningTool_legacy)
ecTool_legacy = acc.popToolsAndMerge(EventCleaningToolCfg(
ConfigFlags,'EventCleaningTool_'+wp+'_EMTopo', cleaningLevel))
ecTool_legacy.JetCleanPrefix = prefix
ecTool_legacy.JetContainer = "AntiKt4EMTopoJets"
ecTool_legacy.JetCleaningTool = jetCleaningTool_legacy
acc.addPublicTool(ecTool_legacy)
eventCleanAlg_legacy = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp+'_EMTopo',
EventCleaningTool=ecTool_legacy,
JetCollectionName="AntiKt4EMTopoJets",
EventCleanPrefix=prefix,
CleaningLevel=cleaningLevel,
doEvent=True) # Only store event-level flags for Loose and LooseLLP
acc.addEventAlgo(eventCleanAlg_legacy)
## For PFlow
if doEvent_PFlow:
jetCleaningTool = acc.popToolsAndMerge(JetCleaningToolCfg(
ConfigFlags, 'JetCleaningTool_'+cleaningLevel,
'AntiKt4EMPFlowJets', cleaningLevel, False))
acc.addPublicTool(jetCleaningTool)
ecTool = acc.popToolsAndMerge(EventCleaningToolCfg(ConfigFlags,'EventCleaningTool_' + wp, cleaningLevel))
ecTool.JetCleanPrefix = prefix
ecTool.JetContainer = "AntiKt4EMPFlowJets"
ecTool.JetCleaningTool = jetCleaningTool
acc.addPublicTool(ecTool)
eventCleanAlg = CompFactory.EventCleaningTestAlg('EventCleaningTestAlg_'+wp,
EventCleaningTool=ecTool,
JetCollectionName="AntiKt4EMPFlowJets",
EventCleanPrefix=prefix,
CleaningLevel=cleaningLevel,
doEvent=True) # for PFlow we use Loose and Tight
acc.addEventAlgo(eventCleanAlg)
return acc
......
......@@ -26,9 +26,16 @@ StatusCode EventCleaningTestAlg::initialize()
// Try to retrieve the tool
ATH_CHECK( m_ecTool.retrieve() );
ATH_CHECK( m_jetKey.initialize());
ATH_CHECK(m_evtKey.initialize());
// Create the decorator
m_evtInfoDecor = m_evtKey.key() + "." + m_prefix + "eventClean_"+m_cleaningLevel;
ATH_CHECK( m_evtKey.initialize() );
// Create the decorator
// Use an if statement to leave a legacy
auto labelString = m_cleaningLevel;
if (m_jetKey.key() == "AntiKt4EMTopoJets") {
labelString = m_cleaningLevel + "_EMTopo";
}
else {}
m_evtInfoDecor = m_evtKey.key() + "." + m_prefix + "eventClean_"+labelString;
ATH_CHECK(m_evtInfoDecor.initialize(m_doEvent));
return StatusCode::SUCCESS;
}
......
......@@ -40,7 +40,7 @@ class EventCleaningTestAlg : public AthAlgorithm
ToolHandle<ECUtils::IEventCleaningTool> m_ecTool{this, "EventCleaningTool","ECUtils::EventCleaningTool/EventCleaningTool" };
SG::ReadHandleKey<xAOD::JetContainer> m_jetKey{this, "JetCollectionName", "AntiKt4EMTopoJets",
SG::ReadHandleKey<xAOD::JetContainer> m_jetKey{this, "JetCollectionName", "AntiKt4EMPFlowJets",
"Jet collection name"};
SG::ReadHandleKey<xAOD::EventInfo> m_evtKey{this, "EventInfoKey",
"EventInfo"};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment