ATLAS Offline Software
Loading...
Searching...
No Matches
LLPToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 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
38def TauLRTThinningCfg(flags, name, **kwargs):
39 """configure tau thinning"""
40
41 acc = ComponentAccumulator()
42 TauLRTThinningTool = CompFactory.DerivationFramework.TauLRTThinningTool
43 acc.addPublicTool(TauLRTThinningTool(name, **kwargs), primary=True)
44 return acc
45
46# RC jet substructure computation tool
47def RCJetSubstructureAugCfg(flags, name, **kwargs):
48 """Configure the RC jet substructure computation tool"""
49 acc = ComponentAccumulator()
50 suffix = kwargs.pop("Suffix", "")
51 if not suffix:
52 raise AttributeError("Suffix not set!")
53 kwargs.setdefault("dec_Qw", "Qw_" + suffix)
54 kwargs.setdefault("dec_Tau1", "Tau1_" + suffix)
55 kwargs.setdefault("dec_Tau2", "Tau2_" + suffix)
56 kwargs.setdefault("dec_Tau3", "Tau3_" + suffix)
57 kwargs.setdefault("dec_Tau4", "Tau4_" + suffix)
58 kwargs.setdefault("dec_Tau21", "Tau21_" + suffix)
59 kwargs.setdefault("dec_Tau32", "Tau32_" + suffix)
60 kwargs.setdefault("dec_Split12", "Split12_" + suffix)
61 kwargs.setdefault("dec_Split23", "Split23_" + suffix)
62 kwargs.setdefault("dec_Split34", "Split34_" + suffix)
63 kwargs.setdefault("dec_ECF1", "ECF1_" + suffix)
64 kwargs.setdefault("dec_ECF2", "ECF2_" + suffix)
65 kwargs.setdefault("dec_ECF3", "ECF3_" + suffix)
66 kwargs.setdefault("dec_ECF4", "ECF4_" + suffix)
67 kwargs.setdefault("dec_C2", "C2_" + suffix)
68 kwargs.setdefault("dec_D2", "D2_" + suffix)
69 kwargs.setdefault("dec_pT", "pT_" + suffix)
70 kwargs.setdefault("dec_m", "m_" + suffix)
71 kwargs.setdefault("dec_NConstits", "NConstits_" + suffix)
72 kwargs.setdefault("dec_eta", "eta_" + suffix)
73 kwargs.setdefault("dec_phi", "phi_" + suffix)
74 kwargs.setdefault("dec_timing", "timing_" + suffix)
75 RCJetSubstructureAug = CompFactory.DerivationFramework.RCJetSubstructureAug
76 acc.addPublicTool(RCJetSubstructureAug(name, **kwargs),
77 primary = True)
78 return acc
79
80# tool to label leading/subleading jets
82 """Configure the RC jet substructure computation tool"""
83 acc = ComponentAccumulator()
84 acc.addPublicTool(CompFactory.DerivationFramework.AugmentationToolLeadingJets(name = "LLP1AugmentationToolLeadingJets"),
85 primary = True)
86 return acc
87
88
89# Vertex constraint tool
90def TrackParametersKVUCfg(flags, name, **kwargs):
91 """Configure the vertex constraint tool"""
92 acc = ComponentAccumulator()
93
94 if "IPEstimator" not in kwargs:
95 from TrkConfig.TrkVertexFitterUtilsConfig import AtlasTrackToVertexIPEstimatorCfg
96 kwargs.setdefault("IPEstimator", acc.popToolsAndMerge(
97 AtlasTrackToVertexIPEstimatorCfg(flags)))
98
99 if "VertexTrackUpdator" not in kwargs:
100 from TrkConfig.TrkVertexFitterUtilsConfig import KalmanVertexTrackUpdatorCfg
101 kwargs.setdefault("VertexTrackUpdator", acc.popToolsAndMerge(
102 KalmanVertexTrackUpdatorCfg(flags, SkipInvertibleCheck = True)))
103
104 if "LinearizedTrackFactory" not in kwargs:
105 from TrkConfig.TrkVertexFitterUtilsConfig import AtlasFullLinearizedTrackFactoryCfg
106 kwargs.setdefault("LinearizedTrackFactory", acc.popToolsAndMerge(
107 AtlasFullLinearizedTrackFactoryCfg(flags)))
108
109 if "TrackExtrapolator" not in kwargs:
110 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
111 kwargs.setdefault("TrackExtrapolator", acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags)))
112
113 acc.setPrivateTools(CompFactory.DerivationFramework.TrackParametersKVU(name, **kwargs))
114 return acc
115
116
117# Calo cell cluster decorator
118def TrackParticleCaloCellDecoratorCfg(flags, name, **kwargs):
119 """Confiure the isolation decorator tool"""
120 acc = ComponentAccumulator()
121 prefix = kwargs.pop("DecorationPrefix", "LLP1")
122 kwargs.setdefault("ClusterAssocContainerName", kwargs["ContainerName"] + "ClusterAssociations")
123 kwargs.setdefault("decCellEtaKey", prefix + "_CaloCellEta")
124 kwargs.setdefault("decCellPhiKey", prefix + "_CaloCellPhi")
125 kwargs.setdefault("decCellRKey", prefix + "_CaloCellR")
126 kwargs.setdefault("decCelldEtaKey", prefix + "_CaloCelldEta")
127 kwargs.setdefault("decCelldPhiKey", prefix + "_CaloCelldPhi")
128 kwargs.setdefault("decCelldRKey", prefix + "_CaloCelldR")
129 kwargs.setdefault("decCellXKey", prefix + "_CaloCellX")
130 kwargs.setdefault("decCellYKey", prefix + "_CaloCellY")
131 kwargs.setdefault("decCellZKey", prefix + "_CaloCellZ")
132 kwargs.setdefault("decCelldXKey", prefix + "_CaloCelldX")
133 kwargs.setdefault("decCelldYKey", prefix + "_CaloCelldY")
134 kwargs.setdefault("decCelldZKey", prefix + "_CaloCelldZ")
135 kwargs.setdefault("decCellTKey", prefix + "_CaloCellTime")
136 kwargs.setdefault("decCellEKey", prefix + "_CaloCellE")
137 kwargs.setdefault("decCellIDKey", prefix + "_CaloCellID")
138 kwargs.setdefault("decCellSamplingKey", prefix + "_CaloCellSampling")
139 kwargs.setdefault("decCellQualityKey", prefix + "_CaloCellQuality")
140 kwargs.setdefault("decCellProvenanceKey", prefix + "_CaloCellProvenance")
141 kwargs.setdefault("decCellGainKey", prefix + "_CaloCellGain")
142 kwargs.setdefault("decCellEneDiffKey", prefix + "_CaloCellEneDiff")
143 kwargs.setdefault("decCellTimeDiffKey", prefix + "_CaloCellTimeDiff")
144 TrackParticleCaloCellDecorator = CompFactory.DerivationFramework.TrackParticleCaloCellDecorator
145 acc.addPublicTool(TrackParticleCaloCellDecorator(name, **kwargs),
146 primary = True)
147 return acc
148
149# high dE/dx and low pT track thinning
150def PixeldEdxTrackParticleThinningCfg(flags, name, **kwargs):
151 """Confiure the lowpT + high dE/dx track thinniing tool"""
152 acc = ComponentAccumulator()
153 PixeldEdxTrackParticleThinning = CompFactory.DerivationFramework.PixeldEdxTrackParticleThinning
154 acc.addPublicTool(PixeldEdxTrackParticleThinning(name, **kwargs),
155 primary = True)
156 return acc
157
158def LLP1TriggerSkimmingToolCfg(flags, name, TriggerListsHelper, **kwargs):
159
160 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
161 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
162 import re
163
164 # This is not all periods! Run 2 and current triggers only
165 allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
166 TriggerAPI.setConfigFlags(flags)
167 trig_el = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, livefraction=0.8)
168 trig_mu = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, livefraction=0.8)
169 trig_g = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.g, livefraction=0.8)
170 trig_xe = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.xe, livefraction=0.8)
171 trig_elmu = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, additionalTriggerType=TriggerType.mu, livefraction=0.8)
172 trig_mug = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, additionalTriggerType=TriggerType.g, livefraction=0.8)
173
174 # Run 3 triggers. Doesn't take into account prescales, so this is overly inclusive. Needs updates to trigger api: ATR-25805
175 all_run3 = TriggerListsHelper.Run3TriggerNames
176 r_run3_nojets = re.compile("(HLT_[1-9]*(j).*)")
177 r_tau = re.compile("HLT_.*tau.*")
178 trig_run3_elmug = []
179 for chain_name in all_run3:
180 result_jets = r_run3_nojets.match(chain_name)
181 result_taus = r_tau.match(chain_name) # no taus in llp1 atm
182 # no perf chains
183 if 'perf' in chain_name.lower(): continue
184 if result_jets is None and result_taus is None: trig_run3_elmug.append(chain_name)
185
186 trig_EJ_Run3 = ["HLT_j200_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj200_L1J100", "HLT_j460_a10r_L1J100", "HLT_j460_a10r_L1jJ160", "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"]
187 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"]
188 trig_VBF_Run3 = ["HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1MJJ-500-NFF","HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1jMJJ-500-NFF"]
189 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"]
190 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"]
191 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"]
192 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"]
193 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"]
194 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"]
195 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"]
196 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"]
197
198 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
199
200 #remove duplicates
201 triggers = sorted(list(set(triggers)))
202
203 acc = ComponentAccumulator()
204 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
205 acc.addPublicTool(TriggerSkimmingTool(name,
206 TriggerListAND = [],
207 TriggerListOR = triggers,
208 **kwargs),
209 primary = True)
210 return acc
211
212
213def LLP1TriggerMatchingToolRun2Cfg(flags, name, **kwargs):
214 """Configure the common trigger matching for run 2 DAODs"""
215
216 triggerList = kwargs['TriggerList']
217 outputContainerPrefix = kwargs['OutputContainerPrefix']
218
219 kwargs.setdefault('InputElectrons', 'LRTElectrons')
220 kwargs.setdefault('InputMuons', 'MuonsLRT')
221 kwargs.setdefault('DRThreshold', None)
222
223 acc = ComponentAccumulator()
224
225 # Create trigger matching decorations
226 from DerivationFrameworkTrigger.TriggerMatchingToolConfig import TriggerMatchingToolCfg
227 if kwargs['DRThreshold'] is None:
228 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
229 flags,
230 name=name,
231 ChainNames = triggerList,
232 OutputContainerPrefix = outputContainerPrefix,
233 InputElectrons = kwargs['InputElectrons'],
234 InputMuons = kwargs['InputMuons']))
235 else:
236 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
237 flags,
238 name=name,
239 ChainNames = triggerList,
240 OutputContainerPrefix = outputContainerPrefix,
241 DRThreshold = kwargs['DRThreshold'],
242 InputElectrons = kwargs['InputElectrons'],
243 InputMuons = kwargs['InputMuons']))
244 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
245 acc.addEventAlgo(CommonAugmentation(f"{outputContainerPrefix}TriggerMatchingKernel",
246 AugmentationTools=[PhysCommonTriggerMatchingTool]))
247 return(acc)
248
249def LRTMuonMergerAlg(flags, name="LLP1_MuonLRTMergingAlg", **kwargs):
250 acc = ComponentAccumulator()
251 alg = CompFactory.CP.MuonLRTMergingAlg(name, **kwargs)
252 acc.addEventAlgo(alg, primary=True)
253 return acc
254
255def ZeroPixelHitMuonMergerAlgCfg(flags, name='LLP1_MuonZPHMergingAlg', **kwargs):
256 """Configure for merging ZeroPixelHitMuons with the LRTMerged muons for vertexing"""
257
258 kwargs.setdefault('InputMuonContainers', ['Muons', 'MuonsLRT', 'ZeroPixelHitMuons'])
259 kwargs.setdefault('OutputMuonLocation', 'StdWithLRTMuons_wZPH')
260 kwargs.setdefault("CreateViewCollection", True)
261
262 acc = ComponentAccumulator()
263 alg = CompFactory.CP.MuonContainerMergingAlg(name, **kwargs)
264 acc.addEventAlgo(alg, primary=True)
265 return acc
266
267
268def LRTElectronMergerAlg(flags, name="LLP1_ElectronLRTMergingAlg", **kwargs):
269 acc = ComponentAccumulator()
270 prompt = kwargs.setdefault ('PromptElectronLocation', 'Electrons')
271 lrt = kwargs.setdefault ('LRTElectronLocation', 'LRTElectrons')
272 ExtraInputs = kwargs.setdefault ('ExtraInputs', [])
273 from IsolationAlgs.DerivationTrackIsoConfig import iso_vars
274 ExtraInputs += [('xAOD::IParticleContainer', f'{prompt}.{v}')
275 for v in iso_vars()]
276 ExtraInputs += [('xAOD::IParticleContainer', f'{lrt}.{v}')
277 for v in iso_vars()]
278 ExtraInputs += [
279 ('xAOD::IParticleContainer', f'{lrt}.core57cellsEnergyCorrection'),
280 ('xAOD::IParticleContainer', f'{lrt}.ptcone20'),
281 ('xAOD::IParticleContainer', f'{lrt}.neflowisol20'),
282 ('xAOD::IParticleContainer', f'{prompt}.neflowisol20'),
283 ]
284 alg = CompFactory.CP.ElectronLRTMergingAlg \
285 (name,
286 **kwargs)
287 acc.addEventAlgo(alg,
288 primary=True)
289 return acc
290
291# Photon IsEM setup for LLP1
293 acc = ComponentAccumulator()
294 from ROOT import egammaPID
295 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
296 AsgPhotonIsEMSelectorCfg,
297 )
298
299 isFullSim = flags.Sim.ISF.Simulator.isFullSim() if flags.Input.isMC else False
300
301 if isFullSim:
302 from EGammaVariableCorrection.EGammaVariableCorrectionConfig import (
303 PhotonVariableCorrectionToolCfg,
304 )
305
306 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
307 PhotonVariableCorrectionToolCfg(flags))
308 acc.addPublicTool(PhotonVariableCorrectionTool)
309
310 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
311 AsgPhotonIsEMSelectorCfg(
312 flags, name="PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
313 )
314 )
315 acc.addPublicTool(PhotonIsEMSelectorMedium)
316
317 return acc
318
319# Electron LLH setup for LLP1
321
322 acc = ComponentAccumulator()
323
324 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import AsgElectronLikelihoodToolCfg
325 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu
326 from ROOT import LikeEnum
327
328 lhMenu = electronLHmenu.offlineMC21
329 if flags.GeoModel.Run is LHCPeriod.Run2:
330 lhMenu = electronLHmenu.offlineMC20
331
332 ElectronLHSelectorVeryLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
333 flags,
334 name="ElectronLHSelectorVeryLooseNoPix",
335 quality=LikeEnum.VeryLooseLLP,
336 menu=lhMenu)
337 )
338 ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices"
339
340 ElectronLHSelectorLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
341 flags,
342 name="ElectronLHSelectorLooseNoPix",
343 quality=LikeEnum.LooseLLP,
344 menu=lhMenu)
345 )
346 ElectronLHSelectorLooseNoPix.primaryVertexContainer = "PrimaryVertices"
347
348 ElectronLHSelectorMediumNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
349 flags,
350 name="ElectronLHSelectorMediumNoPix",
351 quality=LikeEnum.MediumLLP,
352 menu=lhMenu)
353 )
354 ElectronLHSelectorMediumNoPix.primaryVertexContainer = "PrimaryVertices"
355
356 ElectronLHSelectorTightNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
357 flags,
358 name="ElectronLHSelectorTightNoPix",
359 quality=LikeEnum.TightLLP,
360 menu=lhMenu)
361 )
362 ElectronLHSelectorTightNoPix.primaryVertexContainer = "PrimaryVertices"
363
364 from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronLikelihoodToolWrapperCfg
365
366 # decorate electrons with the output of LH very loose
367 ElectronPassLHVeryLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
368 flags,
369 name="ElectronPassLHVeryLooseNoPix",
370 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
371 EGammaFudgeMCTool="",
372 CutType="",
373 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
374 ContainerName="Electrons",
375 StoreTResult=True)))
376
377 ElectronPassLHVeryLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
378 flags,
379 name="ElectronPassLHVeryLooseNoPixLRT",
380 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
381 EGammaFudgeMCTool="",
382 CutType="",
383 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
384 ContainerName="LRTElectrons",
385 StoreTResult=True)))
386
387 # decorate electrons with the output of LH loose
388 ElectronPassLHLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
389 flags,
390 name="ElectronPassLHLooseNoPix",
391 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
392 EGammaFudgeMCTool="",
393 CutType="",
394 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
395 ContainerName="Electrons",
396 StoreTResult=False)))
397
398 ElectronPassLHLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
399 flags,
400 name="ElectronPassLHLooseNoPixLRT",
401 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
402 EGammaFudgeMCTool="",
403 CutType="",
404 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
405 ContainerName="LRTElectrons",
406 StoreTResult=False)))
407
408 # decorate electrons with the output of LH medium
409 ElectronPassLHMediumNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
410 flags,
411 name="ElectronPassLHMediumNoPix",
412 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
413 EGammaFudgeMCTool="",
414 CutType="",
415 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
416 ContainerName="Electrons",
417 StoreTResult=False)))
418
419 ElectronPassLHMediumNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
420 flags,
421 name="ElectronPassLHMediumNoPixLRT",
422 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
423 EGammaFudgeMCTool="",
424 CutType="",
425 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
426 ContainerName="LRTElectrons",
427 StoreTResult=False)))
428
429 # decorate electrons with the output of LH tight
430 ElectronPassLHTightNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
431 flags,
432 name="ElectronPassLHTightNoPix",
433 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
434 EGammaFudgeMCTool="",
435 CutType="",
436 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
437 ContainerName="Electrons",
438 StoreTResult=False)))
439
440 ElectronPassLHTightNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
441 flags,
442 name="ElectronPassLHTightNoPixLRT",
443 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
444 EGammaFudgeMCTool="",
445 CutType="",
446 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
447 ContainerName="LRTElectrons",
448 StoreTResult=False)))
449
450 LRTEGAugmentationTools = [ElectronPassLHVeryLooseNoPix,
451 ElectronPassLHVeryLooseNoPixLRT,
452 ElectronPassLHLooseNoPix,
453 ElectronPassLHLooseNoPixLRT,
454 ElectronPassLHMediumNoPix,
455 ElectronPassLHMediumNoPixLRT,
456 ElectronPassLHTightNoPix,
457 ElectronPassLHTightNoPixLRT]
458
459 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
460 "LLP1EGammaLRTKernel",
461 AugmentationTools=LRTEGAugmentationTools
462 ))
463
464 return acc
465
466# RecoverZeroPixelHitMuons setup
468 acc = ComponentAccumulator()
469 from IsolationAlgs.DerivationTrackIsoConfig import iso_vars
470 ExtraInputs = [('xAOD::IParticleContainer', 'Muons.' + v)
471 for v in iso_vars()]
472 acc.addEventAlgo(CompFactory.RecoverZeroPixelHitMuons(name="RecoverZeroPixelHitMuons", ExtraInputs=ExtraInputs))
473
474 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)
TauLRTThinningCfg(flags, name, **kwargs)
RCJetSubstructureAugCfg(flags, name, **kwargs)
LLP1TriggerSkimmingToolCfg(flags, name, TriggerListsHelper, **kwargs)
JetTrackParticleThinningCfg(flags, name, **kwargs)