9 @brief Script to print out truth events for HepMC (HITS, RDO) or TruthEvent (AOD)
12 if __name__==
'__main__':
14 from argparse
import RawTextHelpFormatter
15 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
17 parser = flags.getArgumentParser(description=
'Run ASCII dumper of Truth on files with either HepMC or TruthEvent format.\
18 User MUST provide file(s) to read (--filesInput).\
19 If file name has EVNT, HITS, RDO or AOD, then working with the different formats is automatic. Otherwise, use --doHepMC to select HepMC.\
20 Also, use --doPtEtaPhi for pt/eta/phi printout, and --skipEvents, --evtMax to select events.')
21 parser.add_argument(
'--doHepMC', action=
'store_true',
22 help=
'Run HepMCReader, otherwise run xAODTruthReader (default)')
23 parser.add_argument(
'--doPUEventPrintout', action=
'store_true',
24 help=
'Print out PU event for xAODTruthReader')
25 parser.add_argument(
'--doPtEtaPhi', action=
'store_true',
26 help=
'Print out particle 4-mom as pt,eta,phi. Default is px,py,pz.')
27 parser.add_argument(
'--HepMCContainerKey', default=
"",
28 help=
'HepMC container key. If not given, set to GEN_EVENT for EVNT file. Should be TruthEvent for HITS or RDO file, which is set automatically if HITS or RDO is in file name.')
29 parser.set_defaults(threads=1)
30 args, _ = parser.parse_known_args()
33 from AthenaCommon.Logging
import log
37 if len(args.filesInput):
38 if (
"EVNT" in args.filesInput[0]
or "RDO" in args.filesInput[0]
or "HITS" in args.filesInput[0])
and "AOD" not in args.filesInput[0]:
40 log.info(
'Found EVNT, HITS or RDO in file: ' + args.filesInput[0] +
'. So turning on HepMC dumping')
44 if len(args.HepMCContainerKey):
45 flags.addFlag(
"HepMCContainerKey", args.HepMCContainerKey)
48 if len(args.filesInput):
49 if "RDO" in args.filesInput[0]
or "HITS" in args.filesInput[0]:
50 flags.addFlag(
"HepMCContainerKey",
"TruthEvent")
51 elif "EVNT" in args.filesInput[0]:
52 flags.addFlag(
"HepMCContainerKey",
"GEN_EVENT")
54 flags.Input.Files = [
'evnt.pool.root']
56 flags.addFlag(
"xAODTruthEventContainerKey",
"TruthEvents")
57 flags.addFlag(
"xAODTruthPileupEventContainerKey",
"TruthPileupEvents")
58 if args.doPUEventPrintout:
59 flags.addFlag(
"DoPUEventPrintout",
True)
61 flags.addFlag(
"DoPUEventPrintout",
False)
64 flags.Input.Files = [
'truth.pool.root']
66 flags.addFlag(
"Do4momPtEtaPhi",
True)
68 flags.addFlag(
"Do4momPtEtaPhi",
False)
70 flags.fillFromArgs(parser=parser)
73 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
74 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
78 from xAODTruthCnv.xAODTruthCnvConfig
import HepMCTruthReaderCfg
81 from xAODTruthCnv.xAODTruthCnvConfig
import xAODTruthReaderCfg
84 acc.store(
open(
"HepMCTruthReader.pkl",
"wb"))
86 from AthenaConfiguration.Utils
import setupLoggingLevels
89 statusCode = acc.run()
90 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"