10 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
11 from AthenaConfiguration.TestDefaults
import defaultTestFiles
12 from AthenaCommon.Logging
import log
14 flags = initConfigFlags()
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')
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')
43 args, _ = parser.parse_known_args()
45 flags.Input.Files = defaultTestFiles.HITS_RUN3
46 flags.Exec.MaxEvents = 3
48 flags.Tile.RunType = TileRunType.PHY
49 flags.Tile.doFit =
True
50 flags.Tile.doOpt2 =
True
53 flags.Beam.Type = BeamType.TestBeam
54 flags.TestBeam.Layout = f
'tb_Tile2000_2003_{args.layout}'
56 flags.Common.ProductionStep = ProductionStep.Digitization
57 flags.Digitization.PileUp =
False
58 flags.Digitization.DoCaloNoise =
not args.no_calo_noise
61 flags.Input.OverrideRunNumber =
True
62 flags.Input.ConditionsRunNumber = args.run_number
64 if args.conditions_tag:
65 flags.IOVDb.GlobalTag = args.conditions_tag
68 flags.fillFromArgs(parser=parser)
72 filePrefix = args.file_prefix
74 prefix =
'tiletb' if args.testbeam
else 'tile'
75 filePrefix = f
'{prefix}_{flags.Input.RunNumbers[0]}'
78 flags.Output.doWriteRDO =
True
79 outputRDO = f
'{filePrefix}.RDO.pool.root'
80 flags.Output.RDOFileName = outputRDO
83 log.info(
'Executing preExec: %s', args.preExec)
88 log.info(
'Final configuration flags follow:')
92 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
93 cfg = MainServicesCfg(flags)
95 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
96 cfg.merge(PoolReadCfg(flags))
98 from TileSimAlgs.TileDigitizationConfig
import TileDigitizationCfg
99 cfg.merge(TileDigitizationCfg(flags))
102 from TileSimAlgs.TileDigitizationConfig
import TileTriggerDigitizationCfg
103 cfg.merge(TileTriggerDigitizationCfg(flags))
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
111 outputAANtuple = f
'{filePrefix}.aant.root'
113 from TileTBRec.TileTBAANtupleConfig
import TileTBAANtupleCfg
114 cfg.merge(TileTBAANtupleCfg(flags, outputFile=outputAANtuple))
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 ""))
124 outputHitsNtuple = f
'{filePrefix}.ntup.root'
125 from TileRec.TileHitVecToNtupleConfig
import TileHitVecToNtupleCfg
126 cfg.merge(TileHitVecToNtupleCfg(flags, outputFile=outputHitsNtuple))
128 if args.digits_ntuple:
129 outputHitsNtuple = f
'{filePrefix}.ntup.root'
130 from TileRec.TileDigitsToNtupleConfig
import TileDigitsToNtupleCfg
131 cfg.merge(TileDigitsToNtupleCfg(flags, outputFile=outputHitsNtuple))
133 if args.channels_ntuple:
134 outputHitsNtuple = f
'{filePrefix}.ntup.root'
135 from TileRec.TileRawChannelToNtupleConfig
import TileRawChannelToNtupleCfg
136 cfg.merge(TileRawChannelToNtupleCfg(flags, outputFile=outputHitsNtuple))
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))
151 from IOVDbSvc.IOVDbSvcConfig
import addOverride
152 cfg.merge(addOverride(flags,
'/TILE/OFL02/CALIB/SFR', f
'{args.sfr_tag}'))
155 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
157 if args.alldigits_rdo:
158 outputItemList += [
'TileDigitsContainer#TileDigitsCnt']
159 cfg.merge(OutputStreamCfg(flags, streamName=
'RDO', ItemList=outputItemList))
162 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
163 cfg.merge(SetupMetaDataForStreamCfg(flags,
"RDO"))
167 log.info(
'Executing postExec: %s', args.postExec)
170 cfg.printConfig(withDetails=
True, summariseProps=
True, printDefaults=
True)
173 with open(
'TileDigiRec.pkl',
'wb')
as f:
177 sys.exit(0
if sc.isSuccess()
else 1)