8 from PyJobTransforms.CommonRunArgsToFlags
import commonRunArgsToFlags
11 from PyJobTransforms.TransformUtils
import processPreExec, processPreInclude, processPostExec, processPostInclude
14 from AthenaCommon
import JobProperties
15 JobProperties.jobPropertiesDisallowed =
True
19 from AthenaCommon.Logging
import logging
20 log = logging.getLogger(
'POOLtoHEPMC')
21 log.info(
'*** Starting POOLtoHEPMC translation ***')
24 log.info(
'*** Transformation run arguments ***')
25 log.info(
str(runArgs))
28 log.info(
'*** Setting-up configuration flags ***')
29 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
34 from AthenaConfiguration.Enums
import ProductionStep
35 flags.Common.ProductionStep = ProductionStep.Derivation
38 if hasattr(runArgs,
'inputEVNTFile'):
39 flags.Input.Files = runArgs.inputEVNTFile
40 McEventKey =
'GEN_EVENT'
41 elif hasattr(runArgs,
'inputHITSFile'):
42 flags.Input.Files = runArgs.inputHITSFile
43 McEventKey =
'TruthEvent'
44 elif hasattr(runArgs,
'inputRDOFile'):
45 flags.Input.Files = runArgs.inputRDOFile
46 McEventKey =
'TruthEvent'
48 log.error(
'Input EVNT, HITS, or RDO file required for POOLtoHEPMC')
51 if hasattr(runArgs,
'outputHEPMCFile'):
52 if '.tar' in runArgs.outputHEPMCFile
or '.tgz' in runArgs.outputHEPMCFile
or '.gz' in runArgs.outputHEPMCFile:
53 log.info(
'Output will be compressed')
54 if '.tar' in runArgs.outputHEPMCFile:
55 index = runArgs.outputHEPMCFile.find(
'.tar')
56 elif '.tgz' in runArgs.outputHEPMCFile:
57 index = runArgs.outputHEPMCFile.find(
'.tgz')
58 elif '.gz' in runArgs.outputHEPMCFile:
59 index = runArgs.outputHEPMCFile.find(
'.gz')
60 if hasattr(runArgs,
'extension')
and 'events' in runArgs.extension:
61 my_output_HepMCFile = runArgs.outputHEPMCFile[:index]+
'.events'
63 my_output_HepMCFile = runArgs.outputHEPMCFile[:index]+
'.hepmc'
65 log.info(
'Output will not be compressed')
66 my_output_HepMCFile = runArgs.outputHEPMCFile
68 log.error(
'OutputHEPMCFile required for POOLtoHEPMC')
69 raise RuntimeError(
'OutputHEPMCFile required for POOLtoHEPMC')
71 hepMCFormat =
'hepmc2'
72 if hasattr(runArgs,
'hepmcFormat'):
73 hepMCFormat = runArgs.hepmcFormat
76 if hasattr(runArgs,
'hepmcUnits'):
77 hepMCUnits = runArgs.hepmcUnits
80 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
96 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
100 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
104 from AthenaConfiguration.ComponentFactory
import CompFactory
108 cfg.addEventAlgo(CompFactory.FixHepMC(
"FixHepMC"))
111 cfg.addEventAlgo( CompFactory.WriteHepMC(
'WriteHepMC',
112 OutputFile = my_output_HepMCFile,
113 Format = hepMCFormat,
115 McEventKey = McEventKey ) )
130 if '.tgz' in runArgs.outputHEPMCFile
or '.tar.gz' in runArgs.outputHEPMCFile:
131 log.info(
'Compressing output into tar+gz format (this may take a moment)')
133 with tarfile.open(runArgs.outputHEPMCFile,
'w:gz')
as out_tar:
134 out_tar.add(my_output_HepMCFile)
136 log.debug(f
'Deleting original (uncompressed) file {my_output_HepMCFile}')
138 os.remove(my_output_HepMCFile)
139 elif '.gz' in runArgs.outputHEPMCFile:
140 log.info(
'Compressing output into gz format (this may take a moment)')
143 with open(my_output_HepMCFile,
'rb')
as in_file, gzip.open(runArgs.outputHEPMCFile,
'wb')
as out_file:
144 shutil.copyfileobj(in_file,out_file)
146 log.debug(f
'Deleting original (uncompressed) file {my_output_HepMCFile}')
148 os.remove(my_output_HepMCFile)
151 log.info(
"Ran POOLtoHEPMC in " +
str(time.time()-tic) +
" seconds")
153 sys.exit(
not sc.isSuccess())