ATLAS Offline Software
Loading...
Searching...
No Matches
python.SUSY20 Namespace Reference

Functions

 SUSY20KernelCfg (flags, name="SUSY20Kernel", **kwargs)
 SUSY20Cfg (flags)

Function Documentation

◆ SUSY20Cfg()

python.SUSY20.SUSY20Cfg ( flags)

Definition at line 303 of file SUSY20.py.

303def SUSY20Cfg(flags):
304
305 stream_name = 'StreamDAOD_SUSY20'
306 acc = ComponentAccumulator()
307
308 # Get the lists of triggers needed for trigger matching.
309 # This is needed at this scope (for the slimming) and further down in the config chain
310 # for actually configuring the matching, so we create it here and pass it down
311 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
312 SUSY20TriggerListsHelper = TriggerListsHelper(flags)
313
314 # SUSY20 augmentations
315 acc.merge(SUSY20KernelCfg(flags, name = "SUSY20Kernel", StreamName = stream_name, TriggerListsHelper = SUSY20TriggerListsHelper))
316
317
319 from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
320 acc.merge(IsoCloseByAlgsCfg(flags, suff = "_SUSY20", isPhysLite = False, containerNames = ["Muons", "Electrons", "Photons"], useSelTools = True, stream_name = stream_name))
321
322 # =============================
323 # Define contents of the format
324 # =============================
325 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
326 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
327 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
328
329 SUSY20SlimmingHelper = SlimmingHelper("SUSY20SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
330
331 # Containers that we slim
332 SUSY20SlimmingHelper.SmartCollections = [
333 "EventInfo",
334 "Electrons",
335 "Photons",
336 "Muons",
337 "InDetTrackParticles",
338 "PrimaryVertices",
339 "TauJets",
340 "AntiKt4EMPFlowJets",
341
342 "MET_Baseline_AntiKt4EMPFlow",
343 ]
344
345 # Extra content
346 # Commented out variables not needed by current analyses but still included in r21 SUSY20_DAODs
347 SUSY20SlimmingHelper.ExtraVariables += [
348 "EventInfo.DFCommonJets_eventClean_TightBad.DFCommonJets_jetClean_TightBad",
349 "AntiKt4EMPFlowJets.DFCommonJets_jetClean_LooseBad.DFCommonJets_jetClean_TightBad",
350 "Electrons.DFCommonElectronsLHVeryLoose.DFCommonElectronsLHLoose.DFCommonElectronsLHLooseBL.DFCommonElectronsLHMedium.DFCommonElectronsLHTight.DFCommonElectronsLHVeryLooseIsEMValue.DFCommonElectronsLHLooseIsEMValue.DFCommonElectronsLHLooseBLIsEMValue.DFCommonElectronsLHMediumIsEMValue.DFCommonElectronsLHTightIsEMValue",
351 #"Electrons.SUSY20_topoetcone20.SUSY20_topoetcone30.SUSY20_topoetcone40.SUSY20_topoetcone20NonCoreCone.SUSY20_topoetcone30NonCoreCone.SUSY20_topoetcone40NonCoreCone",
352 "Muons.ptcone40.ptcone30.ptcone20.charge.quality.InnerDetectorPt.MuonSpectrometerPt.CaloLRLikelihood.CaloMuonIDTag.eta_sampl.phi_sampl",
353 #"Muons.SUSY20_topoetcone20.SUSY20_topoetcone30.SUSY20_topoetcone40.SUSY20_topoetcone20NonCoreCone.SUSY20_topoetcone30NonCoreCone.SUSY20_topoetcone40NonCoreCone",
354 "Photons.DFCommonPhotonsIsEMLoose.DFCommonPhotonsIsEMTight",
355 #"Photons.SUSY20_topoetcone20.SUSY20_topoetcone30.SUSY20_topoetcone40.SUSY20_topoetcone20NonCoreCone.SUSY20_topoetcone30NonCoreCone.SUSY20_topoetcone40NonCoreCone",
356 "InDetTrackParticles.TRTdEdx.TRTdEdxUsedHits.hitPattern.numberOfContribPixelLayers.numberOfGangedFlaggedFakes.numberOfIBLOverflowsdEdx.numberOfPixelOutliers.numberOfPixelSplitHits.numberOfPixelSpoiltHits.numberOfSCTOutliers.numberOfSCTSpoiltHits.numberOfTRTDeadStraws.numberOfTRTHits.numberOfTRTHoles.numberOfTRTOutliers.numberOfTRTSharedHits.numberOfUsedHitsdEdx.pixeldEdx",
357 "InDetTrackParticles.chiSquared.d0.definingParametersCovMatrix.expectInnermostPixelLayerHit.expectNextToInnermostPixelLayerHit.numberDoF.numberOfInnermostPixelLayerHits.numberOfNextToInnermostPixelLayerHits.numberOfPixelDeadSensors.numberOfPixelHits.numberOfPixelHoles.numberOfPixelSharedHits.numberOfSCTDeadSensors.numberOfSCTHits.numberOfSCTHoles.numberOfSCTSharedHits.phi.qOverP.theta.z0",
358 "InDetTrackParticles.numberOfInnermostPixelLayerOutliers.numberOfInnermostPixelLayerSharedHits.numberOfInnermostPixelLayerSplitHits.numberOfNextToInnermostPixelLayerOutliers.numberOfNextToInnermostPixelLayerSharedHits.numberOfNextToInnermostPixelLayerSplitHits.numberOfGangedPixels.numberOfSCTDoubleHoles.numberOfTRTHighThresholdHits.numberOfTRTHighThresholdHitsTotal.numberOfTRTHighThresholdOutliers.numberOfTRTTubeHits.numberOfTRTXenonHits.numberOfOutliersOnTrack.standardDeviationOfChi2OS.eProbabilityHT.eProbabilityComb.TRTTrackOccupancy",
359 "InDetTrackParticles.SUSY20_ptcone20.SUSY20_ptcone30.SUSY20_ptcone40",
360 #"InDetTrackParticles.SUSY20_ptvarcone20.SUSY20_ptvarcone30.SUSY20_ptvarcone40",
361 "InDetTrackParticles.SUSY20_topoetcone20.SUSY20_topoetcone30.SUSY20_topoetcone40.SUSY20_topoetcone20NonCoreCone.SUSY20_topoetcone30NonCoreCone.SUSY20_topoetcone40NonCoreCone",
362 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights",
363 "InDetTrackParticles.vertexLink.vz",
364 #"InDetTrackParticles.trackCaloClusEta.trackCaloClusPhi.trackCaloSampleE.trackCaloSampleNumber",
365 #"InDetTrackParticles.SUSY20_trackCaloClusEta_ele.SUSY20_trackCaloClusPhi_ele.SUSY20_trackCaloClusE_ele.SUSY20_trackCaloSampleE_ele.SUSY20_trackCaloSampleNumber_ele",
366 ]
367
368 # Truth content
369 if flags.Input.isMC:
370
371 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTauAndDownstreamParticlesCfg
372 acc.merge(AddTauAndDownstreamParticlesCfg(flags, generations = 2))
373
374 SUSY20SlimmingHelper.AllVariables += [
375 'MET_Truth',
376 'TruthEvents',
377 'TruthParticles',
378 'TruthVertices',
379 'TruthElectrons',
380 'TruthMuons',
381 'TruthPhotons',
382 'TruthTaus',
383 'TruthNeutrinos',
384 'TruthBSM',
385 'TruthBosonsWithDecayParticles',
386 'TruthBosonsWithDecayVertices',
387 'TruthBSMWithDecayParticles',
388 'TruthBSMWithDecayVertices',
389 'TruthTausWithDecayParticles',
390 'TruthTausWithDecayVertices',
391 'AntiKt4TruthJets',
392 'AntiKt4TruthDressedWZJets'
393 ]
394 SUSY20SlimmingHelper.ExtraVariables += [
395 "Electrons.TruthLink",
396 "Muons.TruthLink",
397 "Photons.TruthLink",
398 "TruthEvents.Q.XF1.XF2.PDGID1.PDGID2.PDFID1.PDFID2.X1.X2.crossSection",
399 "InDetTrackParticles.TruthLink.truthMatchProbability.truthOrigin.truthType.truthParticleLink"
400 ]
401
402 StaticContent = []
403
404 # V0 content
405 for containerName in ["SUSY20RecoV0Candidates","SUSY20RecoKshortCandidates","SUSY20RecoLambdaCandidates","SUSY20RecoLambdabarCandidates"]:
406 StaticContent += [
407 "xAOD::VertexContainer#%s"%containerName,
408 "xAOD::VertexAuxContainer#%sAux"%containerName
409 + ".-vxTrackAtVertex"
410 + ".-vertexType"
411 + ".-neutralParticleLinks"
412 + ".-neutralWeights"
413 + ".-KshortLink"
414 + ".-LambdaLink"
415 + ".-LambdabarLink"
416 + ".-gamma_fit"
417 + ".-gamma_mass"
418 + ".-gamma_massError"
419 + ".-gamma_probability",
420 ]
421
422 # VSI content
423 VSITrackVars = ["is_selected", "is_associated", "is_svtrk_final", "pt_wrtSV", "eta_wrtSV", "phi_wrtSV", "d0_wrtSV", "z0_wrtSV", "errP_wrtSV", "errd0_wrtSV", "errz0_wrtSV", "chi2_toSV"]
424 SUSY20SlimmingHelper.ExtraVariables += ["InDetTrackParticles." + ".".join( var + "_SUSY20" for var in VSITrackVars )]
425
426 StaticContent += [
427 'xAOD::VertexContainer#VrtSecInclusive_SecondaryVertices_SUSY20',
428 'xAOD::VertexAuxContainer#VrtSecInclusive_SecondaryVertices_SUSY20Aux'
429 + '.-vxTrackAtVertex'
430 + '.-vertexType'
431 + '.-neutralParticleLinks'
432 + '.-trackParticleLinks'
433 + '.-neutralWeights'
434 ]
435
436 SUSY20SlimmingHelper.StaticContent = StaticContent
437
438
439 from IsolationSelection.IsolationSelectionConfig import setupIsoCloseBySlimmingVariables
440 setupIsoCloseBySlimmingVariables(SUSY20SlimmingHelper)
441
442 # Trigger content
443 SUSY20SlimmingHelper.IncludeTriggerNavigation = False
444 SUSY20SlimmingHelper.IncludeMuonTriggerContent = False
445 SUSY20SlimmingHelper.IncludeEGammaTriggerContent = False
446 SUSY20SlimmingHelper.IncludeEtMissTriggerContent = False
447 SUSY20SlimmingHelper.IncludeJetTriggerContent = False
448 SUSY20SlimmingHelper.IncludeBJetTriggerContent = False
449 SUSY20SlimmingHelper.IncludeBPhysTriggerContent = False
450 SUSY20SlimmingHelper.IncludeTauTriggerContent = False
451 SUSY20SlimmingHelper.IncludeMinBiasTriggerContent = False
452
453 # Trigger matching
454 # Run 2
455 if flags.Trigger.EDMVersion == 2:
456 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
457 AddRun2TriggerMatchingToSlimmingHelper(
458 SlimmingHelper = SUSY20SlimmingHelper,
459 OutputContainerPrefix = "TrigMatch_",
460 TriggerList = SUSY20TriggerListsHelper.Run2TriggerNamesTau
461 )
462 AddRun2TriggerMatchingToSlimmingHelper(
463 SlimmingHelper = SUSY20SlimmingHelper,
464 OutputContainerPrefix = "TrigMatch_",
465 TriggerList = SUSY20TriggerListsHelper.Run2TriggerNamesNoTau
466 )
467 # Run 3, or Run 2 with navigation conversion
468 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
469 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
470 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(SUSY20SlimmingHelper)
471
472 # Output stream
473 SUSY20ItemList = SUSY20SlimmingHelper.GetItemList()
474 acc.merge(OutputStreamCfg(flags, "DAOD_SUSY20", ItemList = SUSY20ItemList, AcceptAlgs = ["SUSY20Kernel"]))
475 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_SUSY20", AcceptAlgs = ["SUSY20Kernel"], createMetadata = [MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
476
477 return acc

◆ SUSY20KernelCfg()

python.SUSY20.SUSY20KernelCfg ( flags,
name = "SUSY20Kernel",
** kwargs )
Configure the derivation framework driving algorithm (kernel) for SUSY20

Definition at line 13 of file SUSY20.py.

13def SUSY20KernelCfg(flags, name = "SUSY20Kernel", **kwargs):
14
15 """Configure the derivation framework driving algorithm (kernel) for SUSY20"""
16
17 acc = ComponentAccumulator()
18
19 #
20 # SUSY20 augmentations
21 #
22 augmentationTools = []
23
24 # V0Finder Tool
25 # Details here: https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/python/V0ToolConfig.py
26 from DerivationFrameworkBPhys.V0ToolConfig import BPHY_Reco_V0FinderCfg as Reco_V0Finder
27 SUSY20_RecoV0_Finder = acc.popToolsAndMerge(Reco_V0Finder(
28 flags,
29 derivation = "SUSY20",
30 suffix = "DT",
31 V0ContainerName = "SUSY20RecoV0Candidates",
32 KshortContainerName = "SUSY20RecoKshortCandidates",
33 LambdaContainerName = "SUSY20RecoLambdaCandidates",
34 LambdabarContainerName = "SUSY20RecoLambdabarCandidates",
35 CheckVertexContainers = ["PrimaryVertices"]
36 ))
37 acc.addPublicTool(SUSY20_RecoV0_Finder)
38 augmentationTools.append(SUSY20_RecoV0_Finder)
39
40 # VrtSecInclusiveTool
41 from VrtSecInclusive.VrtSecInclusiveConfig import VrtSecInclusiveCfg
42 acc.merge(VrtSecInclusiveCfg(
43 flags,
44 name = "SUSY20_VrtSecInclusiveTool",
45 AugmentingVersionString = "_SUSY20",
46 CutSctHits = 1,
47 TrkA0ErrCut = 200000,
48 TrkZErrCut = 200000,
49 TrkPtCut = 300,
50 TrkChi2Cut = 5.0,
51 SelTrkMaxCutoff = 2000,
52 a0TrkPVDstMinCut = 0.0,
53 SelVrtChi2Cut = 4.5,
54 CutSharedHits = 5,
55 TruthTrkLen = 1,
56 DoSAloneTRT = False,
57 DoTruth = flags.Input.isMC,
58 ))
59
60 # Track isolation
61 from xAODPrimitives.xAODIso import xAODIso as isoPar
62 deco_ptcones = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20, isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20]
63 deco_ptcones_suffix = ["ptcone40", "ptcone30", "ptcone20", "topoetcone40", "topoetcone30", "topoetcone20"]
64 deco_prefix = 'SUSY20_'
65
66 from IsolationAlgs.IsoToolsConfig import TrackIsolationToolCfg
67 SUSY20TrackIsoTool = acc.popToolsAndMerge(TrackIsolationToolCfg(
68 flags,
69 name = "SUSY20TrackIsoTool",
70 ))
71 SUSY20TrackIsoTool.TrackSelectionTool.maxZ0SinTheta = 1.5
72 SUSY20TrackIsoTool.TrackSelectionTool.maxD0 = 1.5
73 SUSY20TrackIsoTool.TrackSelectionTool.minPt = 1000
74 SUSY20TrackIsoTool.TrackSelectionTool.CutLevel = "TightPrimary"
75 acc.addPublicTool(SUSY20TrackIsoTool)
76
77 from IsolationAlgs.IsoToolsConfig import CaloIsolationToolCfg
78 from CaloIdentifier import SUBCALO
79 SUSY20CaloIsoTool = acc.popToolsAndMerge(CaloIsolationToolCfg(
80 flags,
81 name = "SUSY20CaloIsoTool",
82 EMCaloNums = [SUBCALO.LAREM],
83 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE],
84 UseEMScale = True,
85 UseCaloExtensionCaching = False,
86 saveOnlyRequestedCorrections = True
87 ))
88 acc.addPublicTool(SUSY20CaloIsoTool)
89
90 from DerivationFrameworkInDet.InDetToolsConfig import IsolationTrackDecoratorCfg
91 SUSY20IDTrackDecoratorTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
92 flags,
93 name = "SUSY20IDTrackDecoratorTool",
94 TrackIsolationTool = SUSY20TrackIsoTool,
95 CaloIsolationTool = SUSY20CaloIsoTool,
96 TargetContainer = "InDetTrackParticles",
97 SelectionString = "InDetTrackParticles.pt > 0.5*GeV",
98 iso = deco_ptcones,
99 isoSuffix = deco_ptcones_suffix,
100 Prefix = deco_prefix,
101 ))
102 acc.addPublicTool(SUSY20IDTrackDecoratorTool)
103 augmentationTools.append(SUSY20IDTrackDecoratorTool)
104
105 # Commented out calo isolation, not needed by current analyses but still included in r21 SUSY20_DAODs
106 '''# Electron TrackParticles isolation
107 SUSY20ElectronDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
108 flags,
109 name = "SUSY20ElectronDecoratorTool",
110 TrackIsolationTool = SUSY20TrackIsoTool,
111 CaloIsolationTool = SUSY20CaloIsoTool,
112 TargetContainer = "Electrons",
113 iso = [isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20],
114 isoSuffix = ["topoetcone40", "topoetcone30", "topoetcone20"],
115 Prefix = deco_prefix,
116 ))
117 acc.addPublicTool(SUSY20ElectronDecorator)
118 augmentationTools.append(SUSY20ElectronDecorator)
119
120 # Muon TrackParticles isolation
121 SUSY20MuonDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
122 flags,
123 name = "SUSY20MuonDecoratorTool",
124 TrackIsolationTool = SUSY20TrackIsoTool,
125 CaloIsolationTool = SUSY20CaloIsoTool,
126 TargetContainer = "Muons",
127 iso = [isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20],
128 isoSuffix = ["topoetcone40", "topoetcone30", "topoetcone20"],
129 Prefix = deco_prefix,
130 ))
131 acc.addPublicTool(SUSY20MuonDecorator)
132 augmentationTools.append(SUSY20MuonDecorator)
133
134 # Photon TrackParticles isolation
135 SUSY20PhotonDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
136 flags,
137 name = "SUSY20PhotonDecoratorTool",
138 TrackIsolationTool = SUSY20TrackIsoTool,
139 CaloIsolationTool = SUSY20CaloIsoTool,
140 TargetContainer = "Photons",
141 iso = [isoPar.topoetcone40, isoPar.topoetcone30, isoPar.topoetcone20],
142 isoSuffix = ["topoetcone40", "topoetcone30", "topoetcone20"],
143 Prefix = deco_prefix,
144 ))
145 acc.addPublicTool(SUSY20PhotonDecorator)
146 augmentationTools.append(SUSY20PhotonDecorator)'''
147
148 # PHYS common augmentations
149 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
150 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
151
152 # Track selection augmentation need for InDetTrackParticles thinning
153 from DerivationFrameworkInDet.InDetToolsConfig import InDetTrackSelectionToolWrapperCfg
154 SUSY20TrackSelection = acc.getPrimaryAndMerge(InDetTrackSelectionToolWrapperCfg(
155 flags,
156 name = "SUSY20TrackSelection",
157 ContainerName = "InDetTrackParticles",
158 DecorationName = "DFLoose"
159 ))
160 SUSY20TrackSelection.TrackSelectionTool.CutLevel = "Loose"
161 acc.addPublicTool(SUSY20TrackSelection)
162 augmentationTools.append(SUSY20TrackSelection)
163
164 #
165 # Thinning tools
166 #
167 thinningTools = []
168 thinningExpression = "InDetTrackParticles.DFLoose && (InDetTrackParticles.pt > 0.5*GeV) && (abs( DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta) ) < 3.0*mm)"
169
170 # TrackParticles directly
171 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg
172 SUSY20TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
173 flags,
174 name = "SUSY20TrackParticleThinningTool",
175 StreamName = kwargs['StreamName'],
176 SelectionString = thinningExpression,
177 InDetTrackParticlesKey = "InDetTrackParticles"
178 ))
179 acc.addPublicTool(SUSY20TrackParticleThinningTool)
180 thinningTools.append(SUSY20TrackParticleThinningTool)
181
182 # TrackParticles associated with Muons
183 from DerivationFrameworkInDet.InDetToolsConfig import MuonTrackParticleThinningCfg
184 SUSY20MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
185 flags,
186 name = "SUSY20MuonTPThinningTool",
187 StreamName = kwargs['StreamName'],
188 MuonKey = "Muons",
189 InDetTrackParticlesKey = "InDetTrackParticles"
190 ))
191 acc.addPublicTool(SUSY20MuonTPThinningTool)
192 thinningTools.append(SUSY20MuonTPThinningTool)
193
194 # TrackParticles associated with Electrons
195 from DerivationFrameworkInDet.InDetToolsConfig import EgammaTrackParticleThinningCfg
196 SUSY20ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
197 flags,
198 name = "SUSY20ElectronTPThinningTool",
199 StreamName = kwargs['StreamName'],
200 SGKey = "Electrons",
201 InDetTrackParticlesKey = "InDetTrackParticles"
202 ))
203 acc.addPublicTool(SUSY20ElectronTPThinningTool)
204 thinningTools.append(SUSY20ElectronTPThinningTool)
205
206 # Photon thinning
207 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import GenericObjectThinningCfg
208 SUSY20PhotonThinningTool = acc.getPrimaryAndMerge(GenericObjectThinningCfg(
209 flags,
210 name = "SUSY20PhotonThinningTool",
211 StreamName = kwargs['StreamName'],
212 ContainerName = "Photons",
213 SelectionString = "Photons.pt > 10*GeV"
214 ))
215 acc.addPublicTool(SUSY20PhotonThinningTool)
216 thinningTools.append(SUSY20PhotonThinningTool)
217
218 # TrackParticles associated with photons
219 SUSY20PhotonTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
220 flags,
221 name = "SUSY20PhotonTPThinningTool",
222 StreamName = kwargs['StreamName'],
223 SGKey = "Photons",
224 InDetTrackParticlesKey = "InDetTrackParticles",
225 GSFConversionVerticesKey = "GSFConversionVertices"
226 ))
227 acc.addPublicTool(SUSY20PhotonTPThinningTool)
228 thinningTools.append(SUSY20PhotonTPThinningTool)
229
230 # Truth thinning
231 if flags.Input.isMC:
232 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import MenuTruthThinningCfg
233 SUSY20TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(
234 flags,
235 name = "SUSY20TruthThinningTool",
236 WritePartons = False,
237 WriteHadrons = True,
238 WriteBHadrons = True,
239 WriteGeant = False,
240 GeantPhotonPtThresh = 20000,
241 WriteTauHad = True,
242 PartonPtThresh = -1.0,
243 WriteBSM = True,
244 WriteBosons = True,
245 WriteBosonProducts = False,
246 WriteBSMProducts = True,
247 WriteTopAndDecays = True,
248 WriteEverything = False,
249 WriteAllLeptons = True,
250 WriteLeptonsNotFromHadrons = False,
251 WriteNotPhysical = False,
252 WriteFirstN = 10,
253 PreserveAncestors = True,
254 PreserveGeneratorDescendants = True
255 ))
256 acc.addPublicTool(SUSY20TruthThinningTool)
257 thinningTools.append(SUSY20TruthThinningTool)
258
259 #
260 # Skimming
261 #
262 skimmingTools = []
263 filterList = []
264
265 # DT-specific trigger skimming
266 if flags.Trigger.EDMVersion >= 0:
267 from DerivationFrameworkSUSY.SUSYToolsConfig import (
268 SUSY20DTTriggerSkimmingToolCfg)
269 SUSY20TriggerSkimmingTool_DT = acc.getPrimaryAndMerge(
270 SUSY20DTTriggerSkimmingToolCfg(flags, name = "SUSY20TriggerSkimmingTool"))
271 filterList += [SUSY20TriggerSkimmingTool_DT]
272
273 # DT-specific jet skimming
274 jetRequirements_DT = "AntiKt4EMPFlowJets.pt > 200*GeV && abs(AntiKt4EMPFlowJets.eta) < 2.8"
275 jetSelection_DT = "(count(" + jetRequirements_DT + ") >= 1)"
276
277 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
278 xAODStringSkimmingToolCfg)
279 SUSY20JetSkimmingTool_DT = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
280 flags, name = "SUSY20JetSkimmingTool_DT", expression = jetSelection_DT))
281 filterList += [SUSY20JetSkimmingTool_DT]
282
283 # DT-specific final skim selection, with trigger selection AND jet selection
284 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import FilterCombinationANDCfg
285 SUSY20xAODSkimmingTool_DT = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
286 flags, name = "SUSY20SkimmingTool_DT", FilterList = filterList))
287 skimmingTools.append(SUSY20xAODSkimmingTool_DT)
288
289 #
290 # The kernel algorithm itself
291 #
292 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
293 acc.addEventAlgo(DerivationKernel(
294 name,
295 SkimmingTools = skimmingTools,
296 ThinningTools = thinningTools,
297 AugmentationTools = augmentationTools,
298 RunSkimmingFirst = True
299 ))
300
301 return acc
302