16def TRIG9KernelCfg(flags, name='TRIG9Kernel', **kwargs):
17 """Configure the derivation framework driving algorithm (kernel) for TRIG9"""
18 acc = ComponentAccumulator()
19
20
21 augmentationTools = [ ]
22
23
24 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
25 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
26
27 from DerivationFrameworkTau.TauCommonConfig import AddTauAugmentationCfg
28 acc.merge(AddTauAugmentationCfg(flags, prefix="TRIG9", doGNTauLoose=True))
29
30 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
31 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod
32
33
34 allperiods = TriggerPeriod.future2e34
35 TriggerAPI.setConfigFlags(flags)
36 trig_all = list(TriggerAPI.getAllHLT(allperiods).keys())
37
38
39 TriggerListsHelper = kwargs['TriggerListsHelper']
40 trig_all += TriggerListsHelper.Run3TriggerNames
41
42
43
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(
47 flags,
48 name = 'TRIG9TrackParticleThinningTool',
49 StreamName = kwargs['StreamName'],
50 SelectionString = tp_thinning_expression,
51 InDetTrackParticlesKey = "InDetTrackParticles"))
52
53
54 from DerivationFrameworkInDet.InDetToolsConfig import MuonTrackParticleThinningCfg
55 TRIG9MuonTrackParticleThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
56 flags,
57 name = 'TRIG9MuonTrackParticleThinningTool',
58 StreamName = kwargs['StreamName'],
59 MuonKey = "Muons",
60 InDetTrackParticlesKey = "InDetTrackParticles"))
61
62
63 from DerivationFrameworkTau.TauCommonConfig import TauThinningCfg
64
65 tau_thinning_expression = "( TauJets.pt >= 20*GeV && abs(TauJets.eta) < 2.5 && abs(TauJets.charge)==1.0 && (TauJets.nTracks == 1 || TauJets.nTracks == 3) )"
66
67 TRIG9TauJetThinningTool = acc.getPrimaryAndMerge(TauThinningCfg(
68 flags,
69 name = 'TRIG9TauJetThinningTool',
70 StreamName = kwargs['StreamName'],
71 Taus = "TauJets",
72 TauTracks = "TauTracks",
73 TrackParticles = "InDetTrackParticles",
74 TauNeutralPFOs = "TauNeutralParticleFlowObjects",
75 TauSecondaryVertices = "TauSecondaryVertices",
76 SelectionString = tau_thinning_expression))
77
78
79 thinningTools = [
80 TRIG9TrackParticleThinningTool,
81 TRIG9MuonTrackParticleThinningTool,
82 TRIG9TauJetThinningTool,
83 ]
84
85
86 skimmingTools = []
87
88
89 tauProngs13 = "( abs(TauJets.charge)==1.0 && (TauJets.nTracks == 1 || TauJets.nTracks == 3) )"
90
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+')'
97
98 EventSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool(
99 name="EventSkimmingTool", expression=skim_expression,
100 )
101 acc.addPublicTool(EventSkimmingTool)
102 skimmingTools.append(EventSkimmingTool)
103
104
105 trig_keys = ['mediumRNN','mediumGNTau']
106
107 additional_triggers = [
108 "HLT_mu24_ivarmedium_L1MU14FCH",
109 "HLT_mu26_ivarmedium_L1MU14FCH",
110 "HLT_e26_lhtight_ivarloose_L1EM22VHI",
111 "HLT_e26_lhtight_ivarloose_L1eEM26M",
112 ]
113 trig_keys += additional_triggers
114 triggers = [t for t in trig_all for k in trig_keys if k in t]
115
116
117 trig_veto = ['HLT_g','HLT_e17_','HLT_e24_','HLT_mu14_',]
118 final_triggers = [t for t in triggers for k in trig_veto if k not in t]
119
120
121 final_triggers = sorted(list(
set(final_triggers)))
122 print(
'TRIG9 list of triggers used for skimming:')
123 for trig
in final_triggers:
print(trig)
124
125 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
126 TRIG9TriggerSkimmingTool = TriggerSkimmingTool(name = "TRIG9TriggerPreSkimmingTool",
127 TriggerListAND = [],
128 TriggerListOR = final_triggers)
129 acc.addPublicTool(TRIG9TriggerSkimmingTool)
130
131 skimmingTools.append(TRIG9TriggerSkimmingTool)
132
133 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
134 acc.addEventAlgo(DerivationKernel(name,
135 SkimmingTools = skimmingTools,
136 ThinningTools = thinningTools,
137 AugmentationTools = augmentationTools))
138
139 return acc
140
141
void print(char *figname, TCanvas *c1)