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"
168 from DerivationFrameworkFlavourTag.FtagDerivationConfig
import TrackTruthDecoratorCfg
169 acc.merge(TrackTruthDecoratorCfg(flags))
171 from ParticleJetTools.TruthVertexDecoratorConfig
import TruthVertexDecoratorsCfg
172 acc.merge(TruthVertexDecoratorsCfg(flags))
180 elReq1 =
'(Electrons.pt > 25*GeV && abs(Electrons.eta) < 2.5 && Electrons.DFCommonElectronsLHMedium)'
181 elReq2 =
'(Electrons.pt > 3*GeV && abs(Electrons.eta) < 2.8 && Electrons.DFCommonElectronsLHLoose)'
182 muReq1 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>25*GeV && abs(Muons.eta) <2.5)'
183 muReq2 =
'(Muons.DFCommonMuonPassPreselection && Muons.DFCommonMuonPassIDCuts && Muons.pt>3*GeV && abs(Muons.eta) <2.8)'
185 el1 =
'(count('+elReq1+
') >= 1)'
186 el2 =
'(count('+elReq2+
') >= 1)'
187 mu1 =
'(count('+muReq1+
') >= 1)'
188 mu2 =
'(count('+muReq2+
') >= 1)'
190 emuSel=
'(('+el1+
"&&"+mu2+
')'+
'||'+
'('+el2+
"&&"+mu1+
'))'
191 skimmingORs.append(emuSel)
193 lepSelection =
'||'.join(skimmingORs)
195 MUON5SkimmingTools = []
196 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
200 if not (flags.Reco.EnableTrigger
or flags.Trigger.triggerConfig ==
'INFILE'):
201 SkimArgs[
"TrigDecisionTool"] =
""
202 MUON5SkimmingTool1 = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
203 name =
"MUON5SkimmingTool1",
204 expression = lepSelection,
206 MUON5SkimmingTools.append(MUON5SkimmingTool1)
212 MUON5ThinningTools = []
215 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg
216 MUON5TrackThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(flags,
217 name =
"MUON5TrackThinningTool",
218 StreamName = stream_name,
219 SelectionString =
"abs(InDetTrackParticles.DFCommonInDetTrackZ0AtPV) < 35.0 && abs(InDetTrackParticles.eta) < 3.2",
220 InDetTrackParticlesKey =
"InDetTrackParticles")
223 MUON5ThinningTools.append(MUON5TrackThinningTool)
226 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
227 from DerivationFrameworkMuons.MuonsToolsConfig
import AnalysisMuonThinningAlgCfg
230 fwdTracks =
"InDetForwardTrackParticles"
231 if fwdTracks
not in flags.Input.Collections:
233 acc.merge(AnalysisMuonThinningAlgCfg(flags,
234 name =
"AnalysisMuonThinningAlgMUON5",
235 MuonPassFlags = muonThinFlags,
236 TrkPassFlags = trkThinFlags,
237 StreamName = stream_name,
238 IdTrkFwdThinning=fwdTracks))
242 MUON5ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
243 name =
"MUON5ThinningTool1",
244 StreamName = stream_name,
246 SelectionString =
"Muons.pt>4*GeV",
247 TopoClCollectionSGKey =
"CaloCalTopoClusters",
249 MUON5ThinningTools.append(MUON5ThinningTool1)
252 MUON5ThinningTool2 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
253 name =
"MUON5ThinningTool2",
254 StreamName = stream_name,
256 SelectionString =
"Electrons.pt>4*GeV",
257 CaloClCollectionSGKey =
"egammaClusters",
259 MUON5ThinningTools.append(MUON5ThinningTool2)
262 MUON5ThinningTool3 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
263 name =
"MUON5ThinningTool3",
264 StreamName = stream_name,
266 SelectionString =
"Photons.pt>4*GeV",
267 CaloClCollectionSGKey =
"egammaClusters",
269 MUON5ThinningTools.append(MUON5ThinningTool3)
272 muon5CellThinAlg = CompFactory.CaloThinCellsByClusterAlg(
273 'MUON5_CaloThinCellsByClusterAlg_MuonClusterCollection',
274 StreamName = stream_name,
275 Clusters =
'MuonClusterCollection',
277 acc.addEventAlgo(muon5CellThinAlg)
281 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
282 MUON5TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags,
283 name =
"MUON5TruthThinningTool",
284 StreamName = stream_name,
285 WritePartons =
False,
286 WriteHadrons =
False,
287 WriteCHadrons =
True,
288 WriteBHadrons =
True,
291 PartonPtThresh = -1.0,
294 WriteBosonProducts =
True,
295 WriteBSMProducts =
True,
296 WriteTopAndDecays =
True,
297 WriteEverything =
False,
298 WriteAllLeptons =
True,
299 WriteLeptonsNotFromHadrons =
False,
300 WriteNotPhysical =
False,
302 PreserveAncestors =
False,
303 PreserveParentsSiblingsChildren =
True,
304 PreserveGeneratorDescendants =
False))
307 MUON5ThinningTools.append(MUON5TruthThinningTool)
312 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
313 acc.addEventAlgo(DerivationKernel(name,
314 AugmentationTools = MUON5AugmentTools,
315 SkimmingTools = MUON5SkimmingTools,
316 ThinningTools = MUON5ThinningTools))
321 stream_name =
'StreamDAOD_MUON5'
322 acc = ComponentAccumulator()
327 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
328 MUON5TriggerListsHelper = TriggerListsHelper(flags)
331 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
332 acc.merge(AddMCPJPsiVertexFitCfg(flags, prefix =
'MUON5'))
335 acc.merge(
MUON5KernelCfg(flags, name=
"MUON5Kernel", StreamName = stream_name, TriggerListsHelper = MUON5TriggerListsHelper))
338 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, DecoratePLITAlgsCfg
339 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
340 acc.merge(DecoratePLITAlgsCfg(flags))
345 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
346 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
347 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
349 MUON5SlimmingHelper =
SlimmingHelper(
"MUON5SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
353 MUON5SlimmingHelper.SmartCollections = [
"EventInfo",
355 "InDetTrackParticles",
359 "AntiKt4EMPFlowJets",
360 "MET_Baseline_AntiKt4EMPFlow",
364 MUON5SlimmingHelper.AllVariables = [
366 "CaloCalTopoClusters",
367 "MuonClusterCollection",
368 "TopoClusterIsoCentralEventShape",
369 "TopoClusterIsoForwardEventShape",
370 "GSFConversionVertices",
375 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
377 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
378 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
379 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
380 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
381 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
382 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
383 StaticContent += [
"CaloCellContainer#DFMUONCellContainer"]
384 StaticContent += [
"CaloClusterCellLinkContainer#MuonClusterCollection_links"]
386 MUON5SlimmingHelper.StaticContent = StaticContent
389 CommonEgammaContent= [
390 "ptcone20",
"ptcone30",
"ptcone40",
"ptvarcone20",
"ptvarcone30",
"ptvarcone40",
"topoetcone30",
391 "neflowisol20",
"neflowisol30",
"neflowisol40",
392 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500" ,
"ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
393 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
394 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
395 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
396 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
397 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
"ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
398 "topoetconecoreConeEnergyCorrection"
400 ElectronsExtraContent = [
404 "deltaPhiRescaled2",
"deltaPhiFromLastMeasurement",
405 "originalTrackParticle"
406 ] + CommonEgammaContent
410 PhotonsExtraContent = [
411 ".".join([
"Photons"] + CommonEgammaContent )
414 MuonsExtraContent = [
418 "MeasEnergyLoss.MeasEnergyLossSigma.EnergyLossSigma.ParamEnergyLoss",
419 "ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.clusterLink.scatteringCurvatureSignificance",
420 "deltaPhiRescaled2.deltaPhiFromLastMeasurement.scatteringNeighbourSignificance",
421 "ptcone20.ptcone30.ptcone40.ptvarcone20.ptvarcone30.ptvarcone40.topoetcone30",
422 "neflowisol20.neflowisol30.neflowisol40.ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500",
423 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
424 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
425 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
426 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
427 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
428 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
434 InDetTrackParticlesExtraContent = [
437 "InDetTrackParticles",
"TTVA_AMVFVertices.TTVA_AMVFWeights",
438 "btagIp_d0.btagIp_z0SinTheta.btagIp_d0Uncertainty.btagIp_z0SinThetaUncertainty",
439 "numberOfNextToInnermostPixelLayerHits.numberOfInnermostPixelLayerSharedHits",
440 "numberOfInnermostPixelLayerSplitHits.numberOfPixelSplitHits.leptonID"
445 ExtraVariables = ElectronsExtraContent + PhotonsExtraContent + MuonsExtraContent + InDetTrackParticlesExtraContent
446 MUON5SlimmingHelper.ExtraVariables += ExtraVariables
447 MUON5SlimmingHelper.ExtraVariables += [
448 "CombinedMuonTrackParticles.definingParametersCovMatrix.definingParametersCovMatrix.vertexLink",
449 "ExtrapolatedMuonTrackParticles.definingParametersCovMatrix.vertexLink",
450 "MuonSpectrometerTrackParticles.definingParametersCovMatrix.vertexLink",
451 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
452 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
455 from LeptonTaggers.LeptonTaggersConfig
import GetExtraImprovedPromptVariablesForDxAOD, GetExtraPLITVariablesForDxAOD
456 MUON5SlimmingHelper.ExtraVariables += GetExtraImprovedPromptVariablesForDxAOD()
457 MUON5SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
459 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import ElectronsCPDetailedContent
460 MUON5SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
461 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import GSFTracksCPDetailedContent
462 MUON5SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
466 MUON5SlimmingHelper.SmartCollections += [
468 "AntiKt4TruthDressedWZJets",
470 MUON5SlimmingHelper.AllVariables += [
479 "TruthPrimaryVertices",
482 MUON5SlimmingHelper.ExtraVariables+= [
483 "TruthPrimaryVertices.t.x.y.z",
484 "InDetTrackParticles.ftagTruthTypeLabel.ftagTruthOriginLabel.ftagTruthVertexIndex"
489 MUON5SlimmingHelper.IncludeTriggerNavigation =
False
490 MUON5SlimmingHelper.IncludeJetTriggerContent =
False
491 MUON5SlimmingHelper.IncludeMuonTriggerContent =
False
492 MUON5SlimmingHelper.IncludeEGammaTriggerContent =
False
493 MUON5SlimmingHelper.IncludeTauTriggerContent =
False
494 MUON5SlimmingHelper.IncludeEtMissTriggerContent =
False
495 MUON5SlimmingHelper.IncludeBJetTriggerContent =
False
496 MUON5SlimmingHelper.IncludeBPhysTriggerContent =
False
497 MUON5SlimmingHelper.IncludeMinBiasTriggerContent =
False
501 if flags.Trigger.EDMVersion == 2:
502 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
503 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
504 OutputContainerPrefix =
"TrigMatch_",
505 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesTau)
506 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON5SlimmingHelper,
507 OutputContainerPrefix =
"TrigMatch_",
508 TriggerList = MUON5TriggerListsHelper.Run2TriggerNamesNoTau)
510 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
511 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
512 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON5SlimmingHelper)
515 MUON5ItemList = MUON5SlimmingHelper.GetItemList()
516 acc.merge(OutputStreamCfg(flags,
"DAOD_MUON5", ItemList=MUON5ItemList, AcceptAlgs=[
"MUON5Kernel"]))
517 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_MUON5", AcceptAlgs=[
"MUON5Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))