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