82 def setupChain( self, trigger ):
83
84 import cppyy
85 cppyy.load_library('libElectronPhotonSelectorToolsDict')
86
87 from TriggerMenuMT.HLT.Config.Utility.DictFromChainName import dictFromChainName
88 d = dictFromChainName(self.flags, trigger)
89
90 signature = d['signatures'][0]
91
92 from TrigEgammaHypo.TrigEgammaFastCaloHypoTool import TrigEgammaFastCaloHypoToolFromDict
93 from TrigEgammaHypo.TrigEgammaFastElectronHypoTool import TrigEgammaFastElectronHypoToolFromDict
94 from TrigEgammaHypo.TrigEgammaFastPhotonHypoTool import TrigEgammaFastPhotonHypoToolFromDict
95 from TrigEgammaHypo.TrigEgammaPrecisionCaloHypoTool import TrigEgammaPrecisionCaloHypoToolFromDict
96 from TrigEgammaHypo.TrigEgammaPrecisionElectronHypoTool import TrigEgammaPrecisionElectronHypoToolFromDict
97 from TrigEgammaHypo.TrigEgammaPrecisionPhotonHypoTool import TrigEgammaPrecisionPhotonHypoToolFromDict
98 from TrigEgammaHypo.TrigEgammaPrecisionTrackingHypoTool import TrigEgammaPrecisionTrackingHypoToolFromDict
99
100
101 L1CaloTool = self.setupL1Calo(trigger + "_Step0" , d)
102 sequence = list()
103
104 FastCaloTool = TrigEgammaFastCaloHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationFastCaloHypoTool(trigger+'_Step1') )
105 PrecisionCaloTool = TrigEgammaPrecisionCaloHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationPrecisionCaloHypoTool(trigger+'_Step3'))
106 if signature == 'Electron':
107 isEtCut = bool(d['chainParts'][0]['addInfo'])
108 isIdperf = bool(d['chainParts'][0]['idperfInfo'])
109 FastTool = TrigEgammaFastElectronHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationFastElectronHypoTool(trigger+'_Step2'))
110 if isEtCut:
111 sequence = [FastCaloTool, FastTool, PrecisionCaloTool]
112 elif isIdperf:
113 PrecisionTrackingTool = TrigEgammaPrecisionTrackingHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationPrecisionTrackingHypoTool(trigger+'_Step4'))
114 sequence = [FastCaloTool, FastTool, PrecisionCaloTool, PrecisionTrackingTool]
115 else:
116 PrecisionTrackingTool = TrigEgammaPrecisionTrackingHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationPrecisionTrackingHypoTool(trigger+'_Step4'))
117 PrecisionTool = TrigEgammaPrecisionElectronHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationPrecisionElectronHypoTool(trigger+'_Step5'))
118 sequence = [FastCaloTool, FastTool, PrecisionCaloTool, PrecisionTrackingTool, PrecisionTool]
119 elif signature == 'Photon':
120 isEtCut = bool(d['chainParts'][0]['addInfo'])
121 FastTool = TrigEgammaFastPhotonHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationFastPhotonHypoTool(trigger+'_Step2'))
122 if isEtCut:
123 sequence = [FastCaloTool, FastTool, PrecisionCaloTool]
124 else:
125 PrecisionTool = TrigEgammaPrecisionPhotonHypoToolFromDict(d, tool = CompFactory.Trig.TrigEgammaEmulationPrecisionPhotonHypoTool(trigger+'_Step5'))
126 sequence = [FastCaloTool, FastTool, PrecisionCaloTool, PrecisionTool]
127
128 chain = CompFactory.Trig.TrigEgammaEmulationChain(
129 name = trigger,
130 L1Seed = L1CaloTool,
131
132 Steps = sequence,
133 Chain = trigger,
134 Signature = signature.lower(),
135 OutputLevel = self.OutputLevel
136 )
137
138 return chain
139
140
141