6 @brief A basic script to output run number, event number of events in POOL file(s)
7 @author ATLAS Computing Activity
11 from AthenaPython.PyAthena
import Alg, py_svc, StatusCode
17 def __init__(self, name='PyEventInfo', **kwargs):
20 self.
isMC = kwargs.get(
'isMC',
False)
27 from collections
import defaultdict
28 self.
info = defaultdict(list)
29 return StatusCode.Success
34 key_name =
'run_number'
36 key_name =
'mc_channel_number'
37 for run, event
in zip(self.
info[key_name], self.
info[
'event_number'], strict=
True):
39 print(f
"{'' if self.prefix is None else self.prefix}{run:d} {event:d}",
41 return StatusCode.Success
47 if self.
sg.
contains(
'xAOD::EventInfo',
'EventInfo'):
48 ei = self.
sg.
retrieve(
'xAOD::EventInfo',
'EventInfo')
49 runNumber = ei.runNumber()
50 eventNumber = ei.eventNumber()
51 mcChannelNumber = ei.mcChannelNumber()
54 self.
info[
'mc_channel_number'].
append(mcChannelNumber)
58 return StatusCode.Success
61 return StatusCode.Failure
64 if __name__ ==
"__main__":
68 parser = argparse.ArgumentParser(description=
'Output run number (mc channel number in case of Monte Carlo),'
69 ' event number of events in POOL file(s)')
70 parser.add_argument(
'--inputFiles', required=
True,
71 help=
'Input POOL file(s) separated with commas')
72 parser.add_argument(
'--outputFile',
73 help=
'Output text file containing <run number> <event number> record(s) (one per line);'
74 ' if is -, write output on standard output (default: -)')
75 parser.add_argument(
'--prefix',
76 help=
'Prefix to print in front of each line of output')
77 args = parser.parse_args()
80 if args.outputFile
is None or args.outputFile ==
"-":
84 output =
open(args.outputFile,
'w', encoding=
"utf-8")
88 from AthenaCommon.Logging
import logging
89 log = logging.getLogger(
'EventInfo')
90 log.setLevel(logging.ERROR)
92 log.info(
'== Listing EventInfo for events from POOL files (the CA Configuration)')
95 log.info(
'== Setting ConfigFlags')
96 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
98 flags.Input.Files = args.inputFiles.split(
',')
102 log.info(
'== ConfigFlags Locked')
105 log.info(
'== Configuring Main Services')
106 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
110 log.info(
'== Configuring Input Reading')
111 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
115 cfg.addEventAlgo(PyEventInfo(
'EventInfoAlg', isMC=flags.Input.isMC, output=output,
117 sequenceName=
'AthAlgSeq')
119 for item
in flags.Input.TypedCollections:
120 ctype, cname = item.split(
'#')
121 if ctype.startswith(
'Trk')
or ctype.startswith(
'InDet'):
122 from TrkEventCnvTools.TrkEventCnvToolsConfig
import TrkEventCnvSuperToolCfg
124 if ctype.startswith(
'Calo')
or ctype.startswith(
'LAr'):
125 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
127 if ctype.startswith(
'Calo')
or ctype.startswith(
'Tile'):
128 from TileGeoModel.TileGMConfig
import TileGMCfg
130 if ctype.startswith(
'Muon'):
131 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
135 log.info(
'== Running...')
138 if opened: output.close()
141 sys.exit(
not sc.isSuccess())