ATLAS Offline Software
OverlaySteering.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 """Main steering for MC+MC and MC+data overlay
3 
4 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 """
6 
7 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
8 from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors
9 from AthenaConfiguration.Enums import LHCPeriod
10 from AthenaKernel.EventIdOverrideConfig import IOVDbMetaDataToolWithRunNumberOverrideCfg
11 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
12 from DigitizationConfig.DigitizationParametersConfig import writeDigitizationParameters
13 from OverlayCopyAlgs.OverlayCopyAlgsConfig import \
14  CopyCaloCalibrationHitContainersCfg, CopyJetTruthInfoCfg, CopyPileupParticleTruthInfoCfg, CopyMcEventCollectionCfg, \
15  CopyTrackRecordCollectionsCfg, CopyBackgroundVertexCfg
16 from PyJobTransforms.TransformUtils import executeFromFragment
17 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoOverlayCfg
18 
19 
20 def OverlayMainCfg(configFlags):
21  """Main overlay steering configuration"""
22 
23  # Construct our accumulator to run
24  acc = MainServicesCfg(configFlags)
25  acc.merge(PoolReadCfg(configFlags))
26  acc.merge(OverlayMainContentCfg(configFlags))
27  return acc
28 
29 
30 def OverlayMainContentCfg(configFlags):
31  """Main overlay content"""
32 
33  acc = writeDigitizationParameters(configFlags)
34 
35  if not configFlags.Overlay.ByteStream:
36  acc.merge(IOVDbMetaDataToolWithRunNumberOverrideCfg(configFlags))
37 
38  # Add event info overlay
39  if not configFlags.Sim.DoFullChain:
40  acc.merge(EventInfoOverlayCfg(configFlags))
41 
42  # Add truth overlay (needed downstream)
43  if not configFlags.Sim.DoFullChain and (getEnabledDetectors(configFlags) or configFlags.Digitization.EnableTruth):
44  acc.merge(CopyMcEventCollectionCfg(configFlags))
45  if configFlags.Digitization.EnableTruth:
46  acc.merge(CopyJetTruthInfoCfg(configFlags))
47  acc.merge(CopyPileupParticleTruthInfoCfg(configFlags))
48  acc.merge(CopyCaloCalibrationHitContainersCfg(configFlags))
49  if not configFlags.Sim.DoFullChain:
50  acc.merge(CopyTrackRecordCollectionsCfg(configFlags))
51 
52  # Beam spot reweighting
53  if configFlags.Digitization.InputBeamSigmaZ > 0:
54  from BeamEffects.BeamEffectsAlgConfig import BeamSpotReweightingAlgCfg
55  acc.merge(BeamSpotReweightingAlgCfg(configFlags))
56 
57  # Inner detector
58  if configFlags.Detector.EnableBCM:
59  from InDetOverlay.BCMOverlayConfig import BCMOverlayCfg
60  acc.merge(BCMOverlayCfg(configFlags))
61  if configFlags.Detector.EnablePixel:
62  from InDetOverlay.PixelOverlayConfig import PixelOverlayCfg
63  acc.merge(PixelOverlayCfg(configFlags))
64  if configFlags.Detector.EnableSCT:
65  from InDetOverlay.SCTOverlayConfig import SCTOverlayCfg
66  acc.merge(SCTOverlayCfg(configFlags))
67  if configFlags.Detector.EnableTRT:
68  from InDetOverlay.TRTOverlayConfig import TRTOverlayCfg
69  acc.merge(TRTOverlayCfg(configFlags))
70 
71  # ITk
72  if configFlags.Detector.EnableITkPixel:
73  from InDetOverlay.ITkPixelOverlayConfig import ITkPixelOverlayCfg
74  acc.merge(ITkPixelOverlayCfg(configFlags))
75  if configFlags.Detector.EnableITkStrip:
76  from InDetOverlay.ITkStripOverlayConfig import ITkStripOverlayCfg
77  acc.merge(ITkStripOverlayCfg(configFlags))
78  if configFlags.Detector.EnablePLR:
79  from InDetOverlay.PLR_OverlayConfig import PLR_OverlayCfg
80  acc.merge(PLR_OverlayCfg(configFlags))
81 
82  # HGTD
83  if configFlags.Detector.EnableHGTD:
84  from HGTD_Overlay.HGTD_OverlayConfig import HGTD_OverlayCfg
85  acc.merge(HGTD_OverlayCfg(configFlags))
86 
87  # Calorimeters
88  if configFlags.Detector.EnableLAr:
89  from LArDigitization.LArDigitizationConfig import LArOverlayCfg, LArSuperCellOverlayCfg
90  acc.merge(LArOverlayCfg(configFlags))
91  if configFlags.Detector.EnableL1Calo:
92  if configFlags.Overlay.DataOverlay:
93  pass # TODO: not supported for now
94  else:
95  from TrigT1CaloSim.TTL1OverlayConfig import LArTTL1OverlayCfg
96  acc.merge(LArTTL1OverlayCfg(configFlags))
97  if configFlags.GeoModel.Run >= LHCPeriod.Run3:
98  acc.merge(LArSuperCellOverlayCfg(configFlags))
99 
100  if configFlags.Detector.EnableTile:
101  from TileSimAlgs.TileDigitizationConfig import TileDigitizationCfg, TileOverlayTriggerDigitizationCfg
102  acc.merge(TileDigitizationCfg(configFlags))
103  if configFlags.Detector.EnableL1Calo:
104  if configFlags.Overlay.DataOverlay:
105  pass # TODO: not supported for now
106  else:
107  from TrigT1CaloSim.TTL1OverlayConfig import TileTTL1OverlayCfg
108  acc.merge(TileTTL1OverlayCfg(configFlags))
109  acc.merge(TileOverlayTriggerDigitizationCfg(configFlags))
110 
111  # Muon system
112  from MuonConfig.MuonOverlayConfig import MuonOverlayCfg
113  acc.merge(MuonOverlayCfg(configFlags))
114 
115  # Add MT-safe PerfMon
116  if configFlags.PerfMon.doFastMonMT or configFlags.PerfMon.doFullMonMT:
117  from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
118  acc.merge(PerfMonMTSvcCfg(configFlags))
119 
120  # Track overlay
121  if configFlags.Overlay.doTrackOverlay:
122  #need this to ensure that the ElementLinks to the PRDs are handled correctly (since the name is hardcoded in the converters)
123  from TrkEventCnvTools.TrkEventCnvToolsConfig import TrkEventCnvSuperToolCfg
124  acc.merge(TrkEventCnvSuperToolCfg(configFlags))
125  if configFlags.Detector.GeometryITk:
126  from OverlayCopyAlgs.OverlayCopyAlgsConfig import CopyITkTrackCollectionsCfg, CopyITkPixelClusterContainerCfg, CopyITkStripClusterContainerCfg
127  acc.merge(CopyITkTrackCollectionsCfg(configFlags))
128  acc.merge(CopyITkPixelClusterContainerCfg(configFlags))
129  acc.merge(CopyITkStripClusterContainerCfg(configFlags))
130  else:
131  from OverlayCopyAlgs.OverlayCopyAlgsConfig import CopyTrackCollectionsCfg,CopyPixelClusterContainerCfg, CopySCT_ClusterContainerCfg,\
132  CopyTRT_DriftCircleContainerCfg
133  acc.merge(CopyTrackCollectionsCfg(configFlags))
134  acc.merge(CopyPixelClusterContainerCfg(configFlags))
135  acc.merge(CopySCT_ClusterContainerCfg(configFlags))
136  acc.merge(CopyTRT_DriftCircleContainerCfg(configFlags))
137 
138  if configFlags.Overlay.DataOverlay:
139  # Copy background vertex collection
140  acc.merge(CopyBackgroundVertexCfg(configFlags))
141  # Override conditions for data overlay
142  if configFlags.Overlay.DataOverlayConditions:
143  executeFromFragment(configFlags.Overlay.DataOverlayConditions, configFlags, acc)
144 
145  # Add in-file MetaData
146  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
147  if configFlags.Output.doWriteRDO:
148  acc.merge(SetupMetaDataForStreamCfg(configFlags, "RDO"))
149  if configFlags.Output.doWriteRDO_SGNL:
150  acc.merge(SetupMetaDataForStreamCfg(configFlags, "RDO_SGNL"))
151 
152  return acc
python.OverlayCopyAlgsConfig.CopyBackgroundVertexCfg
def CopyBackgroundVertexCfg(flags)
Definition: OverlayCopyAlgsConfig.py:627
python.LArDigitizationConfig.LArOverlayCfg
def LArOverlayCfg(flags, **kwargs)
Definition: LArDigitizationConfig.py:281
BCMOverlayConfig.BCMOverlayCfg
def BCMOverlayCfg(flags)
Definition: BCMOverlayConfig.py:87
python.DetectorConfigFlags.getEnabledDetectors
def getEnabledDetectors(flags, geometry=False)
Definition: DetectorConfigFlags.py:147
python.OverlayCopyAlgsConfig.CopyMcEventCollectionCfg
def CopyMcEventCollectionCfg(flags, name="CopyMcEventCollection", **kwargs)
Definition: OverlayCopyAlgsConfig.py:161
python.OverlayCopyAlgsConfig.CopyPixelClusterContainerCfg
def CopyPixelClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:436
python.OverlayCopyAlgsConfig.CopyITkPixelClusterContainerCfg
def CopyITkPixelClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:448
TTL1OverlayConfig.LArTTL1OverlayCfg
def LArTTL1OverlayCfg(flags, name="LArTTL1Overlay", **kwargs)
Definition: TTL1OverlayConfig.py:13
python.PerfMonCompsConfig.PerfMonMTSvcCfg
def PerfMonMTSvcCfg(flags, **kwargs)
A minimal new-style configuration for PerfMonMTSvc.
Definition: PerfMonCompsConfig.py:10
python.OverlayCopyAlgsConfig.CopyCaloCalibrationHitContainersCfg
def CopyCaloCalibrationHitContainersCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:411
python.OverlaySteering.OverlayMainContentCfg
def OverlayMainContentCfg(configFlags)
Definition: OverlaySteering.py:30
python.OverlayCopyAlgsConfig.CopyPileupParticleTruthInfoCfg
def CopyPileupParticleTruthInfoCfg(flags, name="CopyPileupParticleTruthInfo", **kwargs)
Definition: OverlayCopyAlgsConfig.py:133
python.OverlayCopyAlgsConfig.CopySCT_ClusterContainerCfg
def CopySCT_ClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:459
python.OverlayCopyAlgsConfig.CopyITkTrackCollectionsCfg
def CopyITkTrackCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:548
TileDigitizationConfig.TileOverlayTriggerDigitizationCfg
def TileOverlayTriggerDigitizationCfg(flags)
Definition: TileDigitizationConfig.py:33
ITkStripOverlayConfig.ITkStripOverlayCfg
def ITkStripOverlayCfg(flags)
Definition: ITkStripOverlayConfig.py:84
MuonOverlayConfig.MuonOverlayCfg
def MuonOverlayCfg(configFlags)
Definition: MuonOverlayConfig.py:2
python.OverlayCopyAlgsConfig.CopyTrackCollectionsCfg
def CopyTrackCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:522
python.OverlayCopyAlgsConfig.CopyTRT_DriftCircleContainerCfg
def CopyTRT_DriftCircleContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:483
python.TrkEventCnvToolsConfig.TrkEventCnvSuperToolCfg
def TrkEventCnvSuperToolCfg(flags, name='EventCnvSuperTool', **kwargs)
Definition: TrkEventCnvToolsConfig.py:51
python.OverlayCopyAlgsConfig.CopyTrackRecordCollectionsCfg
def CopyTrackRecordCollectionsCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:495
python.DigitizationParametersConfig.writeDigitizationParameters
def writeDigitizationParameters(flags)
Definition: DigitizationParametersConfig.py:96
TTL1OverlayConfig.TileTTL1OverlayCfg
def TileTTL1OverlayCfg(flags, name="TileTTL1Overlay", **kwargs)
Definition: TTL1OverlayConfig.py:51
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.OverlayCopyAlgsConfig.CopyITkStripClusterContainerCfg
def CopyITkStripClusterContainerCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:471
PixelOverlayConfig.PixelOverlayCfg
def PixelOverlayCfg(flags)
Definition: PixelOverlayConfig.py:85
python.LArDigitizationConfig.LArSuperCellOverlayCfg
def LArSuperCellOverlayCfg(flags, **kwargs)
Definition: LArDigitizationConfig.py:403
SCTOverlayConfig.SCTOverlayCfg
def SCTOverlayCfg(flags)
Definition: SCTOverlayConfig.py:86
TileDigitizationConfig.TileDigitizationCfg
def TileDigitizationCfg(flags)
Definition: TileDigitizationConfig.py:50
python.EventIdOverrideConfig.IOVDbMetaDataToolWithRunNumberOverrideCfg
def IOVDbMetaDataToolWithRunNumberOverrideCfg(flags)
Definition: EventIdOverrideConfig.py:131
TRTOverlayConfig.TRTOverlayCfg
def TRTOverlayCfg(flags)
Definition: TRTOverlayConfig.py:113
python.OverlaySteering.OverlayMainCfg
def OverlayMainCfg(configFlags)
Definition: OverlaySteering.py:20
BeamEffectsAlgConfig.BeamSpotReweightingAlgCfg
def BeamSpotReweightingAlgCfg(flags, name="BeamSpotReweightingAlg", **kwargs)
Definition: BeamEffectsAlgConfig.py:192
python.OverlayCopyAlgsConfig.CopyJetTruthInfoCfg
def CopyJetTruthInfoCfg(flags, **kwargs)
Definition: OverlayCopyAlgsConfig.py:104
python.TransformUtils.executeFromFragment
def executeFromFragment(fragment_string, flags, cfg=None)
Definition: Tools/PyJobTransforms/python/TransformUtils.py:6
python.xAODEventInfoCnvConfig.EventInfoOverlayCfg
def EventInfoOverlayCfg(flags, **kwargs)
Definition: xAODEventInfoCnvConfig.py:75
PLR_OverlayConfig.PLR_OverlayCfg
def PLR_OverlayCfg(flags)
Definition: PLR_OverlayConfig.py:78
ITkPixelOverlayConfig.ITkPixelOverlayCfg
def ITkPixelOverlayCfg(flags)
Definition: ITkPixelOverlayConfig.py:84
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
HGTD_OverlayConfig.HGTD_OverlayCfg
def HGTD_OverlayCfg(flags)
Definition: HGTD_OverlayConfig.py:72
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:71