ATLAS Offline Software
Loading...
Searching...
No Matches
TileSimD3PDConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3#
4
5from 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
13def 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 EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject
35 alg += EventInfoD3PDObject(1)
36
37 from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject
38 alg += TruthParticleD3PDObject(1)
39
40 if saveHitsInfo:
41 from CaloSysD3PDMaker.TileHitInfoD3PDObject import TileHitInfoD3PDObject
42 alg += TileHitInfoD3PDObject(0, sgkey='TileHitVec', prefix='Tile_')
43
44 if saveHits:
45 from CaloSysD3PDMaker.TileHitD3PDObject import TileHitD3PDObject
46 alg += TileHitD3PDObject(0, prefix='TileHit_')
47
48 if saveDigits:
49 from CaloSysD3PDMaker.TileDigitD3PDObject import TileDigitD3PDObject
50 alg += TileDigitD3PDObject(1, prefix='tiledigit_', sgkey='TileDigitsCnt')
51
52 if saveChannels:
53 from CaloSysD3PDMaker.TileRawChannelD3PDObject import TileRawChannelD3PDObject
54 alg += TileRawChannelD3PDObject(2, prefix='tileraw_', sgkey='TileRawChannelOpt2')
55
56 if saveCellsInfo:
57 from CaloSysD3PDMaker.CaloInfoD3PDObject import CaloInfoD3PDObject
58 alg += CaloInfoD3PDObject(0, sgkey='AllCalo', prefix='calo_')
59
60 if saveCells:
61 from CaloSysD3PDMaker.TileDetailsD3PDObject import TileDetailsD3PDObject
62 alg += TileDetailsD3PDObject(1, sgkey='AllCalo', prefix='tile_', Kinematics_WriteEtaPhi=True)
63
64 if saveMBTS:
65 from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject
66 alg += MBTSD3PDObject(1, prefix='mbts_', sgkey='MBTSContainer')
67
68 acc.addEventAlgo(alg.alg)
69
70 acc.setAppProperty('HistogramPersistency', 'ROOT')
71
72 return acc
73
74
75if __name__ == '__main__':
76
77 # Set the Athena configuration flags
78 from AthenaConfiguration.AllConfigFlags import initConfigFlags
79 flags = initConfigFlags()
80
81 # Setup logs
82 from AthenaCommon.Logging import log
83 from AthenaCommon.Constants import INFO
84 log.setLevel(INFO)
85
86 from AthenaConfiguration.TestDefaults import defaultTestFiles
87 flags.Input.Files = defaultTestFiles.HITS_RUN3
88 flags.Exec.MaxEvents = 3
89 flags.fillFromArgs()
90
91 log.info('FINAL CONFIG FLAGS SETTINGS FOLLOW')
92 flags.dump()
93
94 flags.lock()
95
96 # Initialize configuration object, add accumulator, merge, and run.
97 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
98 cfg = MainServicesCfg(flags)
99
100 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
101 cfg.merge(PoolReadCfg(flags))
102
103 cfg.merge(TileSimD3PDCfg(flags))
104
105 cfg.printConfig(withDetails=True, summariseProps=True)
106
107 cfg.store( open('TileSimOutputConfig.pkl', 'wb') )
108
109 sc = cfg.run()
110
111 import sys
112 # Success should be 0
113 sys.exit(0 if sc.isSuccess() else 1)
TileSimD3PDCfg(flags, outputFile=None, saveHitsInfo=True, saveHits=True, saveDigits=None, saveChannels=None, saveCellsInfo=None, saveCells=None, saveMBTS=None)