20 from AthenaCommon.Logging
import logging
21 log = logging.getLogger(
'POOLtoHEPMC')
22 log.info(
'*** Starting POOLtoHEPMC translation ***')
25 log.info(
'*** Transformation run arguments ***')
26 log.info(
str(runArgs))
29 log.info(
'*** Setting-up configuration flags ***')
30 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
35 from AthenaConfiguration.Enums
import ProductionStep
36 flags.Common.ProductionStep = ProductionStep.Derivation
39 if hasattr(runArgs,
'inputEVNTFile'):
40 flags.Input.Files = runArgs.inputEVNTFile
41 McEventKey =
'GEN_EVENT'
42 elif hasattr(runArgs,
'inputHITSFile'):
43 flags.Input.Files = runArgs.inputHITSFile
44 McEventKey =
'TruthEvent'
45 elif hasattr(runArgs,
'inputRDOFile'):
46 flags.Input.Files = runArgs.inputRDOFile
47 McEventKey =
'TruthEvent'
49 log.error(
'Input EVNT, HITS, or RDO file required for POOLtoHEPMC')
51 if hasattr(runArgs,
'outputHEPMCFile'):
52 if (
'.tar' in runArgs.outputHEPMCFile):
53 index = re.search(
".tar",runArgs.outputHEPMCFile).
span()[0]
54 my_output_HepMCFile = runArgs.outputHEPMCFile[:index]+
'.hepmc'
56 log.error(
'Output should be a tar.gz file but it is '+runArgs.outputHEPMCFile)
58 log.error(
'OutputHEPMCFile required for POOLtoHEPMC')
61 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
77 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
81 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
85 from AthenaConfiguration.ComponentFactory
import CompFactory
89 cfg.addEventAlgo(CompFactory.FixHepMC(
"FixHepMC"))
92 cfg.addEventAlgo( CompFactory.WriteHepMC(
'WriteHepMC',
93 OutputFile = my_output_HepMCFile,
94 McEventKey = McEventKey ) )
109 log.info(
'Compressing HEPMC output (may take a moment)')
111 with tarfile.open(runArgs.outputHEPMCFile,
'w:gz')
as out_tar:
112 out_tar.add( my_output_HepMCFile )
115 log.debug(
'Deleting original (uncompressed) file')
117 os.remove( my_output_HepMCFile )
120 log.info(
"Ran POOLtoHEPMC in " +
str(time.time()-tic) +
" seconds")
122 sys.exit(
not sc.isSuccess())