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 308 of file SUSY20.py.

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