18 """Configure the derivation framework driving algorithm (kernel) for TRIG8"""
19 acc = ComponentAccumulator()
23 TRIG8MergedElectronContainer =
"Electrons"
24 TRIG8MergedMuonContainer =
"Muons"
25 if flags.Tracking.doLargeD0:
27 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
28 acc.merge(InDetLRTMergeCfg(flags))
31 TRIG8MergedMuonContainer =
"StdWithLRTMuons"
32 from DerivationFrameworkLLP.LLPToolsConfig
import LRTMuonMergerAlg
33 acc.merge(LRTMuonMergerAlg( flags,
34 PromptMuonLocation =
"Muons",
35 LRTMuonLocation =
"MuonsLRT",
36 OutputMuonLocation = TRIG8MergedMuonContainer,
37 CreateViewCollection =
True))
40 TRIG8MergedElectronContainer =
"StdWithLRTElectrons"
41 from DerivationFrameworkLLP.LLPToolsConfig
import LRTElectronMergerAlg
42 acc.merge(LRTElectronMergerAlg( flags,
43 PromptElectronLocation =
"Electrons",
44 LRTElectronLocation =
"LRTElectrons",
45 OutputCollectionName = TRIG8MergedElectronContainer,
47 CreateViewCollection =
True))
50 augmentationTools = [ ]
53 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
54 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
56 if flags.Tracking.doLargeD0:
58 from DerivationFrameworkEGamma.EGammaLRTConfig
import EGammaLRTCfg
59 acc.merge(EGammaLRTCfg(flags))
61 from DerivationFrameworkLLP.LLPToolsConfig
import LRTElectronLHSelectorsCfg
62 acc.merge(LRTElectronLHSelectorsCfg(flags))
65 from DerivationFrameworkMuons.MuonsCommonConfig
import MuonsCommonCfg
66 acc.merge(MuonsCommonCfg(flags, suff=
"LRT"))
68 from TriggerMenuMT.TriggerAPI.TriggerAPI
import TriggerAPI
69 from TriggerMenuMT.TriggerAPI.TriggerEnums
import TriggerPeriod
71 allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
72 TriggerAPI.setConfigFlags(flags)
73 trig_all = list(TriggerAPI.getAllHLT(allperiods).keys())
76 TriggerListsHelper = kwargs[
'TriggerListsHelper']
77 trig_all += TriggerListsHelper.Run3TriggerNames
80 displaced_jet_triggers = [t
for t
in trig_all
if "dispjet" in t]
81 bjet_veto = [
"HLT_e26_lhtight_ivarloose_2j20_0eta290_020jvt_boffperf_pf_ftf_L1EM22VHI"]
82 bjet_triggers = [t
for t
in trig_all
if "boffperf" in t
and t
not in bjet_veto]
85 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
86 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import GenericObjectThinningCfg
87 from DerivationFrameworkTrigger.TriggerGenericObjectThinningConfig
import TriggerGenericThinningCfg
92 TRIG8PhotonsThinningTool = acc.getPrimaryAndMerge(GenericObjectThinningCfg(
94 name =
"TRIG8PhotonsThinningTool",
95 StreamName = kwargs[
'StreamName'],
96 ContainerName =
"Photons",
97 SelectionString =
"Photons.pt >= 1000000."))
99 TRIG8TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
101 name =
"TRIG8TrackParticleThinningTool",
102 StreamName = kwargs[
'StreamName'],
103 SelectionString =
"InDetTrackParticles.pt > 1*GeV",
104 InDetTrackParticlesKey =
"InDetTrackParticles"))
106 if flags.Tracking.doLargeD0:
107 TRIG8LRTTrackParticleThinningTool = acc.getPrimaryAndMerge(
108 TrackParticleThinningCfg(
109 flags, name =
"TRIG8LRTTrackParticleThinningTool",
110 StreamName = kwargs[
'StreamName'],
111 SelectionString =
"InDetLargeD0TrackParticles.pt > 1*GeV",
112 InDetTrackParticlesKey =
"InDetLargeD0TrackParticles"))
115 thinningTools = [TRIG8PhotonsThinningTool,
116 TRIG8TrackParticleThinningTool]
117 if flags.Tracking.doLargeD0:
118 thinningTools += [TRIG8LRTTrackParticleThinningTool]
120 if((
not flags.Input.isMC)
or "HLT_AntiKt4EMTopoJets_subjesIS" in flags.Input.Collections):
121 TRIG8JETThinningTool = acc.getPrimaryAndMerge(TriggerGenericThinningCfg(
123 name =
"TRIG8JetThinningTool",
124 StreamName = kwargs[
'StreamName'],
125 ContainerName =
"HLT_AntiKt4EMTopoJets_subjesIS",
126 TriggerListOR = sorted(list(
set(displaced_jet_triggers + bjet_triggers)))
129 thinningTools.append(TRIG8JETThinningTool)
134 if flags.Trigger.EDMVersion >= 0:
136 idtrig_keys = [
'idperf',
'boffperf',
'ivarperf',
'idtp']
138 idtrig_veto = [
'HLT_e26_lhtight_ivarloose_2j20_0eta290_020jvt_boffperf_pf_ftf_L1EM22VHI']
140 additional_triggers = [
142 "HLT_j45_pf_ftf_preselj20_L1J15",
143 "HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1XE55",
144 "HLT_xe80_tcpufit_isotrk140_medium_iaggrmedium_L1XE55",
145 "HLT_xe80_tcpufit_dedxtrk50_medium_L1XE50",
146 "HLT_xe80_tcpufit_distrk20_medium_L1XE50",
147 "HLT_xe80_tcpufit_distrk20_tight_L1XE50",
150 idtrig_keys += additional_triggers
151 idtrig_keys += displaced_jet_triggers
153 triggers = [t
for t
in trig_all
for k
in idtrig_keys
if k
in t]
154 for veto
in idtrig_veto:
156 triggers.remove(veto)
158 print(f
"Warning, {veto} already removed from trigger list.")
161 triggers = sorted(list(
set(triggers)))
162 print(
'TRIG8 list of triggers used for skimming:')
163 for trig
in triggers:
print(trig)
165 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
166 TRIG8TriggerSkimmingTool = TriggerSkimmingTool(name =
"TRIG8TriggerPreSkimmingTool",
168 TriggerListOR = triggers)
169 acc.addPublicTool(TRIG8TriggerSkimmingTool)
171 skimmingTools.append(TRIG8TriggerSkimmingTool)
173 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
174 acc.addEventAlgo(DerivationKernel(name,
175 SkimmingTools = skimmingTools,
176 ThinningTools = thinningTools,
177 AugmentationTools = augmentationTools))
184 acc = ComponentAccumulator()
186 TRIG8MergedElectronContainer = (
187 "StdWithLRTElectrons" if flags.Tracking.doLargeD0
else "Electrons")
188 TRIG8MergedMuonContainer = (
189 "StdWithLRTMuons" if flags.Tracking.doLargeD0
else "Muons")
195 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
196 TRIG8TriggerListsHelper = TriggerListsHelper(flags)
199 acc.merge(
TRIG8KernelCfg(flags, name=
"TRIG8Kernel", StreamName =
'StreamDAOD_TRIG8', TriggerListsHelper = TRIG8TriggerListsHelper))
205 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
206 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
207 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
209 TRIG8SlimmingHelper =
SlimmingHelper(
"TRIG8SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
211 TRIG8SlimmingHelper.SmartCollections = [
"EventInfo",
216 "InDetTrackParticles",
218 "AntiKt4EMPFlowJets",
221 if flags.Tracking.doLargeD0:
222 TRIG8SlimmingHelper.SmartCollections += [
"LRTElectrons",
"MuonsLRT",
223 "InDetLargeD0TrackParticles"]
225 TRIG8SlimmingHelper.AllVariables = [
"HLT_IDTrack_Electron_FTF",
226 "HLT_IDTrack_ElecLRT_FTF",
227 "HLT_IDTrack_Electron_IDTrig",
228 "HLT_IDTrack_ElecLRT_IDTrig",
229 "HLT_IDTrack_Electron_GSF",
230 "HLT_IDTrack_Electron_LRTGSF",
231 "HLT_IDTrack_Muon_FTF",
232 "HLT_IDTrack_Muon_IDTrig",
233 "HLT_IDTrack_MuonLRT_IDTrig",
234 "HLT_IDTrack_MuonIso_FTF",
235 "HLT_IDTrack_MuonIso_IDTrig",
236 "HLT_IDTrack_MuonLRT_FTF",
237 "HLT_IDTrack_Bmumux_FTF",
238 "HLT_IDTrack_Bmumux_IDTrig",
239 "HLT_IDTrack_TauCore_FTF",
240 "HLT_IDTrack_TauLRT_FTF",
241 "HLT_IDTrack_TauIso_FTF",
242 "HLT_IDTrack_Tau_IDTrig",
243 "HLT_IDTrack_TauLRT_IDTrig",
244 "HLT_IDTrack_FS_FTF",
245 "HLT_IDTrack_FSLRT_FTF",
246 "HLT_IDTrack_FSLRT_IDTrig",
247 "HLT_IDTrack_DVLRT_FTF",
248 "HLT_IDTrack_BeamSpot_FTF",
249 "HLT_IDTrack_JetSuper_FTF",
250 "HLT_IDTrack_Bjet_FTF",
251 "HLT_IDTrack_Bjet_IDTrig",
252 "HLT_IDTrack_MinBias_IDTrig",
253 "HLT_IDTrack_Cosmic_FTF",
254 "HLT_IDTrack_Cosmic_IDTrig",
255 "HLT_IDTrack_DJLRT_FTF",
256 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingSecVtx",
258 "HLT_IDVertex_JetSuper",
262 if flags.Tracking.doTrackSegmentsDisappearing:
263 TRIG8SlimmingHelper.AllVariables += [
"InDetDisappearingTrackParticles"]
265 TRIG8SlimmingHelper.StaticContent = [
266 "TrigRoiDescriptorCollection#HLT_FSRoI",
267 "TrigRoiDescriptorCollection#HLT_MURoIs",
268 "TrigRoiDescriptorCollection#HLT_eEMRoIs",
269 "TrigRoiDescriptorCollection#HLT_eTAURoIs",
270 "TrigRoiDescriptorCollection#HLT_jTAURoIs",
271 "TrigRoiDescriptorCollection#HLT_cTAURoIs",
272 "TrigRoiDescriptorCollection#HLT_jEMRoIs",
273 "TrigRoiDescriptorCollection#HLT_jJRoIs",
274 "TrigRoiDescriptorCollection#HLT_jLJRoIs",
275 "TrigRoiDescriptorCollection#HLT_gJRoIs",
276 "TrigRoiDescriptorCollection#HLT_gLJRoIs",
277 "TrigRoiDescriptorCollection#HLT_EMRoIs",
278 "TrigRoiDescriptorCollection#HLT_METRoI",
279 "TrigRoiDescriptorCollection#HLT_JETRoI",
280 "TrigRoiDescriptorCollection#HLT_TAURoI",
281 "TrigRoiDescriptorCollection#HLT_Roi_LArPEBHLT",
282 "TrigRoiDescriptorCollection#HLT_Roi_IDCalibPEB",
283 "TrigRoiDescriptorCollection#HLT_Roi_FastElectron",
284 "TrigRoiDescriptorCollection#HLT_Roi_FastElectron_probe",
285 "TrigRoiDescriptorCollection#HLT_Roi_FastElectron_LRT",
286 "TrigRoiDescriptorCollection#HLT_Roi_FastElectron_LRT_probe",
287 "TrigRoiDescriptorCollection#HLT_Roi_FastPhoton",
288 "TrigRoiDescriptorCollection#HLT_Roi_FastPhoton_probe",
289 "TrigRoiDescriptorCollection#HLT_Roi_Bmumux",
290 "TrigRoiDescriptorCollection#MuonCandidates_FS_ROIs",
291 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuon",
292 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuon_probe",
293 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuon_LRT",
294 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuon_LRT_probe",
295 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuonForEF",
296 "TrigRoiDescriptorCollection#HLT_Roi_L2SAMuonForEF_probe",
297 "TrigRoiDescriptorCollection#HLT_Roi_MuonIso",
298 "TrigRoiDescriptorCollection#HLT_Roi_MuonIso_probe",
299 "TrigRoiDescriptorCollection#HLT_Roi_Tau",
300 "TrigRoiDescriptorCollection#HLT_Roi_Tau_probe",
301 "TrigRoiDescriptorCollection#HLT_Roi_TauCore",
302 "TrigRoiDescriptorCollection#HLT_Roi_TauCore_probe",
303 "TrigRoiDescriptorCollection#HLT_Roi_TauLRT",
304 "TrigRoiDescriptorCollection#HLT_Roi_TauLRT_probe",
305 "TrigRoiDescriptorCollection#HLT_Roi_TauIso",
306 "TrigRoiDescriptorCollection#HLT_Roi_TauIso_probe",
307 "TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT",
308 "TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT_probe",
309 "TrigRoiDescriptorCollection#HLT_Roi_JetPEBPhysicsTLA",
310 "TrigRoiDescriptorCollection#HLT_Roi_DV",
311 "TrigRoiDescriptorCollection#HLT_Roi_Bjet",
312 "TrigRoiDescriptorCollection#HLT_Roi_FS",
313 "TrigRoiDescriptorCollection#HLT_Roi_JetSuper",
314 "TrigRoiDescriptorCollection#HLT_Roi_DJ",
315 "TrigInDetTrackTruthMap#TrigInDetTrackTruthMap" ]
317 TRIG8SlimmingHelper.ExtraVariables += [
318 "Electrons.Tight.Medium.Loose.LHTight.LHMedium.LHLoose",
319 "egammaClusters.phi_sampl.eta0.phi0",
320 "TruthPrimaryVertices.t.x.y.z",
321 "PrimaryVertices.t.x.y.z.numberDoF.chiSquared.covariance.trackParticleLinks",
322 "InDetTrackParticles.d0.z0.vz.vx.vy.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.hitPattern.trackFitter.patternRecoInfo.numberDoF.numberOfTRTHits.numberOfTRTOutliers.numberOfBLayerHits.expectBLayerHit.numberOfPixelDeadSensors.numberOfSCTDeadSensors.numberOfTRTHighThresholdHits.expectInnermostPixelLayerHit",
323 "GSFTrackParticles.d0.z0.vz.vx.vy.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.numberOfPixelHoles.numberOfSCTHoles.numberDoF.chiSquared.trackFitter.patternRecoInfo.hitPattern.numberOfTRTHits.numberOfTRTOutliers.numberOfBLayerHits.expectBLayerHit.numberOfPixelDeadSensors.numberOfSCTDeadSensors.numberOfTRTHighThresholdHits.expectInnermostPixelLayerHit",
324 "EventInfo.hardScatterVertexLink.timeStampNSOffset",
325 "TauJets.dRmax.etOverPtLeadTrk",
326 "HLT_AntiKt4EMTopoJets_subjesIS.m.pt.eta.phi"]
327 if flags.Tracking.doLargeD0:
328 TRIG8SlimmingHelper.ExtraVariables += [
329 "LRTElectrons.Tight.Medium.Loose.LHTight.LHMedium.LHLoose",
330 "LRTegammaClusters.phi_sampl.eta0.phi0",
331 "InDetLargeD0TrackParticles.d0.z0.vz.vx.vy.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.hitPattern.trackFitter.patternRecoInfo.numberDoF.numberOfTRTHits.numberOfTRTOutliers.numberOfBLayerHits.expectBLayerHit.numberOfPixelDeadSensors.numberOfSCTDeadSensors.numberOfTRTHighThresholdHits.expectInnermostPixelLayerHit",
332 "LRTGSFTrackParticles.d0.z0.vz.vx.vy.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.numberOfPixelHoles.numberOfSCTHoles.numberDoF.chiSquared.trackFitter.patternRecoInfo.hitPattern.numberOfTRTHits.numberOfTRTOutliers.numberOfBLayerHits.expectBLayerHit.numberOfPixelDeadSensors.numberOfSCTDeadSensors.numberOfTRTHighThresholdHits.expectInnermostPixelLayerHit"]
336 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
337 addTruth3ContentToSlimmerTool(TRIG8SlimmingHelper)
338 TRIG8SlimmingHelper.AllVariables += [
'TruthHFWithDecayParticles',
'TruthHFWithDecayVertices',
'TruthCharm',
'TruthPileupParticles',
'InTimeAntiKt4TruthJets',
'OutOfTimeAntiKt4TruthJets']
339 TRIG8SlimmingHelper.ExtraVariables += [
"Electrons.TruthLink",
342 if flags.Tracking.doLargeD0:
343 TRIG8SlimmingHelper.ExtraVariables += [
"LRTElectrons.TruthLink",
344 "MuonsLRT.TruthLink"]
347 TRIG8SlimmingHelper.IncludeTriggerNavigation =
True
348 TRIG8SlimmingHelper.IncludeAdditionalTriggerContent =
True
349 TRIG8SlimmingHelper.IncludeJetTriggerContent =
False
350 TRIG8SlimmingHelper.IncludeMuonTriggerContent =
False
351 TRIG8SlimmingHelper.IncludeEGammaTriggerContent =
False
352 TRIG8SlimmingHelper.IncludeTauTriggerContent =
False
353 TRIG8SlimmingHelper.IncludeEtMissTriggerContent =
False
354 TRIG8SlimmingHelper.IncludeBJetTriggerContent =
False
355 TRIG8SlimmingHelper.IncludeBPhysTriggerContent =
False
356 TRIG8SlimmingHelper.IncludeMinBiasTriggerContent =
False
360 if flags.Trigger.EDMVersion == 2:
361 from DerivationFrameworkLLP.LLPToolsConfig
import LLP1TriggerMatchingToolRun2Cfg
362 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
363 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TRIG8SlimmingHelper,
364 OutputContainerPrefix =
"TrigMatch_",
365 TriggerList = TRIG8TriggerListsHelper.Run2TriggerNamesTau)
366 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TRIG8SlimmingHelper,
367 OutputContainerPrefix =
"TrigMatch_",
368 TriggerList = TRIG8TriggerListsHelper.Run2TriggerNamesNoTau)
370 if flags.Tracking.doLargeD0:
372 acc.merge(LLP1TriggerMatchingToolRun2Cfg(
374 name =
"LRTTriggerMatchingTool",
375 OutputContainerPrefix =
"LRTTrigMatch_",
376 TriggerList = TRIG8TriggerListsHelper.Run2TriggerNamesNoTau,
377 InputElectrons=TRIG8MergedElectronContainer,
378 InputMuons=TRIG8MergedMuonContainer))
380 AddRun2TriggerMatchingToSlimmingHelper(
381 SlimmingHelper = TRIG8SlimmingHelper,
382 OutputContainerPrefix =
"LRTTrigMatch_",
383 TriggerList = TRIG8TriggerListsHelper.Run2TriggerNamesNoTau,
384 InputElectrons=TRIG8MergedElectronContainer,
385 InputMuons=TRIG8MergedMuonContainer)
388 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
389 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
390 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(TRIG8SlimmingHelper)
393 TRIG8ItemList = TRIG8SlimmingHelper.GetItemList()
394 acc.merge(OutputStreamCfg(flags,
"DAOD_TRIG8", ItemList=TRIG8ItemList, AcceptAlgs=[
"TRIG8Kernel"]))
395 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_TRIG8", AcceptAlgs=[
"TRIG8Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))