5 from AthenaConfiguration.AthConfigFlags
import AthConfigFlags
6 from AthenaConfiguration.Enums
import FlagEnum, Format, LHCPeriod
8 from AthenaCommon.Logging
import logging
10 log=logging.getLogger(
'TriggerConfigFlags')
16 InitialRoI =
'InitialRoI'
18 TauCoreLargeRoI =
'TauCoreLargeRoI'
22 """Return global conditions data to be used in the HLT. Return None to indicate that
23 no trigger-specific tag is required. Used for IOVDb.GlobalTag in AllConfigFlags.py.
25 return None if flags.Input.isMC
else 'CONDBR2-HLTP-2024-02'
28 """Return geometry tag to be used in the HLT. Returns None to indicate that
29 no trigger-specific tag is required. Used for GeoModel.AtlasVersion in GeoModelConfigFlags.py.
31 return None if flags.Input.isMC
else 'ATLAS-R3S-2021-03-02-00'
35 flags = AthConfigFlags()
37 flags.addFlag(
'Trigger.doLVL1',
lambda prevFlags: prevFlags.Input.isMC,
38 help=
'enable L1 simulation')
40 flags.addFlag(
'Trigger.doHLT',
False,
41 help=
'run HLT selection algorithms')
43 flags.addFlag(
"Trigger.forceEnableAllChains",
False,
44 help=
'always enable all configured chains (for testing)')
46 flags.addFlag(
'Trigger.enableL1MuonPhase1',
lambda prevFlags:
47 prevFlags.Trigger.EDMVersion >= 3
or prevFlags.Detector.EnableMM
or prevFlags.Detector.EnablesTGC,
48 help=
'enable Run-3 LVL1 muon decoding')
50 flags.addFlag(
'Trigger.enableL1CaloPhase1',
lambda prevFlags:
51 prevFlags.Trigger.EDMVersion >= 3
or prevFlags.GeoModel.Run >= LHCPeriod.Run3,
52 help=
'enable Phase-1 LVL1 calo simulation and/or decoding for Run-3+')
54 flags.addFlag(
'Trigger.enableL1TopoDump',
False,
55 help=
'enable L1Topo simulation to write inputs to txt file')
57 flags.addFlag(
'Trigger.enableL1TopoBWSimulation',
True,
58 help=
'enable bitwise L1Topo simulation')
60 flags.addFlag(
'Trigger.enableL1CaloLegacy',
True,
61 help=
'enable Run-2 L1Calo simulation and/or decoding')
64 flags.addFlag(
'Trigger.L1MuonSim.EmulateNSW',
False,
65 help=
'enable emulation tool for NSW-TGC coincidence')
67 flags.addFlag(
'Trigger.L1MuonSim.doMMTrigger',
True,
68 help=
'enable NSW MM trigger')
70 flags.addFlag(
'Trigger.L1MuonSim.doPadTrigger',
True,
71 help=
'enable NSW sTGC pad trigger')
73 flags.addFlag(
'Trigger.L1MuonSim.doStripTrigger',
False,
74 help=
'enable NSW sTGC strip trigger')
76 flags.addFlag(
'Trigger.L1MuonSim.WriteNSWDebugNtuple',
False,
77 help=
'enable Storing NSW debug Ntuple')
79 flags.addFlag(
'Trigger.L1MuonSim.WriteMMBranches',
False,
80 help=
'enable storing of Micromega branches in NSW debug Ntuple')
82 flags.addFlag(
'Trigger.L1MuonSim.WritesTGCBranches',
False,
83 help=
'enable storing of TGC branches in NSW debug Ntuple')
85 flags.addFlag(
'Trigger.L1MuonSim.NSWVetoMode',
True,
86 help=
'enable the veto mode of the NSW-TGC coincidence')
88 flags.addFlag(
'Trigger.L1MuonSim.doBIS78',
True,
89 help=
'enable TGC-RPC BIS78 coincidence')
91 flags.addFlag(
'Trigger.L1MuonSim.CondDBOffline',
'OFLCOND-MC16-SDR-RUN2-04',
92 help=
'offline CondDB tag for RPC/TGC coincidence window in rerunLVL1 on data')
94 flags.addFlag(
'Trigger.L1MuonSim.RPCNBX',
lambda prevFlags:
95 8
if prevFlags.Input.isMC
else 4,
96 help=
'Number of bunch crossings in RPC readout')
98 flags.addFlag(
'Trigger.L1MuonSim.RPCNBCZ',
lambda prevFlags:
99 3
if prevFlags.Input.isMC
else 1,
100 help=
'Nominal BC for RPC readout')
104 flags.addFlag(
'Trigger.doID',
True,
105 help=
'enable Inner Detector')
107 flags.addFlag(
'Trigger.doMuon',
True,
108 help=
'enable muon systems')
110 flags.addFlag(
'Trigger.doCalo',
True,
111 help=
'enable calorimeters')
113 flags.addFlag(
'Trigger.doZDC',
False,
114 help=
'enable ZDC system')
116 flags.addFlag(
'Trigger.ZdcLUT',
'TrigT1ZDC/zdcRun3T1LUT_v2_08_08_2023.json',
117 help=
'path to Run3 ZDC LUT')
120 flags.addFlag(
'Trigger.doTRT',
False)
123 flags.addFlag(
'Trigger.TRT.TTCMultiplicity', 4)
126 flags.addFlag(
'Trigger.TRT.maskedChipsFile',
'TrigT1TRT/fastORmaskedChips.json')
129 flags.addFlag(
'Trigger.doValidationMonitoring',
False,
130 help=
'enable additional validation histograms')
132 flags.addFlag(
'Trigger.doRuntimeNaviVal',
False,
133 help=(
'Check validity of each Decision objects in the entire decision tree (CPU expensive). '
134 'Also enable per-step decision printouts.'))
136 flags.addFlag(
'Trigger.ROBPrefetchingOptions',
137 [ROBPrefetching.InitialRoI, ROBPrefetching.StepRoI, ROBPrefetching.TauCoreLargeRoI],
138 help=
'select ROB prefetching types, empty list disables prefetching')
141 """Determine Trigger EDM version based on the input file."""
142 _log = logging.getLogger(
'TriggerConfigFlags.EDMVersion')
146 if flags.Input.Format
is Format.BS:
147 _log.debug(
"Input format is ByteStream")
149 if not any(flags.Input.Files)
and flags.Common.isOnline:
150 _log.info(
"Online reconstruction, no input file. Return default EDMVersion=%d", default_version)
151 return default_version
153 from TrigEDMConfig.Utils
import getEDMVersionFromBS
155 log.error(
"Failed to import TrigEDMConfig, analysing ByteStream files is not possible in this release!")
161 return version
if version
is not None else default_version
165 _log.debug(
"Input format is POOL -- determine from input file collections")
166 collections = flags.Input.Collections
167 if "HLTResult_EF" in collections:
168 _log.info(
"Determined EDMVersion to be 1, because HLTResult_EF found in POOL file")
170 elif "TrigNavigation" in collections:
171 _log.info(
"Determined EDMVersion to be 2, because TrigNavigation found in POOL file")
173 elif any(
"HLTNav_Summary" in s
for s
in collections):
174 if flags.GeoModel.Run >= LHCPeriod.Run4:
175 _log.info(
"Determined EDMVersion to be 4, because HLTNav_Summary.* found in POOL file and GeoModel.Run >= 4")
178 _log.info(
"Determined EDMVersion to be 3, because HLTNav_Summary.* found in POOL file")
180 elif not flags.Input.Collections:
183 _log.warning(
"All input files seem to be empty, cannot determine EDM version. Guessing EDMVersion=3")
186 _log.info(
"Could not determine EDM version from the input file. Return default EDMVersion=%d",
188 return default_version
190 flags.addFlag(
'Trigger.EDMVersion',
lambda prevFlags:
EDMVersion(prevFlags),
191 help=
'Trigger EDM version (determined by input file or set to the version to be produced)')
193 flags.addFlag(
'Trigger.doEDMVersionConversion',
False,
194 help=
'convert Run-1&2 EDM to Run-3 EDM')
196 flags.addFlag(
'Trigger.doxAODConversion',
True,
197 help=(
'convert Run-1 EDM to xAOD'))
199 flags.addFlag(
'Trigger.doOnlineNavigationCompactification',
True,
200 help=
'enable trigger Navigation compactification into a single collection')
202 flags.addFlag(
'Trigger.doNavigationSlimming',
True,
203 help=
'enable Navigation slimming for RAWtoXYZ or AODtoDAOD transforms')
205 flags.addFlag(
'Trigger.derivationsExtraChains', [],
206 help=
'list of chains which should be considered for trigger-matching in addition to those from the TriggerAPI when running derivations')
209 flags.addFlag(
'Trigger.CostMonitoring.doCostMonitoring',
True,
210 help=
'enable cost monitoring')
212 flags.addFlag(
'Trigger.CostMonitoring.chain',
'HLT_noalg_CostMonDS_L1All',
213 help=
'Cost monitoring chain name')
215 flags.addFlag(
'Trigger.CostMonitoring.outputCollection',
'HLT_TrigCostContainer',
216 help=
'Cost monitoring output collection name')
218 flags.addFlag(
'Trigger.CostMonitoring.monitorAllEvents',
False,
219 help=
'enable Cost monitoring for all events')
221 flags.addFlag(
'Trigger.CostMonitoring.monitorROBs',
True,
222 help=
'enable Cost monitoring of ROB accesses')
225 flags.addFlag(
'Trigger.L1.doMuon',
True,
226 help=
'enable L1Muon ByteStream conversion/simulation')
228 flags.addFlag(
'Trigger.L1.doMuonTopoInputs',
True,
229 help=
'enable ByteStream conversion/simulation of MUCTPI Topo TOBs')
231 flags.addFlag(
'Trigger.L1.doCalo',
True,
232 help=
'enable L1Calo ByteStream conversion/simulation')
234 flags.addFlag(
'Trigger.L1.doCaloInputs',
lambda prevFlags:
235 prevFlags.Trigger.L1.doCalo
and prevFlags.Trigger.enableL1CaloPhase1
and not prevFlags.Trigger.doHLT,
236 help=
'enable L1Calo Input ([ejg]Towers) ByteStream conversion/simulation')
238 flags.addFlag(
'Trigger.L1.doeFex',
lambda prevFlags:
239 prevFlags.Trigger.L1.doCalo
and prevFlags.Trigger.enableL1CaloPhase1,
240 help=
'enable eFEX ByteStream conversion/simulation')
242 flags.addFlag(
'Trigger.L1.Menu.doeFexBDTTau',
True,
243 help=
'set BDT tau algorithm as the active one for eFEX when constructing L1 menus')
245 flags.addFlag(
'Trigger.L1.dojFex',
lambda prevFlags:
246 prevFlags.Trigger.L1.doCalo
and prevFlags.Trigger.enableL1CaloPhase1,
247 help=
'enable jFEX ByteStream conversion/simulation')
249 flags.addFlag(
'Trigger.L1.dogFex',
lambda prevFlags:
250 prevFlags.Trigger.L1.doCalo
and prevFlags.Trigger.enableL1CaloPhase1,
251 help=
'enable gFEX ByteStream conversion/simulation')
253 flags.addFlag(
'Trigger.L1.L1CaloSuperCellContainerName',
lambda prevFlags:
254 "EmulatedSCell" if prevFlags.GeoModel.Run
is LHCPeriod.Run2
else "SCell",
255 help=
'name of SuperCell container')
257 flags.addFlag(
'Trigger.L1.doTopo',
True,
258 help=
'enable L1Topo ByteStream conversion/simulation (steering both legacy and phase-1 Topo)')
260 flags.addFlag(
'Trigger.L1.doTopoPhase1',
lambda prevFlags:
261 prevFlags.Trigger.L1.doTopo
and prevFlags.Trigger.enableL1CaloPhase1,
262 help=
'control Phase-I L1Topo simulation even if L1.doTopo is True')
264 flags.addFlag(
'Trigger.L1.doGlobal',
lambda prevFlags: prevFlags.GeoModel.Run >= LHCPeriod.Run4,
265 help=
'enable L0Global ByteStream conversion/simulation')
267 flags.addFlag(
'Trigger.L1.doCTP',
True,
268 help=
'enable CTP ByteStream conversion/simulation')
270 flags.addFlag(
'Trigger.L1.Menu.doHeavyIonTobThresholds',
lambda prevFlags:
271 'HI' in prevFlags.Trigger.triggerMenuSetup,
272 help=
'modify min-pt-to-Topo threshold for TOBs to HI values')
274 flags.addFlag(
'Trigger.L1.errorOnMissingTOB',
True,
275 help=
'Set to true to enable strict-mode which will generate an ERROR on missing (non-overflow) TOB events in HLT-seeding from L1')
278 flags.addFlag(
'Trigger.Online.partitionName', os.getenv(
'TDAQ_PARTITION')
or '',
279 help=
'partition name used to determine online vs offline BS result writing')
281 flags.addFlag(
'Trigger.Online.isPartition',
lambda prevFlags: len(prevFlags.Trigger.Online.partitionName)>0,
282 help=
'check if job is running in a partition (i.e. partition name is not empty)')
284 flags.addFlag(
'Trigger.Online.useOnlineTHistSvc',
False,
285 help=
'use online THistSvc')
287 flags.addFlag(
'Trigger.Online.BFieldAutoConfig',
True,
288 help=
'auto-configure magnetic field from currents in IS')
290 flags.addFlag(
'Trigger.writeBS',
False,
291 help=
'enable bytestream writing of trigger information')
293 flags.addFlag(
'Trigger.doTransientByteStream',
lambda prevFlags:
294 True if prevFlags.Input.Format
is Format.POOL
and prevFlags.Trigger.doCalo
else False,
295 help=
'create transient BS (for running on MC RDO with clients that require BS inputs)')
297 flags.addFlag(
'Trigger.AODEDMSet',
lambda flags:
'AODSLIM' if flags.Input.isMC
else 'AODFULL',
298 help=
'list of EDM objects to be written to AOD')
300 flags.addFlag(
'Trigger.ESDEDMSet',
'ESD',
301 help=
'list of EDM objects to be written to ESD')
303 flags.addFlag(
'Trigger.ExtraEDMList', [],
304 help=
'list of extra EDM objects to be stored (for testing). Supported features: Add new items. Add extra decorations to existing Aux. Add additional output targets.')
306 def __availableRecoMetadata(flags):
307 systems = [
'L1',
'HLT']
309 if not any(flags.Input.Files)
and flags.Common.isOnline:
312 elif flags.Trigger.doHLT:
313 raise RuntimeError(
'Trigger.availableRecoMetadata is ill-defined if Trigger.doHLT==True')
315 elif flags.Input.Format
is Format.BS:
316 from TrigConfigSvc.TriggerConfigAccess
import getKeysFromCool
318 return ( ([
'L1']
if 'L1PSK' in keys
else []) +
319 ([
'HLT']
if 'HLTPSK' in keys
else []) )
322 return systems
if flags.Trigger.triggerConfig ==
'INFILE' else []
324 flags.addFlag(
'Trigger.availableRecoMetadata',
lambda flags: __availableRecoMetadata(flags),
325 help=
"list of enabled trigger sub-systems in reconstruction: ['L1,'HLT']")
327 flags.addFlag(
"Trigger.decodeHLT",
True,
328 help=
'enable decoding of HLT trigger decision/result in reconstruction')
330 flags.addFlag(
"Trigger.DecisionMakerValidation.Execute",
True,
331 help=
'run trigger decision validation algorithm in reconstruction')
333 flags.addFlag(
"Trigger.DecisionMakerValidation.ErrorMode",
True,
334 help=
'emit an ERROR (or WARNING) in case of trigger decision validation failure')
337 def __triggerConfig(flags):
338 _log = logging.getLogger(
'TriggerConfigFlags.triggerConfig')
339 if flags.Common.isOnline
and not flags.Trigger.doHLT:
341 _log.debug(
"Autoconfigured default value for running reconstruction inside Point 1: 'DB'")
343 elif flags.Input.Format
is Format.BS:
344 from glob
import glob
345 hasLocal =
True if (glob(
"HLTMenu*.json")
and glob(
"L1Menu*.json")
and glob(
"HLTPrescales*.json")
and glob(
"L1Prescales*.json")
and glob(
"HLTMonitoring*.json")
and glob(
"BunchGroupSet*.json"))
else False
346 if flags.Trigger.doHLT:
348 _log.debug(
"Autoconfigured default value for running the trigger on data: 'FILE'")
354 _log.debug(
"Autoconfigured default value for running reconstruction with a pre-supplied set of trigger configuration JSON files: 'FILE'")
356 elif flags.GeoModel.Run >= LHCPeriod.Run3:
358 _log.debug(
"Autoconfigured default value for reconstruction of Run 3 data: 'DB'")
362 _log.debug(
"Autoconfigured default value for reconstruction of Run 1 or Run 2 data: 'FILE'")
365 from AthenaConfiguration.AutoConfigFlags
import GetFileMD
369 hasTrigMeta = (
"metadata_items" in md
and any((
'TriggerMenu' in key)
for key
in md[
"metadata_items"].
keys()))
372 _log.debug(
"Autoconfigured default value to read trigger configuration data from the input file: 'INFILE'")
376 _log.debug(
"Autoconfigured default value to read trigger configuration data from disk for MC production: 'FILE'")
379 flags.addFlag(
'Trigger.triggerConfig',
lambda flags: __triggerConfig(flags),
380 help=
'Trigger configuration source (https://twiki.cern.ch/twiki/bin/view/Atlas/TriggerConfigFlag)')
382 flags.addFlag(
'Trigger.triggerMenuSetup',
lambda flags:
'MC_pp_run3_v1_BulkMCProd_prescale' if flags.GeoModel.Run
is LHCPeriod.Run3
else 'MC_pp_run4_v1_BulkMCProd_prescale',
383 help=
'name of the trigger menu')
385 flags.addFlag(
'Trigger.generateMenuDiagnostics',
False,
386 help=
'print debug output from control flow generation')
388 flags.addFlag(
'Trigger.fastMenuGeneration',
True,
389 help=
'avoid re-merging CAs that were already seen once')
391 flags.addFlag(
'Trigger.disableCPS',
False,
392 help=
'disable coherent prescale sets (for testing with small menu)')
394 flags.addFlag(
'Trigger.enableEndOfEventProcessing',
True,
395 help=
'enable execution of extra algorithms for accepted events')
397 flags.addFlag(
'Trigger.doCFEmulationTest',
False,
398 help=
'enable run Control Flow Emulation test')
403 if doTriggerRecoFlags:
407 flags.Trigger.disableCPS =
lambda prevFlags: prevFlags.Trigger.selectChains
or len(prevFlags.Trigger.enabledSignatures)==1
413 flags = AthConfigFlags()
416 def _allSignatures (prevFlags):
417 from TriggerMenuMT.HLT.Config.GenerateMenuMT
import allSignatures
421 flags.addFlag(
"Trigger.enabledSignatures", _allSignatures, help=
'list of enabled trigger signatures')
422 flags.addFlag(
"Trigger.disabledSignatures", [], help=
'list of disabled trigger signatures')
423 flags.addFlag(
"Trigger.selectChains", [], help=
'list of enabled chains')
424 flags.addFlag(
"Trigger.disableChains", [], help=
'list of disabled chains')
427 from TriggerMenuMT.HLT.Egamma.TrigEgammaConfigFlags
import createTrigEgammaConfigFlags
429 flags.addFlagsCategory(
'Trigger.egamma', __egamma )
433 from MuonConfig.MuonConfigFlags
import createMuonConfigFlags
435 muonflags.Muon.useTGCPriorNextBC=
True
436 muonflags.Muon.MuonTrigger=
True
437 muonflags.Muon.SAMuonTrigger=
True
438 muonflags.Muon.runCommissioningChain=
False
439 muonflags.Muon.enableErrorTuning=
False
441 flags.addFlagsCategory(
'Trigger.Offline.SA', __muonSA, prefix=
True)
444 from MuonConfig.MuonConfigFlags
import createMuonConfigFlags
446 muonflags.Muon.useTGCPriorNextBC=
True
447 muonflags.Muon.MuonTrigger=
True
448 muonflags.Muon.enableErrorTuning=
False
450 flags.addFlagsCategory(
'Trigger.Offline', __muon, prefix=
True)
452 def __muonCombined():
453 from MuonCombinedConfig.MuonCombinedConfigFlags
import createMuonCombinedConfigFlags
455 muonflags.MuonCombined.doCaloTrkMuId =
False
456 muonflags.MuonCombined.doSiAssocForwardMuons =
False
457 muonflags.MuonCombined.doStatisticalCombination =
False
458 muonflags.MuonCombined.doMuGirl =
False
459 muonflags.MuonCombined.doCombinedFit =
True
461 flags.addFlagsCategory(
'Trigger.Offline.Combined', __muonCombined, prefix=
True)
464 from TrigTauRec.TrigTauConfigFlags
import createTrigTauConfigFlags
466 flags.addFlagsCategory(
'Trigger.Offline.Tau', __tau )
469 from TrigInDetConfig.TrigTrackingPassFlags
import createTrigTrackingPassFlags
471 flags.addFlagsCategory(
'Trigger.InDetTracking', __idTrk )
474 from TrigInDetConfig.TrigTrackingPassFlags
import createTrigTrackingPassFlags
476 flags.addFlagsCategory(
'Trigger.ITkTracking', __idITk )
479 from TrigInDetConfig.TrigTrackingPassFlags
import createTrigTrackingPassFlags
481 flags.addFlagsCategory(
'Trigger.ActsTracking', _idActs )
483 flags.addFlag(
'Trigger.useActsTracking',
False, help=
'use ACTS for ITk tracking')
486 from TrigCaloRec.TrigCaloConfigFlags
import createTrigCaloConfigFlags
488 flags.addFlagsCategory(
'Trigger.Calo', __trigCalo )
491 from TrigT1MuctpiPhase1.TrigMUCTPIConfigFlags
import createTrigMUCTPIConfigFlags
493 flags.addFlagsCategory(
'Trigger.MUCTPI', __muctpiFlags )
495 def __fpgatracksimFlags():
496 """Additional function delays import"""
497 from FPGATrackSimConfTools.FPGATrackSimConfigFlags
import createFPGATrackSimConfigFlags
499 flags.addFlagsCategory(
"Trigger.FPGATrackSim", __fpgatracksimFlags, prefix=
True )
509 flags.addFlag(
"Trigger.FSHad.PFOMuonRemoval",
"Calo",
510 help=
'PFO-muon removal option: None, Calo, Iso)')
512 flags.addFlag(
"Trigger.FSHad.PFOMuonRemovalMinPt", 10 * GeV,
513 help=
'minimum pT threshold to use for the muon removal')
515 flags.addFlag(
'Trigger.Jet.doJetSuperPrecisionTracking',
False,
516 help=
'enable precision tracking in jet super-ROI before fast b-tagging (EMTopo jets)')
518 flags.addFlag(
"Trigger.Jet.fastbtagPFlow",
True,
519 help=
'enable fast b-tagging for all fully calibrated HLT PFlow jets')
521 flags.addFlag(
"Trigger.Jet.fastbtagVertex",
True,
522 help=
'enable the addition of the super ROI PV to the b-tagging')
524 flags.addFlag(
"Trigger.Jet.doVRJets",
False,
525 help=
'enable the addition of the VR track jet reconstruction sequence')
527 flags.addFlag(
"Trigger.FSTrk.doJetRestrictedVertexSort",
False,
528 help=
'use tracks in jets for computing sumpt2 for vertex sorting')
533 flags.addFlag(
"Trigger.Jet.pflowCalibKey",
lambda prevFlags:
"TrigHIUPC" if 'HI' in prevFlags.Trigger.triggerMenuSetup
else "TrigR22Prerec",
534 help=
'calibration config file for HLT small-R jets')
536 flags.addFlag(
"Trigger.Jet.emtopoCalibKey",
"TrigLS2",
537 help=
'calibration config file for HLT small-R jets')
539 flags.addFlag(
"Trigger.Jet.pflowLJCalibKey",
"TrigSoftDrop",
540 help=
'calibration config file for HLT large-R PFlow jets')
542 flags.addFlag(
"Trigger.Jet.PFlowTolerance", 1e-2,
543 help=
'tolerance in STEP Propagator')
545 flags.addFlag(
"Trigger.Jet.TrackVtxAssocWP",
"Custom",
546 help=
'working point for the TVA algorithm')
548 flags.addFlag(
"Trigger.Jet.LowPtFilter",
lambda prevFlags:
'HI' in prevFlags.Trigger.triggerMenuSetup,
549 help=
'apply low pT filter on antiKt4 jets (used for HI UPC jet reco)')
554 if __name__ ==
"__main__":
556 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
557 from AthenaConfiguration.Enums
import Project
562 @unittest.skipIf(flags.Common.Project
is Project.AthAnalysis,
"project is AthAnalysis")
564 """Check if offline reco flags can be added to trigger"""
566 flags.Trigger.Offline.Tau.doTauRec=
False
567 flags.Tau.doTauRec=
True
568 self.assertEqual(flags.Trigger.Offline.Tau.doTauRec,
False,
"dependent flag setting does not work")
569 self.assertEqual(flags.Tau.doTauRec,
True,
"dependent flag setting does not work")
571 newflags = flags.cloneAndReplace(
'Tau',
'Trigger.Offline.Tau')
573 self.assertEqual(flags.Tau.doTauRec,
True,
"dependent flag setting does not work")
574 self.assertEqual(newflags.Tau.doTauRec,
False,
"dependent flag setting does not work")
577 """Force load all dynamic flags"""
579 flags.loadAllDynamicFlags()