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 =
"DiMuonTaggingZmumuOC5",
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 =
"Muon5ZmumuOC"))
37 acc.merge(DiMuonTaggingAlgCfg(flags,
38 name =
"DiMuonTaggingZmumuSC5",
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 =
"Muon5ZmumuSC"))
97 """Configure the derivation framework driving algorithm (kernel) for MUON5"""
98 acc = ComponentAccumulator()
100 stream_name=
'StreamDAOD_MUON5'
102 kwargs.setdefault(
"MuonContainer",
"Muons")
103 kwargs.setdefault(
"IdTrkContainer",
"InDetTrackParticles")
104 kwargs.setdefault(
"MsTrkContainer",
"ExtrapolatedMuonTrackParticles")
105 kwargs.setdefault(
"scheduleThinning",
True)
110 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
111 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
115 MuonContainer= kwargs[
"MuonContainer"],
116 IdTrackContainer=kwargs[
"IdTrkContainer"])
121 dimuon_flags = [
"pass{flag}".format(flag = algo.BranchPrefix)
for algo
in diMuonSelAcc.getEventAlgos()]
122 skimmingORs = [f
"DIMU_{flag} > 0" for flag
in dimuon_flags ]
123 acc.merge(diMuonSelAcc)
130 MUON5AugmentTools = []
135 acc.addPublicTool(Muon5ElElSelectionTool)
136 MUON5AugmentTools.append(Muon5ElElSelectionTool)
137 skimmingORs.append(
"(count( EGAM1_DiElectronMass3 > 60.0*GeV ) >= 1)")
141 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
142 acc.merge(TrackIsolationCfg(flags, TrackCollection=
"InDetTrackParticles"))
143 acc.merge(TrackIsolationCfg(flags, TrackCollection=
"ExtrapolatedMuonTrackParticles"))
145 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
146 contNames = [
"Muons",
"Electrons",
"Photons" ]
147 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite =
False, containerNames = contNames, useSelTools =
True, stream_name = stream_name))
150 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
151 acc.merge(MuonCaloDepositAlgCfg(flags,
152 name =
"MuonCaloDepositAlg",
153 ContainerKey=
"Muons"))
154 acc.merge(MuonCaloDepositAlgCfg(flags,
155 name =
"IdTrkCaloDepositDecorator",
156 ContainerKey=
"InDetTrackParticles"))
158 from BTagging.BTagTrackAugmenterAlgConfig
import BTagTrackAugmenterAlgCfg
159 acc.merge(BTagTrackAugmenterAlgCfg(
162 TrackCollection=
"InDetTrackParticles",
163 PrimaryVertexCollectionName=
"PrimaryVertices"
172 elReq1 =
'(Electrons.pt > 25*GeV && abs(Electrons.eta) < 2.5 && Electrons.DFCommonElectronsLHMedium)'
173 elReq2 =
'(Electrons.pt > 3*GeV && abs(Electrons.eta) < 2.8 && Electrons.DFCommonElectronsLHLoose)'
174 muReq1 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>25*GeV && abs(Muons.eta) <2.5)'
175 muReq2 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>3*GeV && abs(Muons.eta) <2.8)'
177 el1 =
'(count('+elReq1+
') >= 1)'
178 el2 =
'(count('+elReq2+
') >= 1)'
179 mu1 =
'(count('+muReq1+
') >= 1)'
180 mu2 =
'(count('+muReq2+
') >= 1)'
182 emuSel=
'(('+el1+
"&&"+mu2+
')'+
'||'+
'('+el2+
"&&"+mu1+
'))'
183 skimmingORs.append(emuSel)
185 lepSelection =
'||'.join(skimmingORs)
187 MUON5SkimmingTools = []
188 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
192 if not (flags.Reco.EnableTrigger
or flags.Trigger.triggerConfig ==
'INFILE'):
193 SkimArgs[
"TrigDecisionTool"] =
""
194 MUON5SkimmingTool1 = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
195 name =
"MUON5SkimmingTool1",
196 expression = lepSelection,
198 MUON5SkimmingTools.append(MUON5SkimmingTool1)
204 MUON5ThinningTools = []
207 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
208 MUON5TrackThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(flags,
209 name =
"MUON5TrackThinningTool",
210 StreamName = stream_name,
211 SelectionString =
"abs(DFCommonInDetTrackZ0AtPV) < 35.0 && abs(InDetTrackParticles.eta) < 3.2",
212 InDetTrackParticlesKey =
"InDetTrackParticles")
215 MUON5ThinningTools.append(MUON5TrackThinningTool)
218 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
219 from DerivationFrameworkMuons.MuonsToolsConfig
import AnalysisMuonThinningAlgCfg
222 fwdTracks =
"InDetForwardTrackParticles"
223 if fwdTracks
not in flags.Input.Collections:
225 acc.merge(AnalysisMuonThinningAlgCfg(flags,
226 name =
"AnalysisMuonThinningAlgMUON5",
227 MuonPassFlags = muonThinFlags,
228 TrkPassFlags = trkThinFlags,
229 StreamName = stream_name,
230 IdTrkFwdThinning=fwdTracks))
234 MUON5ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
235 name =
"MUON5ThinningTool1",
236 StreamName = stream_name,
238 SelectionString =
"Muons.pt>4*GeV",
239 TopoClCollectionSGKey =
"CaloCalTopoClusters",
241 MUON5ThinningTools.append(MUON5ThinningTool1)
244 MUON5ThinningTool2 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
245 name =
"MUON5ThinningTool2",
246 StreamName = stream_name,
248 SelectionString =
"Electrons.pt>4*GeV",
249 CaloClCollectionSGKey =
"egammaClusters",
251 MUON5ThinningTools.append(MUON5ThinningTool2)
254 MUON5ThinningTool3 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
255 name =
"MUON5ThinningTool3",
256 StreamName = stream_name,
258 SelectionString =
"Photons.pt>4*GeV",
259 CaloClCollectionSGKey =
"egammaClusters",
261 MUON5ThinningTools.append(MUON5ThinningTool3)
264 muon5CellThinAlg = CompFactory.CaloThinCellsByClusterAlg(
265 'MUON5_CaloThinCellsByClusterAlg_MuonClusterCollection',
266 StreamName = stream_name,
267 Clusters =
'MuonClusterCollection',
269 acc.addEventAlgo(muon5CellThinAlg)
273 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
274 MUON5TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags,
275 name =
"MUON5TruthThinningTool",
276 StreamName = stream_name,
277 WritePartons =
False,
278 WriteHadrons =
False,
279 WriteCHadrons =
True,
280 WriteBHadrons =
True,
283 PartonPtThresh = -1.0,
286 WriteBosonProducts =
True,
287 WriteBSMProducts =
True,
288 WriteTopAndDecays =
True,
289 WriteEverything =
False,
290 WriteAllLeptons =
True,
291 WriteLeptonsNotFromHadrons =
False,
292 WriteNotPhysical =
False,
294 PreserveAncestors =
False,
295 PreserveParentsSiblingsChildren =
True,
296 PreserveGeneratorDescendants =
False))
299 MUON5ThinningTools.append(MUON5TruthThinningTool)
304 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
305 acc.addEventAlgo(DerivationKernel(name,
306 AugmentationTools = MUON5AugmentTools,
307 SkimmingTools = MUON5SkimmingTools,
308 ThinningTools = MUON5ThinningTools))
313 stream_name =
'StreamDAOD_MUON5'
314 acc = ComponentAccumulator()
319 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
320 MUON5TriggerListsHelper = TriggerListsHelper(flags)
323 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
324 acc.merge(AddMCPJPsiVertexFitCfg(flags, prefix =
'MUON5'))
327 acc.merge(
MUON5KernelCfg(flags, name=
"MUON5Kernel", StreamName = stream_name, TriggerListsHelper = MUON5TriggerListsHelper))
330 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, DecoratePLITAlgsCfg
331 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
332 acc.merge(DecoratePLITAlgsCfg(flags))
337 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
338 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
339 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
341 MUON5SlimmingHelper =
SlimmingHelper(
"MUON5SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
345 MUON5SlimmingHelper.SmartCollections = [
"EventInfo",
347 "InDetTrackParticles",
351 "AntiKt4EMPFlowJets",
352 "MET_Baseline_AntiKt4EMPFlow",
356 MUON5SlimmingHelper.AllVariables = [
358 "CaloCalTopoClusters",
359 "MuonClusterCollection",
360 "TopoClusterIsoCentralEventShape",
361 "TopoClusterIsoForwardEventShape",
362 "GSFConversionVertices",
367 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
369 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
370 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
371 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
372 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
373 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
374 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
375 StaticContent += [
"CaloCellContainer#DFMUONCellContainer"]
376 StaticContent += [
"CaloClusterCellLinkContainer#MuonClusterCollection_links"]
378 MUON5SlimmingHelper.StaticContent = StaticContent
381 CommonEgammaContent= [
382 "ptcone20",
"ptcone30",
"ptcone40",
"ptvarcone20",
"ptvarcone30",
"ptvarcone40",
"topoetcone30",
383 "neflowisol20",
"neflowisol30",
"neflowisol40",
384 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500" ,
"ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
385 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
386 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
387 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
388 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
389 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
390 "topoetconecoreConeEnergyCorrection"
392 ElectronsExtraContent = [
396 "deltaPhiRescaled2",
"deltaPhiFromLastMeasurement",
397 "originalTrackParticle"
398 ] + CommonEgammaContent
402 PhotonsExtraContent = [
403 ".".join([
"Photons"] + CommonEgammaContent )
406 MuonsExtraContent = [
410 "MeasEnergyLoss.MeasEnergyLossSigma.EnergyLossSigma.ParamEnergyLoss",
411 "ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.clusterLink.scatteringCurvatureSignificance",
412 "deltaPhiRescaled2.deltaPhiFromLastMeasurement.scatteringNeighbourSignificance",
413 "ptcone20.ptcone30.ptcone40.ptvarcone20.ptvarcone30.ptvarcone40.topoetcone30",
414 "neflowisol20.neflowisol30.neflowisol40.ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500",
415 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
416 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
417 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
418 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
419 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
420 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
426 InDetTrackParticlesExtraContent = [
429 "InDetTrackParticles",
"TTVA_AMVFVertices.TTVA_AMVFWeights",
430 "btagIp_d0.btagIp_z0SinTheta.btagIp_d0Uncertainty.btagIp_z0SinThetaUncertainty",
431 "numberOfNextToInnermostPixelLayerHits.numberOfInnermostPixelLayerSharedHits",
432 "numberOfInnermostPixelLayerSplitHits.numberOfPixelSplitHits.leptonID"
437 ExtraVariables = ElectronsExtraContent + PhotonsExtraContent + MuonsExtraContent + InDetTrackParticlesExtraContent
438 MUON5SlimmingHelper.ExtraVariables += ExtraVariables
439 MUON5SlimmingHelper.ExtraVariables += [
440 "CombinedMuonTrackParticles.definingParametersCovMatrix.definingParametersCovMatrix.vertexLink",
441 "ExtrapolatedMuonTrackParticles.definingParametersCovMatrix.vertexLink",
442 "MuonSpectrometerTrackParticles.definingParametersCovMatrix.vertexLink",
443 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
444 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
447 from LeptonTaggers.LeptonTaggersConfig
import GetExtraImprovedPromptVariablesForDxAOD, GetExtraPLITVariablesForDxAOD
448 MUON5SlimmingHelper.ExtraVariables += GetExtraImprovedPromptVariablesForDxAOD()
449 MUON5SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
451 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import ElectronsCPDetailedContent
452 MUON5SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
453 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import GSFTracksCPDetailedContent
454 MUON5SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
458 MUON5SlimmingHelper.SmartCollections += [
460 "AntiKt4TruthDressedWZJets",
462 MUON5SlimmingHelper.AllVariables += [
471 "TruthPrimaryVertices",
474 MUON5SlimmingHelper.ExtraVariables+= [
475 "TruthPrimaryVertices.t.x.y.z",
476 "InDetTrackParticles.ftagTruthTypeLabel.ftagTruthOriginLabel.ftagTruthVertexIndex"
481 MUON5SlimmingHelper.IncludeTriggerNavigation =
False
482 MUON5SlimmingHelper.IncludeJetTriggerContent =
False
483 MUON5SlimmingHelper.IncludeMuonTriggerContent =
False
484 MUON5SlimmingHelper.IncludeEGammaTriggerContent =
False
485 MUON5SlimmingHelper.IncludeTauTriggerContent =
False
486 MUON5SlimmingHelper.IncludeEtMissTriggerContent =
False
487 MUON5SlimmingHelper.IncludeBJetTriggerContent =
False
488 MUON5SlimmingHelper.IncludeBPhysTriggerContent =
False
489 MUON5SlimmingHelper.IncludeMinBiasTriggerContent =
False
493 if flags.Trigger.EDMVersion == 2:
494 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
495 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
496 OutputContainerPrefix =
"TrigMatch_",
497 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesTau)
498 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
499 OutputContainerPrefix =
"TrigMatch_",
500 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesNoTau)
502 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
503 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
504 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON5SlimmingHelper)
507 MUON5ItemList = MUON5SlimmingHelper.GetItemList()
508 acc.merge(OutputStreamCfg(flags,
"DAOD_MUON5", ItemList=MUON5ItemList, AcceptAlgs=[
"MUON5Kernel"]))
509 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_MUON5", AcceptAlgs=[
"MUON5Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))