ATLAS Offline Software
LLP1.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 #!/usr/bin/env python
3 #====================================================================
4 # DAOD_LLP1.py
5 # This defines DAOD_LLP1, an unskimmed DAOD format for Run 3.
6 # It contains the variables and objects needed for the large majority
7 # of physics analyses in ATLAS.
8 # It requires the flag LLP1 in Derivation_tf.py
9 #====================================================================
10 
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory import CompFactory
13 from AthenaConfiguration.Enums import LHCPeriod, MetadataCategory
14 
15 MergedElectronContainer = "StdWithLRTElectrons"
16 MergedMuonContainer = "StdWithLRTMuons"
17 MergedTrackCollection = "InDetWithLRTTrackParticles"
18 LLP1VrtSecInclusiveSuffixes = []
19 
20 # Main algorithm config
21 def LLP1KernelCfg(flags, name='LLP1Kernel', **kwargs):
22 
23  """Configure the derivation framework driving algorithm (kernel) for LLP1"""
24  acc = ComponentAccumulator()
25 
26  # Augmentations
27 
28 
29  # LRT track merge
30  from DerivationFrameworkInDet.InDetToolsConfig import InDetLRTMergeCfg
31  acc.merge(InDetLRTMergeCfg(flags))
32 
33  # LRT muons merge
34  from DerivationFrameworkLLP.LLPToolsConfig import LRTMuonMergerAlg
35  acc.merge(LRTMuonMergerAlg( flags,
36  PromptMuonLocation = "Muons",
37  LRTMuonLocation = "MuonsLRT",
38  OutputMuonLocation = MergedMuonContainer,
39  CreateViewCollection = True,
40  UseRun3WP = flags.GeoModel.Run == LHCPeriod.Run3))
41 
42  # LRT electrons merge
43  from DerivationFrameworkLLP.LLPToolsConfig import LRTElectronMergerAlg
44  acc.merge(LRTElectronMergerAlg( flags,
45  PromptElectronLocation = "Electrons",
46  LRTElectronLocation = "LRTElectrons",
47  OutputCollectionName = MergedElectronContainer,
48  isDAOD = False,
49  CreateViewCollection = True))
50 
51  # Max Cell sum decoration tool
52  from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
53  MaxCellDecoratorCfg, MaxCellDecoratorKernelCfg)
54 
55  # Default configuration
56  acc.merge(MaxCellDecoratorKernelCfg(flags))
57 
58  # Specific for LRTElectrons
59  LLP1LRTMaxCellDecoratorTool = acc.popToolsAndMerge(MaxCellDecoratorCfg(
60  flags,
61  name = "LLP1LRTMaxCellDecoratorTool",
62  SGKey_electrons = "LRTElectrons",
63  SGKey_egammaClusters = ("" if flags.GeoModel.Run == LHCPeriod.Run3
64  else "egammaClusters"),
65  SGKey_photons = ''))
66  acc.addPublicTool(LLP1LRTMaxCellDecoratorTool)
67 
68  # Vertex constraint tools
69  from TrkConfig.TrkVertexFitterUtilsConfig import AtlasFullLinearizedTrackFactoryCfg
70  AtlasFullLinearizedTrackFactoryTool = acc.popToolsAndMerge(AtlasFullLinearizedTrackFactoryCfg(flags,
71  name = "LLP1AtlasFullLinearizedTrackFactory"))
72  acc.addPublicTool(AtlasFullLinearizedTrackFactoryTool)
73 
74  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
75  ExtrapolatorTool = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags,
76  name = "LLP1ExtrapolatorTool"))
77  acc.addPublicTool(ExtrapolatorTool)
78 
79 
80  from DerivationFrameworkLLP.LLPToolsConfig import TrackParametersKVUCfg
81  LLP1TrackParametersKVUTool = acc.getPrimaryAndMerge(TrackParametersKVUCfg(flags,
82  name = "LLP1TrackParametersKVU",
83  TrackParticleContainerName = "InDetDisappearingTrackParticles",
84  VertexContainerName = "PrimaryVertices",
85  LinearizedTrackFactory = AtlasFullLinearizedTrackFactoryTool,
86  TrackExtrapolator = ExtrapolatorTool))
87  acc.addPublicTool(LLP1TrackParametersKVUTool)
88 
89  # Track isolation tools
90  import ROOT
91  isoPar = ROOT.xAOD.Iso.IsolationType
92  deco_ptcones = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20]
93  deco_ptcones_suffix = ["ptcone40", "ptcone30", "ptcone20"]
94  deco_prefix = 'LLP1_'
95 
96  from InDetConfig.InDetTrackSelectionToolConfig import InDetTrackSelectionTool_Loose_Cfg
97  TrackSelectionToolStd = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(flags,
98  name = "TrackSelectionToolStd",
99  maxZ0SinTheta = 3.0,
100  minPt = 1000.))
101 
102  TrackSelectionToolPdEdx = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(flags,
103  name = "TrackSelectionToolPdEdx",
104  maxD0 = 0.5,
105  maxZ0SinTheta = 3.0,
106  minPt = 1000.))
107 
108  TrackSelectionToolPdEdxTight = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(flags,
109  name = "TrackSelectionToolPdEdxTight",
110  maxD0 = 0.5,
111  maxZ0SinTheta = 0.5,
112  minPt = 1000.))
113 
114  from IsolationAlgs.IsoToolsConfig import TrackIsolationToolCfg, CaloIsolationToolCfg
115  TrackIsoToolStd = acc.popToolsAndMerge(TrackIsolationToolCfg(flags,
116  name = "TrackIsoToolStd",
117  TrackSelectionTool = TrackSelectionToolStd))
118  acc.addPublicTool(TrackIsoToolStd)
119 
120  TrackIsoToolPdEdx = acc.popToolsAndMerge(TrackIsolationToolCfg(flags,
121  name = "TrackIsoToolPdEdx",
122  TrackSelectionTool = TrackSelectionToolPdEdx))
123  acc.addPublicTool(TrackIsoToolPdEdx)
124 
125  TrackIsoToolPdEdxTight = acc.popToolsAndMerge(TrackIsolationToolCfg(flags,
126  name = "TrackIsoToolPdEdxTight",
127  TrackSelectionTool = TrackSelectionToolPdEdxTight))
128  acc.addPublicTool(TrackIsoToolPdEdxTight)
129 
130  from CaloIdentifier import SUBCALO
131  CaloIsoTool = acc.popToolsAndMerge(CaloIsolationToolCfg(flags,
132  name = "CaloIsoTool",
133  EMCaloNums = [SUBCALO.LAREM],
134  HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE],
135  UseEMScale = True,
136  UseCaloExtensionCaching = False,
137  saveOnlyRequestedCorrections = True))
138  acc.addPublicTool(CaloIsoTool)
139 
140  from DerivationFrameworkInDet.InDetToolsConfig import IsolationTrackDecoratorCfg
141  LLP1IsolationTrackDecoratorTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
142  name = "LLP1IsolationTrackDecorator",
143  TrackIsolationTool = TrackIsoToolStd,
144  CaloIsolationTool = CaloIsoTool,
145  TargetContainer = "InDetTrackParticles",
146  SelectionString = "InDetTrackParticles.pt>10*GeV",
147  iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20, isoPar.ptvarcone40, isoPar.ptvarcone30, isoPar.ptvarcone20, isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20],
148  isoSuffix = ["ptcone40", "ptcone30", "ptcone20", "ptvarcone40", "ptvarcone30", "ptvarcone20", "topoetcone40", "topoetcone30", "topoetcone20"],
149  Prefix = deco_prefix))
150  acc.addPublicTool(LLP1IsolationTrackDecoratorTool)
151 
152  LLP1IsolationTrackDecoratorDTTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
153  name = "LLP1IsolationTrackDecoratorDT",
154  TrackIsolationTool = TrackIsoToolStd,
155  CaloIsolationTool = CaloIsoTool,
156  TargetContainer = "InDetDisappearingTrackParticles",
157  SelectionString = "InDetDisappearingTrackParticles.pt>10*GeV",
158  iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20, isoPar.ptvarcone40, isoPar.ptvarcone30, isoPar.ptvarcone20, isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20],
159  isoSuffix = ["ptcone40", "ptcone30", "ptcone20", "ptvarcone40", "ptvarcone30", "ptvarcone20", "topoetcone40", "topoetcone30", "topoetcone20"],
160  Prefix = deco_prefix))
161  acc.addPublicTool(LLP1IsolationTrackDecoratorDTTool)
162 
163  LLP1IsolationTrackDecoratorPdEdxTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
164  name = "LLP1IsolationTrackDecoratorPdEdx",
165  TrackIsolationTool = TrackIsoToolPdEdx,
166  CaloIsolationTool = CaloIsoTool,
167  TargetContainer = "InDetTrackParticles",
168  iso = deco_ptcones,
169  Prefix = 'TrkIsoPtPdEdx_',
170  isoSuffix = deco_ptcones_suffix))
171  acc.addPublicTool(LLP1IsolationTrackDecoratorPdEdxTool)
172 
173  LLP1IsolationTrackDecoratorPdEdxDTTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
174  name = "LLP1IsolationTrackDecoratorPdEdxDT",
175  TrackIsolationTool = TrackIsoToolPdEdx,
176  CaloIsolationTool = CaloIsoTool,
177  TargetContainer = "InDetDisappearingTrackParticles",
178  iso = deco_ptcones,
179  Prefix = 'TrkIsoPtPdEdx_',
180  isoSuffix = deco_ptcones_suffix))
181  acc.addPublicTool(LLP1IsolationTrackDecoratorPdEdxDTTool)
182 
183  LLP1IsolationTrackDecoratorPdEdxTightTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
184  name = "LLP1IsolationTrackDecoratorPdEdxTight",
185  TrackIsolationTool = TrackIsoToolPdEdxTight,
186  CaloIsolationTool = CaloIsoTool,
187  TargetContainer = "InDetTrackParticles",
188  iso = deco_ptcones,
189  Prefix = 'TrkIsoPtTightPdEdx_',
190  isoSuffix = deco_ptcones_suffix))
191  acc.addPublicTool(LLP1IsolationTrackDecoratorPdEdxTightTool)
192 
193  LLP1IsolationTrackDecoratorPdEdxTightDTTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
194  name = "LLP1IsolationTrackDecoratorPdEdxTightDT",
195  TrackIsolationTool = TrackIsoToolPdEdxTight,
196  CaloIsolationTool = CaloIsoTool,
197  TargetContainer = "InDetDisappearingTrackParticles",
198  iso = deco_ptcones,
199  Prefix = 'TrkIsoPtTightPdEdx_',
200  isoSuffix = deco_ptcones_suffix))
201  acc.addPublicTool(LLP1IsolationTrackDecoratorPdEdxTightDTTool)
202 
203  from DerivationFrameworkLLP.LLPToolsConfig import TrackParticleCaloCellDecoratorCfg
204  LLP1TrackParticleCaloCellDecoratorTool = acc.getPrimaryAndMerge(TrackParticleCaloCellDecoratorCfg(flags,
205  name = "LLP1TrackParticleCaloCellDecorator",
206  DecorationPrefix = "LLP1",
207  ContainerName = "InDetTrackParticles"))
208  acc.addPublicTool(LLP1TrackParticleCaloCellDecoratorTool)
209 
210  augmentationTools = [ LLP1LRTMaxCellDecoratorTool,
211  LLP1TrackParametersKVUTool,
212  LLP1IsolationTrackDecoratorTool,
213  LLP1IsolationTrackDecoratorDTTool,
214  LLP1IsolationTrackDecoratorPdEdxTool,
215  LLP1IsolationTrackDecoratorPdEdxDTTool,
216  LLP1IsolationTrackDecoratorPdEdxTightTool,
217  LLP1IsolationTrackDecoratorPdEdxTightDTTool,
218  LLP1TrackParticleCaloCellDecoratorTool ]
219 
220  # Specific for Taus
221  LLP1TauMaxCellDecoratorTool = acc.popToolsAndMerge(MaxCellDecoratorCfg(
222  flags,
223  name = "LLP1TauMaxCellDecoratorTool",
224  SGKey_taus = 'TauJets',
225  SGKey_electrons = '',
226  SGKey_photons = ''))
227  acc.addPublicTool(LLP1TauMaxCellDecoratorTool)
228 
229  augmentationTools += [ LLP1TauMaxCellDecoratorTool ]
230 
231  # Specific for Jets: AntiKt4EMTopoJets
232  LLP1AntiKt4EMTopoJetMaxCellDecoratorTool = acc.popToolsAndMerge(MaxCellDecoratorCfg(
233  flags,
234  name = "LLP1AntiKt4EMTopoJetMaxCellDecoratorTool",
235  SGKey_jets = 'AntiKt4EMTopoJets',
236  SGKey_taus = '',
237  SGKey_electrons = '',
238  SGKey_photons = ''))
239  acc.addPublicTool(LLP1AntiKt4EMTopoJetMaxCellDecoratorTool)
240 
241  augmentationTools += [ LLP1AntiKt4EMTopoJetMaxCellDecoratorTool ]
242 
243  # Specific for Jets: AntiKt4EMPFlowJets
244  LLP1AntiKt4EMPFlowJetMaxCellDecoratorTool = acc.popToolsAndMerge(MaxCellDecoratorCfg(
245  flags,
246  name = "LLP1AntiKt4EMPFlowJetMaxCellDecoratorTool",
247  SGKey_jets = 'AntiKt4EMPFlowJets',
248  SGKey_taus = '',
249  SGKey_electrons = '',
250  SGKey_photons = ''))
251  acc.addPublicTool(LLP1AntiKt4EMPFlowJetMaxCellDecoratorTool)
252 
253  augmentationTools += [ LLP1AntiKt4EMPFlowJetMaxCellDecoratorTool ]
254 
255  # Reclustered jets definitions
256  from JetRecConfig.JetRecConfig import registerAsInputConstit, JetRecCfg
257  from JetRecConfig.StandardSmallRJets import AntiKt4Truth, AntiKt4EMTopo
258  from JetRecConfig.JetDefinition import JetDefinition
259  from JetRecConfig.StandardJetConstits import stdConstitDic as cst
260 
261  registerAsInputConstit(AntiKt4EMTopo)
262  registerAsInputConstit(AntiKt4Truth)
263  cst.AntiKt4EMTopoJets.label = "EMTopoRC"
264  cst.AntiKt4TruthJets.label = "TruthRC"
265 
266  AntiKt10RCEMTopo = JetDefinition( "AntiKt",1.0,cst.AntiKt4EMTopoJets,
267  ghostdefs = ["Track", "TrackLRT", "LCTopoOrigin"],
268  modifiers = ("Sort", "Filter:200000",),
269  standardRecoMode = True,
270  lock = True,
271  )
272  if flags.Input.isMC:
273  AntiKt10RCTruth = JetDefinition("AntiKt",1.0,cst.AntiKt4TruthJets,
274  ghostdefs = [],
275  modifiers = ("Sort", "Filter:200000",),
276  standardRecoMode = True,
277  lock = True
278  )
279 
280  from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
281  acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
282  acc.merge(JetRecCfg(flags,AntiKt10RCEMTopo))
283  if flags.Input.isMC: acc.merge(JetRecCfg(flags,AntiKt10RCTruth))
284 
285  # MET with LRT in association map
286  from DerivationFrameworkJetEtMiss.METCommonConfig import METLRTCfg
287  acc.merge(METLRTCfg(flags, "AntiKt4EMTopo"))
288  acc.merge(METLRTCfg(flags, "AntiKt4EMPFlow"))
289 
290  # LRT Egamma
291  from DerivationFrameworkEGamma.EGammaLRTConfig import EGammaLRTCfg
292  acc.merge(EGammaLRTCfg(flags))
293 
294  from DerivationFrameworkLLP.LLPToolsConfig import LRTElectronLHSelectorsCfg
295  acc.merge(LRTElectronLHSelectorsCfg(flags))
296 
297  #Photon ID Selector
298  from DerivationFrameworkLLP.LLPToolsConfig import PhotonIsEMSelectorsCfg
299  acc.merge(PhotonIsEMSelectorsCfg(flags))
300 
301  # LRT Muons
302  from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
303  acc.merge(MuonsCommonCfg(flags,
304  suff="LRT"))
305 
306  # flavor tagging
307  from DerivationFrameworkFlavourTag.FtagDerivationConfig import FtagJetCollectionsCfg
308  acc.merge(FtagJetCollectionsCfg(flags, ['AntiKt4EMTopoJets']))
309 
310  # VrtSecInclusive
311  from VrtSecInclusive.VrtSecInclusiveConfig import VrtSecInclusiveCfg
312 
313  acc.merge(VrtSecInclusiveCfg(flags,
314  name = "VrtSecInclusive",
315  AugmentingVersionString = "",
316  FillIntermediateVertices = False,
317  TrackLocation = MergedTrackCollection))
318  LLP1VrtSecInclusiveSuffixes.append("")
319 
320 
321  if flags.Input.isMC and flags.Derivation.LLP.doTrackSystematics:
322  from InDetTrackSystematicsTools.InDetTrackSystematicsToolsConfig import TrackSystematicsAlgCfg
323  TrackSystSuffix = "_TRK_EFF_LARGED0_GLOBAL__1down"
324  acc.merge(TrackSystematicsAlgCfg(
325  flags,
326  InputTrackContainer = MergedTrackCollection,
327  OutputTrackContainer = f"{MergedTrackCollection}{TrackSystSuffix}"))
328  acc.merge(VrtSecInclusiveCfg(flags,
329  name = f"VrtSecInclusive{TrackSystSuffix}",
330  AugmentingVersionString = TrackSystSuffix,
331  FillIntermediateVertices = False,
332  TrackLocation = f"{MergedTrackCollection}{TrackSystSuffix}"))
333  LLP1VrtSecInclusiveSuffixes.append(TrackSystSuffix)
334 
335  # leptons-only VSI
336  LeptonsSuffix = "_Leptons"
337  acc.merge(VrtSecInclusiveCfg(flags,
338  name = "VrtSecInclusive_InDet"+LeptonsSuffix,
339  AugmentingVersionString = LeptonsSuffix,
340  FillIntermediateVertices = False,
341  TrackLocation = MergedTrackCollection,
342  twoTrkVtxFormingD0Cut = 1.0,
343  doSelectTracksFromMuons = True,
344  doRemoveCaloTaggedMuons = True,
345  doSelectTracksFromElectrons = True,
346  MuonLocation = MergedMuonContainer,
347  ElectronLocation = MergedElectronContainer))
348  LLP1VrtSecInclusiveSuffixes.append(LeptonsSuffix)
349 
350  # track VSI
351  LepTrackSuffix = "_LepTrack"
352  acc.merge(VrtSecInclusiveCfg(flags,
353  name = "VrtSecInclusive_InDet"+LepTrackSuffix,
354  AugmentingVersionString = LepTrackSuffix,
355  FillIntermediateVertices = False,
356  TrackLocation = MergedTrackCollection,
357  MuonLocation = MergedMuonContainer,
358  ElectronLocation = MergedElectronContainer,
359  twoTrkVtxFormingD0Cut = 1.0,
360  doSelectIDAndGSFTracks = True,
361  doRemoveCaloTaggedMuons = True,
362  doRemoveNonLeptonVertices = True,
363  doAssociateNonSelectedTracks= False))
364  LLP1VrtSecInclusiveSuffixes.append(LepTrackSuffix)
365 
366  # bad jet cleaning
367  jet_clean_prefix="DFCommonJets_"
368  jet_clean_container="AntiKt4EMTopoJets"
369  jet_clean_level="SuperLooseBadLLP"
370  from JetSelectorTools.JetSelectorToolsConfig import EventCleaningToolCfg, JetCleaningToolCfg
371  LLP1JetCleanSuperLLPTool = acc.popToolsAndMerge(JetCleaningToolCfg(flags,
372  "LLP1JetCleanSuperLLP",
373  jet_clean_container,
374  jet_clean_level,
375  False))
376  acc.addPublicTool(LLP1JetCleanSuperLLPTool)
377 
378  LLP1EventCleanSuperLLPTool = acc.popToolsAndMerge(EventCleaningToolCfg(flags,
379  "LLP1EventCleanSuperLLP",
380  jet_clean_level))
381  LLP1EventCleanSuperLLPTool.JetCleanPrefix = jet_clean_prefix
382  LLP1EventCleanSuperLLPTool.JetContainer = jet_clean_container
383  LLP1EventCleanSuperLLPTool.JetCleaningTool = LLP1JetCleanSuperLLPTool
384  acc.addPublicTool(LLP1EventCleanSuperLLPTool)
385 
386  LLP1EventCleanAlg = CompFactory.EventCleaningTestAlg(
387  "LLP1JetCleanDecoratorSuperLLP",
388  EventCleaningTool = LLP1EventCleanSuperLLPTool,
389  JetCollectionName = jet_clean_container,
390  EventCleanPrefix = jet_clean_prefix,
391  CleaningLevel = jet_clean_level,
392  doEvent = True)
393  acc.addEventAlgo(LLP1EventCleanAlg)
394 
395  from DerivationFrameworkLLP.LLPToolsConfig import AugmentationToolLeadingJetsCfg
396  augmentationToolLeadingJets = acc.getPrimaryAndMerge(AugmentationToolLeadingJetsCfg(flags))
397  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, AugmentationTools = [augmentationToolLeadingJets]))
398 
399  # Thinning tools...
400  from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg, EgammaTrackParticleThinningCfg, MuonTrackParticleThinningCfg, TauTrackParticleThinningCfg, DiTauTrackParticleThinningCfg
401  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import GenericObjectThinningCfg
402  from DerivationFrameworkTau.TauCommonConfig import TauThinningCfg
403 
404  # Inner detector tracks need to have greater than 10 GeV of pT
405  LLP1TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
406  flags,
407  name = "LLP1TrackParticleThinningTool",
408  StreamName = kwargs['StreamName'],
409  SelectionString = "InDetTrackParticles.pt>10*GeV",
410  InDetTrackParticlesKey = "InDetTrackParticles"))
411 
412  # Pixel tracklets need to have greater than 5 GeV of pT
413  LLP1DTTrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
414  flags,
415  name = "LLP1DTTrackParticleThinningTool",
416  StreamName = kwargs['StreamName'],
417  SelectionString = "InDetDisappearingTrackParticles.pt>5*GeV",
418  InDetTrackParticlesKey = "InDetDisappearingTrackParticles"))
419 
420  # Include inner detector tracks associated with electrons
421  LLP1ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
422  flags,
423  name = "LLP1ElectronTPThinningTool",
424  StreamName = kwargs['StreamName'],
425  SGKey = "Electrons",
426  InDetTrackParticlesKey = "InDetTrackParticles"))
427 
428  # Include inner detector tracks associated with muons
429  LLP1MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
430  flags,
431  name = "LLP1MuonTPThinningTool",
432  StreamName = kwargs['StreamName'],
433  MuonKey = "Muons",
434  InDetTrackParticlesKey = "InDetTrackParticles"))
435  # Include LRT inner detector tracks associated with LRT muons
436  LLP1LRTMuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
437  flags,
438  name = "LLP1LRTMuonTPThinningTool",
439  StreamName = kwargs['StreamName'],
440  MuonKey = "MuonsLRT",
441  InDetTrackParticlesKey = "InDetLargeD0TrackParticles"))
442 
443  # Tau-related containers: taus, tau tracks and associated ID tracks, neutral PFOs, secondary vertices
444  tau_thinning_expression = f"TauJets.pt >= {flags.Tau.MinPtDAOD}"
445  LLP1TauJetsThinningTool = acc.getPrimaryAndMerge(TauThinningCfg(
446  flags,
447  name = "LLP1TauJetThinningTool",
448  StreamName = kwargs['StreamName'],
449  Taus = "TauJets",
450  TauTracks = "TauTracks",
451  TrackParticles = "InDetTrackParticles",
452  TauNeutralPFOs = "TauNeutralParticleFlowObjects",
453  TauSecondaryVertices = "TauSecondaryVertices",
454  SelectionString = tau_thinning_expression))
455 
456  # Only keep tau tracks (and associated ID tracks) classified as charged tracks
457  LLP1TauTPThinningTool = acc.getPrimaryAndMerge(TauTrackParticleThinningCfg(
458  flags,
459  name = "LLP1TauTPThinningTool",
460  StreamName = kwargs['StreamName'],
461  TauKey = "TauJets",
462  InDetTrackParticlesKey = "InDetTrackParticles",
463  DoTauTracksThinning = True,
464  TauTracksKey = "TauTracks"))
465 
466  tau_murm_thinning_expression = tau_thinning_expression.replace('TauJets', 'TauJets_MuonRM')
467  LLP1TauJetMuonRMParticleThinningTool = acc.getPrimaryAndMerge(TauThinningCfg(
468  flags,
469  name = "LLP1TauJets_MuonRMThinningTool",
470  StreamName = kwargs['StreamName'],
471  Taus = "TauJets_MuonRM",
472  TauTracks = "TauTracks_MuonRM",
473  TrackParticles = "InDetTrackParticles",
474  TauNeutralPFOs = "TauNeutralParticleFlowObjects_MuonRM",
475  TauSecondaryVertices = "TauSecondaryVertices_MuonRM",
476  SelectionString = tau_murm_thinning_expression))
477 
478  # ID tracks associated with high-pt di-tau
479  LLP1DiTauTPThinningTool = acc.getPrimaryAndMerge(DiTauTrackParticleThinningCfg(
480  flags,
481  name = "LLP1DiTauTPThinningTool",
482  StreamName = kwargs['StreamName'],
483  DiTauKey = "DiTauJets",
484  InDetTrackParticlesKey = "InDetTrackParticles"))
485 
486 
487  LLP1DiTauLowPtThinningTool = acc.getPrimaryAndMerge(GenericObjectThinningCfg(
488  flags,
489  name = "LLP1DiTauLowPtThinningTool",
490  StreamName = kwargs['StreamName'],
491  ContainerName = "DiTauJetsLowPt",
492  SelectionString = "DiTauJetsLowPt.nSubjets > 1"))
493 
494  # ID tracks associated with low-pt ditau
495  LLP1DiTauLowPtTPThinningTool = acc.getPrimaryAndMerge(DiTauTrackParticleThinningCfg(
496  flags,
497  name = "LLP1DiTauLowPtTPThinningTool",
498  StreamName = kwargs['StreamName'],
499  DiTauKey = "DiTauJetsLowPt",
500  InDetTrackParticlesKey = "InDetTrackParticles",
501  SelectionString = "DiTauJetsLowPt.nSubjets > 1"))
502 
503 
504  # ID Tracks associated with secondary vertices
505  from DerivationFrameworkLLP.LLPToolsConfig import VSITrackParticleThinningCfg
506  LLP1VSITPThinningTool = acc.getPrimaryAndMerge(VSITrackParticleThinningCfg(flags,
507  name = "LLP1VSITPThinningTool",
508  StreamName = kwargs['StreamName'],
509  InDetTrackParticlesKey = "InDetTrackParticles",
510  AugVerStrings = LLP1VrtSecInclusiveSuffixes))
511  LLP1LRTVSITPThinningTool = acc.getPrimaryAndMerge(VSITrackParticleThinningCfg(flags,
512  name = "LLP1LRTVSITPThinningTool",
513  StreamName = kwargs['StreamName'],
514  InDetTrackParticlesKey = "InDetLargeD0TrackParticles",
515  AugVerStrings = LLP1VrtSecInclusiveSuffixes))
516 
517 
518 
519  # ID Tracks associated with jets
520  from DerivationFrameworkLLP.LLPToolsConfig import JetTrackParticleThinningCfg, JetLargeD0TrackParticleThinningCfg
521  LLP1JetTPThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(flags,
522  name = "LLP1JetTPThinningTool",
523  StreamName = kwargs['StreamName'],
524  JetKey = "AntiKt4EMTopoJets",
525  SelectionString = "(AntiKt4EMTopoJets.pt > 20.*GeV) && (abs(AntiKt4EMTopoJets.eta) < 2.5)",
526  InDetTrackParticlesKey = "InDetTrackParticles"))
527 
528  LLP1FatJetTPThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg( flags,
529  name = "LLP1FatJetTPThinningTool",
530  StreamName = kwargs['StreamName'],
531  JetKey = "AntiKt10EMTopoRCJets",
532  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
533  InDetTrackParticlesKey = "InDetTrackParticles",
534  ))
535 
536  # LRT Tracks associated with jets
537  if flags.Tracking.doLargeD0:
538  LLP1LRTJetTPThinningTool = acc.getPrimaryAndMerge(JetLargeD0TrackParticleThinningCfg(flags,
539  name = "LLP1LRTJetTPThinningTool",
540  StreamName = kwargs['StreamName'],
541  JetKey = "AntiKt4EMTopoJets",
542  SelectionString = "(AntiKt4EMTopoJets.pt > 20.*GeV) && (abs(AntiKt4EMTopoJets.eta) < 2.5)",
543  InDetTrackParticlesKey = "InDetLargeD0TrackParticles"))
544 
545  LLP1LRTFatJetTPThinningTool = acc.getPrimaryAndMerge(JetLargeD0TrackParticleThinningCfg(flags,
546  name = "LLP1LRTFatJetTPThinningTool",
547  StreamName = kwargs['StreamName'],
548  JetKey = "AntiKt10EMTopoRCJets",
549  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
550  InDetTrackParticlesKey = "InDetLargeD0TrackParticles",
551  ))
552 
553  # high dE/dx and low pT tracks
554  from DerivationFrameworkLLP.LLPToolsConfig import PixeldEdxTrackParticleThinningCfg
555  LLP1PixeldEdxTrackParticleThinningTool = acc.getPrimaryAndMerge(PixeldEdxTrackParticleThinningCfg(
556  flags,
557  name = "LLP1PixeldEdxTrackParticleThinningTool",
558  StreamName = kwargs['StreamName'],
559  InDetTrackParticlesKey = "InDetTrackParticles"))
560 
561  LLP1PixeldEdxDTTrackParticleThinningTool = acc.getPrimaryAndMerge(PixeldEdxTrackParticleThinningCfg(
562  flags,
563  name = "LLP1PixeldEdxDTTrackParticleThinningTool",
564  StreamName = kwargs['StreamName'],
565  InDetTrackParticlesKey = "InDetDisappearingTrackParticles"))
566 
567 
568  #Thinning CaloCalTopoClusters associated to AntiKt4EMTopoJets
569  from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import JetCaloClusterThinningCfg
570 
571  LLP1CCThinningTool = acc.getPrimaryAndMerge(JetCaloClusterThinningCfg(
572  flags,
573  name = "LLP1CCTool",
574  StreamName = kwargs['StreamName'],
575  SGKey = "AntiKt4EMTopoJets",
576  TopoClCollectionSGKey = "CaloCalTopoClusters",
577  SelectionString = "(AntiKt4EMTopoJets.DFDecoratorLeadingJets)",
578  AdditionalClustersKey = ["EMOriginTopoClusters","LCOriginTopoClusters"]
579  ))
580 
581 
582 
583 
584 
585  # Finally the kernel itself
586  thinningTools = [LLP1TrackParticleThinningTool,
587  LLP1DTTrackParticleThinningTool,
588  LLP1ElectronTPThinningTool,
589  LLP1MuonTPThinningTool,
590  LLP1LRTMuonTPThinningTool,
591  LLP1TauJetsThinningTool,
592  LLP1TauTPThinningTool,
593  LLP1TauJetMuonRMParticleThinningTool,
594  LLP1DiTauTPThinningTool,
595  LLP1DiTauLowPtThinningTool,
596  LLP1DiTauLowPtTPThinningTool,
597  LLP1VSITPThinningTool,
598  LLP1LRTVSITPThinningTool,
599  LLP1JetTPThinningTool,
600  LLP1FatJetTPThinningTool,
601  LLP1PixeldEdxTrackParticleThinningTool,
602  LLP1PixeldEdxDTTrackParticleThinningTool,
603  LLP1CCThinningTool
604  ]
605 
606  if flags.Tracking.doLargeD0:
607  thinningTools.append(LLP1LRTJetTPThinningTool)
608  thinningTools.append(LLP1LRTFatJetTPThinningTool)
609 
610  # Additionnal augmentations
611 
612  # Compute RC substructure variables from energy clusters
613  from DerivationFrameworkLLP.LLPToolsConfig import RCJetSubstructureAugCfg
614  LLP1RCJetSubstructureClustTrimAugTool = acc.getPrimaryAndMerge(RCJetSubstructureAugCfg(flags,
615  name = "LLP1RCJetSubstructureClustTrimAugTool",
616  StreamName = kwargs['StreamName'],
617  JetContainerKey = "AntiKt10EMTopoRCJets",
618  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
619  GhostConstitNames = ["GhostLCTopoOrigin"],
620  Suffix = "clusterTrim",
621  Grooming = "Trimming",
622  RClusTrim = 0.2,
623  PtFracTrim = 0.05
624  ))
625  RCSubstructureClusterTrimAug = CompFactory.DerivationFramework.CommonAugmentation("RCSubstructureClusterTrimAug", AugmentationTools = [LLP1RCJetSubstructureClustTrimAugTool])
626  acc.addEventAlgo(RCSubstructureClusterTrimAug)
627 
628  LLP1RCJetSubstructureClustSDAugTool = acc.getPrimaryAndMerge(RCJetSubstructureAugCfg(flags,
629  name = "LLP1RCJetSubstructureClustSDAugTool",
630  StreamName = kwargs['StreamName'],
631  JetContainerKey = "AntiKt10EMTopoRCJets",
632  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
633  GhostConstitNames = ["GhostLCTopoOrigin"],
634  Suffix = "clusterSoftDrop",
635  Grooming = "SoftDrop",
636  BetaSoft = 1.0,
637  ZcutSoft = 0.1
638  ))
639  RCSubstructureClusterSDAug = CompFactory.DerivationFramework.CommonAugmentation("RCSubstructureClusterSDAug", AugmentationTools = [LLP1RCJetSubstructureClustSDAugTool])
640  acc.addEventAlgo(RCSubstructureClusterSDAug)
641 
642  # Compute RC substructure variables from tracks
643  from DerivationFrameworkLLP.LLPToolsConfig import RCJetSubstructureAugCfg
644  LLP1RCJetSubstructureTrackTrimAugTool = acc.getPrimaryAndMerge(RCJetSubstructureAugCfg( flags,
645  name = "LLP1RCJetSubstructureTrackTrimAugTool",
646  StreamName = kwargs['StreamName'],
647  JetContainerKey = "AntiKt10EMTopoRCJets",
648  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
649  GhostConstitNames = ["GhostTrack", "GhostTrackLRT"],
650  Suffix = "trackTrim",
651  Grooming = "Trimming",
652  RClusTrim = 0.2,
653  PtFracTrim = 0.05
654  ))
655  RCSubstructureTrackTrimAug = CompFactory.DerivationFramework.CommonAugmentation("RCSubstructureTrackTrimAug", AugmentationTools = [LLP1RCJetSubstructureTrackTrimAugTool])
656  acc.addEventAlgo(RCSubstructureTrackTrimAug)
657 
658  from DerivationFrameworkLLP.LLPToolsConfig import RCJetSubstructureAugCfg
659  LLP1RCJetSubstructureTrackSDAugTool = acc.getPrimaryAndMerge(RCJetSubstructureAugCfg( flags,
660  name = "LLP1RCJetSubstructureTrackSDAugTool",
661  StreamName = kwargs['StreamName'],
662  JetContainerKey = "AntiKt10EMTopoRCJets",
663  SelectionString = "(AntiKt10EMTopoRCJets.pt > 200.*GeV) && (abs(AntiKt10EMTopoRCJets.eta) < 2.5)",
664  GhostConstitNames = ["GhostTrack", "GhostTrackLRT"],
665  Suffix = "trackSoftDrop",
666  Grooming = "SoftDrop",
667  BetaSoft = 1.0,
668  ZcutSoft = 0.1
669  ))
670  RCSubstructureTrackSDAug = CompFactory.DerivationFramework.CommonAugmentation("RCSubstructureTrackSDAug", AugmentationTools = [LLP1RCJetSubstructureTrackSDAugTool])
671  acc.addEventAlgo(RCSubstructureTrackSDAug)
672 
673 
674 
675  # Skimming
676  skimmingTools = []
677 
678  from DerivationFrameworkLLP.LLPToolsConfig import LLP1TriggerSkimmingToolCfg
679  LLP1TriggerSkimmingTool = acc.getPrimaryAndMerge(LLP1TriggerSkimmingToolCfg(flags,
680  name = "LLP1TriggerSkimmingTool",
681  TriggerListsHelper = kwargs['TriggerListsHelper']))
682 
683  skimmingTools.append(LLP1TriggerSkimmingTool)
684 
685  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
686  acc.addEventAlgo(DerivationKernel(name,
687  SkimmingTools = skimmingTools,
688  ThinningTools = thinningTools,
689  AugmentationTools = augmentationTools))
690 
691  return acc
692 
693 
694 
695 
696 
697 
698 def LLP1Cfg(flags):
699  acc = ComponentAccumulator()
700  # Get the lists of triggers needed for trigger matching.
701  # This is needed at this scope (for the slimming) and further down in the config chain
702  # for actually configuring the matching, so we create it here and pass it down
703  # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
704  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
705  LLP1TriggerListsHelper = TriggerListsHelper(flags)
706 
707  # Common augmentations
708  acc.merge(LLP1KernelCfg(flags, name="LLP1Kernel", StreamName = 'StreamDAOD_LLP1', TriggerListsHelper = LLP1TriggerListsHelper))
709 
710 
713  from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
714  contNames = [ "Muons", "Electrons", "Photons", "LRTElectrons", "MuonsLRT" ]
715  acc.merge(IsoCloseByAlgsCfg(flags, suff = "_LLP1", isPhysLite = False, containerNames = contNames, useSelTools = True, stream_name = 'StreamDAOD_LLP1'))
716 
717  # ============================
718  # Define contents of the format
719  # =============================
720  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
721  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
722  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
723 
724  LLP1SlimmingHelper = SlimmingHelper("LLP1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
725 
726  LLP1SlimmingHelper.SmartCollections = ["EventInfo",
727  "Electrons",
728  "LRTElectrons",
729  "Photons",
730  "Muons",
731  "MuonsLRT",
732  "PrimaryVertices",
733  "InDetTrackParticles",
734  "InDetLargeD0TrackParticles",
735  "AntiKt4EMTopoJets",
736  "AntiKt4EMPFlowJets",
737  "BTagging_AntiKt4EMTopo",
738  "BTagging_AntiKt4EMPFlow",
739  "BTagging_AntiKtVR30Rmax4Rmin02Track",
740  "MET_Baseline_AntiKt4EMTopo",
741  "MET_Baseline_AntiKt4EMPFlow",
742  "TauJets",
743  "TauJets_MuonRM",
744  "DiTauJets",
745  "DiTauJetsLowPt",
746  "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
747  "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
748  "AntiKtVR30Rmax4Rmin02PV0TrackJets",
749  ]
750 
751  LLP1SlimmingHelper.AllVariables = ["InDetDisappearingTrackParticles",
752  "MSDisplacedVertex",
753  "MuonSpectrometerTrackParticles",
754  "UnAssocMuonSegments",
755  "MuonSegments",
756  "MuonSegments_LRT",
757  "MSonlyTracklets",
758  "CombinedMuonTrackParticles",
759  "ExtrapolatedMuonTrackParticles",
760  "CombinedMuonsLRTTrackParticles",
761  "ExtraPolatedMuonsLRTTrackParticles",
762  "MSOnlyExtraPolatedMuonsLRTTrackParticles",
763  "CombinedStauTrackParticles",
764  "AntiKt4EMTopoJets",
765  "egammaClusters",
766  "ElectronRingSets",
767  "ElectronCaloRings",
768  "JetRingSets",
769  "JetCaloRings",
770  "SlowMuons",
771  #"LCOriginTopoClusters",
772  "EMOriginTopoClusters",
773  "Staus",
774  "METAssoc_AntiKt4EMTopo",
775  "MET_Core_AntiKt4EMTopo",
776  "METAssoc_AntiKt4EMPFlow",
777  "MET_Core_AntiKt4EMPFlow",
778  ]
779 
780 
781  excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
782  StaticContent = []
783  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
784  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
785  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
786  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
787  StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
788  StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
789  StaticContent += ["xAOD::JetContainer#AntiKt10EMTopoRCJets","xAOD::JetAuxContainer#AntiKt10EMTopoRCJetsAux.-PseudoJet"]
790  StaticContent += ["CaloClusterCellLinkContainer#CaloCalTopoClusters_links"]
791 
792  for wp in LLP1VrtSecInclusiveSuffixes:
793  StaticContent += ["xAOD::VertexContainer#VrtSecInclusive_SecondaryVertices" + wp]
794  StaticContent += ["xAOD::VertexAuxContainer#VrtSecInclusive_SecondaryVertices" + wp + "Aux."]
795 
796  LLP1SlimmingHelper.ExtraVariables += ["AntiKt10TruthTrimmedPtFrac5SmallR20Jets.Tau1_wta.Tau2_wta.Tau3_wta.D2.GhostBHadronsFinalCount",
797  "Electrons.LHValue.DFCommonElectronsLHVeryLooseNoPixResult.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z.f3",
798  "LRTElectrons.LHValue.DFCommonElectronsLHVeryLooseNoPixResult.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z.f3",
799  "Photons.DFCommonPhotonsIsEMMedium.DFCommonPhotonsIsEMMediumIsEMValue.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z.f3",
800  "egammaClusters.phi_sampl.eta0.phi0",
801  "LRTegammaClusters.phi_sampl.eta0.phi0",
802  "AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostBHadronsFinal.GhostCHadronsFinal.GhostTrack.GhostTrackCount.GhostTrackLRT.GhostTrackLRTCount.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z",
803  "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID.DFCommonJets_fJvt.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostBHadronsFinal.GhostCHadronsFinal.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z",
804  "AntiKtVR30Rmax4Rmin02TrackJets_BTagging201903.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostTausFinal.GhostTausFinalCount",
805  "AntiKtVR30Rmax4Rmin02TrackJets_BTagging201810.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostTausFinal.GhostTausFinalCount",
806  "TruthPrimaryVertices.t.x.y.z.sumPt2",
807  "PrimaryVertices.t.x.y.z.sumPt2.covariance",
808  "InDetTrackParticles.d0.z0.vz.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.hitPattern.patternRecoInfo",
809  "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
810  "InDetTrackParticles.numberOfIBLOverflowsdEdx.numberOfUsedHitsdEdx.pixeldEdx",
811  "InDetTrackParticles.expectInnermostPixelLayerHit.expectNextToInnermostPixelLayerHit.numberOfNextToInnermostPixelLayerHits.numberOfContribPixelLayers.numberOfGangedFlaggedFakes.numberOfPixelOutliers.numberOfPixelSplitHits.numberOfPixelSpoiltHits",
812  "InDetTrackParticles.numberOfSCTOutliers.numberOfSCTSpoiltHits",
813  "InDetTrackParticles.numberOfTRTHoles.numberOfTRTDeadStraws.numberOfTRTSharedHits.numberOfTRTHighThresholdHits.numberOfTRTHighThresholdHitsTotal.numberOfTRTHighThresholdOutliers.TRTdEdx.TRTdEdxUsedHits.hitPattern",
814  "InDetTrackParticles.truthMatchProbability.truthOrigin.truthType",
815  "InDetTrackParticles.TrkIsoPtPdEdx_ptcone20.TrkIsoPtPdEdx_ptcone30.TrkIsoPtPdEdx_ptcone40.TrkIsoPtTightPdEdx_ptcone20.TrkIsoPtTightPdEdx_ptcone30.TrkIsoPtTightPdEdx_ptcone40",
816  "InDetTrackParticles.LLP1_ptcone20.LLP1_ptcone30.LLP1_ptcone40.LLP1_ptvarcone20.LLP1_ptvarcone30.LLP1_ptvarcone40.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag",
817  "InDetTrackParticles.LLP1_topoetcone20.LLP1_topoetcone30.LLP1_topoetcone40.LLP1_topoetcone20NonCoreCone.LLP1_topoetcone30NonCoreCone.LLP1_topoetcone40NonCoreCone",
818  "InDetTrackParticles.LLP1_CaloCelldEta.LLP1_CaloCelldPhi.LLP1_CaloCelldR.LLP1_CaloCelldX.LLP1_CaloCelldY.LLP1_CaloCelldZ.LLP1_CaloCellE.LLP1_CaloCellEta.LLP1_CaloCellGain.LLP1_CaloCellID.LLP1_CaloCellPhi.LLP1_CaloCellProvenance.LLP1_CaloCellQuality.LLP1_CaloCellR.LLP1_CaloCellSampling.LLP1_CaloCellTime.LLP1_CaloCellX.LLP1_CaloCellY.LLP1_CaloCellZ.LLP1_CaloCellEneDiff.LLP1_CaloCellTimeDiff",
819  "InDetLargeD0TrackParticles.d0.z0.vz.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.hitPattern.patternRecoInfo",
820  "GSFTrackParticles.d0.z0.vz.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.numberOfPixelHoles.numberOfSCTHoles.numberDoF.chiSquared.hitPattern.truthOrigin.truthType",
821  "LRTGSFTrackParticles.d0.z0.vz.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.truthParticleLink.truthMatchProbability.radiusOfFirstHit.numberOfPixelHoles.numberOfSCTHoles.numberDoF.chiSquared.hitPattern.truthOrigin.truthType",
822  "EventInfo.hardScatterVertexLink.timeStampNSOffset",
823  "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
824  "EventInfo.hardScatterVertexLink.timeStampNSOffset",
825  "EventInfo.DFCommonJets_eventClean_SuperLooseBadLLP.DFCommonJets_eventClean_SuperLooseBadLLP_EMTopo.DFCommonJets_eventClean_LooseBadLLP_EMTopo",
826  "TauJets.dRmax.etOverPtLeadTrk.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z",
827  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
828  "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
829 
830 
831  VSITrackAuxVars = [
832  "is_selected", "is_associated", "is_svtrk_final", "pt_wrtSV", "eta_wrtSV",
833  "phi_wrtSV", "d0_wrtSV", "z0_wrtSV", "errP_wrtSV", "errd0_wrtSV",
834  "errz0_wrtSV", "chi2_toSV"
835  ]
836 
837  for suffix in LLP1VrtSecInclusiveSuffixes:
838  LLP1SlimmingHelper.ExtraVariables += [ "InDetTrackParticles." + '.'.join( [ var + suffix for var in VSITrackAuxVars] ) ]
839  LLP1SlimmingHelper.ExtraVariables += [ "InDetLargeD0TrackParticles." + '.'.join( [ var + suffix for var in VSITrackAuxVars] ) ]
840  LLP1SlimmingHelper.ExtraVariables += [ "GSFTrackParticles." + '.'.join( [ var + suffix for var in VSITrackAuxVars] ) ]
841  LLP1SlimmingHelper.ExtraVariables += [ "LRTGSFTrackParticles." + '.'.join( [ var + suffix for var in VSITrackAuxVars] ) ]
842 
843  LLP1SlimmingHelper.ExtraVariables.append('CaloCalTopoClusters.e_sampl.calM.calE.calEta.calPhi.CENTER_MAG.SECOND_TIME')
844  LLP1SlimmingHelper.AppendToDictionary["EMOriginTopoClusters"]='xAOD::CaloClusterContainer'
845  LLP1SlimmingHelper.AppendToDictionary["EMOriginTopoClustersAux"]='xAOD::ShallowAuxContainer'
846  LLP1SlimmingHelper.ExtraVariables.append('EMOriginTopoClusters.e_sampl.calM.calE.calEta.calPhi.CENTER_MAG.SECOND_TIME')
847 
848  # Truth containers
849  if flags.Input.isMC:
850 
851  from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
852  addTruth3ContentToSlimmerTool(LLP1SlimmingHelper)
853  LLP1SlimmingHelper.AllVariables += ['TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm','TruthPileupParticles','InTimeAntiKt4TruthJets','OutOfTimeAntiKt4TruthJets', 'AntiKt4TruthJets']
854  LLP1SlimmingHelper.ExtraVariables += ["Electrons.TruthLink",
855  "LRTElectrons.TruthLink",
856  "Muons.TruthLink",
857  "MuonsLRT.TruthLink",
858  "Photons.TruthLink"]
859  if flags.Derivation.LLP.saveFullTruth:
860  LLP1SlimmingHelper.ExtraVariables += ['TruthParticles', 'TruthVertices']
861  StaticContent += ["xAOD::JetContainer#AntiKt10TruthRCJets","xAOD::JetAuxContainer#AntiKt10TruthRCJetsAux.-PseudoJet"]
862 
863 
864  from DerivationFrameworkEGamma.PhotonsCPDetailedContent import (
865  PhotonsCPDetailedContent,
866  )
867  LLP1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
868 
869 
870  from DerivationFrameworkJetEtMiss.JetCommonConfig import addOriginCorrectedClustersToSlimmingTool
871  addOriginCorrectedClustersToSlimmingTool(LLP1SlimmingHelper,writeLC=True,writeEM=True)
872  LLP1SlimmingHelper.StaticContent = StaticContent
873 
874  # Trigger content
875  LLP1SlimmingHelper.IncludeTriggerNavigation = False
876  LLP1SlimmingHelper.IncludeJetTriggerContent = False
877  LLP1SlimmingHelper.IncludeMuonTriggerContent = False
878  LLP1SlimmingHelper.IncludeEGammaTriggerContent = False
879  LLP1SlimmingHelper.IncludeTauTriggerContent = False
880  LLP1SlimmingHelper.IncludeEtMissTriggerContent = False
881  LLP1SlimmingHelper.IncludeBJetTriggerContent = False
882  LLP1SlimmingHelper.IncludeBPhysTriggerContent = False
883  LLP1SlimmingHelper.IncludeMinBiasTriggerContent = False
884 
885  # Trigger matching
886  # Run 2
887  if flags.Trigger.EDMVersion == 2:
888  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
889  from DerivationFrameworkLLP.LLPToolsConfig import LLP1TriggerMatchingToolRun2Cfg
890  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = LLP1SlimmingHelper,
891  OutputContainerPrefix = "TrigMatch_",
892  TriggerList = LLP1TriggerListsHelper.Run2TriggerNamesTau)
893  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = LLP1SlimmingHelper,
894  OutputContainerPrefix = "TrigMatch_",
895  TriggerList = LLP1TriggerListsHelper.Run2TriggerNamesNoTau)
896  # Schedule additional pre-matching against LLP offline muons and electrons
897  acc.merge(LLP1TriggerMatchingToolRun2Cfg(flags,
898  name = "LRTTriggerMatchingTool",
899  OutputContainerPrefix = "LRTTrigMatch_",
900  TriggerList = LLP1TriggerListsHelper.Run2TriggerNamesNoTau,
901  InputElectrons=MergedElectronContainer,
902  InputMuons=MergedMuonContainer
903  ))
904  # And add the additional LLP trigger matching branches to the slimming helper
905  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = LLP1SlimmingHelper,
906  OutputContainerPrefix = "LRTTrigMatch_",
907  TriggerList = LLP1TriggerListsHelper.Run2TriggerNamesNoTau,
908  InputElectrons=MergedElectronContainer,
909  InputMuons=MergedMuonContainer
910  )
911  # Run 3, or Run 2 with navigation conversion
912  if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
913  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
915 
916  # Output stream
917  LLP1ItemList = LLP1SlimmingHelper.GetItemList()
918  acc.merge(OutputStreamCfg(flags, "DAOD_LLP1", ItemList=LLP1ItemList, AcceptAlgs=["LLP1Kernel"]))
919  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_LLP1", AcceptAlgs=["LLP1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
920 
921  return acc
922 
python.LLPToolsConfig.RCJetSubstructureAugCfg
def RCJetSubstructureAugCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:39
python.LLPToolsConfig.LLP1TriggerSkimmingToolCfg
def LLP1TriggerSkimmingToolCfg(flags, name, TriggerListsHelper, **kwargs)
Definition: LLPToolsConfig.py:91
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:98
python.LLPToolsConfig.LRTMuonMergerAlg
def LRTMuonMergerAlg(flags, name="LLP1_MuonLRTMergingAlg", **kwargs)
Definition: LLPToolsConfig.py:180
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.LLPToolsConfig.VSITrackParticleThinningCfg
def VSITrackParticleThinningCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:12
python.FtagDerivationConfig.FtagJetCollectionsCfg
def FtagJetCollectionsCfg(cfgFlags, jet_cols, pv_cols=None, trackAugmenterPrefix=None)
Definition: FtagDerivationConfig.py:33
python.EGammaLRTConfig.EGammaLRTCfg
def EGammaLRTCfg(ConfigFlags)
Definition: EGammaLRTConfig.py:15
python.JetSelectorToolsConfig.EventCleaningToolCfg
def EventCleaningToolCfg(ConfigFlags, name, cleaningLevel)
Definition: JetSelectorToolsConfig.py:14
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.JetCommonConfig.addOriginCorrectedClustersToSlimmingTool
def addOriginCorrectedClustersToSlimmingTool(slimhelper, writeLC=False, writeEM=False)
Helper to add origin corrected clusters to output.
Definition: JetCommonConfig.py:240
DerivationFrameworkCaloConfig.JetCaloClusterThinningCfg
def JetCaloClusterThinningCfg(flags, **kwargs)
Definition: DerivationFrameworkCaloConfig.py:105
python.LLPToolsConfig.TrackParametersKVUCfg
def TrackParametersKVUCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:56
IsolationSelectionConfig.IsoCloseByAlgsCfg
def IsoCloseByAlgsCfg(flags, suff="", isPhysLite=False, containerNames=["Muons", "Electrons", "Photons"], stream_name="", ttva_wp="Nonprompt_All_MaxWeight", useSelTools=False)
Definition: IsolationSelectionConfig.py:146
VrtSecInclusiveConfig.VrtSecInclusiveCfg
def VrtSecInclusiveCfg(flags, name="VrtSecInclusive", **kwargs)
Definition: VrtSecInclusiveConfig.py:10
python.JetSelectorToolsConfig.JetCleaningToolCfg
def JetCleaningToolCfg(ConfigFlags, name, jetdef, cleaningLevel, useDecorations)
Definition: JetSelectorToolsConfig.py:6
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:458
python.LLPToolsConfig.TrackParticleCaloCellDecoratorCfg
def TrackParticleCaloCellDecoratorCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:74
python.InDetTrackSelectionToolConfig.InDetTrackSelectionTool_Loose_Cfg
def InDetTrackSelectionTool_Loose_Cfg(flags, name="InDetTrackSelectionTool_Loose", **kwargs)
Configs based on CutLevel Loose #####.
Definition: InDetTrackSelectionToolConfig.py:36
python.InDetToolsConfig.DiTauTrackParticleThinningCfg
def DiTauTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:549
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:30
DerivationFrameworkCaloConfig.MaxCellDecoratorCfg
def MaxCellDecoratorCfg(flags, **kwargs)
Definition: DerivationFrameworkCaloConfig.py:8
python.LLPToolsConfig.LRTElectronLHSelectorsCfg
def LRTElectronLHSelectorsCfg(flags)
Definition: LLPToolsConfig.py:221
python.LLPToolsConfig.LRTElectronMergerAlg
def LRTElectronMergerAlg(flags, name="LLP1_ElectronLRTMergingAlg", **kwargs)
Definition: LLPToolsConfig.py:186
python.AtlasExtrapolatorConfig.AtlasExtrapolatorCfg
def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator')
Definition: AtlasExtrapolatorConfig.py:63
python.JetRecConfig.registerAsInputConstit
def registerAsInputConstit(jetdef)
Definition: JetRecConfig.py:852
python.LLPToolsConfig.JetLargeD0TrackParticleThinningCfg
def JetLargeD0TrackParticleThinningCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:30
python.TrkVertexFitterUtilsConfig.AtlasFullLinearizedTrackFactoryCfg
def AtlasFullLinearizedTrackFactoryCfg(flags, name='AtlasFullLinearizedTrkFactory', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:20
InDetTrackSystematicsToolsConfig.TrackSystematicsAlgCfg
def TrackSystematicsAlgCfg(flags, name="InDetTrackSystematicsAlg", **kwargs)
Definition: InDetTrackSystematicsToolsConfig.py:53
python.JetRecConfig.JetRecCfg
def JetRecCfg(flags, jetdef, returnConfiguredDef=False)
Top level functions returning ComponentAccumulator out of JetDefinition.
Definition: JetRecConfig.py:36
python.MuonsCommonConfig.MuonsCommonCfg
def MuonsCommonCfg(flags, suff="")
Definition: MuonsCommonConfig.py:13
python.LLP1.LLP1KernelCfg
def LLP1KernelCfg(flags, name='LLP1Kernel', **kwargs)
Definition: LLP1.py:21
DerivationFrameworkCaloConfig.MaxCellDecoratorKernelCfg
def MaxCellDecoratorKernelCfg(flags, name="MaxCellDecoratorKernel", **kwargs)
Definition: DerivationFrameworkCaloConfig.py:64
python.DerivationFrameworkToolsConfig.GenericObjectThinningCfg
def GenericObjectThinningCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:20
python.InDetToolsConfig.JetTrackParticleThinningCfg
def JetTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:560
python.InDetToolsConfig.MuonTrackParticleThinningCfg
def MuonTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:528
python.InDetToolsConfig.TauTrackParticleThinningCfg
def TauTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:539
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.LLP1.LLP1Cfg
def LLP1Cfg(flags)
Definition: LLP1.py:698
IsoToolsConfig.CaloIsolationToolCfg
def CaloIsolationToolCfg(flags, **kwargs)
Definition: IsoToolsConfig.py:25
python.TrackIsolationDecoratorConfig.TrackIsolationToolCfg
def TrackIsolationToolCfg(ConfigFlags, name="TrackIsolationTool", **kwargs)
Definition: TrackIsolationDecoratorConfig.py:12
python.MCTruthCommonConfig.addTruth3ContentToSlimmerTool
def addTruth3ContentToSlimmerTool(slimmer)
Definition: MCTruthCommonConfig.py:470
python.InDetToolsConfig.InDetLRTMergeCfg
def InDetLRTMergeCfg(flags, name="InDetLRTMerge", **kwargs)
Definition: InDetToolsConfig.py:14
python.InDetToolsConfig.EgammaTrackParticleThinningCfg
def EgammaTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:579
python.LLPToolsConfig.PhotonIsEMSelectorsCfg
def PhotonIsEMSelectorsCfg(flags)
Definition: LLPToolsConfig.py:193
python.TauCommonConfig.TauThinningCfg
def TauThinningCfg(flags, name, **kwargs)
Definition: TauCommonConfig.py:197
python.LLPToolsConfig.AugmentationToolLeadingJetsCfg
def AugmentationToolLeadingJetsCfg(flags)
Definition: LLPToolsConfig.py:48
python.PhysCommonConfig.PhysCommonAugmentationsCfg
def PhysCommonAugmentationsCfg(flags, **kwargs)
Definition: PhysCommonConfig.py:14
python.LLPToolsConfig.PixeldEdxTrackParticleThinningCfg
def PixeldEdxTrackParticleThinningCfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:83
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:219
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:67
python.InDetToolsConfig.IsolationTrackDecoratorCfg
def IsolationTrackDecoratorCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:447
python.METCommonConfig.METLRTCfg
def METLRTCfg(ConfigFlags, jetType)
Definition: METCommonConfig.py:52
python.LLPToolsConfig.LLP1TriggerMatchingToolRun2Cfg
def LLP1TriggerMatchingToolRun2Cfg(flags, name, **kwargs)
Definition: LLPToolsConfig.py:144