14 MuonContainer="Muons",
15 IdTrackContainer="InDetTrackParticles",
16 applyTrigger = False):
18 acc = ComponentAccumulator()
19 from DerivationFrameworkMuons.MuonsToolsConfig
import DiMuonTaggingAlgCfg
21 acc.merge(DiMuonTaggingAlgCfg(flags,
22 name =
"DiMuonTaggingZmumuOC",
23 Mu1PtMin = 24*Units.GeV,
25 Mu1RequireQual =
True,
26 Mu2PtMin = 3.0*Units.GeV,
27 Mu2RequireQual =
True,
28 UseTrackProbe =
False,
29 MuonContainerKey = MuonContainer,
30 TrackContainerKey = IdTrackContainer,
31 InvariantMassLow = 60*Units.GeV,
32 IDTrackThinningConeSize = 0.4,
33 applyTrigger = applyTrigger,
34 BranchPrefix =
"Muon1ZmumuOC"))
37 acc.merge(DiMuonTaggingAlgCfg(flags,
38 name =
"DiMuonTaggingZmumuSC",
39 Mu1PtMin = 24*Units.GeV,
41 Mu1RequireQual =
True,
42 Mu2PtMin = 3.0*Units.GeV,
43 Mu2RequireQual =
True,
44 UseTrackProbe =
False,
45 MuonContainerKey = MuonContainer,
46 TrackContainerKey = IdTrackContainer,
47 OppositeCharge =
False,
48 applyTrigger = applyTrigger,
49 InvariantMassLow = 60*Units.GeV,
50 BranchPrefix =
"Muon1ZmumuSC"))
97 """Configure the derivation framework driving algorithm (kernel) for MUON5"""
98 acc = ComponentAccumulator()
100 kwargs.setdefault(
"MuonContainer",
"Muons")
101 kwargs.setdefault(
"IdTrkContainer",
"InDetTrackParticles")
102 kwargs.setdefault(
"MsTrkContainer",
"ExtrapolatedMuonTrackParticles")
103 kwargs.setdefault(
"scheduleThinning",
True)
108 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
109 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
113 MuonContainer= kwargs[
"MuonContainer"],
114 IdTrackContainer=kwargs[
"IdTrkContainer"])
119 dimuon_flags = [
"pass{flag}".format(flag = algo.BranchPrefix)
for algo
in diMuonSelAcc.getEventAlgos()]
120 skimmingORs = [f
"DIMU_{flag} > 0" for flag
in dimuon_flags ]
121 acc.merge(diMuonSelAcc)
128 MUON5AugmentTools = []
133 acc.addPublicTool(Muon5ElElSelectionTool)
134 MUON5AugmentTools.append(Muon5ElElSelectionTool)
135 skimmingORs.append(
"(count( EGAM1_DiElectronMass3 > 60.0*GeV ) >= 1)")
139 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
140 acc.merge(TrackIsolationCfg(flags,TrackCollection=
"InDetTrackParticles", TrackSelections = trkThinFlags))
141 acc.merge(TrackIsolationCfg(flags,TrackCollection=
"ExtrapolatedMuonTrackParticles"))
143 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
144 contNames = [
"Muons",
"Electrons",
"Photons" ]
145 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite =
False, containerNames = contNames, useSelTools =
True, stream_name = kwargs[
'StreamName']))
148 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
149 acc.merge(MuonCaloDepositAlgCfg(flags,
150 ContainerKey=
"Muons"))
151 acc.merge(MuonCaloDepositAlgCfg(flags,
152 name =
"IdTrkCaloDepsitDecorator",
153 ContainerKey=
"InDetTrackParticles"))
155 from BTagging.BTagTrackAugmenterAlgConfig
import BTagTrackAugmenterAlgCfg
156 acc.merge(BTagTrackAugmenterAlgCfg(
159 TrackCollection=
"InDetTrackParticles",
160 PrimaryVertexCollectionName=
"PrimaryVertices"
169 elReq1 =
'(Electrons.pt > 25*GeV && abs(Electrons.eta) < 2.5 && Electrons.DFCommonElectronsLHMedium)'
170 elReq2 =
'(Electrons.pt > 3*GeV && abs(Electrons.eta) < 2.8 && Electrons.DFCommonElectronsLHLoose)'
171 muReq1 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>25*GeV && abs(Muons.eta) <2.5)'
172 muReq2 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>3*GeV && abs(Muons.eta) <2.8)'
174 el1 =
'(count('+elReq1+
') >= 1)'
175 el2 =
'(count('+elReq2+
') >= 1)'
176 mu1 =
'(count('+muReq1+
') >= 1)'
177 mu2 =
'(count('+muReq2+
') >= 1)'
179 emuSel=
'(('+el1+
"&&"+mu2+
')'+
'||'+
'('+el2+
"&&"+mu1+
'))'
180 skimmingORs.append(emuSel)
182 lepSelection =
'||'.join(skimmingORs)
184 MUON5SkimmingTools = []
185 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
189 if not (flags.Reco.EnableTrigger
or flags.Trigger.triggerConfig ==
'INFILE'):
190 SkimArgs[
"TrigDecisionTool"] =
""
191 MUON5SkimmingTool1 = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
192 name =
"MUON5SkimmingTool1",
193 expression = lepSelection,
195 MUON5SkimmingTools.append(MUON5SkimmingTool1)
201 MUON5ThinningTools = []
204 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
205 MUON5TrackThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(flags,
206 name =
"MUON5TrackThinningTool",
207 StreamName = kwargs[
'StreamName'],
208 SelectionString =
"abs(DFCommonInDetTrackZ0AtPV) < 35.0 && abs(InDetTrackParticles.eta) < 3.2",
209 InDetTrackParticlesKey =
"InDetTrackParticles")
212 MUON5ThinningTools.append(MUON5TrackThinningTool)
215 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
216 from DerivationFrameworkCalo.CaloCellDFGetterConfig
import thinCaloCellsForDFCfg
217 from DerivationFrameworkMuons.MuonsToolsConfig
import AnalysisMuonThinningAlgCfg
220 fwdTracks =
"InDetForwardTrackParticles"
221 if fwdTracks
not in flags.Input.Collections:
223 acc.merge(AnalysisMuonThinningAlgCfg(flags,
224 MuonPassFlags = muonThinFlags,
225 TrkPassFlags = trkThinFlags,
226 StreamName = kwargs[
'StreamName'],
227 IdTrkFwdThinning=fwdTracks))
231 MUON5ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
232 name =
"MUON5ThinningTool1",
233 StreamName = kwargs[
'StreamName'],
235 SelectionString =
"Muons.pt>4*GeV",
236 TopoClCollectionSGKey =
"CaloCalTopoClusters",
238 MUON5ThinningTools.append(MUON5ThinningTool1)
241 MUON5ThinningTool2 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
242 name =
"MUON5ThinningTool2",
243 StreamName = kwargs[
'StreamName'],
245 SelectionString =
"Electrons.pt>4*GeV",
246 CaloClCollectionSGKey =
"egammaClusters",
248 MUON5ThinningTools.append(MUON5ThinningTool2)
251 MUON5ThinningTool3 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
252 name =
"MUON5ThinningTool3",
253 StreamName = kwargs[
'StreamName'],
255 SelectionString =
"Photons.pt>4*GeV",
256 CaloClCollectionSGKey =
"egammaClusters",
258 MUON5ThinningTools.append(MUON5ThinningTool3)
261 acc.merge(thinCaloCellsForDFCfg(flags,
262 inputClusterKeys = [
"MuonClusterCollection"],
263 streamName = kwargs[
'StreamName'],
264 outputCellKey =
"DFMUONCellContainer"))
268 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
269 MUON5TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags,
270 name =
"MUON5TruthThinningTool",
271 StreamName = kwargs[
'StreamName'],
272 WritePartons =
False,
273 WriteHadrons =
False,
274 WriteCHadrons =
True,
275 WriteBHadrons =
True,
278 PartonPtThresh = -1.0,
281 WriteBosonProducts =
True,
282 WriteBSMProducts =
True,
283 WriteTopAndDecays =
True,
284 WriteEverything =
False,
285 WriteAllLeptons =
True,
286 WriteLeptonsNotFromHadrons =
False,
287 WriteNotPhysical =
False,
289 PreserveAncestors =
False,
290 PreserveParentsSiblingsChildren =
True,
291 PreserveGeneratorDescendants =
False))
294 MUON5ThinningTools.append(MUON5TruthThinningTool)
299 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
300 acc.addEventAlgo(DerivationKernel(name,
301 AugmentationTools = MUON5AugmentTools,
302 SkimmingTools = MUON5SkimmingTools,
303 ThinningTools = MUON5ThinningTools))
308 stream_name =
'StreamDAOD_MUON5'
309 acc = ComponentAccumulator()
314 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
315 MUON5TriggerListsHelper = TriggerListsHelper(flags)
318 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
319 acc.merge(AddMCPJPsiVertexFitCfg(flags, prefix =
'MUON5'))
322 acc.merge(
MUON5KernelCfg(flags, name=
"MUON5Kernel", StreamName = stream_name, TriggerListsHelper = MUON5TriggerListsHelper))
325 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, DecoratePLITAlgsCfg
326 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
327 acc.merge(DecoratePLITAlgsCfg(flags))
332 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
333 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
334 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
336 MUON5SlimmingHelper =
SlimmingHelper(
"MUON5SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
340 MUON5SlimmingHelper.SmartCollections = [
"EventInfo",
342 "InDetTrackParticles",
346 "AntiKt4EMPFlowJets",
347 "MET_Baseline_AntiKt4EMPFlow",
351 MUON5SlimmingHelper.AllVariables = [
353 "CaloCalTopoClusters",
354 "MuonClusterCollection",
355 "TopoClusterIsoCentralEventShape",
356 "TopoClusterIsoForwardEventShape",
357 "GSFConversionVertices",
362 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
364 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
365 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
366 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
367 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
368 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
369 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
370 StaticContent += [
"CaloCellContainer#DFMUONCellContainer"]
371 StaticContent += [
"CaloClusterCellLinkContainer#MuonClusterCollection_links"]
373 MUON5SlimmingHelper.StaticContent = StaticContent
376 CommonEgammaContent= [
377 "ptcone20",
"ptcone30",
"ptcone40",
"ptvarcone20",
"ptvarcone30",
"ptvarcone40",
"topoetcone30",
378 "neflowisol20",
"neflowisol30",
"neflowisol40",
379 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500" ,
"ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
380 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
381 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
382 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
383 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
384 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
385 "topoetconecoreConeEnergyCorrection"
387 ElectronsExtraContent = [
391 "deltaPhiRescaled2",
"deltaPhiFromLastMeasurement",
392 "originalTrackParticle"
393 ] + CommonEgammaContent
397 PhotonsExtraContent = [
398 ".".join([
"Photons"] + CommonEgammaContent )
401 MuonsExtraContent = [
405 "MeasEnergyLoss.MeasEnergyLossSigma.EnergyLossSigma.ParamEnergyLoss",
406 "ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.clusterLink.scatteringCurvatureSignificance",
407 "deltaPhiRescaled2.deltaPhiFromLastMeasurement.scatteringNeighbourSignificance",
408 "ptcone20.ptcone30.ptcone40.ptvarcone20.ptvarcone30.ptvarcone40.topoetcone30",
409 "neflowisol20.neflowisol30.neflowisol40.ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500",
410 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
411 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
412 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
413 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
414 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
415 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
421 InDetTrackParticlesExtraContent = [
424 "InDetTrackParticles",
"TTVA_AMVFVertices.TTVA_AMVFWeights",
425 "btagIp_d0.btagIp_z0SinTheta.btagIp_d0Uncertainty.btagIp_z0SinThetaUncertainty",
426 "numberOfNextToInnermostPixelLayerHits.numberOfInnermostPixelLayerSharedHits",
427 "numberOfInnermostPixelLayerSplitHits.numberOfPixelSplitHits.leptonID"
432 ExtraVariables = ElectronsExtraContent + PhotonsExtraContent + MuonsExtraContent + InDetTrackParticlesExtraContent
433 MUON5SlimmingHelper.ExtraVariables += ExtraVariables
434 MUON5SlimmingHelper.ExtraVariables += [
435 "CombinedMuonTrackParticles.definingParametersCovMatrix.definingParametersCovMatrix.vertexLink",
436 "ExtrapolatedMuonTrackParticles.definingParametersCovMatrix.vertexLink",
437 "MuonSpectrometerTrackParticles.definingParametersCovMatrix.vertexLink",
438 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
439 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
442 from LeptonTaggers.LeptonTaggersConfig
import GetExtraImprovedPromptVariablesForDxAOD, GetExtraPLITVariablesForDxAOD
443 MUON5SlimmingHelper.ExtraVariables += GetExtraImprovedPromptVariablesForDxAOD()
444 MUON5SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
446 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import ElectronsCPDetailedContent
447 MUON5SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
448 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import GSFTracksCPDetailedContent
449 MUON5SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
453 MUON5SlimmingHelper.SmartCollections += [
455 "AntiKt4TruthDressedWZJets",
457 MUON5SlimmingHelper.AllVariables += [
466 "TruthPrimaryVertices",
469 MUON5SlimmingHelper.ExtraVariables+= [
470 "TruthPrimaryVertices.t.x.y.z",
471 "InDetTrackParticles.ftagTruthTypeLabel.ftagTruthOriginLabel.ftagTruthVertexIndex"
476 MUON5SlimmingHelper.IncludeTriggerNavigation =
False
477 MUON5SlimmingHelper.IncludeJetTriggerContent =
False
478 MUON5SlimmingHelper.IncludeMuonTriggerContent =
False
479 MUON5SlimmingHelper.IncludeEGammaTriggerContent =
False
480 MUON5SlimmingHelper.IncludeTauTriggerContent =
False
481 MUON5SlimmingHelper.IncludeEtMissTriggerContent =
False
482 MUON5SlimmingHelper.IncludeBJetTriggerContent =
False
483 MUON5SlimmingHelper.IncludeBPhysTriggerContent =
False
484 MUON5SlimmingHelper.IncludeMinBiasTriggerContent =
False
488 if flags.Trigger.EDMVersion == 2:
489 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
490 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
491 OutputContainerPrefix =
"TrigMatch_",
492 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesTau)
493 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
494 OutputContainerPrefix =
"TrigMatch_",
495 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesNoTau)
497 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
498 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
499 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON5SlimmingHelper)
502 MUON5ItemList = MUON5SlimmingHelper.GetItemList()
503 acc.merge(OutputStreamCfg(flags,
"DAOD_MUON5", ItemList=MUON5ItemList, AcceptAlgs=[
"MUON5Kernel"]))
504 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_MUON5", AcceptAlgs=[
"MUON5Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))