ATLAS Offline Software
Loading...
Searching...
No Matches
EventGUIDLookup_tf.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3"""
4EventGUIDLookup_tf.py
5
6Given an ATLAS data type (RAW, ESD, AOD, DAOD_PHYS, DAOD_PHYSLITE, RDO,
7HITS, EVNT) and a text file listing (run number, event number) pairs
8-- one pair per line, space separated -- resolve, for every requested
9event actually present in the input file(s), the provenance GUID for
10that data type by decoding the "Stream references" POOL writes into the
11CollectionTree, exactly as
12 Database/EventIndex/EventIndexProducer/python/POOL2EI_Lib.py
13does when building the full Event Index -- except here only the
14requested (run,event,dataType) GUIDs are resolved and written out as
15plain text, one "runNumber eventNumber GUID" triplet per line.
16"""
17
18import sys
19
20from PyJobTransforms.trfLogger import msg
21from PyJobTransforms.transform import transform
22from PyJobTransforms.trfExe import athenaExecutor
23from PyJobTransforms.trfArgs import addAthenaArguments
24from PyJobTransforms.trfDecorators import stdTrfExceptionHandler, sigUsrStackTrace
25import PyJobTransforms.trfArgClasses as trfArgClasses
26
27
28SUPPORTED_TYPES = ('RAW', 'ESD', 'AOD', 'DAOD_PHYS', 'DAOD_PHYSLITE',
29 'RDO', 'HITS', 'EVNT')
30
31
32@stdTrfExceptionHandler
33@sigUsrStackTrace
34
36 parser.defineArgGroup('EventGUIDLookup', 'EventGUIDLookup Options')
37
38 parser.add_argument('--dataType',
39 type=trfArgClasses.argFactory(trfArgClasses.argString,
40 runarg=True),
41 required=True,
42 group='EventGUIDLookup',
43 help='Data type whose provenance GUID to resolve: '
44 'one of %s' % ', '.join(SUPPORTED_TYPES))
45
46 parser.add_argument('--inputFile', nargs='+', required=True,
47 type=trfArgClasses.argFactory(
48 trfArgClasses.argAthenaFile, io='input',
49 runarg=True, type='input'),
50 group='EventGUIDLookup',
51 help='Input file(s) to search (any POOL format, '
52 'or RAW if --dataType RAW)')
53
54 parser.add_argument('--inputDataType',
55 type=trfArgClasses.argFactory(trfArgClasses.argString,
56 runarg=True),
57 required=True,
58 group='EventGUIDLookup',
59 help='Actual data type of --inputFile (always a '
60 'POOL format): one of %s'
61 % ', '.join(SUPPORTED_TYPES))
62
63 parser.add_argument('--eventList', required=True,
64 type=trfArgClasses.argFactory(trfArgClasses.argString,
65 runarg=True),
66 group='EventGUIDLookup',
67 help='Text file, one "runNumber eventNumber" pair '
68 'per line (space separated)')
69
70 parser.add_argument('--outputTXTFile', required=True,
71 type=trfArgClasses.argFactory(trfArgClasses.argFile,
72 io='output', runarg=True,
73 type='eventGUIDOutput'),
74 group='EventGUIDLookup',
75 help='Output text file: "runNumber eventNumber GUID" '
76 'triplets, one per line')
77
79 executorSet = {athenaExecutor(
80 name='EventGUIDLookup',
81 skeletonCA='EventGUIDLookup.EventGUIDLookup_Skeleton',
82 substep='eglkp',
83 inData=set(),
84 outData=set())}
85
86 trf = transform(executor=executorSet,
87 description='Resolve provenance GUIDs, for a given '
88 'data type, of a list of (run,event) '
89 'pairs -- via the same Stream-references '
90 'mechanism used by POOL2EI_Lib.py.')
91 addAthenaArguments(trf.parser)
92 addEventGUIDLookupArgs(trf.parser)
93 return trf
94
95def main():
96 msg.info('This is %s', sys.argv[0])
97
98 trf = getTransform()
99 trf.parseCmdLineArgs(sys.argv[1:])
100
101 dataType = trf.argdict['dataType'].value
102 if dataType not in SUPPORTED_TYPES:
103 msg.error('Unsupported --dataType %r (must be one of: %s)',
104 dataType, ', '.join(SUPPORTED_TYPES))
105 sys.exit(1)
106
107 trf.execute()
108 trf.generateReport()
109
110 msg.info('%s stopped gracefully', sys.argv[0])
111 sys.exit(0)
112
113if __name__ == '__main__':
114 main()
STL class.
Main package for new style ATLAS job transforms.
Transform argument class definitions.
Transform execution functions.
Logging configuration for ATLAS job transforms.