4 from AnaAlgorithm.AnaAlgSequence
import AnaAlgSequence
5 from AnaAlgorithm.DualUseConfig
import addPrivateTool, createAlgorithm, createPublicTool
10 prescaleLumiCalcFiles = [],
12 """Create a basic trigger analysis algorithm sequence
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)
21 if dataType
not in [
"data",
"mc",
"afii"] :
22 raise ValueError (
"invalid data type: " + dataType)
25 seq = AnaAlgSequence(
"TriggerAnalysisSequence" )
28 xAODConfTool =
createPublicTool(
'TrigConf::xAODConfigTool',
'xAODConfigTool' )
29 decisionTool =
createPublicTool(
'Trig::TrigDecisionTool',
'TrigDecisionTool')
30 decisionTool.ConfigTool =
'%s/%s' % \
31 ( xAODConfTool.getType(), xAODConfTool.getName() )
33 seq.addPublicTool( xAODConfTool )
34 seq.addPublicTool( decisionTool )
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
45 seq.append( alg, inputPropName =
None )
48 if dataType ==
'data' and prescaleLumiCalcFiles:
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'
58 seq.append( alg, inputPropName =
None )