ATLAS Offline Software
TileSimD3PDConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 
7 '''
8 @file TileSimD3PDConfig.py
9 @brief Python configuration of Tile D3PD for simulaiton for the Run III
10 '''
11 
12 
13 def TileSimD3PDCfg(flags, outputFile=None, saveHitsInfo=True, saveHits=True, saveDigits=None,
14  saveChannels=None, saveCellsInfo=None, saveCells=None, saveMBTS=None):
15  ''' Function to configure Tile D3PD for simulaiton.'''
16 
17  acc = ComponentAccumulator()
18 
19  from TileGeoModel.TileGMConfig import TileGMCfg
20  acc.merge(TileGMCfg(flags))
21 
22  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
23  acc.merge( TileCablingSvcCfg(flags) )
24 
25  from xAODTruthCnv.xAODTruthCnvConfig import GEN_EVNT2xAODCfg
26  acc.merge(GEN_EVNT2xAODCfg(flags, name='GEN_EVNT2xAOD', AODContainerName='TruthEvent'))
27 
28  if not outputFile:
29  outputFile = f'tiletb_{flags.Input.RunNumbers[0]}.d3pd.root'
30 
31  from D3PDMakerCoreComps.MakerAlgConfig import MakerAlgConfig
32  alg = MakerAlgConfig(flags, acc, 'truth', outputFile, ExistDataHeader=False)
33 
34  from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject
35  alg += TruthParticleD3PDObject(1)
36 
37  if saveHitsInfo:
38  from CaloSysD3PDMaker.TileHitInfoD3PDObject import TileHitInfoD3PDObject
39  alg += TileHitInfoD3PDObject(0, sgkey='TileHitVec', prefix='Tile_')
40 
41  if saveHits:
42  from CaloSysD3PDMaker.TileHitD3PDObject import TileHitD3PDObject
43  alg += TileHitD3PDObject(0, prefix='TileHit_')
44 
45  if saveDigits:
46  from CaloSysD3PDMaker.TileDigitD3PDObject import TileDigitD3PDObject
47  alg += TileDigitD3PDObject(1, prefix='tiledigit_', sgkey='TileDigitsCnt')
48 
49  if saveChannels:
50  from CaloSysD3PDMaker.TileRawChannelD3PDObject import TileRawChannelD3PDObject
51  alg += TileRawChannelD3PDObject(2, prefix='tileraw_', sgkey='TileRawChannelOpt2')
52 
53  if saveCellsInfo:
54  from CaloSysD3PDMaker.CaloInfoD3PDObject import CaloInfoD3PDObject
55  alg += CaloInfoD3PDObject(0, sgkey='AllCalo', prefix='calo_')
56 
57  if saveCells:
58  from CaloSysD3PDMaker.TileDetailsD3PDObject import TileDetailsD3PDObject
59  alg += TileDetailsD3PDObject(1, sgkey='AllCalo', prefix='tile_', Kinematics_WriteEtaPhi=True)
60 
61  if saveMBTS:
62  from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject
63  alg += MBTSD3PDObject(1, prefix='mbts_', sgkey='MBTSContainer')
64 
65  acc.addEventAlgo(alg.alg)
66 
67  acc.setAppProperty('HistogramPersistency', 'ROOT')
68 
69  return acc
70 
71 
72 if __name__ == '__main__':
73 
74  # Set the Athena configuration flags
75  from AthenaConfiguration.AllConfigFlags import initConfigFlags
76  flags = initConfigFlags()
77 
78  # Setup logs
79  from AthenaCommon.Logging import log
80  from AthenaCommon.Constants import INFO
81  log.setLevel(INFO)
82 
83  from AthenaConfiguration.TestDefaults import defaultTestFiles
84  flags.Input.Files = defaultTestFiles.HITS_RUN3
85  flags.Exec.MaxEvents = 3
86  flags.fillFromArgs()
87 
88  log.info('FINAL CONFIG FLAGS SETTINGS FOLLOW')
89  flags.dump()
90 
91  flags.lock()
92 
93  # Initialize configuration object, add accumulator, merge, and run.
94  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
95  cfg = MainServicesCfg(flags)
96 
97  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
98  cfg.merge(PoolReadCfg(flags))
99 
100  cfg.merge(TileSimD3PDCfg(flags))
101 
102  cfg.printConfig(withDetails=True, summariseProps=True)
103 
104  cfg.store( open('TileSimOutputConfig.pkl', 'wb') )
105 
106  sc = cfg.run()
107 
108  import sys
109  # Success should be 0
110  sys.exit(0 if sc.isSuccess() else 1)
python.TileDigitD3PDObject.TileDigitD3PDObject
TileDigitD3PDObject
Definition: TileDigitD3PDObject.py:40
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
xAODTruthCnvConfig.GEN_EVNT2xAODCfg
def GEN_EVNT2xAODCfg(flags, name="GEN_EVNT2xAOD", **kwargs)
Definition: xAODTruthCnvConfig.py:5
python.TileDetailsD3PDObject.TileDetailsD3PDObject
def TileDetailsD3PDObject
Definition: TileDetailsD3PDObject.py:113
python.TileHitD3PDObject.TileHitD3PDObject
TileHitD3PDObject
Definition: TileHitD3PDObject.py:35
python.MakerAlgConfig.MakerAlgConfig
def MakerAlgConfig(flags, acc, stream, file, clevel=D3PDMakerFlags.CompressionLevel, autoflush=D3PDMakerFlags.AutoFlush, ExistDataHeader=True, **kw)
Definition: MakerAlgConfig.py:63
python.TileRawChannelD3PDObject.TileRawChannelD3PDObject
TileRawChannelD3PDObject
Definition: TileRawChannelD3PDObject.py:41
TileSimD3PDConfig.TileSimD3PDCfg
def TileSimD3PDCfg(flags, outputFile=None, saveHitsInfo=True, saveHits=True, saveDigits=None, saveChannels=None, saveCellsInfo=None, saveCells=None, saveMBTS=None)
Definition: TileSimD3PDConfig.py:13
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:310
Constants
some useful constants -------------------------------------------------—
python.TruthParticleD3PDObject.TruthParticleD3PDObject
TruthParticleD3PDObject
Definition: TruthParticleD3PDObject.py:21
python.CaloInfoD3PDObject.CaloInfoD3PDObject
CaloInfoD3PDObject
Definition: CaloInfoD3PDObject.py:10
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.MBTSD3PDObject.MBTSD3PDObject
MBTSD3PDObject
Definition: MBTSD3PDObject.py:17
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:71
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11
python.TileHitInfoD3PDObject.TileHitInfoD3PDObject
TileHitInfoD3PDObject
Definition: TileHitInfoD3PDObject.py:9
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7