15 """Configure the derivation framework driving algorithm (kernel) for SUSY20"""
17 acc = ComponentAccumulator()
22 augmentationTools = []
26 from DerivationFrameworkBPhys.V0ToolConfig
import BPHY_Reco_V0FinderCfg
as Reco_V0Finder
27 SUSY20_RecoV0_Finder = acc.popToolsAndMerge(Reco_V0Finder(
29 derivation =
"SUSY20",
31 V0ContainerName =
"SUSY20RecoV0Candidates",
32 KshortContainerName =
"SUSY20RecoKshortCandidates",
33 LambdaContainerName =
"SUSY20RecoLambdaCandidates",
34 LambdabarContainerName =
"SUSY20RecoLambdabarCandidates",
35 CheckVertexContainers = [
"PrimaryVertices"]
37 acc.addPublicTool(SUSY20_RecoV0_Finder)
38 augmentationTools.append(SUSY20_RecoV0_Finder)
41 from VrtSecInclusive.VrtSecInclusiveConfig
import VrtSecInclusiveCfg
42 acc.merge(VrtSecInclusiveCfg(
44 name =
"SUSY20_VrtSecInclusiveTool",
45 AugmentingVersionString =
"_SUSY20",
51 SelTrkMaxCutoff = 2000,
52 a0TrkPVDstMinCut = 0.0,
57 DoTruth = flags.Input.isMC,
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_'
66 from IsolationAlgs.IsoToolsConfig
import TrackIsolationToolCfg
67 SUSY20TrackIsoTool = acc.popToolsAndMerge(TrackIsolationToolCfg(
69 name =
"SUSY20TrackIsoTool",
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)
77 from IsolationAlgs.IsoToolsConfig
import CaloIsolationToolCfg
78 from CaloIdentifier
import SUBCALO
79 SUSY20CaloIsoTool = acc.popToolsAndMerge(CaloIsolationToolCfg(
81 name =
"SUSY20CaloIsoTool",
82 EMCaloNums = [SUBCALO.LAREM],
83 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE],
85 UseCaloExtensionCaching =
False,
86 saveOnlyRequestedCorrections =
True
88 acc.addPublicTool(SUSY20CaloIsoTool)
90 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
91 SUSY20IDTrackDecoratorTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
93 name =
"SUSY20IDTrackDecoratorTool",
94 TrackIsolationTool = SUSY20TrackIsoTool,
95 CaloIsolationTool = SUSY20CaloIsoTool,
96 TargetContainer =
"InDetTrackParticles",
97 SelectionString =
"InDetTrackParticles.pt > 0.5*GeV",
99 isoSuffix = deco_ptcones_suffix,
100 Prefix = deco_prefix,
102 acc.addPublicTool(SUSY20IDTrackDecoratorTool)
103 augmentationTools.append(SUSY20IDTrackDecoratorTool)
106 '''# Electron TrackParticles isolation
107 SUSY20ElectronDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
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,
117 acc.addPublicTool(SUSY20ElectronDecorator)
118 augmentationTools.append(SUSY20ElectronDecorator)
120 # Muon TrackParticles isolation
121 SUSY20MuonDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
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,
131 acc.addPublicTool(SUSY20MuonDecorator)
132 augmentationTools.append(SUSY20MuonDecorator)
134 # Photon TrackParticles isolation
135 SUSY20PhotonDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(
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,
145 acc.addPublicTool(SUSY20PhotonDecorator)
146 augmentationTools.append(SUSY20PhotonDecorator)'''
149 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
150 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
153 from DerivationFrameworkInDet.InDetToolsConfig
import InDetTrackSelectionToolWrapperCfg
154 SUSY20TrackSelection = acc.getPrimaryAndMerge(InDetTrackSelectionToolWrapperCfg(
156 name =
"SUSY20TrackSelection",
157 ContainerName =
"InDetTrackParticles",
158 DecorationName =
"DFLoose"
160 SUSY20TrackSelection.TrackSelectionTool.CutLevel =
"Loose"
161 acc.addPublicTool(SUSY20TrackSelection)
162 augmentationTools.append(SUSY20TrackSelection)
168 thinningExpression =
"InDetTrackParticles.DFLoose && (InDetTrackParticles.pt > 0.5*GeV) && (abs( DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta) ) < 3.0*mm)"
171 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
172 SUSY20TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
174 name =
"SUSY20TrackParticleThinningTool",
175 StreamName = kwargs[
'StreamName'],
176 SelectionString = thinningExpression,
177 InDetTrackParticlesKey =
"InDetTrackParticles"
179 acc.addPublicTool(SUSY20TrackParticleThinningTool)
180 thinningTools.append(SUSY20TrackParticleThinningTool)
183 from DerivationFrameworkInDet.InDetToolsConfig
import MuonTrackParticleThinningCfg
184 SUSY20MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
186 name =
"SUSY20MuonTPThinningTool",
187 StreamName = kwargs[
'StreamName'],
189 InDetTrackParticlesKey =
"InDetTrackParticles"
191 acc.addPublicTool(SUSY20MuonTPThinningTool)
192 thinningTools.append(SUSY20MuonTPThinningTool)
195 from DerivationFrameworkInDet.InDetToolsConfig
import EgammaTrackParticleThinningCfg
196 SUSY20ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
198 name =
"SUSY20ElectronTPThinningTool",
199 StreamName = kwargs[
'StreamName'],
201 InDetTrackParticlesKey =
"InDetTrackParticles"
203 acc.addPublicTool(SUSY20ElectronTPThinningTool)
204 thinningTools.append(SUSY20ElectronTPThinningTool)
207 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import GenericObjectThinningCfg
208 SUSY20PhotonThinningTool = acc.getPrimaryAndMerge(GenericObjectThinningCfg(
210 name =
"SUSY20PhotonThinningTool",
211 StreamName = kwargs[
'StreamName'],
212 ContainerName =
"Photons",
213 SelectionString =
"Photons.pt > 10*GeV"
215 acc.addPublicTool(SUSY20PhotonThinningTool)
216 thinningTools.append(SUSY20PhotonThinningTool)
219 SUSY20PhotonTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
221 name =
"SUSY20PhotonTPThinningTool",
222 StreamName = kwargs[
'StreamName'],
224 InDetTrackParticlesKey =
"InDetTrackParticles",
225 GSFConversionVerticesKey =
"GSFConversionVertices"
227 acc.addPublicTool(SUSY20PhotonTPThinningTool)
228 thinningTools.append(SUSY20PhotonTPThinningTool)
232 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
233 SUSY20TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(
235 name =
"SUSY20TruthThinningTool",
236 WritePartons =
False,
238 WriteBHadrons =
True,
240 GeantPhotonPtThresh = 20000,
242 PartonPtThresh = -1.0,
245 WriteBosonProducts =
False,
246 WriteBSMProducts =
True,
247 WriteTopAndDecays =
True,
248 WriteEverything =
False,
249 WriteAllLeptons =
True,
250 WriteLeptonsNotFromHadrons =
False,
251 WriteNotPhysical =
False,
253 PreserveAncestors =
True,
254 PreserveGeneratorDescendants =
True
256 acc.addPublicTool(SUSY20TruthThinningTool)
257 thinningTools.append(SUSY20TruthThinningTool)
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]
274 jetRequirements_DT =
"AntiKt4EMPFlowJets.pt > 200*GeV && abs(AntiKt4EMPFlowJets.eta) < 2.8"
275 jetSelection_DT =
"(count(" + jetRequirements_DT +
") >= 1)"
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]
284 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import FilterCombinationANDCfg
285 SUSY20xAODSkimmingTool_DT = acc.getPrimaryAndMerge(FilterCombinationANDCfg(
286 flags, name =
"SUSY20SkimmingTool_DT", FilterList = filterList))
287 skimmingTools.append(SUSY20xAODSkimmingTool_DT)
292 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
293 acc.addEventAlgo(DerivationKernel(
295 SkimmingTools = skimmingTools,
296 ThinningTools = thinningTools,
297 AugmentationTools = augmentationTools,
298 RunSkimmingFirst =
True
305 stream_name =
'StreamDAOD_SUSY20'
306 acc = ComponentAccumulator()
311 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
312 SUSY20TriggerListsHelper = TriggerListsHelper(flags)
315 acc.merge(
SUSY20KernelCfg(flags, name =
"SUSY20Kernel", StreamName = stream_name, TriggerListsHelper = SUSY20TriggerListsHelper))
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))
325 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
326 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
327 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
329 SUSY20SlimmingHelper =
SlimmingHelper(
"SUSY20SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
332 SUSY20SlimmingHelper.SmartCollections = [
337 "InDetTrackParticles",
340 "AntiKt4EMPFlowJets",
342 "MET_Baseline_AntiKt4EMPFlow",
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",
352 "Muons.ptcone40.ptcone30.ptcone20.charge.quality.InnerDetectorPt.MuonSpectrometerPt.CaloLRLikelihood.CaloMuonIDTag.eta_sampl.phi_sampl",
354 "Photons.DFCommonPhotonsIsEMLoose.DFCommonPhotonsIsEMTight",
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",
361 "InDetTrackParticles.SUSY20_topoetcone20.SUSY20_topoetcone30.SUSY20_topoetcone40.SUSY20_topoetcone20NonCoreCone.SUSY20_topoetcone30NonCoreCone.SUSY20_topoetcone40NonCoreCone",
362 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights",
363 "InDetTrackParticles.vertexLink.vz",
371 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import AddTauAndDownstreamParticlesCfg
372 acc.merge(AddTauAndDownstreamParticlesCfg(flags, generations = 2))
374 SUSY20SlimmingHelper.AllVariables += [
385 'TruthBosonsWithDecayParticles',
386 'TruthBosonsWithDecayVertices',
387 'TruthBSMWithDecayParticles',
388 'TruthBSMWithDecayVertices',
389 'TruthTausWithDecayParticles',
390 'TruthTausWithDecayVertices',
392 'AntiKt4TruthDressedWZJets'
394 SUSY20SlimmingHelper.ExtraVariables += [
395 "Electrons.TruthLink",
398 "TruthEvents.Q.XF1.XF2.PDGID1.PDGID2.PDFID1.PDFID2.X1.X2.crossSection",
399 "InDetTrackParticles.TruthLink.truthMatchProbability.truthClassification.truthOrigin.truthType.truthParticleLink"
405 for containerName
in [
"SUSY20RecoV0Candidates",
"SUSY20RecoKshortCandidates",
"SUSY20RecoLambdaCandidates",
"SUSY20RecoLambdabarCandidates"]:
407 "xAOD::VertexContainer#%s"%containerName,
408 "xAOD::VertexAuxContainer#%sAux"%containerName
409 +
".-vxTrackAtVertex"
411 +
".-neutralParticleLinks"
418 +
".-gamma_massError"
419 +
".-gamma_probability",
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 )]
427 'xAOD::VertexContainer#VrtSecInclusive_SecondaryVertices_SUSY20',
428 'xAOD::VertexAuxContainer#VrtSecInclusive_SecondaryVertices_SUSY20Aux'
429 +
'.-vxTrackAtVertex'
431 +
'.-neutralParticleLinks'
432 +
'.-trackParticleLinks'
436 SUSY20SlimmingHelper.StaticContent = StaticContent
439 from IsolationSelection.IsolationSelectionConfig
import setupIsoCloseBySlimmingVariables
440 setupIsoCloseBySlimmingVariables(SUSY20SlimmingHelper)
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
455 if flags.Trigger.EDMVersion == 2:
456 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
457 AddRun2TriggerMatchingToSlimmingHelper(
458 SlimmingHelper = SUSY20SlimmingHelper,
459 OutputContainerPrefix =
"TrigMatch_",
460 TriggerList = SUSY20TriggerListsHelper.Run2TriggerNamesTau
462 AddRun2TriggerMatchingToSlimmingHelper(
463 SlimmingHelper = SUSY20SlimmingHelper,
464 OutputContainerPrefix =
"TrigMatch_",
465 TriggerList = SUSY20TriggerListsHelper.Run2TriggerNamesNoTau
468 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
469 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
470 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(SUSY20SlimmingHelper)
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]))