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  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
34  acc = ComponentAccumulator()
35 
36  # Handle overlay digitization metadata writing (must come before reading setup)
37  if hasattr(configFlags, '_Overlay_pileupDigitizationMetadata'):
38  if configFlags.IOVDb.WriteParametersAsMetaData:
39  # Direct metadata mode: use standard parameter writer
40  from IOVDbMetaDataTools.ParameterWriterConfig import writeParametersToMetaData
41  from DigitizationConfig.DigitizationParametersConfig import folderName
42  from AthenaCommon.Logging import logging
43  logOverlay = logging.getLogger('OverlayMetadataConfig')
44  logOverlay.info('Writing overlay digitization parameters directly to in-file metadata (bypassing DigitParams.db)')
45 
46  pileupDict = configFlags._Overlay_pileupDigitizationMetadata
47  runNumber = configFlags.Input.RunNumbers[0]
48  runNumberEnd = configFlags.Input.RunNumbers[-1]
49  if runNumberEnd == runNumber:
50  runNumberEnd += 1
51 
52  # Convert pileup dictionary to string parameters
53  params = {}
54  for key in pileupDict:
55  value = str(pileupDict[key])
56  params[key] = value
57  logOverlay.info('DigitizationMetaData: setting "%s" to be %s', key, value)
58 
59  acc.merge(writeParametersToMetaData(configFlags, folderName, params, runNumber, runNumberEnd))
60  else:
61  # Sqlite mode: create DigitParams.db first
62  from OverlayConfiguration.OverlayMetadata import writeOverlayDigitizationMetadata
63  writeOverlayDigitizationMetadata(configFlags, configFlags._Overlay_pileupDigitizationMetadata)
64 
65  # Setup reading digitization parameters (mode-dependent)
66  # In sqlite mode, this reads from DigitParams.db (created above if pileup metadata exists)
67  # Only needed if we actually have pileup metadata to read
68  if not configFlags.IOVDb.WriteParametersAsMetaData and hasattr(configFlags, '_Overlay_pileupDigitizationMetadata'):
69  acc.merge(writeDigitizationParameters(configFlags))
70 
71  if not configFlags.Overlay.ByteStream:
72  acc.merge(IOVDbMetaDataToolWithRunNumberOverrideCfg(configFlags))
73 
74  # Add event info overlay
75  if not configFlags.Sim.DoFullChain:
76  acc.merge(EventInfoOverlayCfg(configFlags))
77 
78  # Add truth overlay (needed downstream)
79  if not configFlags.Sim.DoFullChain and (getEnabledDetectors(configFlags) or configFlags.Digitization.EnableTruth):
80  acc.merge(CopyMcEventCollectionCfg(configFlags))
81  if configFlags.Digitization.EnableTruth:
82  acc.merge(CopyJetTruthInfoCfg(configFlags))
83  acc.merge(CopyPileupParticleTruthInfoCfg(configFlags))
84  acc.merge(CopyCaloCalibrationHitContainersCfg(configFlags))
85  if not configFlags.Sim.DoFullChain:
86  acc.merge(CopyTrackRecordCollectionsCfg(configFlags))
87 
88  # Beam spot reweighting
89  if configFlags.Digitization.InputBeamSigmaZ > 0:
90  from BeamEffects.BeamEffectsAlgConfig import BeamSpotReweightingAlgCfg
91  acc.merge(BeamSpotReweightingAlgCfg(configFlags))
92 
93  # Inner detector
94  if configFlags.Detector.EnableBCM:
95  from InDetOverlay.BCMOverlayConfig import BCMOverlayCfg
96  acc.merge(BCMOverlayCfg(configFlags))
97  if configFlags.Detector.EnablePixel:
98  from InDetOverlay.PixelOverlayConfig import PixelOverlayCfg
99  acc.merge(PixelOverlayCfg(configFlags))
100  if configFlags.Detector.EnableSCT:
101  from InDetOverlay.SCTOverlayConfig import SCTOverlayCfg
102  acc.merge(SCTOverlayCfg(configFlags))
103  if configFlags.Detector.EnableTRT:
104  from InDetOverlay.TRTOverlayConfig import TRTOverlayCfg
105  acc.merge(TRTOverlayCfg(configFlags))
106 
107  # ITk
108  if configFlags.Detector.EnableITkPixel:
109  from InDetOverlay.ITkPixelOverlayConfig import ITkPixelOverlayCfg
110  acc.merge(ITkPixelOverlayCfg(configFlags))
111  if configFlags.Detector.EnableITkStrip:
112  from InDetOverlay.ITkStripOverlayConfig import ITkStripOverlayCfg
113  acc.merge(ITkStripOverlayCfg(configFlags))
114  if configFlags.Detector.EnablePLR:
115  from InDetOverlay.PLR_OverlayConfig import PLR_OverlayCfg
116  acc.merge(PLR_OverlayCfg(configFlags))
117 
118  # HGTD
119  if configFlags.Detector.EnableHGTD:
120  from HGTD_Overlay.HGTD_OverlayConfig import HGTD_OverlayCfg
121  acc.merge(HGTD_OverlayCfg(configFlags))
122 
123  # Calorimeters
124  if configFlags.Detector.EnableLAr:
125  from LArDigitization.LArDigitizationConfig import LArOverlayCfg, LArSuperCellOverlayCfg
126  acc.merge(LArOverlayCfg(configFlags))
127  if configFlags.Detector.EnableL1Calo:
128  if configFlags.Overlay.DataOverlay:
129  pass # TODO: not supported for now
130  else:
131  from TrigT1CaloSim.TTL1OverlayConfig import LArTTL1OverlayCfg
132  acc.merge(LArTTL1OverlayCfg(configFlags))
133  if configFlags.GeoModel.Run >= LHCPeriod.Run3:
134  acc.merge(LArSuperCellOverlayCfg(configFlags))
135 
136  if configFlags.Detector.EnableTile:
137  from TileSimAlgs.TileDigitizationConfig import TileDigitizationCfg, TileOverlayTriggerDigitizationCfg
138  acc.merge(TileDigitizationCfg(configFlags))
139  if configFlags.Detector.EnableL1Calo:
140  if configFlags.Overlay.DataOverlay:
141  pass # TODO: not supported for now
142  else:
143  from TrigT1CaloSim.TTL1OverlayConfig import TileTTL1OverlayCfg
144  acc.merge(TileTTL1OverlayCfg(configFlags))
145  acc.merge(TileOverlayTriggerDigitizationCfg(configFlags))
146 
147  # Muon system
148  from MuonConfig.MuonOverlayConfig import MuonOverlayCfg
149  acc.merge(MuonOverlayCfg(configFlags))
150 
151  # Track overlay
152  if configFlags.Overlay.doTrackOverlay:
153  #need this to ensure that the ElementLinks to the PRDs are handled correctly (since the name is hardcoded in the converters)
154  from TrkEventCnvTools.TrkEventCnvToolsConfig import TrkEventCnvSuperToolCfg
155  acc.merge(TrkEventCnvSuperToolCfg(configFlags))
156  if configFlags.Detector.GeometryITk:
157  from OverlayCopyAlgs.OverlayCopyAlgsConfig import CopyITkTrackCollectionsCfg, CopyITkPixelClusterContainerCfg, CopyITkStripClusterContainerCfg
158  acc.merge(CopyITkTrackCollectionsCfg(configFlags))
159  acc.merge(CopyITkPixelClusterContainerCfg(configFlags))
160  acc.merge(CopyITkStripClusterContainerCfg(configFlags))
161  else:
162  from OverlayCopyAlgs.OverlayCopyAlgsConfig import CopyTrackCollectionsCfg,CopyPixelClusterContainerCfg, CopySCT_ClusterContainerCfg,\
163  CopyTRT_DriftCircleContainerCfg
164  acc.merge(CopyTrackCollectionsCfg(configFlags))
165  acc.merge(CopyPixelClusterContainerCfg(configFlags))
166  acc.merge(CopySCT_ClusterContainerCfg(configFlags))
167  acc.merge(CopyTRT_DriftCircleContainerCfg(configFlags))
168 
169  if configFlags.Overlay.DataOverlay:
170  # Copy background vertex collection
171  acc.merge(CopyBackgroundVertexCfg(configFlags))
172  # Override conditions for data overlay
173  if configFlags.Overlay.DataOverlayConditions:
174  executeFromFragment(configFlags.Overlay.DataOverlayConditions, configFlags, acc)
175 
176  # Add in-file MetaData
177  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
178  if configFlags.Output.doWriteRDO:
179  acc.merge(SetupMetaDataForStreamCfg(configFlags, "RDO"))
180  if configFlags.Output.doWriteRDO_SGNL:
181  acc.merge(SetupMetaDataForStreamCfg(configFlags, "RDO_SGNL"))
182 
183  return acc
python.OverlayCopyAlgsConfig.CopyBackgroundVertexCfg
def CopyBackgroundVertexCfg(flags)
Definition: OverlayCopyAlgsConfig.py:627
python.LArDigitizationConfig.LArOverlayCfg
def LArOverlayCfg(flags, **kwargs)
Definition: LArDigitizationConfig.py:281
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:342
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.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:126
TTL1OverlayConfig.TileTTL1OverlayCfg
def TileTTL1OverlayCfg(flags, name="TileTTL1Overlay", **kwargs)
Definition: TTL1OverlayConfig.py:51
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:310
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
python.OverlayMetadata.writeOverlayDigitizationMetadata
def writeOverlayDigitizationMetadata(flags, pileupDict)
Definition: OverlayMetadata.py:236
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.ParameterWriterConfig.writeParametersToMetaData
def writeParametersToMetaData(flags, folderName, parameters, beginRun, endRun)
Definition: ParameterWriterConfig.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
str
Definition: BTagTrackIpAccessor.cxx:11
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