ATLAS Offline Software
TriggerAnalysisSequence.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
2 
3 # AnaAlgorithm import(s):
4 from AnaAlgorithm.AnaAlgSequence import AnaAlgSequence
5 from AnaAlgorithm.DualUseConfig import addPrivateTool, createAlgorithm, createPublicTool
6 
7 
9  triggerChains = [],
10  prescaleLumiCalcFiles = [],
11  noFilter = False):
12  """Create a basic trigger analysis algorithm sequence
13 
14  Keyword arguments:
15  dataType -- The data type to run on ("data", "mc" or "afii")
16  triggerChains -- a list of trigger chains
17  prescaleLumiCalcFiles -- a list of lumicalc files to calculate trigger prescales
18  noFilter -- do not apply an event filter (i.e. don't skip any events)
19  """
20 
21  if dataType not in ["data", "mc", "afii"] :
22  raise ValueError ("invalid data type: " + dataType)
23 
24  # Create the analysis algorithm sequence object:
25  seq = AnaAlgSequence( "TriggerAnalysisSequence" )
26 
27  # Create public trigger tools
28  xAODConfTool = createPublicTool( 'TrigConf::xAODConfigTool', 'xAODConfigTool' )
29  decisionTool = createPublicTool( 'Trig::TrigDecisionTool', 'TrigDecisionTool')
30  decisionTool.ConfigTool = '%s/%s' % \
31  ( xAODConfTool.getType(), xAODConfTool.getName() )
32 
33  seq.addPublicTool( xAODConfTool )
34  seq.addPublicTool( decisionTool )
35 
36  if triggerChains:
37  # Set up the trigger selection:
38  alg = createAlgorithm( 'CP::TrigEventSelectionAlg', 'TrigEventSelectionAlg' )
39  alg.tool = '%s/%s' % \
40  ( decisionTool.getType(), decisionTool.getName() )
41  alg.triggers = list(triggerChains)
42  alg.selectionDecoration = 'trigPassed'
43  alg.noFilter = noFilter
44 
45  seq.append( alg, inputPropName = None )
46 
47  # Calculate trigger prescales
48  if dataType == 'data' and prescaleLumiCalcFiles:
49  alg = createAlgorithm( 'CP::TrigPrescalesAlg', 'TrigPrescalesAlg' )
50  addPrivateTool( alg, 'pileupReweightingTool', 'CP::PileupReweightingTool' )
51  alg.pileupReweightingTool.LumiCalcFiles = prescaleLumiCalcFiles
52  alg.pileupReweightingTool.TrigDecisionTool = '%s/%s' % \
53  ( decisionTool.getType(), decisionTool.getName() )
54  alg.triggers = [lumicalc.split(':')[-1] for lumicalc in prescaleLumiCalcFiles if ':' in lumicalc]
55  alg.triggersAll = list(triggerChains)
56  alg.prescaleDecoration = 'prescale'
57 
58  seq.append( alg, inputPropName = None )
59 
60  # Return the sequence:
61  return seq
python.TriggerAnalysisSequence.makeTriggerAnalysisSequence
def makeTriggerAnalysisSequence(dataType, triggerChains=[], prescaleLumiCalcFiles=[], noFilter=False)
Definition: TriggerAnalysisSequence.py:8
python.DualUseConfig.createPublicTool
def createPublicTool(typeName, toolName)
Definition: DualUseConfig.py:84
python.DualUseConfig.addPrivateTool
def addPrivateTool(alg, toolName, typeName)
Definition: DualUseConfig.py:180
python.DualUseConfig.createAlgorithm
def createAlgorithm(typeName, instanceName)
Definition: DualUseConfig.py:56
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38