ATLAS Offline Software
Loading...
Searching...
No Matches
TileDigiRec Namespace Reference

Functions

 main ()

Function Documentation

◆ main()

TileDigiRec.main ( )

Definition at line 8 of file TileDigiRec.py.

8def main():
9
10 from AthenaConfiguration.AllConfigFlags import initConfigFlags
11 from AthenaConfiguration.TestDefaults import defaultTestFiles
12 from AthenaCommon.Logging import log
13
14 flags = initConfigFlags()
15
16 parser = flags.getArgumentParser(description='Run Tile TB digitization.')
17 parser.add_argument('--preExec', help='Code to execute before locking configs')
18 parser.add_argument('--postExec', help='Code to execute after setup')
19
20 parser.add_argument('--run-number', default=None, help='Override run number for conditions')
21 parser.add_argument('--conditions-tag', default=None, help='Override conditions tag')
22 parser.add_argument('--layout', default='5B', choices=['2B1EB', '2B2EB', '3B', '5B'], help='Tile TB layout')
23 parser.add_argument('--no-calo-noise', action='store_true', help='Switch off Calo noise')
24 parser.add_argument('--aant-ntuple', action='store_true', help='Produce output Tile (TB) AANT ntuple (h1000/h2000)')
25 parser.add_argument('--hits-ntuple', action='store_true', help='Produce output ntuple with Tile hits')
26 parser.add_argument('--digits-ntuple', action='store_true', help='Produce output ntuple with Tile digits')
27 parser.add_argument('--channels-ntuple', action='store_true', help='Produce output ntuple with Tile raw channels')
28 parser.add_argument('--d3pd', action='store_true', help='Produce output Tile D3PD file')
29 parser.add_argument('--hits-d3pd', action='store_true', help='Save Tile hits into D3PD')
30 parser.add_argument('--hits-info-d3pd', action='store_true', help='Save Tile hits info into D3PD')
31 parser.add_argument('--digits-d3pd', action='store_true', help='Save Tile digits into D3PD')
32 parser.add_argument('--channels-d3pd', action='store_true', help='Save Tile raw channels into D3PD')
33 parser.add_argument('--cells-d3pd', action='store_true', help='Save Tile cells into D3PD')
34 parser.add_argument('--cells-info-d3pd', action='store_true', help='Save Tile cells into D3PD')
35 parser.add_argument('--mbts-d3pd', action='store_true', help='Save Tile MBTS into D3PD')
36 parser.add_argument('--rdo', action='store_true', help='Produce output Tile RDO file')
37 parser.add_argument('--file-prefix', default=None, help='Prefix to be used in names of output files')
38 parser.add_argument('--sfr-tag', default=None, help='Override Tile sampling fraction tag')
39 parser.add_argument('--testbeam', action='store_true', help='Digitize Test beam simulation')
40 parser.add_argument('--trigger', action='store_true', help='Simulate Tile trigger output')
41 parser.add_argument('--alldigits-rdo', action='store_true', help='Save all Tile digits into RDO')
42
43 args, _ = parser.parse_known_args()
44
45 flags.Input.Files = defaultTestFiles.HITS_RUN3
46 flags.Exec.MaxEvents = 3
47
48 flags.Tile.RunType = TileRunType.PHY
49 flags.Tile.doFit = True
50 flags.Tile.doOpt2 = True
51
52 if args.testbeam:
53 flags.Beam.Type = BeamType.TestBeam
54 flags.TestBeam.Layout = f'tb_Tile2000_2003_{args.layout}'
55
56 flags.Common.ProductionStep = ProductionStep.Digitization
57 flags.Digitization.PileUp = False
58 flags.Digitization.DoCaloNoise = not args.no_calo_noise
59
60 if args.run_number:
61 flags.Input.OverrideRunNumber = True
62 flags.Input.ConditionsRunNumber = args.run_number
63
64 if args.conditions_tag:
65 flags.IOVDb.GlobalTag = args.conditions_tag
66
67 # Override default configuration flags from command line arguments
68 flags.fillFromArgs(parser=parser)
69
70 filePrefix = ""
71 if args.file_prefix:
72 filePrefix = args.file_prefix
73 else:
74 prefix = 'tiletb' if args.testbeam else 'tile'
75 filePrefix = f'{prefix}_{flags.Input.RunNumbers[0]}'
76
77 if args.rdo:
78 flags.Output.doWriteRDO = True
79 outputRDO = f'{filePrefix}.RDO.pool.root'
80 flags.Output.RDOFileName = outputRDO
81
82 if args.preExec:
83 log.info('Executing preExec: %s', args.preExec)
84 exec(args.preExec)
85
86 flags.lock()
87
88 log.info('Final configuration flags follow:')
89 flags.dump()
90
91 # Construct our accumulator to run
92 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
93 cfg = MainServicesCfg(flags)
94
95 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
96 cfg.merge(PoolReadCfg(flags))
97
98 from TileSimAlgs.TileDigitizationConfig import TileDigitizationCfg
99 cfg.merge(TileDigitizationCfg(flags))
100
101 if args.trigger:
102 from TileSimAlgs.TileDigitizationConfig import TileTriggerDigitizationCfg
103 cfg.merge(TileTriggerDigitizationCfg(flags))
104
105 if any([args.cells_info_d3pd, args.cells_d3pd, args.mbts_d3pd]):
106 from TileRecUtils.TileCellMakerConfig import TileCellMakerCfg
107 cfg.merge(TileCellMakerCfg(flags))
108 cfg.getEventAlgo('TileCellMaker').CaloCellMakerToolNames['TileCellBuilder'].maskBadChannels = False
109
110 if args.aant_ntuple:
111 outputAANtuple = f'{filePrefix}.aant.root'
112 if args.testbeam:
113 from TileTBRec.TileTBAANtupleConfig import TileTBAANtupleCfg
114 cfg.merge(TileTBAANtupleCfg(flags, outputFile=outputAANtuple))
115 else:
116 from TileRec.TileAANtupleConfig import TileAANtupleCfg
117 cfg.merge(TileAANtupleCfg(flags, outputFile=outputAANtuple,
118 TileL2Cnt='TileL2Cnt' if args.trigger else "",
119 TileMuRcvContainer='TileMuRcvCnt' if args.trigger else "",
120 TileMuRcvDigitsContainer='MuRcvDigitsCnt' if args.trigger else "",
121 TileMuRcvRawChannelContainer='MuRcvRawChCnt' if args.trigger else ""))
122
123 if args.hits_ntuple:
124 outputHitsNtuple = f'{filePrefix}.ntup.root'
125 from TileRec.TileHitVecToNtupleConfig import TileHitVecToNtupleCfg
126 cfg.merge(TileHitVecToNtupleCfg(flags, outputFile=outputHitsNtuple))
127
128 if args.digits_ntuple:
129 outputHitsNtuple = f'{filePrefix}.ntup.root'
130 from TileRec.TileDigitsToNtupleConfig import TileDigitsToNtupleCfg
131 cfg.merge(TileDigitsToNtupleCfg(flags, outputFile=outputHitsNtuple))
132
133 if args.channels_ntuple:
134 outputHitsNtuple = f'{filePrefix}.ntup.root'
135 from TileRec.TileRawChannelToNtupleConfig import TileRawChannelToNtupleCfg
136 cfg.merge(TileRawChannelToNtupleCfg(flags, outputFile=outputHitsNtuple))
137
138 if args.d3pd:
139 outputD3PD = f'{filePrefix}.d3pd.root'
140 from TileSimEx.TileSimD3PDConfig import TileSimD3PDCfg
141 cfg.merge(TileSimD3PDCfg(flags, outputFile=outputD3PD,
142 saveHitsInfo=args.hits_info_d3pd,
143 saveHits=args.hits_d3pd,
144 saveDigits=args.digits_d3pd,
145 saveChannels=args.channels_d3pd,
146 saveCellsInfo=args.cells_info_d3pd,
147 saveCells=args.cells_d3pd,
148 saveMBTS=args.mbts_d3pd))
149
150 if args.sfr_tag:
151 from IOVDbSvc.IOVDbSvcConfig import addOverride
152 cfg.merge(addOverride(flags, '/TILE/OFL02/CALIB/SFR', f'{args.sfr_tag}'))
153
154 if args.rdo:
155 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
156 outputItemList = []
157 if args.alldigits_rdo:
158 outputItemList += ['TileDigitsContainer#TileDigitsCnt']
159 cfg.merge(OutputStreamCfg(flags, streamName='RDO', ItemList=outputItemList))
160
161 # Add in-file MetaData
162 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
163 cfg.merge(SetupMetaDataForStreamCfg(flags, "RDO"))
164
165 # =======>>> Any last things to do?
166 if args.postExec:
167 log.info('Executing postExec: %s', args.postExec)
168 exec(args.postExec)
169
170 cfg.printConfig(withDetails=True, summariseProps=True, printDefaults=True)
171
172 if args.config_only:
173 with open('TileDigiRec.pkl', 'wb') as f:
174 cfg.store(f)
175 else:
176 sc = cfg.run()
177 sys.exit(0 if sc.isSuccess() else 1)
178
179
int main()
Definition hello.cxx:18