17 """Configure the derivation framework driving algorithm (kernel) for TRIG9"""
18 acc = ComponentAccumulator()
21 augmentationTools = [ ]
24 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
25 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
27 from DerivationFrameworkTau.TauCommonConfig
import AddTauAugmentationCfg
28 acc.merge(AddTauAugmentationCfg(flags, wp=
"GNTauLoose"))
30 from TriggerMenuMT.TriggerAPI.TriggerAPI
import TriggerAPI
31 from TriggerMenuMT.TriggerAPI.TriggerEnums
import TriggerPeriod
34 allperiods = TriggerPeriod.future2e34
35 TriggerAPI.setConfigFlags(flags)
36 trig_all = list(TriggerAPI.getAllHLT(allperiods).keys())
39 TriggerListsHelper = kwargs[
'TriggerListsHelper']
40 trig_all += TriggerListsHelper.Run3TriggerNames
44 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
45 tp_thinning_expression =
"InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta) < 3.0*mm && InDetTrackParticles.pt > 10*GeV"
46 TRIG9TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
48 name =
'TRIG9TrackParticleThinningTool',
49 StreamName = kwargs[
'StreamName'],
50 SelectionString = tp_thinning_expression,
51 InDetTrackParticlesKey =
"InDetTrackParticles"))
54 from DerivationFrameworkInDet.InDetToolsConfig
import MuonTrackParticleThinningCfg
55 TRIG9MuonTrackParticleThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
57 name =
'TRIG9MuonTrackParticleThinningTool',
58 StreamName = kwargs[
'StreamName'],
60 InDetTrackParticlesKey =
"InDetTrackParticles"))
63 from DerivationFrameworkTau.TauCommonConfig
import TauThinningCfg
65 tau_thinning_expression =
"( TauJets.pt >= 20*GeV && abs(TauJets.eta) < 2.5 && abs(TauJets.charge)==1.0 && (TauJets.nTracks == 1 || TauJets.nTracks == 3) )"
67 TRIG9TauJetThinningTool = acc.getPrimaryAndMerge(TauThinningCfg(
69 name =
'TRIG9TauJetThinningTool',
70 StreamName = kwargs[
'StreamName'],
72 TauTracks =
"TauTracks",
73 TrackParticles =
"InDetTrackParticles",
74 TauNeutralPFOs =
"TauNeutralParticleFlowObjects",
75 TauSecondaryVertices =
"TauSecondaryVertices",
76 SelectionString = tau_thinning_expression))
80 TRIG9TrackParticleThinningTool,
81 TRIG9MuonTrackParticleThinningTool,
82 TRIG9TauJetThinningTool,
89 tauProngs13 =
"( abs(TauJets.charge)==1.0 && (TauJets.nTracks == 1 || TauJets.nTracks == 3) )"
91 e22 =
'(count( Electrons.pt > 22.0*GeV && abs(Electrons.eta) < 2.5 && Electrons.DFCommonElectronsLHLoose) >= 1)'
92 mu18 =
'(count( Muons.pt > 18.0*GeV && abs(Muons.eta) < 2.5 && Muons.DFCommonMuonPassPreselection) >= 1)'
93 tau20 =
'(count( TauJets.pt > 20.0*GeV && abs(TauJets.eta) < 2.5 && '+tauProngs13+
' && (TauJets.DFTauRNNLoose || TauJets.DFTauGNTauLoose) ) >= 1)'
94 mutau =
'('+mu18+
' && '+tau20+
')'
95 etau =
'('+e22+
' && '+tau20+
')'
96 skim_expression =
'('+mutau+
') || ('+etau+
')'
98 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
99 xAODStringSkimmingToolCfg)
100 EventSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
101 flags, name=
"EventSkimmingTool", expression=skim_expression))
102 skimmingTools.append(EventSkimmingTool)
104 if flags.Trigger.EDMVersion >= 0:
106 trig_keys = [
'mediumRNN',
'mediumGNTau']
108 additional_triggers = [
109 "HLT_mu24_ivarmedium_L1MU14FCH",
110 "HLT_mu26_ivarmedium_L1MU14FCH",
111 "HLT_e26_lhtight_ivarloose_L1EM22VHI",
112 "HLT_e26_lhtight_ivarloose_L1eEM26M",
114 trig_keys += additional_triggers
115 triggers = [t
for t
in trig_all
for k
in trig_keys
if k
in t]
118 trig_veto = [
'HLT_g',
'HLT_e17_',
'HLT_e24_',
'HLT_mu14_',]
119 final_triggers = [t
for t
in triggers
for k
in trig_veto
if k
not in t]
122 final_triggers = sorted(list(
set(final_triggers)))
123 print(
'TRIG9 list of triggers used for skimming:')
124 for trig
in final_triggers:
print(trig)
126 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
127 TRIG9TriggerSkimmingTool = TriggerSkimmingTool(name =
"TRIG9TriggerPreSkimmingTool",
129 TriggerListOR = final_triggers)
130 acc.addPublicTool(TRIG9TriggerSkimmingTool)
132 skimmingTools.append(TRIG9TriggerSkimmingTool)
134 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
135 acc.addEventAlgo(DerivationKernel(name,
136 SkimmingTools = skimmingTools,
137 ThinningTools = thinningTools,
138 AugmentationTools = augmentationTools))
145 acc = ComponentAccumulator()
151 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
152 TRIG9TriggerListsHelper = TriggerListsHelper(flags)
155 acc.merge(
TRIG9KernelCfg(flags, name=
"TRIG9Kernel", StreamName =
'StreamDAOD_TRIG9', TriggerListsHelper = TRIG9TriggerListsHelper))
161 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
162 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
163 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
165 TRIG9SlimmingHelper =
SlimmingHelper(
"TRIG9SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
167 TRIG9SlimmingHelper.SmartCollections = [
"EventInfo",
172 "InDetTrackParticles",
173 "AntiKt4EMPFlowJets",
174 "MET_Baseline_AntiKt4EMPFlow",
179 TRIG9SlimmingHelper.StaticContent = [
180 "TrigRoiDescriptorCollection#HLT_eTAURoIs",
181 "TrigRoiDescriptorCollection#HLT_jTAURoIs",
182 "TrigRoiDescriptorCollection#HLT_cTAURoIs",
183 "TrigRoiDescriptorCollection#HLT_TAURoI",
184 "TrigRoiDescriptorCollection#HLT_Roi_Tau",
185 "TrigRoiDescriptorCollection#HLT_Roi_Tau_probe",
186 "TrigRoiDescriptorCollection#HLT_Roi_TauCore",
187 "TrigRoiDescriptorCollection#HLT_Roi_TauCore_probe",
188 "TrigRoiDescriptorCollection#HLT_Roi_TauIso",
189 "TrigRoiDescriptorCollection#HLT_Roi_TauIso_probe",
192 TRIG9SlimmingHelper.ExtraVariables += [
193 "TruthPrimaryVertices.t.x.y.z",
194 "PrimaryVertices.t.x.y.z.numberDoF.chiSquared.covariance.trackParticleLinks",
195 "EventInfo.hardScatterVertexLink.timeStampNSOffset",
198 TRIG9SlimmingHelper.AllVariables += [
'HLT_TrigTauRecMerged_MVA',
'HLT_tautrack_MVA']
202 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
203 addTruth3ContentToSlimmerTool(TRIG9SlimmingHelper)
204 TRIG9SlimmingHelper.AllVariables += [
'InTimeAntiKt4TruthJets',
'OutOfTimeAntiKt4TruthJets']
205 TRIG9SlimmingHelper.ExtraVariables += [
"Electrons.TruthLink",
209 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import AddTauAndDownstreamParticlesCfg
210 acc.merge(AddTauAndDownstreamParticlesCfg(flags))
211 TRIG9SlimmingHelper.AllVariables += [
'TruthTausWithDecayParticles',
'TruthTausWithDecayVertices']
217 TRIG9SlimmingHelper.IncludeTriggerNavigation =
True
218 TRIG9SlimmingHelper.IncludeAdditionalTriggerContent =
True
219 TRIG9SlimmingHelper.IncludeJetTriggerContent =
False
220 TRIG9SlimmingHelper.IncludeMuonTriggerContent =
False
221 TRIG9SlimmingHelper.IncludeEGammaTriggerContent =
False
222 TRIG9SlimmingHelper.IncludeTauTriggerContent =
False
223 TRIG9SlimmingHelper.IncludeEtMissTriggerContent =
False
224 TRIG9SlimmingHelper.IncludeBJetTriggerContent =
False
225 TRIG9SlimmingHelper.IncludeBPhysTriggerContent =
False
226 TRIG9SlimmingHelper.IncludeMinBiasTriggerContent =
False
230 if flags.Trigger.EDMVersion == 2:
231 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
232 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TRIG9SlimmingHelper,
233 OutputContainerPrefix =
"TrigMatch_",
234 TriggerList = TRIG9TriggerListsHelper.Run2TriggerNamesTau)
235 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TRIG9SlimmingHelper,
236 OutputContainerPrefix =
"TrigMatch_",
237 TriggerList = TRIG9TriggerListsHelper.Run2TriggerNamesNoTau)
239 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
240 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
241 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(TRIG9SlimmingHelper)
244 TRIG9ItemList = TRIG9SlimmingHelper.GetItemList()
245 acc.merge(OutputStreamCfg(flags,
"DAOD_TRIG9", ItemList=TRIG9ItemList, AcceptAlgs=[
"TRIG9Kernel"]))
246 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_TRIG9", AcceptAlgs=[
"TRIG9Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TruthMetaData]))