5 '''@file RunTileCalibRec.py
6 @brief Script to run Tile Reconstrcution/Monitoring for calibration runs
9 from TileRecEx
import TileInputFiles
10 from AthenaConfiguration.Enums
import Format
11 from TileConfiguration.TileConfigFlags
import TileRunType
17 RunTileCalibRec.py --run RUNNUMBER --evtMax 1 --pedestals --loglevel WARNING IOVDb.GlobalTag='CONDBR2-BLKPA-2018-13'
18 RunTileCalibRec.py --filesInput=FILE1,FILE2 Tile.RunType=TileRunType.LAS Tile.correctTime=True Exec.SkipEvents=100
19 RunTileCalibRec.py --run RUNNUMBER --cis --postExec='useTagFor("RUN2-HLT-UPD1-00", "/TILE/OFL02/TIME/CHANNELOFFSET/CIS");'
20 RunTileCalibRec.py --run RUNNUMBER --laser --postExec='useSqliteFor("tileSqlite.db", "/TILE");'
22 RunTileCalibRec.py --run RUNNUMBER @options.txt
24 where "options.txt" is text file which can contain all arguments and Athen configuration flags (one per line), e.g.:
29 --postExec=useSqliteAndTagFor("tileSqlite.db", "RUN2-HLT-UPD1-00", "/TILE/OFL02/TIME/CHANNELOFFSET/LAS");
33 At least one should provide the following arguments or Athena configuration flags (flags have higher priority):
34 Input file(s), e.g.: --run RUNNUMBER | --filesInput=FILE1,FILE2 | Input.Files="['FILE1','FILE2']"
35 Tile Run Type, e.g.: --cis | --laser | --pedestals | --physics | Tile.RunType=TileRunType.PHY
40 """ Function to return command line arguments parser for reconstuction of Tile calibration runs """
45 parser= argparse.ArgumentParser(parents=parserParents, add_help=
False, fromfile_prefix_chars=
'@', epilog=epiLog, formatter_class=argparse.RawTextHelpFormatter)
47 parser.add_argument(
'--preExec', help=
'Code to execute before locking configs')
48 parser.add_argument(
'--postExec', help=
'Code to execute after setup')
49 parser.add_argument(
'--printDetailedConfig', action=
'store_true', help=
'Print detailed Athena configuration')
50 parser.add_argument(
'--dumpArguments', action=
'store_true', help=
'Print arguments and exit')
51 parser.add_argument(
'--outputDirectory', default=
'.', help=
'Output directory for produced files')
53 parser.add_argument(
'--outputVersion', type=str, default=
'0', help=
'Version to be used in output files for ntuple and monitoring')
55 parser.add_argument(
'--calib', default=
False, help=
'Calculate calibration constants and store them in ROOT file', action=argparse.BooleanOptionalAction)
56 parser.add_argument(
'--tmdb', default=
None, help=
'Enable TMDB', action=argparse.BooleanOptionalAction)
57 parser.add_argument(
'--cells', help=
'Reconstruct Tile cells (default depends on if they are needed)', action=argparse.BooleanOptionalAction)
58 parser.add_argument(
'--clusters', default=
False, help=
'Reconstruct Tile clusters', action=argparse.BooleanOptionalAction)
59 parser.add_argument(
'--towers', default=
False, help=
'Reconstruct Tile towers', action=argparse.BooleanOptionalAction)
60 parser.add_argument(
'--muonfit', default=
False, help=
'Reconstruct Tile MuonFit', action=argparse.BooleanOptionalAction)
61 parser.add_argument(
'--muid', default=
False, help=
'Reconstruct Tile MuID', action=argparse.BooleanOptionalAction)
62 parser.add_argument(
'--pool', default=
False, help=
'Create output POOL file', action=argparse.BooleanOptionalAction)
63 parser.add_argument(
'--jivexml', default=
False, help=
'Create output Jive XML files for Atlantis', action=argparse.BooleanOptionalAction)
64 parser.add_argument(
'--d3pd', default=
False, help=
'Create output D3PD file', action=argparse.BooleanOptionalAction)
65 parser.add_argument(
'--special-demo-shape', dest=
'special_demo_shape', type=int, default=
None, help=
'Use special pulse shape for the Demonstrator')
68 ntuple = parser.add_argument_group(
'Tile h2000 ntuple')
69 ntuple.add_argument(
'--ntuple', default=
True, help=
'Create Tile h2000 ntuple', action=argparse.BooleanOptionalAction)
70 ntuple.add_argument(
'--reduced-ntuple', dest=
'reduced_ntuple', action=
'store_true', help=
'No Tile raw cahnnel container (including DSP) in h2000 ntuple')
71 ntuple.add_argument(
'--use-dsp-units', dest=
'use_dsp_units', action=
'store_true', help=
'Use DSP units in h2000 ntuple')
72 ntuple.add_argument(
'--calibrate', default=
None, help=
'Calibrate energy in h2000 ntuple', action=argparse.BooleanOptionalAction)
73 ntuple.add_argument(
'--offline-units', dest=
'offline_units', type=int, default=
None, help=
'Units in h2000 ntuple (see TileRawChannelUnit)')
76 mon = parser.add_argument_group(
'Tile monitoring')
77 mon.add_argument(
'--mon', default=
False, help=
'Run Tile monitoring', action=argparse.BooleanOptionalAction)
78 mon.add_argument(
'--postprocessing', default=
True, help=
'Run Tile monitoring postprocessing', action=argparse.BooleanOptionalAction)
79 mon.add_argument(
'--digits-mon', dest=
'digits_mon', default=
True, help=
'Run Tile digits monitoring', action=argparse.BooleanOptionalAction)
80 mon.add_argument(
'--channel-mon', dest=
'channel_mon', default=
True, help=
'Run Tile raw channles monitoring', action=argparse.BooleanOptionalAction)
81 mon.add_argument(
'--channel-time-mon', dest=
'channel_time_mon', default=
None, help=
'Run Tile raw channles time monitoring', action=argparse.BooleanOptionalAction)
82 mon.add_argument(
'--tmdb-mon', dest=
'tmdb_mon', default=
True, help=
'Run TMDB monitoring', action=argparse.BooleanOptionalAction)
83 mon.add_argument(
'--tmdb-digits-mon', dest=
'tmdb_digits_mon', default=
True, help=
'Run TMDB digits monitoring', action=argparse.BooleanOptionalAction)
84 mon.add_argument(
'--tmdb-channel-mon', dest=
'tmdb_channel_mon', default=
True, help=
'Run TMDB raw channels monitoring', action=argparse.BooleanOptionalAction)
85 mon.add_argument(
'--digi-noise-mon', dest=
'digi_noise_mon', help=
'Run Tile digi noise monitoring (default: True for pedestals run)', action=argparse.BooleanOptionalAction)
86 mon.add_argument(
'--cell-mon', dest=
'cell_mon', help=
'Run Tile Cell monitoring (default: True for physics run)', action=argparse.BooleanOptionalAction)
87 mon.add_argument(
'--dq-mon', dest=
'dq_mon', default=
True, help=
'Run Tile DQ monitoring for physics run', action=argparse.BooleanOptionalAction)
90 run_type_group = parser.add_argument_group(
'Tile Run Type')
91 run_type = run_type_group.add_mutually_exclusive_group()
92 run_type.add_argument(
'--cis', action=
'store_true', help=
'Tile CIS run type')
93 run_type.add_argument(
'--mono-cis', action=
'store_true', dest=
'mono_cis', help=
'Tile mono CIS run type')
94 run_type.add_argument(
'--gap-cis', action=
'store_true', dest=
'gap_cis', help=
'Tile gap CIS run type')
95 run_type.add_argument(
'--l1calo', action=
'store_true', help=
'Tile LVL1 Calo (CIS) run type')
96 run_type.add_argument(
'--laser', action=
'store_true', help=
'Tile laser run type')
97 run_type.add_argument(
'--gap-laser', action=
'store_true', dest=
'gap_laser', help=
'Tile gap laser run type')
98 run_type.add_argument(
'--pedestals', action=
'store_true', help=
'Tile pedestals run type')
99 run_type.add_argument(
'--physics', action=
'store_true', help=
'Tile physics run type')
102 method = parser.add_argument_group(
'Tile reconstuction method')
103 method.add_argument(
'--opt2', default=
True, help=
'Use Tile Opt2 reconstuction method', action=argparse.BooleanOptionalAction)
104 method.add_argument(
'--opt-atlas', dest=
'opt_atlas', default=
True, help=
'Use Tile OptATLAS reconstuction method', action=argparse.BooleanOptionalAction)
105 method.add_argument(
'--fit', default=
True, help=
'Use Tile Fit reconstuction method', action=argparse.BooleanOptionalAction)
106 method.add_argument(
'--of1', default=
False, help=
'Use Tile OF1 reconstuction method', action=argparse.BooleanOptionalAction)
107 method.add_argument(
'--mf', default=
False, help=
'Use Tile MF reconstuction method', action=argparse.BooleanOptionalAction)
109 run_period_group = parser.add_argument_group(
'LHC Run period')
110 run_period = run_period_group.add_mutually_exclusive_group()
111 run_period.add_argument(
'--run2', action=
'store_true', help=
'LHC Run2 period')
112 run_period.add_argument(
'--run3', action=
'store_true', help=
'LHC Run3 period')
114 parser.add_argument(
'--upd4', action=
'store_true', help=
'Use UPD4 conditions')
120 ''' Function to override tag for DB folder (it should be used in --postExec) '''
121 fullTag = f
'{folder.title().replace("/","")}-{tag}' if folder.startswith(
'/TILE')
and not tag.startswith(
'Tile')
else tag
122 from AthenaCommon.Logging
import log
123 log.info(f
'Use tag {fullTag} for folder: {folder}')
124 cfg.getService(
'IOVDbSvc').overrideTags += [f
'<prefix>{folder}</prefix> <tag>{fullTag}</tag>']
127 ''' Function to use Sqlite file for DB folder (it should be used in --postExec) '''
128 iovDbSvc = cfg.getService(
'IOVDbSvc')
129 from AthenaCommon.Logging
import log
130 log.info(f
'Use Sqlite file {sqliteFile} for folder: {folder}')
131 iovDbSvc.overrideTags += [f
'<prefix>{folder}</prefix> <db>sqlite://;schema={sqliteFile};dbname={iovDbSvc.DBInstance}</db>']
134 ''' Function to use tag from Sqlite file for DB folder (it should be used in --postExec) '''
138 if __name__==
'__main__':
141 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
145 from AthenaCommon.Logging
import log
146 from AthenaCommon
import Constants
147 log.setLevel(Constants.INFO)
150 args, _ = parser.parse_known_args()
153 flags.Input.Files = []
154 flags.Tile.RunType = TileRunType.UNDEFINED
157 flags.fillFromArgs(parser=parser)
162 if not flags.Input.Files
and args.run:
164 if not flags.Input.Files:
165 log.error(
'Input files must be provided! For example: --filesInput=file1,file2,... or --run RUNNUMBER')
169 if flags.Tile.RunType
is TileRunType.UNDEFINED:
171 flags.Tile.RunType = TileRunType.CIS
173 flags.Tile.RunType = TileRunType.MONOCIS
175 flags.Tile.RunType = TileRunType.GAPCIS
177 flags.Tile.RunType = TileRunType.L1CALO
179 flags.Tile.RunType = TileRunType.LAS
181 flags.Tile.RunType = TileRunType.GAPLAS
183 flags.Tile.RunType = TileRunType.PED
185 flags.Tile.RunType = TileRunType.PHY
187 log.error(
'The Tile Run Type must be provided! For example: --laser or --cis, ..., or Tile.RunType=TileRunType.PED')
190 if flags.Tile.RunType
in [TileRunType.PED, TileRunType.LAS, TileRunType.BILAS, TileRunType.MONOCIS]:
191 flags.Exec.SkipEvents = 1
192 elif flags.Tile.RunType
is TileRunType.CIS:
193 flags.Exec.SkipEvents = 192
194 elif flags.Tile.RunType
is TileRunType.L1CALO:
195 flags.Exec.SkipEvents = 3
198 flags.Tile.doOpt2 = args.opt2
199 flags.Tile.doOptATLAS = args.opt_atlas
200 flags.Tile.doFit = args.fit
201 flags.Tile.doOF1 = args.of1
202 flags.Tile.doMF = args.mf
204 flags.Tile.BestPhaseFromCOOL =
True
205 flags.Tile.NoiseFilter = 0
206 flags.Tile.doOverflowFit =
False
207 flags.Tile.correctAmplitude =
False
208 flags.Tile.correctTime = flags.Tile.RunType
in [TileRunType.PHY, TileRunType.GAPLAS, TileRunType.GAPCIS]
209 flags.Tile.OfcFromCOOL = flags.Tile.RunType
in [TileRunType.PHY, TileRunType.PED]
211 runNumber = flags.Input.RunNumbers[0]
214 if not any([args.run2, args.run3]):
215 if not flags.Input.isMC:
216 if runNumber >= 411938:
218 elif any([args.year
and args.year > 2014, runNumber > 232000, flags.Input.ProjectName.startswith(
"data15_")]):
222 if flags.Input.Format
is Format.BS:
224 condDbTag =
'CONDBR2-BLKPA-2024-04' if args.upd4
else 'CONDBR2-ES1PA-2024-05'
225 detDescrVersion =
'ATLAS-R3S-2021-03-01-00'
227 condDbTag =
'CONDBR2-BLKPA-2018-16' if args.upd4
else 'CONDBR2-ES1PA-2018-05'
228 detDescrVersion =
'ATLAS-R2-2016-01-00-01'
230 condDbTag =
'COMCOND-BLKPA-RUN1-06' if (args.upd4
and runNumber > 141066)
else 'COMCOND-ES1PA-006-05'
231 detDescrVersion =
'ATLAS-R1-2012-03-02-00'
233 flags.IOVDb.GlobalTag = condDbTag
234 flags.GeoModel.AtlasVersion = detDescrVersion
237 flags.DQ.useTrigger =
False
238 flags.DQ.enableLumiAccess =
False
239 if not flags.Output.HISTFileName:
240 flags.Output.HISTFileName = f
'{args.outputDirectory}/tilemon_{runNumber}_{args.outputVersion}.root'
242 if args.tmdb
is None:
243 args.tmdb =
not flags.Input.isMC
245 if args.channel_time_mon
is None:
246 args.channel_time_mon = flags.Tile.RunType
in [TileRunType.GAPLAS, TileRunType.GAPCIS]
and (args.run2
or args.run3)
and flags.Tile.doFit
249 flags.Output.ESDFileName = f
'tile_{runNumber}_{args.outputVersion}.pool.root'
252 flags.Output.doJiveXML =
True
255 flags.fillFromArgs(parser=parser)
257 if args.dumpArguments:
258 log.info(
'=====>>> FINAL ARGUMENTS FOLLOW:')
259 print(
'{:40} : {}'.
format(
'Argument Name',
'Value'))
260 for a,v
in (vars(args)).
items():
261 print(f
'{a:40} : {v}')
264 flags.needFlagsCategory(
'Tile')
267 log.info(
'Executing preExec: %s', args.preExec)
272 log.info(
'=====>>> FINAL CONFIG FLAGS SETTINGS FOLLOW:')
273 flags.dump(pattern=
'Tile.*|Input.*|Exec.*|IOVDb.[D|G].*', evaluate=
True)
275 biGainRun = flags.Tile.RunType.isBiGain()
278 cellsAvailable = (flags.Input.Format
is Format.POOL
and 'AllCalo' in flags.Input.Collections)
279 if args.cells
is None:
280 args.cells =
not cellsAvailable
and (args.towers
or args.clusters
or args.muid
or args.muonfit
281 or args.jivexml
or args.d3pd
or args.pool
282 or flags.Tile.RunType
is TileRunType.PHY)
283 cellsAvailable = cellsAvailable
or args.cells
285 if args.cell_mon
is None:
286 args.cell_mon = cellsAvailable
and flags.Tile.RunType
is TileRunType.PHY
288 if args.digi_noise_mon
is None:
289 args.digi_noise_mon = flags.Tile.RunType
is TileRunType.PED
292 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
296 if flags.Input.Format
is Format.BS:
298 from TileByteStream.TileByteStreamConfig
import TileRawDataReadingCfg
300 readMuRcvDigits=any([args.tmdb_digits_mon, args.tmdb_mon, args.ntuple]),
301 readMuRcvRawCh=any([args.tmdb_channel_mon, args.tmdb_mon, args.ntuple])) )
305 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
309 if flags.Tile.readDigits:
310 from TileRecUtils.TileRawChannelMakerConfig
import TileRawChannelMakerCfg
312 rawChMaker = cfg.getEventAlgo(
'TileRChMaker')
313 if args.threads
and (args.threads > 1):
314 rawChMaker.Cardinality = args.threads
315 for builderTool
in rawChMaker.TileRawChannelBuilder:
316 builderTool.UseDSPCorrection =
not biGainRun
320 rawChannelContainer = flags.Tile.RawChannelContainer
321 if flags.Tile.doOptATLAS
and any([flags.Tile.doFit, flags.Tile.doOpt2]):
322 rawChannelContainer =
'TileRawChannelOpt2' if flags.Tile.doOpt2
else 'TileRawChannelFit'
323 from TileRecUtils.TileCellMakerConfig
import TileCellMakerCfg
327 cfg.getEventAlgo(
"TileCellMakerHG").CaloCellMakerToolNames[
"TileCellBuilder"].TileRawChannelContainer = rawChannelContainer
328 cfg.getEventAlgo(
"TileCellMakerLG").CaloCellMakerToolNames[
"TileCellBuilder"].TileRawChannelContainer = rawChannelContainer
331 cfg.getEventAlgo(
"TileCellMaker").CaloCellMakerToolNames[
"TileCellBuilder"].TileRawChannelContainer = rawChannelContainer
335 from TileMonitoring.TileTopoClusterConfig
import TileTopoClusterCfg
340 from TileCosmicAlgs.TileMuonFitterConfig
import TileMuonFitterCfg
345 from TileMuId.TileMuIdConfig
import TileLookForMuAlgCfg
349 if flags.Output.doWriteESD:
350 from TileRecAlgs.TileRawChannelToHitConfig
import TileRawChannelToHitCfg
355 ntupleFile = f
'{args.outputDirectory}/tile_{runNumber}_{args.outputVersion}.aan.root'
356 from TileRec.TileAANtupleConfig
import TileAANtupleCfg
357 cfg.merge(
TileAANtupleCfg(flags, outputFile=ntupleFile, UseDspUnits=args.use_dsp_units) )
358 tileNtuple = cfg.getEventAlgo(
'TileNtuple')
360 tileNtuple.CompressionSettings = 204
361 tileNtuple.SkipEvents = 4
if flags.Tile.RunType
is TileRunType.LAS
else 0
362 tileNtuple.TileRawChannelContainerOpt =
"TileRawChannelOpt2" if flags.Tile.doOpt2
else ""
363 tileNtuple.TileRawChannelContainerDsp =
"" if biGainRun
else "TileRawChannelCnt"
364 if args.reduced_ntuple:
365 tileNtuple.Reduced =
True
366 tileNtuple.TileRawChannelContainer =
""
367 if args.offline_units:
368 tileNtuple.OfflineUnits = args.offline_units
369 tileNtuple.CalibrateEnergy =
True
370 elif args.calibrate
is not None:
371 tileNtuple.CalibrateEnergy = args.calibrate
372 if flags.Tile.RunType
in [TileRunType.GAPLAS, TileRunType.GAPCIS]:
373 tileNtuple.TileDigitsContainerFlt =
"TileDigitsCnt"
374 tileNtuple.TileDigitsContainer =
""
380 for tool
in alg.GMTools:
381 tool.Histograms = [h.replace(
'OFFLINE',
'ONLINE')
for h
in tool.Histograms]
384 from TileMonitoring.TileDigitsMonitorAlgorithm
import TileDigitsMonitoringConfig
389 from TileMonitoring.TileRawChannelMonitorAlgorithm
import TileRawChannelMonitoringConfig
393 if args.channel_time_mon:
394 from TileMonitoring.TileRawChannelTimeMonitorAlgorithm
import TileRawChannelTimeMonitoringConfig
398 if args.tmdb_digits_mon:
399 from TileMonitoring.TileTMDBDigitsMonitorAlgorithm
import TileTMDBDigitsMonitoringConfig
403 if args.tmdb_channel_mon:
404 from TileMonitoring.TileTMDBRawChannelMonitorAlgorithm
import TileTMDBRawChannelMonitoringConfig
409 from TileMonitoring.TileTMDBMonitorAlgorithm
import TileTMDBMonitoringConfig
413 if args.dq_mon
and flags.Tile.RunType
is TileRunType.PHY
and flags.Tile.readDigits:
414 from TileMonitoring.TileDQFragMonitorAlgorithm
import TileDQFragMonitoringConfig
419 from TileMonitoring.TileCellMonitorAlgorithm
import TileCellMonitoringConfig
424 EnergyThresholdForTime=150.0*MeV))
427 if args.digi_noise_mon:
428 from TileMonitoring.TileDigiNoiseMonitorAlgorithm
import TileDigiNoiseMonitoringConfig
429 triggerTypes = [0x82]
if flags.Tile.RunType
is TileRunType.PHY
else []
433 if any([args.tmdb_digits_mon, args.tmdb_mon, args.channel_mon, args.digits_mon])
and args.postprocessing:
434 from AthenaCommon.Utils.unixtools
import find_datafile
437 if any([args.tmdb_digits_mon, args.tmdb_mon]):
438 configurations += [os.path.join(dataPath,
'TileTMDBPostProc.yaml')]
440 configurations += [os.path.join(dataPath,
'TileDigitsPostProc.yaml')]
442 if flags.Tile.RunType
in [TileRunType.CIS]:
443 configurations += [os.path.join(dataPath,
'TileRawChanCisPostProc.yaml')]
445 configurations += [os.path.join(dataPath,
'TileRawChanPostProc.yaml')]
446 if flags.Tile.RunType
is TileRunType.LAS:
447 configurations += [os.path.join(dataPath,
'TileRawChanLasPostProc.yaml')]
449 configurations += [os.path.join(dataPath,
'TileRawChanDspPostProc.yaml')]
451 from DataQualityUtils.DQPostProcessingAlg
import DQPostProcessingAlg
454 if hasattr(self,
'OutputLevel'):
456 return super(TileMonPostProcessingAlg, self).
initialize()
459 ppa.OutputLevel = flags.Exec.OutputLevel
460 ppa.ExtraInputs = {(
'xAOD::EventInfo' ,
'StoreGateSvc+EventInfo' )}
461 ppa.Interval = 1000000
462 ppa.ConfigFiles = configurations
464 ppa.FileKey = f
'/{flags.DQ.FileKey}/'
466 cfg.addEventAlgo(ppa, sequenceName=
'AthEndSeq')
471 if flags.Tile.RunType
is TileRunType.LAS:
472 laserCalibFile = f
'tileCalibLAS_{runNumber}_{args.outputVersion}.root'
473 from TileCalibAlgs.TileLaserCalibAlgConfig
import TileLaserCalibAlgCfg
476 elif flags.Tile.RunType
is TileRunType.L1CALO:
477 from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig
import LVL1CaloRun2ReadBSCfg
480 l1caloCalibFile = f
'tileCalibL1Calo_{runNumber}_{args.outputVersion}.root'
481 from TileCalibAlgs.TileTriggerCalibAlgConfig
import TileTriggerCalibAlgCfg
484 elif flags.Tile.RunType
is TileRunType.CIS:
485 cisCalibFile = f
'tileCalibCIS_{runNumber}_{args.outputVersion}.root'
486 from TileCalibAlgs.TileCisCalibAlgConfig
import TileCisCalibAlgCfg
489 elif flags.Tile.RunType
in [TileRunType.PHY, TileRunType.PED]:
490 defaultVersions = [
'0',
'Ped.0',
'Ped']
492 fileVersion = f
'_{flags.Tile.NoiseFilter}' if flags.Tile.NoiseFilter > 0
else ""
493 if args.outputVersion
not in defaultVersions:
494 fileVersion = f
'_{args.outputVersion}_tnf{flags.Tile.NoiseFilter}'
496 from TileCalibAlgs.TileRawChNoiseCalibAlgConfig
import TileRawChNoiseCalibAlgCfg
498 rawChanNoiseCalibAlg = cfg.getEventAlgo(
'TileRawChNoiseCalibAlg')
499 rawChanNoiseCalibAlg.FileNamePrefix = f
'{args.outputDirectory}/RawCh_NoiseCalib{fileVersion}'
501 rawChanNoiseCalibAlg.doFit =
False
502 rawChanNoiseCalibAlg.doFixed =
False
503 rawChanNoiseCalibAlg.doOpt =
False
504 rawChanNoiseCalibAlg.doDsp =
True
505 rawChanNoiseCalibAlg.UseforCells = 3
507 rawChanNoiseCalibAlg.doDsp = (flags.Tile.RunType
is TileRunType.PHY)
508 rawChanNoiseCalibAlg.UseforCells = 1
511 if args.outputVersion
in defaultVersions:
512 from TileCalibAlgs.TileDigiNoiseCalibAlgConfig
import TileDigiNoiseCalibAlgCfg
514 digiNoiseCalibAlg = cfg.getEventAlgo(
'TileDigiNoiseCalibAlg')
515 digiNoiseCalibAlg.DoAvgCorr =
False
516 digiNoiseCalibAlg.FileNamePrefix = f
'{args.outputDirectory}/Digi_NoiseCalib{fileVersion}'
520 if flags.Output.doJiveXML:
521 from TileMonitoring.TileJiveXMLConfig
import TileAlgoJiveXMLCfg
527 d3pdFile = f
'{args.outputDirectory}/tile_{runNumber}_{args.outputVersion}.aan.root'
528 from D3PDMakerConfig.D3PDMakerFlags
import D3PDMakerFlags
529 D3PDMakerFlags.DoTruth = flags.Input.isMC
530 from TileRecEx.TileD3PDConfig
import TileD3PDCfg
533 saveCells=cellsAvailable,
534 saveMBTS=cellsAvailable,
537 saveMuonFitter=args.muonfit,
538 saveClusters=args.clusters,
539 saveEventInfo=(flags.Tile.RunType
is TileRunType.PHY)) )
542 if flags.Output.doWriteESD:
543 outputItemList = [
"TileHitVector#*"]
544 outputItemList += [
"TileDigitsContainer#*"]
545 outputItemList += [
"TileBeamElemContainer#*"]
546 outputItemList += [
"TileRawChannelContainer#*"]
547 outputItemList += [
"TileCellContainer#*"]
548 outputItemList += [
"CaloCellContainer#*"]
549 outputItemList += [
"TileMuContainer#*" ]
550 outputItemList += [
"TileL2Container#*" ]
551 outputItemList += [
"TileCosmicMuonContainer#*" ]
553 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
557 if args.special_demo_shape
and args.special_demo_shape > 0
and args.special_demo_shape <= 10:
558 tileInfoLoader = cfg.getService(
'TileInfoLoader')
559 if flags.RunType.getCommonType()
is TileRunType.LAS:
561 args.special_demo_shape = -1
562 elif flags.RunType.getCommonType()
is TileRunType.CIS:
564 args.special_demo_shape = 3
565 tileInfoLoader.filename_lo_las =
"pulselo_cis_demo_100.dat"
566 tileInfoLoader.filename_hi_las =
"pulsehi_cis_demo_100.dat"
567 tileInfoLoader.filename_lo_las_der =
"dpulselo_cis_demo_100.dat"
568 tileInfoLoader.filename_hi_las_der =
"dpulsehi_cis_demo_100.dat"
569 tileInfoLoader.filename_lo_phys =
"pulselo_cis_demo_5p2.dat"
570 tileInfoLoader.filename_hi_phys =
"pulsehi_cis_demo_5p2.dat"
571 tileInfoLoader.filename_lo_phys_der =
"dpulselo_cis_demo_5p2.dat"
572 tileInfoLoader.filename_hi_phys_der =
"dpulsehi_cis_demo_5p2.dat"
575 args.special_demo_shape = 2
576 tileInfoLoader.filename_lo_las =
"pulselo_phys_demo.dat"
577 tileInfoLoader.filename_hi_las =
"pulsehi_phys_demo.dat"
578 tileInfoLoader.filename_lo_las_der =
"dpulselo_phys_demo.dat"
579 tileInfoLoader.filename_hi_las_der =
"dpulsehi_phys_demo.dat"
582 if not args.special_demo_shape:
583 args.special_demo_shape = 9
585 if args.special_demo_shape:
587 fitFilter = cfg.getEventAlgo(
'TileRChMaker').TileRawChannelBuilder[
'TileRawChannelBuilderFitFilter']
588 fitFilter.SpecialDemoShape = args.special_demo_shape
590 if flags.Input.Format
is Format.BS:
591 cfg.getCondAlgo(
"TileHid2RESrcIDCondAlg").RODStatusProxy =
None
595 log.info(
'Executing postExec: %s', args.postExec)
598 cfg.printConfig(withDetails=args.printDetailedConfig,
599 summariseProps=args.printDetailedConfig,
600 printDefaults=args.printDetailedConfig)
603 cfg.store(
open(
'RunTileCalibRec.pkl',
'wb'))
607 sys.exit(0
if sc.isSuccess()
else 1)