ATLAS Offline Software
Loading...
Searching...
No Matches
Trig_reco_tf.py
Go to the documentation of this file.
1#! /usr/bin/env python
2
3# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4
5
8
9import sys
10import time
11
12from PyJobTransforms.transform import transform
13from PyJobTransforms.trfExe import athenaExecutor, DQMergeExecutor
14from PyJobTransforms.trfArgs import addAthenaArguments, addDetectorArguments
15from PyJobTransforms.trfDecorators import stdTrfExceptionHandler, sigUsrStackTrace
16from RecJobTransforms.recTransformUtils import addCommonRecTrfArgs, addStandardRecoFiles
17
18import PyJobTransforms.trfArgClasses as trfArgClasses
19
20from TrigTransform.trigRecoExe import trigRecoExecutor
21from TrigTransform.trigCostExe import trigCostExecutor
22from TrigTransform.trigRateExe import trigRateExecutor
23
24# Setup core logging here
25from PyJobTransforms.trfLogger import msg
26msg.info('logging set in %s', sys.argv[0])
27
28@stdTrfExceptionHandler
29@sigUsrStackTrace
30def main():
31
32 msg.info('This is %s', sys.argv[0])
33
34 trf = getTransform()
35 trf.parseCmdLineArgs(sys.argv[1:])
36 trf.execute()
37 trf.generateReport()
38
39 msg.info("%s stopped at %s, trf exit code %d", sys.argv[0], time.asctime(), trf.exitCode)
40 sys.exit(trf.exitCode)
41
43 executorSet = set()
44
45 # BSRDOtoRAW is the HLT step of the trigger transform
46 executorSet.add(trigRecoExecutor(name = 'BSRDOtoRAW',
47 skeletonCA = 'TriggerJobOpts.runHLT',
48 substep = 'b2r', tryDropAndReload = False,
49 inData = ['BS_RDO', 'RDO'], outData = ['BS', 'DRAW_TRIGCOST', 'HIST_HLTMON', 'HIST_DEBUGSTREAMMON'],
50 perfMonFile = 'ntuple_BSRDOtoRAW.pmon.gz'))
51
52 # RAWtoCOST is the COST step for trigger transform
53 # runs in athena and will succeed if input BS file has costmon enabled
54 executorSet.add(trigCostExecutor(name = 'DRAWCOSTtoNTUPCOST',
55 exe = 'RunTrigCostAnalysis.py',
56 inData = ['DRAW_TRIGCOST'], outData = ['NTUP_TRIGCOST']))
57
58 # AODtoNTUPRATE is the RATE step for trigger transform
59 # runs in athena from an input AOD file
60 executorSet.add(trigRateExecutor(name = 'AODtoNTUPRATE',
61 exe = 'RatesAnalysisFullMenu.py',
62 inData = ['AOD'], outData = ['NTUP_TRIGRATE']))
63
64 # RAWtoALL, DQHistogramMerge are the reconstruction substeps for trigger transform
65 # shortened list from addRecoSubsteps in RecJobTransforms.recTransformUtils
66 executorSet.add(athenaExecutor(name = 'RAWtoALL',
67 skeletonCA = 'RecJobTransforms.RAWtoALL_Skeleton',
68 substep = 'r2a', inData = ['BS', 'RDO'],
69 outData = ['ESD', 'AOD', 'HIST_R2A'],
70 perfMonFile = 'ntuple_RAWtoALL.pmon.gz'))
71 executorSet.add(DQMergeExecutor(name = 'DQHistogramMerge', inData = ['HIST_R2A'], outData = ['HIST']))
72
73 # Other reco steps - not currently used in trigger reprocessings
74 # if remove can also remove outputNTUP_TRIGFile
75
76 trf = transform(executor = executorSet, description = 'Trigger transform to run HLT, followed by'
77 ' general purpose ATLAS reconstruction transform. Input to HLT is inputBS_RDOFile'
78 ' with outputs of RDO, ESD or AOD. For more details see:'
79 ' https://twiki.cern.ch/twiki/bin/viewauth/Atlas/TriggerTransform or for reco_tf, see:'
80 ' https://twiki.cern.ch/twiki/bin/viewauth/Atlas/RecoTf')
81
82 # Add arguments
83 # shortened list from RecJobTransforms.Reco_tf
84 addAthenaArguments(trf.parser)
85 addDetectorArguments(trf.parser)
86 # shortened list from addAllRecoArgs in RecJobTransforms.recTransformUtils
87 addCommonRecTrfArgs(trf.parser)
88 addStandardRecoFiles(trf.parser)
89
90 # Now add specific trigger transform arguments
91 # Putting this last makes them appear last in the help so easier to find
92 addTriggerArgs(trf.parser)
93 addTrigCostRateArgs(trf.parser)
94 addTriggerDBArgs(trf.parser)
95 addDebugArgs(trf.parser)
96
97 return trf
98
99
100def addTriggerArgs(parser):
101 # Use arggroup to get these arguments in their own sub-section (of --help)
102 parser.defineArgGroup('Trigger', 'Specific options related to the trigger configuration used for reprocessing')
103
104 # Arguments specific for trigger transform
105 # writeBS used in literal arguments when running HLT step in athena (not athenaHLT/EF)
106 parser.add_argument('--writeBS', type=trfArgClasses.argFactory(trfArgClasses.argBool, runarg=True),
107 help='Needed if running BSRDO to BS step in athena (default: True)', group='Trigger', default=trfArgClasses.argBool(True, runarg=True))
108 # input BS file for the HLT step (name just to be unique identifier)
109 parser.add_argument('--inputBS_RDOFile', nargs='+',
110 type=trfArgClasses.argFactory(trfArgClasses.argBSFile, io='input', runarg=True, type='bs'),
111 help='Input bytestream file', group='Trigger')
112 # without an outputBSFile name specified then any further steps will know to use tmp.BS
113 parser.add_argument('--outputBSFile', nargs='+',
114 type=trfArgClasses.argFactory(trfArgClasses.argBSFile, io='output', runarg=True, type='bs'),
115 help='Output bytestream file', group='Trigger')
116 # select output stream in BS file
117
119 parser.add_argument('--streamSelection', nargs='+', type=trfArgClasses.argFactory(trfArgClasses.argList, runarg=True),
120 help='select output streams in produced BS file (default: \"Main\"). Specify \"All\" to disable splitting (standard reco will fail on any events with only PEB data)', group='Trigger', default=trfArgClasses.argList("Main", runarg=True))
121 # HLT out histogram file, if defined renames expert-monitoring file that is produced automatically
122 parser.add_argument('--outputHIST_HLTMONFile', nargs='+',
123 type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output', runarg=True, countable=False),
124 help='Output HLTMON file', group='Trigger')
125 # Trigger Configuration String as used in reco Steps
126 parser.add_argument('--triggerConfig', nargs='+', metavar='substep=TRIGGERCONFIG',
127 type=trfArgClasses.argFactory(trfArgClasses.argSubstep, runarg=True, separator='='),
128 help='Trigger Configuration String. '
129 'N.B. This argument uses EQUALS (=) to separate the substep name from the value.', group='Trigger')
130 # precommand
131 parser.add_argument('--precommand', nargs='+', type=trfArgClasses.argFactory(trfArgClasses.argList, runarg=True),
132 help='precommand for trigger step ("-c")', group='Trigger')
133 # postcommand
134 parser.add_argument('--postcommand', nargs='+', type=trfArgClasses.argFactory(trfArgClasses.argList, runarg=True),
135 help='postcommand for trigger step ("-C")', group='Trigger')
136
137 # trigger executable
138 parser.add_argument('--trigExe', type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True),
139 default=trfArgClasses.argString("athenaEF.py"),
140 help='Executable to run in the trigger step', group='Trigger')
141
142 # For prodsys to make sure uses inputBS_RDOFile rather than inputBSFile when running the b2r step
143 parser.add_argument('--prodSysBSRDO', type=trfArgClasses.argFactory(trfArgClasses.argBool, runarg=True),
144 help='For prodsys to make sure uses inputBS_RDOFile rather than inputBSFile when running the b2r step', group='Trigger')
145
146
148 # Use arggroup to get these arguments in their own sub-section (of --help)
149 parser.defineArgGroup('TrigCost', 'Specific options related to the trigger cost and rates steps in trigger reprocessings')
150
151 # without a outputDRAW_TRIGCOSTFile name specified then it will not be possible to run any further COST analysis if the BS is slimmed to a specific stream
152 parser.add_argument('--outputDRAW_TRIGCOSTFile', nargs='+',
153 type=trfArgClasses.argFactory(trfArgClasses.argBSFile, io='output', runarg=True),
154 help='Output bytestream file of CostMonitoring stream', group='TrigCost')
155 # input BS file for the TRIGCOST step (name just to be unique identifier for prodSys)
156 parser.add_argument('--inputDRAW_TRIGCOSTFile', nargs='+',
157 type=trfArgClasses.argFactory(trfArgClasses.argBSFile, io='input', runarg=True),
158 help='Input bytestream file of CostMonitoring stream', group='TrigCost')
159 # NTUP_COST is used for COST monitoring - used in the reco release
160 parser.add_argument('--outputNTUP_TRIGCOSTFile', nargs='+',
161 type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output', runarg=True, countable=False),
162 help='D3PD output NTUP_TRIGCOST file', group='TrigCost')
163 # NTUP_RATE is used for COST monitoring - used in the reco release
164 parser.add_argument('--outputNTUP_TRIGRATEFile', nargs='+',
165 type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output', runarg=True, countable=False),
166 help='D3PD output NTUP_TRIGRATE file', group='TrigCost')
167
168 # Additional cost arguments for cost processing step
169 parser.add_argument('--costopts', nargs='+',
170 type=trfArgClasses.argFactory(trfArgClasses.argSubstepList, splitter=' ', runarg=False),
171 help='Extra options to pass to cost processing.', group='TrigCost')
172
173 # Additional rate arguments for rates analysis step
174 parser.add_argument('--rateopts', nargs='+',
175 type=trfArgClasses.argFactory(trfArgClasses.argSubstepList, splitter=' ', runarg=False),
176 help='Extra options to pass to rates analysis.', group='TrigCost')
177
179 # Use arggroup to get these arguments in their own sub-section (of --help)
180 parser.defineArgGroup('TriggerDB', 'Specific options related to the trigger DB')
181
182 parser.add_argument('--useDB', type=trfArgClasses.argFactory(trfArgClasses.argBool, runarg=True),
183 help='read from DB', group='TriggerDB')
184 parser.add_argument('--DBserver', type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True),
185 help='DB name', group='TriggerDB')
186 parser.add_argument('--DBsmkey', type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True),
187 help='DB SMK', group='TriggerDB')
188 parser.add_argument('--DBhltpskey', type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True),
189 help='DB hltpskey', group='TriggerDB')
190 parser.add_argument('--DBl1pskey', type=trfArgClasses.argFactory(trfArgClasses.argString, runarg=True),
191 help='DB l1pskey', group='TriggerDB')
192
193
194def addDebugArgs(parser):
195 # Use arggroup to get these arguments in their own sub-section (of --help)
196 parser.defineArgGroup('Debug', 'Specific options related to the trigger debug recovery')
197
198 parser.add_argument('--outputHIST_DEBUGSTREAMMONFile', nargs='+',
199 type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output', runarg=True, countable=False),
200 help='Output DEBUGSTREAMMON file', group='Debug')
201
202
203if __name__ == '__main__':
204 main()
STL class.
Main package for new style ATLAS job transforms.
Transform argument class definitions.
Transform execution functions.
Logging configuration for ATLAS job transforms.
addTriggerArgs(parser)
addTriggerDBArgs(parser)
addDebugArgs(parser)
addTrigCostRateArgs(parser)