ATLAS Offline Software
Loading...
Searching...
No Matches
LLPToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3#==============================================================================
4# Provides configs for the tools used for LLP Derivations
5#==============================================================================
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9from AthenaConfiguration.Enums import LHCPeriod
10
11# Thinning for VSI tracks
12def VSITrackParticleThinningCfg(flags, name, **kwargs):
13 """Configure the track particle merger tool"""
14 acc = ComponentAccumulator()
15 VSITrackParticleThinning = CompFactory.DerivationFramework.VSITrackParticleThinning
16 acc.addPublicTool(VSITrackParticleThinning(name, **kwargs),
17 primary = True)
18 return acc
19
20# Thinning for Std tracks in jets
21def JetTrackParticleThinningCfg(flags, name, **kwargs):
22 """Configure the track particle merger tool"""
23 acc = ComponentAccumulator()
24 JetTrackParticleThinning = CompFactory.DerivationFramework.JetTrackParticleThinning
25 acc.addPublicTool(JetTrackParticleThinning(name, **kwargs),
26 primary = True)
27 return acc
28
29# Thinning for LRT tracks in jets
30def JetLargeD0TrackParticleThinningCfg(flags, name, **kwargs):
31 """Configure the track particle merger tool"""
32 acc = ComponentAccumulator()
33 JetLargeD0TrackParticleThinning = CompFactory.DerivationFramework.JetLargeD0TrackParticleThinning
34 acc.addPublicTool(JetLargeD0TrackParticleThinning(name, **kwargs),
35 primary = True)
36 return acc
37
38# RC jet substructure computation tool
39def RCJetSubstructureAugCfg(flags, name, **kwargs):
40 """Configure the RC jet substructure computation tool"""
41 acc = ComponentAccumulator()
42 suffix = kwargs.pop("Suffix", "")
43 if not suffix:
44 raise AttributeError("Suffix not set!")
45 kwargs.setdefault("dec_Qw", "Qw_" + suffix)
46 kwargs.setdefault("dec_Tau1", "Tau1_" + suffix)
47 kwargs.setdefault("dec_Tau2", "Tau2_" + suffix)
48 kwargs.setdefault("dec_Tau3", "Tau3_" + suffix)
49 kwargs.setdefault("dec_Tau4", "Tau4_" + suffix)
50 kwargs.setdefault("dec_Tau21", "Tau21_" + suffix)
51 kwargs.setdefault("dec_Tau32", "Tau32_" + suffix)
52 kwargs.setdefault("dec_Split12", "Split12_" + suffix)
53 kwargs.setdefault("dec_Split23", "Split23_" + suffix)
54 kwargs.setdefault("dec_Split34", "Split34_" + suffix)
55 kwargs.setdefault("dec_ECF1", "ECF1_" + suffix)
56 kwargs.setdefault("dec_ECF2", "ECF2_" + suffix)
57 kwargs.setdefault("dec_ECF3", "ECF3_" + suffix)
58 kwargs.setdefault("dec_ECF4", "ECF4_" + suffix)
59 kwargs.setdefault("dec_C2", "C2_" + suffix)
60 kwargs.setdefault("dec_D2", "D2_" + suffix)
61 kwargs.setdefault("dec_pT", "pT_" + suffix)
62 kwargs.setdefault("dec_m", "m_" + suffix)
63 kwargs.setdefault("dec_NConstits", "NConstits_" + suffix)
64 kwargs.setdefault("dec_eta", "eta_" + suffix)
65 kwargs.setdefault("dec_phi", "phi_" + suffix)
66 kwargs.setdefault("dec_timing", "timing_" + suffix)
67 RCJetSubstructureAug = CompFactory.DerivationFramework.RCJetSubstructureAug
68 acc.addPublicTool(RCJetSubstructureAug(name, **kwargs),
69 primary = True)
70 return acc
71
72# tool to label leading/subleading jets
74 """Configure the RC jet substructure computation tool"""
75 acc = ComponentAccumulator()
76 acc.addPublicTool(CompFactory.DerivationFramework.AugmentationToolLeadingJets(name = "LLP1AugmentationToolLeadingJets"),
77 primary = True)
78 return acc
79
80
81# Vertex constraint tool
82def TrackParametersKVUCfg(flags, name, **kwargs):
83 """Configure the vertex constraint tool"""
84 acc = ComponentAccumulator()
85
86 if "IPEstimator" not in kwargs:
87 from TrkConfig.TrkVertexFitterUtilsConfig import AtlasTrackToVertexIPEstimatorCfg
88 kwargs.setdefault("IPEstimator", acc.popToolsAndMerge(
89 AtlasTrackToVertexIPEstimatorCfg(flags)))
90
91 if "VertexTrackUpdator" not in kwargs:
92 from TrkConfig.TrkVertexFitterUtilsConfig import KalmanVertexTrackUpdatorCfg
93 kwargs.setdefault("VertexTrackUpdator", acc.popToolsAndMerge(
94 KalmanVertexTrackUpdatorCfg(flags, SkipInvertibleCheck = True)))
95
96 if "LinearizedTrackFactory" not in kwargs:
97 from TrkConfig.TrkVertexFitterUtilsConfig import AtlasFullLinearizedTrackFactoryCfg
98 kwargs.setdefault("LinearizedTrackFactory", acc.popToolsAndMerge(
99 AtlasFullLinearizedTrackFactoryCfg(flags)))
100
101 if "TrackExtrapolator" not in kwargs:
102 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
103 kwargs.setdefault("TrackExtrapolator", acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags)))
104
105 acc.setPrivateTools(CompFactory.DerivationFramework.TrackParametersKVU(name, **kwargs))
106 return acc
107
108
109# Calo cell cluster decorator
110def TrackParticleCaloCellDecoratorCfg(flags, name, **kwargs):
111 """Confiure the isolation decorator tool"""
112 acc = ComponentAccumulator()
113 prefix = kwargs.pop("DecorationPrefix", "LLP1")
114 kwargs.setdefault("ClusterAssocContainerName", kwargs["ContainerName"] + "ClusterAssociations")
115 kwargs.setdefault("decCellEtaKey", prefix + "_CaloCellEta")
116 kwargs.setdefault("decCellPhiKey", prefix + "_CaloCellPhi")
117 kwargs.setdefault("decCellRKey", prefix + "_CaloCellR")
118 kwargs.setdefault("decCelldEtaKey", prefix + "_CaloCelldEta")
119 kwargs.setdefault("decCelldPhiKey", prefix + "_CaloCelldPhi")
120 kwargs.setdefault("decCelldRKey", prefix + "_CaloCelldR")
121 kwargs.setdefault("decCellXKey", prefix + "_CaloCellX")
122 kwargs.setdefault("decCellYKey", prefix + "_CaloCellY")
123 kwargs.setdefault("decCellZKey", prefix + "_CaloCellZ")
124 kwargs.setdefault("decCelldXKey", prefix + "_CaloCelldX")
125 kwargs.setdefault("decCelldYKey", prefix + "_CaloCelldY")
126 kwargs.setdefault("decCelldZKey", prefix + "_CaloCelldZ")
127 kwargs.setdefault("decCellTKey", prefix + "_CaloCellTime")
128 kwargs.setdefault("decCellEKey", prefix + "_CaloCellE")
129 kwargs.setdefault("decCellIDKey", prefix + "_CaloCellID")
130 kwargs.setdefault("decCellSamplingKey", prefix + "_CaloCellSampling")
131 kwargs.setdefault("decCellQualityKey", prefix + "_CaloCellQuality")
132 kwargs.setdefault("decCellProvenanceKey", prefix + "_CaloCellProvenance")
133 kwargs.setdefault("decCellGainKey", prefix + "_CaloCellGain")
134 kwargs.setdefault("decCellEneDiffKey", prefix + "_CaloCellEneDiff")
135 kwargs.setdefault("decCellTimeDiffKey", prefix + "_CaloCellTimeDiff")
136 TrackParticleCaloCellDecorator = CompFactory.DerivationFramework.TrackParticleCaloCellDecorator
137 acc.addPublicTool(TrackParticleCaloCellDecorator(name, **kwargs),
138 primary = True)
139 return acc
140
141# high dE/dx and low pT track thinning
142def PixeldEdxTrackParticleThinningCfg(flags, name, **kwargs):
143 """Confiure the lowpT + high dE/dx track thinniing tool"""
144 acc = ComponentAccumulator()
145 PixeldEdxTrackParticleThinning = CompFactory.DerivationFramework.PixeldEdxTrackParticleThinning
146 acc.addPublicTool(PixeldEdxTrackParticleThinning(name, **kwargs),
147 primary = True)
148 return acc
149
150def LLP1TriggerSkimmingToolCfg(flags, name, TriggerListsHelper, **kwargs):
151
152 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
153 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
154 import re
155
156 # This is not all periods! Run 2 and current triggers only
157 allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
158 TriggerAPI.setConfigFlags(flags)
159 trig_el = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, livefraction=0.8)
160 trig_mu = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, livefraction=0.8)
161 trig_g = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.g, livefraction=0.8)
162 trig_xe = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.xe, livefraction=0.8)
163 trig_elmu = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, additionalTriggerType=TriggerType.mu, livefraction=0.8)
164 trig_mug = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, additionalTriggerType=TriggerType.g, livefraction=0.8)
165
166 # Run 3 triggers. Doesn't take into account prescales, so this is overly inclusive. Needs updates to trigger api: ATR-25805
167 all_run3 = TriggerListsHelper.Run3TriggerNames
168 r_run3_nojets = re.compile("(HLT_[1-9]*(j).*)")
169 r_tau = re.compile("HLT_.*tau.*")
170 trig_run3_elmug = []
171 for chain_name in all_run3:
172 result_jets = r_run3_nojets.match(chain_name)
173 result_taus = r_tau.match(chain_name) # no taus in llp1 atm
174 # no perf chains
175 if 'perf' in chain_name.lower(): continue
176 if result_jets is None and result_taus is None: trig_run3_elmug.append(chain_name)
177
178 trig_EJ_Run3 = ["HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1J100", "HLT_j460_a10r_L1J100","HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1gLJ140p0ETA25","HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1SC111-CjJ40","HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1jJ160","HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1SC175-SCjJ10"]
179 trig_VBF_2018 =["HLT_j55_gsc80_bmv2c1070_split_j45_gsc60_bmv2c1085_split_j45_320eta490", "HLT_j45_gsc55_bmv2c1070_split_2j45_320eta490_L1J25.0ETA23_2J15.31ETA49", "HLT_j80_0eta240_j60_j45_320eta490_AND_2j35_gsc45_bmv2c1070_split", "HLT_ht300_2j40_0eta490_invm700_L1HT150-J20s5.ETA31_MJJ-400-CF_AND_2j35_gsc45_bmv2c1070_split", "HLT_j70_j50_0eta490_invm1100j70_dphi20_deta40_L1MJJ-500-NFF"]
180 trig_VBF_Run3 = ["HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1MJJ500NFF","HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1jMJJ-500-NFF"]
181 trig_dispjet_Run3 = ["HLT_j180_hitdvjet260_tight_L1J100", "HLT_j180_dispjet50_3d2p_dispjet50_1p_L1J100", "HLT_j180_2dispjet50_3d2p_L1J100","HLT_j180_2dispjet50_3d2p_L1jJ160", "HLT_j180_dispjet50_3d2p_dispjet50_1p_L1jJ160", "HLT_j180_dispjet90_x3d1p_L1jJ160", "HLT_j180_dispjet100_x3d1p_L1jJ160", "HLT_j180_2dispjet50_3d2p_L1J100", "HLT_j180_dispjet50_3d2p_dispjet50_1p_L1J100", "HLT_j180_dispjet90_x3d1p_L1J100", "HLT_j180_dispjet90_x3d1p_L1J100", "HLT_j180_dispjet100_x3d1p_L1J100", "HLT_j180_2dispjet50_2p_L1jJ160", "HLT_j180_2dispjet50_2p_L1J100"]
182 trig_dedx_Run3 = ["HLT_xe80_tcpufit_dedxtrk25_medium_L1XE50", "HLT_xe80_tcpufit_dedxtrk50_medium_L1XE50", "HLT_xe80_tcpufit_dedxtrk25_medium_L1XE55", "HLT_xe80_tcpufit_dedxtrk50_medium_L1XE55"]
183 trig_dt_Run3 = ["HLT_xe80_tcpufit_distrk20_tight_L1XE50", "HLT_xe80_tcpufit_distrk20_medium_L1XE50", "HLT_xe80_tcpufit_distrk20_tight_L1XE55", "HLT_xe80_tcpufit_distrk20_medium_L1XE55"]
184 trig_isohighpt_Run3 = ["HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE50", "HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1XE50", "HLT_xe80_tcpufit_isotrk120_medium_iaggrloose_L1XE50", "HLT_xe80_tcpufit_isotrk140_medium_iaggrmedium_L1XE50", "HLT_xe80_tcpufit_isotrk120_medium_iaggrmedium_L1jXE100", "HLT_xe50_tcpufit_isotrk120_medium_iaggrmedium_L1jXE100"]
185 trig_latemu = ["HLT_mu10_mgonly_L1LATEMU10_J50", "HLT_mu10_mgonly_L1LATEMU10_XE50", "HLT_mu10_mgonly_L1LATE-MU10_XE40", "HLT_mu10_lateMu_L1LATE-MU8F_jJ90", "HLT_mu10_lateMu_L1LATE-MU8F_jXE70"]
186 trig_calratio_dispjet_run3 = ["HLT_j30_CLEANllp_momemfrac006_calratio_L1jJ160","HLT_j30_CLEANllp_momemfrac006_calratiormbib_L1jJ160","HLT_j30_CLEANllp_momemfrac006_calratio_L1eTAU140","HLT_j30_CLEANllp_momemfrac006_calratiormbib_L1eTAU140","HLT_j30_CLEANllp_momemfrac006_calratio_L1eTAU80","HLT_j30_CLEANllp_momemfrac006_calratiormbib_L1eTAU80","HLT_j30_CLEANllp_momemfrac006_calratio_L1eTAU60_EMPTY","HLT_j30_CLEANllp_momemfrac006_calratiormbib_L1eTAU60_EMPTY","HLT_j30_CLEANllp_momemfrac006_calratio_L1eTAU60_UNPAIRED_ISO","HLT_j30_CLEANllp_momemfrac006_calratiormbib_L1eTAU60_UNPAIRED_ISO","HLT_j30_CLEANllp_momemfrac012_calratiovar_roiftf_preselj20emf12_L1jJ160"]
187 trig_multijet_ht_data22_23 = ["HLT_2j250c_j120c_pf_ftf_presel2j180XXj80_L1J100", "HLT_3j200_pf_ftf_L1J100", "HLT_4j115_pf_ftf_presel4j85_L13J50", "HLT_4j110_pf_ftf_presel4j85_L13J50", "HLT_4j120_L13J50", "HLT_5j70c_pf_ftf_presel5c50_L14J15", "HLT_5j65c_pf_ftf_presel5c55_L14J15", "HLT_5j85_pf_ftf_presel5j50_L14J15", "HLT_5j80_pf_ftf_presel5j50_L14J15", "HLT_5j80_pf_ftf_presel5j55_L14J15", "HLT_6j35c_020jvt_pf_ftf_presel6c25_L14J15", "HLT_6j55c_pf_ftf_presel6j40_L14J15", "HLT_6j70_pf_ftf_presel6j40_L14J15", "HLT_7j45_pf_ftf_presel7j30_L14J15", "HLT_10j40_pf_ftf_presel7j30_L14J15", "HLT_j0_HT1000_L1HT190-J15s5pETA21", "HLT_j0_HT1000_L1J100", "HLT_j0_HT1000_pf_ftf_preselcHT450_L1HT190-J15s5pETA21", "HLT_j0_HT940_pf_ftf_preselcHT450_L1HT190-J15s5pETA21", "HLT_j0_HT1000_pf_ftf_preselj180_L1HT190-J15s5pETA21", "HLT_j0_HT940_pf_ftf_preselj180_L1HT190-J15s5pETA21", "HLT_j0_HT1000_pf_ftf_preselj180_L1J100"]
188 trig_delayedjets_Run3 = ["HLT_2j100_2timeSig15_L1jJ90", "HLT_2j45_2j55_3timeSig15_L14jJ40", "HLT_j200_2timing15_L1jJ160", "HLT_j200_3timeSig15_L1jJ160", "HLT_j220_j150_2timing15_L1jJ160", "HLT_j250_2timing15_L1jJ160", "HLT_j250_3timeSig15_L1jJ160"]
189
190 triggers = trig_el + trig_mu + trig_g + trig_elmu + trig_mug + trig_VBF_2018 + trig_EJ_Run3 + trig_run3_elmug + trig_dispjet_Run3 + trig_xe + trig_multijet_ht_data22_23 + trig_dedx_Run3 + trig_dt_Run3 + trig_isohighpt_Run3 + trig_latemu + trig_VBF_Run3 + trig_calratio_dispjet_run3 + trig_delayedjets_Run3
191
192 #remove duplicates
193 triggers = sorted(list(set(triggers)))
194
195 acc = ComponentAccumulator()
196 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
197 acc.addPublicTool(TriggerSkimmingTool(name,
198 TriggerListAND = [],
199 TriggerListOR = triggers,
200 **kwargs),
201 primary = True)
202 return acc
203
204
205def LLP1TriggerMatchingToolRun2Cfg(flags, name, **kwargs):
206 """Configure the common trigger matching for run 2 DAODs"""
207
208 triggerList = kwargs['TriggerList']
209 outputContainerPrefix = kwargs['OutputContainerPrefix']
210
211 kwargs.setdefault('InputElectrons', 'LRTElectrons')
212 kwargs.setdefault('InputMuons', 'MuonsLRT')
213 kwargs.setdefault('DRThreshold', None)
214
215 acc = ComponentAccumulator()
216
217 # Create trigger matching decorations
218 from DerivationFrameworkTrigger.TriggerMatchingToolConfig import TriggerMatchingToolCfg
219 if kwargs['DRThreshold'] is None:
220 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
221 flags,
222 name=name,
223 ChainNames = triggerList,
224 OutputContainerPrefix = outputContainerPrefix,
225 InputElectrons = kwargs['InputElectrons'],
226 InputMuons = kwargs['InputMuons']))
227 else:
228 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
229 flags,
230 name=name,
231 ChainNames = triggerList,
232 OutputContainerPrefix = outputContainerPrefix,
233 DRThreshold = kwargs['DRThreshold'],
234 InputElectrons = kwargs['InputElectrons'],
235 InputMuons = kwargs['InputMuons']))
236 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
237 acc.addEventAlgo(CommonAugmentation(f"{outputContainerPrefix}TriggerMatchingKernel",
238 AugmentationTools=[PhysCommonTriggerMatchingTool]))
239 return(acc)
240
241def LRTMuonMergerAlg(flags, name="LLP1_MuonLRTMergingAlg", **kwargs):
242 acc = ComponentAccumulator()
243 alg = CompFactory.CP.MuonLRTMergingAlg(name, **kwargs)
244 acc.addEventAlgo(alg, primary=True)
245 return acc
246
247def ZeroPixelHitMuonMergerAlgCfg(flags, name='LLP1_MuonZPHMergingAlg', **kwargs):
248 """Configure for merging ZeroPixelHitMuons with the LRTMerged muons for vertexing"""
249
250 kwargs.setdefault('InputMuonContainers', ['Muons', 'MuonsLRT', 'ZeroPixelHitMuons'])
251 kwargs.setdefault('OutputMuonLocation', 'StdWithLRTMuons_wZPH')
252 kwargs.setdefault("CreateViewCollection", True)
253
254 acc = ComponentAccumulator()
255 alg = CompFactory.CP.MuonContainerMergingAlg(name, **kwargs)
256 acc.addEventAlgo(alg, primary=True)
257 return acc
258
259
260def LRTElectronMergerAlg(flags, name="LLP1_ElectronLRTMergingAlg", **kwargs):
261 acc = ComponentAccumulator()
262 alg = CompFactory.CP.ElectronLRTMergingAlg(name, **kwargs)
263 acc.addEventAlgo(alg, primary=True)
264 return acc
265
266# Photon IsEM setup for LLP1
268 acc = ComponentAccumulator()
269 from ROOT import egammaPID
270 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
271 AsgPhotonIsEMSelectorCfg,
272 )
273
274 isFullSim = flags.Sim.ISF.Simulator.isFullSim() if flags.Input.isMC else False
275
276 if isFullSim:
277 from EGammaVariableCorrection.EGammaVariableCorrectionConfig import (
278 PhotonVariableCorrectionToolCfg,
279 )
280
281 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
282 PhotonVariableCorrectionToolCfg(flags))
283 acc.addPublicTool(PhotonVariableCorrectionTool)
284
285 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
286 AsgPhotonIsEMSelectorCfg(
287 flags, name="PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
288 )
289 )
290 acc.addPublicTool(PhotonIsEMSelectorMedium)
291
292 return acc
293
294# Electron LLH setup for LLP1
296
297 acc = ComponentAccumulator()
298
299 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import AsgElectronLikelihoodToolCfg
300 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu
301 from ROOT import LikeEnum
302
303 lhMenu = electronLHmenu.offlineMC21
304 if flags.GeoModel.Run is LHCPeriod.Run2:
305 lhMenu = electronLHmenu.offlineMC20
306
307 ElectronLHSelectorVeryLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
308 flags,
309 name="ElectronLHSelectorVeryLooseNoPix",
310 quality=LikeEnum.VeryLooseLLP,
311 menu=lhMenu)
312 )
313 ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices"
314
315 ElectronLHSelectorLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
316 flags,
317 name="ElectronLHSelectorLooseNoPix",
318 quality=LikeEnum.LooseLLP,
319 menu=lhMenu)
320 )
321 ElectronLHSelectorLooseNoPix.primaryVertexContainer = "PrimaryVertices"
322
323 ElectronLHSelectorMediumNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
324 flags,
325 name="ElectronLHSelectorMediumNoPix",
326 quality=LikeEnum.MediumLLP,
327 menu=lhMenu)
328 )
329 ElectronLHSelectorMediumNoPix.primaryVertexContainer = "PrimaryVertices"
330
331 ElectronLHSelectorTightNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
332 flags,
333 name="ElectronLHSelectorTightNoPix",
334 quality=LikeEnum.TightLLP,
335 menu=lhMenu)
336 )
337 ElectronLHSelectorTightNoPix.primaryVertexContainer = "PrimaryVertices"
338
339 from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronLikelihoodToolWrapperCfg
340
341 # decorate electrons with the output of LH very loose
342 ElectronPassLHVeryLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
343 flags,
344 name="ElectronPassLHVeryLooseNoPix",
345 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
346 EGammaFudgeMCTool="",
347 CutType="",
348 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
349 ContainerName="Electrons",
350 StoreTResult=True)))
351
352 ElectronPassLHVeryLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
353 flags,
354 name="ElectronPassLHVeryLooseNoPixLRT",
355 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
356 EGammaFudgeMCTool="",
357 CutType="",
358 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
359 ContainerName="LRTElectrons",
360 StoreTResult=True)))
361
362 # decorate electrons with the output of LH loose
363 ElectronPassLHLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
364 flags,
365 name="ElectronPassLHLooseNoPix",
366 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
367 EGammaFudgeMCTool="",
368 CutType="",
369 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
370 ContainerName="Electrons",
371 StoreTResult=False)))
372
373 ElectronPassLHLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
374 flags,
375 name="ElectronPassLHLooseNoPixLRT",
376 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
377 EGammaFudgeMCTool="",
378 CutType="",
379 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
380 ContainerName="LRTElectrons",
381 StoreTResult=False)))
382
383 # decorate electrons with the output of LH medium
384 ElectronPassLHMediumNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
385 flags,
386 name="ElectronPassLHMediumNoPix",
387 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
388 EGammaFudgeMCTool="",
389 CutType="",
390 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
391 ContainerName="Electrons",
392 StoreTResult=False)))
393
394 ElectronPassLHMediumNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
395 flags,
396 name="ElectronPassLHMediumNoPixLRT",
397 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
398 EGammaFudgeMCTool="",
399 CutType="",
400 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
401 ContainerName="LRTElectrons",
402 StoreTResult=False)))
403
404 # decorate electrons with the output of LH tight
405 ElectronPassLHTightNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
406 flags,
407 name="ElectronPassLHTightNoPix",
408 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
409 EGammaFudgeMCTool="",
410 CutType="",
411 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
412 ContainerName="Electrons",
413 StoreTResult=False)))
414
415 ElectronPassLHTightNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
416 flags,
417 name="ElectronPassLHTightNoPixLRT",
418 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
419 EGammaFudgeMCTool="",
420 CutType="",
421 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
422 ContainerName="LRTElectrons",
423 StoreTResult=False)))
424
425 LRTEGAugmentationTools = [ElectronPassLHVeryLooseNoPix,
426 ElectronPassLHVeryLooseNoPixLRT,
427 ElectronPassLHLooseNoPix,
428 ElectronPassLHLooseNoPixLRT,
429 ElectronPassLHMediumNoPix,
430 ElectronPassLHMediumNoPixLRT,
431 ElectronPassLHTightNoPix,
432 ElectronPassLHTightNoPixLRT]
433
434 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
435 "LLP1EGammaLRTKernel",
436 AugmentationTools=LRTEGAugmentationTools
437 ))
438
439 return acc
440
441# RecoverZeroPixelHitMuons setup
443 acc = ComponentAccumulator()
444 acc.addEventAlgo(CompFactory.RecoverZeroPixelHitMuons(name="RecoverZeroPixelHitMuons"))
445
446 return acc
STL class.
JetLargeD0TrackParticleThinningCfg(flags, name, **kwargs)
VSITrackParticleThinningCfg(flags, name, **kwargs)
ZeroPixelHitMuonMergerAlgCfg(flags, name='LLP1_MuonZPHMergingAlg', **kwargs)
TrackParametersKVUCfg(flags, name, **kwargs)
LLP1TriggerMatchingToolRun2Cfg(flags, name, **kwargs)
TrackParticleCaloCellDecoratorCfg(flags, name, **kwargs)
LRTMuonMergerAlg(flags, name="LLP1_MuonLRTMergingAlg", **kwargs)
AugmentationToolLeadingJetsCfg(flags)
LRTElectronMergerAlg(flags, name="LLP1_ElectronLRTMergingAlg", **kwargs)
PixeldEdxTrackParticleThinningCfg(flags, name, **kwargs)
RCJetSubstructureAugCfg(flags, name, **kwargs)
LLP1TriggerSkimmingToolCfg(flags, name, TriggerListsHelper, **kwargs)
JetTrackParticleThinningCfg(flags, name, **kwargs)