ATLAS Offline Software
METRecCfg.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from AthenaConfiguration.Enums import BeamType
5 
6 # Configure all MET algorithms for standard reconstruction
7 def METCfg(inputFlags):
8  result=ComponentAccumulator()
9  outputList = []
10 
11  # Calo MET collections (for monitoring)
12  from METReconstruction.METCalo_Cfg import METCalo_Cfg
13  result.merge(METCalo_Cfg(inputFlags))
14  metDefs = ['EMTopo', 'EMTopoRegions', 'LocHadTopo', 'LocHadTopoRegions', 'Calo']
15  for metDef in metDefs:
16  outputList.append('xAOD::MissingETContainer#MET_'+metDef)
17  outputList.append('xAOD::MissingETAuxContainer#MET_'+metDef+'Aux.')
18 
19  # Track MET
20  from METReconstruction.METTrack_Cfg import METTrack_Cfg
21  result.merge(METTrack_Cfg(inputFlags))
22  outputList.append("xAOD::MissingETContainer#MET_Track")
23  outputList.append("xAOD::MissingETAuxContainer#MET_TrackAux.")
24 
25  # Truth MET
26  if inputFlags.Input.isMC:
27  from METReconstruction.METTruth_Cfg import METTruth_Cfg
28  result.merge(METTruth_Cfg(inputFlags))
29  outputList.append("xAOD::MissingETContainer#MET_Truth")
30  outputList.append("xAOD::MissingETAuxContainer#MET_TruthAux.")
31  outputList.append("xAOD::MissingETContainer#MET_TruthRegions")
32  outputList.append("xAOD::MissingETAuxContainer#MET_TruthRegionsAux.")
33  outputList.append('xAOD::MissingETComponentMap#METMap_Truth')
34  outputList.append('xAOD::MissingETAuxComponentMap#METMap_TruthAux.')
35 
36  # "Normal" MET collections
37  from METReconstruction.METAssociatorCfg import METAssociatorCfg
38  from METUtilities.METMakerConfig import getMETMakerAlg
39  metDefs = ['AntiKt4EMTopo','AntiKt4LCTopo']
40  if inputFlags.MET.DoPFlow:
41  metDefs.append('AntiKt4EMPFlow')
42  for metDef in metDefs:
43  # Build association maps and core soft terms
44  result.merge(METAssociatorCfg(inputFlags, metDef))
45  outputList.append('xAOD::MissingETAssociationMap#METAssoc_'+metDef)
46  outputList.append('xAOD::MissingETAuxAssociationMap#METAssoc_'+metDef+'Aux.')
47  outputList.append('xAOD::MissingETContainer#MET_Core_'+metDef)
48  outputList.append('xAOD::MissingETAuxContainer#MET_Core_'+metDef+'Aux.')
49  # Build reference MET
50  result.addEventAlgo(getMETMakerAlg(metDef))
51  outputList.append('xAOD::MissingETContainer#MET_Reference_'+metDef)
52  outputList.append('xAOD::MissingETAuxContainer#MET_Reference_'+metDef+'Aux.-ConstitObjectLinks.-ConstitObjectWeights')
53 
54  # Add the collections to the output stream
55  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD, addToESD
56  result.merge(addToESD(inputFlags, outputList))
57  if inputFlags.MET.WritetoAOD:
58  result.merge(addToAOD(inputFlags, outputList))
59 
60  return result
61 
62 
63 if __name__=="__main__":
64  # Set message levels
65  from AthenaCommon.Logging import log
66  from AthenaCommon.Constants import DEBUG
67  log.setLevel(DEBUG)
68 
69  # Config flags steer the job at various levels
70  from AthenaConfiguration.AllConfigFlags import initConfigFlags
71  flags = initConfigFlags()
72  flags.Input.isMC = True
73  flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/mc20e_13TeV/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.ESD.e4993_s3227_r12689/myESD.pool.root"]
74 
75  # Flags relating to multithreaded execution
76  nthreads = 1
77  flags.Concurrency.NumThreads = nthreads
78  if nthreads > 0:
79  flags.Concurrency.NumThreads = 1
80  flags.Concurrency.NumConcurrentEvents = 1
81  flags.MET.UseTracks = True
82  flags.MET.DoPFlow = True
83  if flags.Beam.Type in [BeamType.Cosmics, BeamType.SingleBeam]: # used to have " or not rec.doInDet()" on the end
84  flags.MET.UseTracks = False
85  flags.MET.DoPFlow = False
86  print("METReconstruction_jobOptions: detected cosmics/single-beam configuration -- switch off track-based MET reco")
87 
88  flags.lock()
89 
90  # Get a ComponentAccumulator setting up the fundamental Athena job
91  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
92  cfg=MainServicesCfg(flags)
93 
94  # Add the components for reading in pool files
95  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
96  cfg.merge(PoolReadCfg(flags))
97  StoreGateSvc=CompFactory.StoreGateSvc
98  cfg.addService(StoreGateSvc("DetectorStore"))
99 
100  #Setup up general geometry
101  modelConfig=ComponentAccumulator()
102  from AtlasGeoModel.GeoModelConfig import GeoModelCfg
103  modelConfig=GeoModelCfg(flags)
104  cfg.merge(modelConfig)
105 
106  from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
107  cfg.merge(AtlasFieldCacheCondAlgCfg(flags))
108 
109  #Configure topocluster algorithmsm, and associated conditions
110  from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
111  cfg.merge(CaloTopoClusterCfg(flags))
112 
113  from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
114  cfg.merge(CaloNoiseCondAlgCfg(flags,"totalNoise"))
115  cfg.merge(CaloNoiseCondAlgCfg(flags,"electronicNoise"))
116 
117  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
118  cfg.merge(MuonGeoModelCfg(flags))
119 
120  # Nowadays the jet calibration tool requires the EventInfo
121  # to be decorated with lumi info, which is not in Run 2 AODs
122  from LumiBlockComps.LuminosityCondAlgConfig import LuminosityCondAlgCfg
123  cfg.merge(LuminosityCondAlgCfg(flags))
124 
125  from AthenaConfiguration.ComponentFactory import CompFactory
126  muWriter = CompFactory.LumiBlockMuWriter("LumiBlockMuWriter",LumiDataKey="LuminosityCondData")
127  cfg.addEventAlgo(muWriter,"AthAlgSeq")
128 
129  # Get Jet Inputs
130  from JetRecConfig.StandardJetConstits import stdConstitDic as cst
131  from JetRecConfig import JetRecConfig
132  for jetdef in [cst.EMTopoOrigin,cst.LCTopoOrigin,cst.EMPFlow]:
133  cfg.merge(JetRecConfig.JetInputCfg(flags,jetdef))
134 
135  # Need to rename the collections in the xAOD in order to avoid conflicts
136  from SGComps.AddressRemappingConfig import InputRenameCfg
137  cfg.merge(InputRenameCfg('xAOD::MissingETContainer','MET_Track','MET_Track_Old'))
138  cfg.merge(InputRenameCfg('xAOD::MissingETAuxContainer','MET_TrackAux.','MET_Track_OldAux.'))
139  cfg.merge(InputRenameCfg('xAOD::MissingETContainer','MET_EMTopo','MET_EMTopo_Old'))
140  cfg.merge(InputRenameCfg('xAOD::MissingETAuxContainer','MET_EMTopoAux.','MET_EMTopo_OldAux.'))
141  cfg.merge(InputRenameCfg('xAOD::MissingETContainer','MET_LocHadTopo','MET_LocHadTopo_Old'))
142  cfg.merge(InputRenameCfg('xAOD::MissingETAuxContainer','MET_LocHadTopoAux.','MET_LocHadTopo_OldAux.'))
143 
144  cfg.merge(METCfg(flags))
145 
146  outputlist = ["EventInfo#*"]
147  outputlist+=["xAOD::MissingETContainer#"+"MET_Track","xAOD::MissingETAuxContainer#"+"MET_Track"+"Aux."]
148  outputlist+=["xAOD::MissingETContainer#"+"MET_Track_Old","xAOD::MissingETAuxContainer#"+"MET_Track_Old"+"Aux."]
149  outputlist+=["xAOD::MissingETContainer#"+"MET_EMTopo","xAOD::MissingETAuxContainer#"+"MET_EMTopo"+"Aux."]
150  outputlist+=["xAOD::MissingETContainer#"+"MET_EMTopo_Old","xAOD::MissingETAuxContainer#"+"MET_EMTopo_Old"+"Aux."]
151  outputlist+=["xAOD::MissingETContainer#"+"MET_AntiKt4EMPFlow","xAOD::MissingETAuxContainer#"+"MET_AntiKt4EMPFlow"+"Aux."]
152  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
153  cfg.merge(OutputStreamCfg(flags,"xAOD",ItemList=outputlist))
154 
155  cfg.run(maxEvents=20)
METCalo_Cfg
Definition: METCalo_Cfg.py:1
python.LuminosityCondAlgConfig.LuminosityCondAlgCfg
def LuminosityCondAlgCfg(flags, useOnlineLumi=None, suffix=None)
Definition: LuminosityCondAlgConfig.py:17
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
METMakerConfig.getMETMakerAlg
def getMETMakerAlg(suffix, jetSelection="Tier0", jetColl="")
Definition: METMakerConfig.py:41
METAssociatorCfg
Definition: METAssociatorCfg.py:1
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
METRecCfg.METCfg
def METCfg(inputFlags)
Definition: METRecCfg.py:7
METTrack_Cfg
Definition: METTrack_Cfg.py:1
python.CaloNoiseCondAlgConfig.CaloNoiseCondAlgCfg
def CaloNoiseCondAlgCfg(flags, noisetype="totalNoise")
Definition: CaloNoiseCondAlgConfig.py:11
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
Constants
some useful constants -------------------------------------------------—
python.OutputStreamConfig.addToESD
def addToESD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:127
python.CaloTopoClusterConfig.CaloTopoClusterCfg
def CaloTopoClusterCfg(flags, cellsname="AllCalo", clustersname=None, clustersnapname="CaloTopoClusters")
Definition: CaloTopoClusterConfig.py:318
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:142
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
python.MagFieldServicesConfig.AtlasFieldCacheCondAlgCfg
def AtlasFieldCacheCondAlgCfg(flags, **kwargs)
Definition: MagFieldServicesConfig.py:8
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
METTruth_Cfg
Definition: METTruth_Cfg.py:1
python.GeoModelConfig.GeoModelCfg
def GeoModelCfg(flags)
Definition: GeoModelConfig.py:16
AddressRemappingConfig.InputRenameCfg
def InputRenameCfg(type, from_name, to_name)
Definition: AddressRemappingConfig.py:28