ATLAS Offline Software
Loading...
Searching...
No Matches
TileSimD3PDConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2025 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 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
72if __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)
TileSimD3PDCfg(flags, outputFile=None, saveHitsInfo=True, saveHits=True, saveDigits=None, saveChannels=None, saveCellsInfo=None, saveCells=None, saveMBTS=None)