5def AthenaMonitoringAODRecoCfg(flags):
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
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
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
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
43 for container in jet_collections & btag_jet_collections:
44 result.merge(BTagRecoSplitCfg(flags, [container+"Jets"]))
45
46
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
55 info('Scheduling FlowElement linking')
56 from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
57 result.merge(PFGlobalFlowElementLinkingCfg(flags))
59 result.addEventAlgo(getMETMakerAlg(container))
60 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
61 result.merge(CaloNoiseCondAlgCfg(flags))
62 from METReconstruction.METCalo_Cfg import METCalo_Cfg
64
65 return result
std::string replace(std::string s, const std::string &s2, const std::string &s3)