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 trig_hip = ["HLT_g0_hiptrt_L1EM22VHI", "HLT_g0_hiptrt_L1eEM26M", "HLT_g0_hiptrt_L1eEM28M"]
198
199 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 + trig_hip
200
201 #remove duplicates
202 triggers = sorted(list(set(triggers)))
203
204 acc = ComponentAccumulator()
205 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
206 acc.addPublicTool(TriggerSkimmingTool(name,
207 TriggerListAND = [],
208 TriggerListOR = triggers,
209 **kwargs),
210 primary = True)
211 return acc
212
213
214def LLP1TriggerMatchingToolRun2Cfg(flags, name, **kwargs):
215 """Configure the common trigger matching for run 2 DAODs"""
216
217 triggerList = kwargs['TriggerList']
218 outputContainerPrefix = kwargs['OutputContainerPrefix']
219
220 kwargs.setdefault('InputElectrons', 'LRTElectrons')
221 kwargs.setdefault('InputMuons', 'MuonsLRT')
222 kwargs.setdefault('DRThreshold', None)
223
224 acc = ComponentAccumulator()
225
226 # Create trigger matching decorations
227 from DerivationFrameworkTrigger.TriggerMatchingToolConfig import TriggerMatchingToolCfg
228 if kwargs['DRThreshold'] is None:
229 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
230 flags,
231 name=name,
232 ChainNames = triggerList,
233 OutputContainerPrefix = outputContainerPrefix,
234 InputElectrons = kwargs['InputElectrons'],
235 InputMuons = kwargs['InputMuons']))
236 else:
237 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(
238 flags,
239 name=name,
240 ChainNames = triggerList,
241 OutputContainerPrefix = outputContainerPrefix,
242 DRThreshold = kwargs['DRThreshold'],
243 InputElectrons = kwargs['InputElectrons'],
244 InputMuons = kwargs['InputMuons']))
245 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
246 acc.addEventAlgo(CommonAugmentation(f"{outputContainerPrefix}TriggerMatchingKernel",
247 AugmentationTools=[PhysCommonTriggerMatchingTool]))
248 return(acc)
249
250def LRTMuonMergerAlg(flags, name="LLP1_MuonLRTMergingAlg", **kwargs):
251 acc = ComponentAccumulator()
252 alg = CompFactory.CP.MuonLRTMergingAlg(name, **kwargs)
253 acc.addEventAlgo(alg, primary=True)
254 return acc
255
256def ZeroPixelHitMuonMergerAlgCfg(flags, name='LLP1_MuonZPHMergingAlg', **kwargs):
257 """Configure for merging ZeroPixelHitMuons with the LRTMerged muons for vertexing"""
258
259 kwargs.setdefault('InputMuonContainers', ['Muons', 'MuonsLRT', 'ZeroPixelHitMuons'])
260 kwargs.setdefault('OutputMuonLocation', 'StdWithLRTMuons_wZPH')
261 kwargs.setdefault("CreateViewCollection", True)
262
263 acc = ComponentAccumulator()
264 alg = CompFactory.CP.MuonContainerMergingAlg(name, **kwargs)
265 acc.addEventAlgo(alg, primary=True)
266 return acc
267
268
269def LRTElectronMergerAlg(flags, name="LLP1_ElectronLRTMergingAlg", **kwargs):
270 acc = ComponentAccumulator()
271 prompt = kwargs.setdefault ('PromptElectronLocation', 'Electrons')
272 lrt = kwargs.setdefault ('LRTElectronLocation', 'LRTElectrons')
273 ExtraInputs = kwargs.setdefault ('ExtraInputs', [])
274 from IsolationAlgs.DerivationTrackIsoConfig import iso_vars
275 ExtraInputs += [('xAOD::IParticleContainer', f'{prompt}.{v}')
276 for v in iso_vars()]
277 ExtraInputs += [('xAOD::IParticleContainer', f'{lrt}.{v}')
278 for v in iso_vars()]
279 ExtraInputs += [
280 ('xAOD::IParticleContainer', f'{lrt}.core57cellsEnergyCorrection'),
281 ('xAOD::IParticleContainer', f'{lrt}.ptcone20'),
282 ('xAOD::IParticleContainer', f'{lrt}.neflowisol20'),
283 ('xAOD::IParticleContainer', f'{prompt}.neflowisol20'),
284 ]
285 alg = CompFactory.CP.ElectronLRTMergingAlg \
286 (name,
287 **kwargs)
288 acc.addEventAlgo(alg,
289 primary=True)
290 return acc
291
292# Photon IsEM setup for LLP1
294 acc = ComponentAccumulator()
295 from ROOT import egammaPID
296 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
297 AsgPhotonIsEMSelectorCfg,
298 )
299
300 isFullSim = flags.Sim.ISF.Simulator.isFullSim() if flags.Input.isMC else False
301
302 if isFullSim:
303 from EGammaVariableCorrection.EGammaVariableCorrectionConfig import (
304 PhotonVariableCorrectionToolCfg,
305 )
306
307 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
308 PhotonVariableCorrectionToolCfg(flags))
309 acc.addPublicTool(PhotonVariableCorrectionTool)
310
311 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
312 AsgPhotonIsEMSelectorCfg(
313 flags, name="PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
314 )
315 )
316 acc.addPublicTool(PhotonIsEMSelectorMedium)
317
318 return acc
319
320# Electron LLH setup for LLP1
322
323 acc = ComponentAccumulator()
324
325 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import AsgElectronLikelihoodToolCfg
326 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu
327 from ROOT import LikeEnum
328
329 lhMenu = electronLHmenu.offlineMC21
330 if flags.GeoModel.Run is LHCPeriod.Run2:
331 lhMenu = electronLHmenu.offlineMC20
332
333 ElectronLHSelectorVeryLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
334 flags,
335 name="ElectronLHSelectorVeryLooseNoPix",
336 quality=LikeEnum.VeryLooseLLP,
337 menu=lhMenu)
338 )
339 ElectronLHSelectorVeryLooseNoPix.primaryVertexContainer = "PrimaryVertices"
340
341 ElectronLHSelectorLooseNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
342 flags,
343 name="ElectronLHSelectorLooseNoPix",
344 quality=LikeEnum.LooseLLP,
345 menu=lhMenu)
346 )
347 ElectronLHSelectorLooseNoPix.primaryVertexContainer = "PrimaryVertices"
348
349 ElectronLHSelectorMediumNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
350 flags,
351 name="ElectronLHSelectorMediumNoPix",
352 quality=LikeEnum.MediumLLP,
353 menu=lhMenu)
354 )
355 ElectronLHSelectorMediumNoPix.primaryVertexContainer = "PrimaryVertices"
356
357 ElectronLHSelectorTightNoPix = acc.popToolsAndMerge(AsgElectronLikelihoodToolCfg(
358 flags,
359 name="ElectronLHSelectorTightNoPix",
360 quality=LikeEnum.TightLLP,
361 menu=lhMenu)
362 )
363 ElectronLHSelectorTightNoPix.primaryVertexContainer = "PrimaryVertices"
364
365 from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronLikelihoodToolWrapperCfg
366
367 # decorate electrons with the output of LH very loose
368 ElectronPassLHVeryLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
369 flags,
370 name="ElectronPassLHVeryLooseNoPix",
371 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
372 EGammaFudgeMCTool="",
373 CutType="",
374 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
375 ContainerName="Electrons",
376 StoreTResult=True)))
377
378 ElectronPassLHVeryLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
379 flags,
380 name="ElectronPassLHVeryLooseNoPixLRT",
381 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLooseNoPix,
382 EGammaFudgeMCTool="",
383 CutType="",
384 StoreGateEntryName="DFCommonElectronsLHVeryLooseNoPix",
385 ContainerName="LRTElectrons",
386 StoreTResult=True)))
387
388 # decorate electrons with the output of LH loose
389 ElectronPassLHLooseNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
390 flags,
391 name="ElectronPassLHLooseNoPix",
392 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
393 EGammaFudgeMCTool="",
394 CutType="",
395 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
396 ContainerName="Electrons",
397 StoreTResult=False)))
398
399 ElectronPassLHLooseNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
400 flags,
401 name="ElectronPassLHLooseNoPixLRT",
402 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseNoPix,
403 EGammaFudgeMCTool="",
404 CutType="",
405 StoreGateEntryName="DFCommonElectronsLHLooseNoPix",
406 ContainerName="LRTElectrons",
407 StoreTResult=False)))
408
409 # decorate electrons with the output of LH medium
410 ElectronPassLHMediumNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
411 flags,
412 name="ElectronPassLHMediumNoPix",
413 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
414 EGammaFudgeMCTool="",
415 CutType="",
416 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
417 ContainerName="Electrons",
418 StoreTResult=False)))
419
420 ElectronPassLHMediumNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
421 flags,
422 name="ElectronPassLHMediumNoPixLRT",
423 EGammaElectronLikelihoodTool=ElectronLHSelectorMediumNoPix,
424 EGammaFudgeMCTool="",
425 CutType="",
426 StoreGateEntryName="DFCommonElectronsLHMediumNoPix",
427 ContainerName="LRTElectrons",
428 StoreTResult=False)))
429
430 # decorate electrons with the output of LH tight
431 ElectronPassLHTightNoPix = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
432 flags,
433 name="ElectronPassLHTightNoPix",
434 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
435 EGammaFudgeMCTool="",
436 CutType="",
437 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
438 ContainerName="Electrons",
439 StoreTResult=False)))
440
441 ElectronPassLHTightNoPixLRT = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
442 flags,
443 name="ElectronPassLHTightNoPixLRT",
444 EGammaElectronLikelihoodTool=ElectronLHSelectorTightNoPix,
445 EGammaFudgeMCTool="",
446 CutType="",
447 StoreGateEntryName="DFCommonElectronsLHTightNoPix",
448 ContainerName="LRTElectrons",
449 StoreTResult=False)))
450
451 LRTEGAugmentationTools = [ElectronPassLHVeryLooseNoPix,
452 ElectronPassLHVeryLooseNoPixLRT,
453 ElectronPassLHLooseNoPix,
454 ElectronPassLHLooseNoPixLRT,
455 ElectronPassLHMediumNoPix,
456 ElectronPassLHMediumNoPixLRT,
457 ElectronPassLHTightNoPix,
458 ElectronPassLHTightNoPixLRT]
459
460 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
461 "LLP1EGammaLRTKernel",
462 AugmentationTools=LRTEGAugmentationTools
463 ))
464
465 return acc
466
467# RecoverZeroPixelHitMuons setup
469 acc = ComponentAccumulator()
470 from IsolationAlgs.DerivationTrackIsoConfig import iso_vars
471 ExtraInputs = [('xAOD::IParticleContainer', 'Muons.' + v)
472 for v in iso_vars()]
473 acc.addEventAlgo(CompFactory.RecoverZeroPixelHitMuons(name="RecoverZeroPixelHitMuons", ExtraInputs=ExtraInputs))
474
475 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)