ATLAS Offline Software
AthenaMonitoringAODRecoCfg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 
6  import logging
7  local_logger = logging.getLogger('AthenaMonitoringAODRecoCfg')
8  info = local_logger.info
9  result = ComponentAccumulator()
10 
11  if flags.DQ.Environment == 'AOD':
12  info('Running on AOD: Scheduling rebuild of standard jet collections if necessary')
13  from JetRecConfig.StandardSmallRJets import AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo
14  from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10LCTopoTrimmed_trigger, AntiKt10UFOCSSKSoftDrop_trigger
15  from AthenaConfiguration.Enums import BeamType
16 
17  # first, check small R jets, skip PFlow when running over cosmics
18  jets_to_schedule = [_ for _ in ((AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo) if flags.Beam.Type is not BeamType.Cosmics else (AntiKt4EMTopo, AntiKt4LCTopo))
19  if _.fullname() not in flags.Input.Collections]
20  # if we reschedule small R jets, check if we need to reschedule large R as well
21  if jets_to_schedule:
22  jets_to_schedule += [_ for _ in ((AntiKt10LCTopo_noVR, AntiKt10LCTopoTrimmed_trigger, AntiKt10UFOCSSKSoftDrop_trigger) if flags.Beam.Type is not BeamType.Cosmics else (AntiKt10LCTopo_noVR, AntiKt10LCTopoTrimmed_trigger))
23  if _.fullname() not in flags.Input.Collections]
24 
25  if jets_to_schedule:
26  info(f'Ensuring presence of jet collections for monitoring: {jets_to_schedule}')
27  from JetRecConfig.JetRecConfig import JetRecCfg
28  # We're in Reco-like job : this flag implies the jet config will automatically switch off component incompatible with conditions (cosmics, truth,...)
29 
30  for container in jets_to_schedule:
31  result.merge(JetRecCfg(flags, container))
32 
33  jet_collections = set([_.fullname().replace('Jets','') for _ in jets_to_schedule])
34  btag_jet_collections = set(['AntiKt4EMTopo', 'AntiKt4EMPFlow'])
35  met_jet_collections = set(['AntiKt4EMTopo', 'AntiKt4EMPFlow', 'AntiKt4LCTopo'])
36 
37  if jet_collections & btag_jet_collections:
38  info('Scheduling b-tagging of rebuilt jets')
39  from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
40  result.merge(BeamSpotCondAlgCfg(flags))
41  from BTagging.BTagConfig import BTagRecoSplitCfg
42  # would rather use removesuffix below but need to wait for Python 3.9
43  for container in jet_collections & btag_jet_collections:
44  result.merge(BTagRecoSplitCfg(flags, [container]))
45 
46  # MET can't be rebuilt when running over cosmics or HI AOD as taus are missing
47  from .DQConfigFlags import DQDataType
48  if jet_collections & met_jet_collections and flags.DQ.DataType not in (DQDataType.HeavyIon, DQDataType.Cosmics):
49  info('Scheduling rebuild of standard MET')
50  from METReconstruction.METAssociatorCfg import METAssociatorCfg
51  from METUtilities.METMakerConfig import getMETMakerAlg
52  for container in jet_collections & met_jet_collections:
53  if container == 'AntiKt4EMPFlow':
54  # build links between FlowElements and electrons, photons, muons and taus
55  info('Scheduling FlowElement linking')
56  from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
57  result.merge(PFGlobalFlowElementLinkingCfg(flags))
58  result.merge(METAssociatorCfg(flags, container))
59  result.addEventAlgo(getMETMakerAlg(container))
60  from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
61  result.merge(CaloNoiseCondAlgCfg(flags)) # Prereq for Calo MET
62  from METReconstruction.METCalo_Cfg import METCalo_Cfg
63  result.merge(METCalo_Cfg(flags))
64 
65  return result
grepfile.info
info
Definition: grepfile.py:38
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
METCalo_Cfg
Definition: METCalo_Cfg.py:1
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.BeamSpotConditionsConfig.BeamSpotCondAlgCfg
def BeamSpotCondAlgCfg(flags, name="BeamSpotCondAlg", **kwargs)
Definition: BeamSpotConditionsConfig.py:7
METMakerConfig.getMETMakerAlg
def getMETMakerAlg(suffix, jetSelection="Tier0", jetColl="")
Definition: METMakerConfig.py:41
METAssociatorCfg
Definition: METAssociatorCfg.py:1
python.JetRecConfig.JetRecCfg
def JetRecCfg(flags, jetdef, returnConfiguredDef=False)
Top level functions returning ComponentAccumulator out of JetDefinition.
Definition: JetRecConfig.py:36
python.CaloNoiseCondAlgConfig.CaloNoiseCondAlgCfg
def CaloNoiseCondAlgCfg(flags, noisetype="totalNoise")
Definition: CaloNoiseCondAlgConfig.py:11
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.BTagConfig.BTagRecoSplitCfg
def BTagRecoSplitCfg(inputFlags, JetCollection=['AntiKt4EMTopo', 'AntiKt4EMPFlow'])
Definition: BTagConfig.py:128
python.AthenaMonitoringAODRecoCfg.AthenaMonitoringAODRecoCfg
def AthenaMonitoringAODRecoCfg(flags)
Definition: AthenaMonitoringAODRecoCfg.py:5
PFCfg.PFGlobalFlowElementLinkingCfg
def PFGlobalFlowElementLinkingCfg(inputFlags, **kwargs)
Definition: PFCfg.py:468