5 """ This is the main skeleton for merging POOL files generically.
6 Currently it handles (D)AOD/(D)ESD files, but can be extended in the future.
7 That'll mostly entail configuring extra components needed for TP conversion (if any).
11 from AthenaCommon.Logging
import logging
12 log = logging.getLogger(
'MergePool_Skeleton')
13 log.info(
'****************** STARTING MergePool MERGING *****************')
16 log.info(
'**** Transformation run arguments')
17 log.info(
str(runArgs))
20 log.info(
'**** Setting up configuration flags')
22 from PyJobTransforms.CommonRunArgsToFlags
import commonRunArgsToFlags
23 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
25 flags.Exec.EventPrintoutInterval = 100
29 inputFile, outputFile =
None,
None
31 for attr
in dir(runArgs):
32 if attr.startswith(
'input')
and attr.endswith(
'File'):
33 inputFile = getattr(runArgs, attr)
34 elif attr.startswith(
'output')
and attr.endswith(
'File'):
35 outputFile = getattr(runArgs, attr)
37 if not inputFile
or not outputFile:
38 raise RuntimeError(
'Could NOT determine the input/output files!')
41 flags.Input.Files = inputFile
44 streamToMerge = flags.Input.ProcessingTags[0].removeprefix(
'Stream')
if flags.Input.ProcessingTags
else None
47 raise RuntimeError(
'Could NOT determine the stream type!')
51 if 'DAOD' in streamToMerge
or 'DESD' in streamToMerge:
52 flags.addFlag(f
'Output.{streamToMerge}FileName', outputFile)
53 flags.addFlag(f
'Output.doWrite{streamToMerge}',
True)
54 if 'DAOD' in streamToMerge:
55 flags.Output.doWriteDAOD =
True
57 setattr(flags.Output, f
'{streamToMerge}FileName', outputFile)
60 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
64 from PyJobTransforms.TransformUtils
import processPreExec, processPreInclude, processPostExec, processPostInclude
65 log.info(
'**** Processing preInclude')
69 log.info(
'**** Processing preExec')
73 log.info(
'**** Processing athenaopts')
77 log.info(
'**** Locking configuration flags')
81 log.info(
'**** Setting up job components')
84 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
88 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
94 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg, outputStreamName
95 cfg.merge(
OutputStreamCfg(flags, streamToMerge, takeItemsFromInput =
True, extendProvenanceRecord =
False))
97 Stream.ForceRead =
True
99 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
107 log.info(f
'**** Configured {streamToMerge} writing')
110 for item
in flags.Input.TypedCollections:
111 ctype, cname = item.split(
'#')
112 if ctype.startswith(
'Trk'):
113 from TrkEventCnvTools.TrkEventCnvToolsConfig
import TrkEventCnvSuperToolCfg
115 if ctype.startswith(
'Calo')
or ctype.startswith(
'LAr'):
116 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
118 if ctype.startswith(
'Calo')
or ctype.startswith(
'Tile'):
119 from TileGeoModel.TileGMConfig
import TileGMCfg
121 if ctype.startswith(
'Muon'):
122 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
126 if flags.PerfMon.doFastMonMT
or flags.PerfMon.doFullMonMT:
127 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
131 log.info(
'**** Processing postInclude')
135 log.info(
'**** Processing postExec')
141 sys.exit(
not sc.isSuccess())