15 MuonContainer="Muons",
16 IdTrackContainer="InDetTrackParticles",
17 applyTrigger = False):
18 acc = ComponentAccumulator()
19 from DerivationFrameworkMuons.MuonsToolsConfig
import DiMuonTaggingAlgCfg
21 acc.merge(DiMuonTaggingAlgCfg(flags,
22 name =
"DiMuonTaggingZmumuOC",
23 Mu1PtMin = 4.*Units.GeV,
25 Mu1RequireQual =
True,
26 Mu2PtMin = 2.*Units.GeV,
28 MuonContainerKey = MuonContainer,
29 TrackContainerKey = IdTrackContainer,
30 InvariantMassLow = 60*Units.GeV,
31 IDTrackThinningConeSize = 0.4,
32 applyTrigger = applyTrigger,
33 BranchPrefix =
"Muon1ZmumuOC"))
36 acc.merge(DiMuonTaggingAlgCfg(flags,
37 name =
"DiMuonTaggingZmumuSC",
38 Mu1PtMin = 4.*Units.GeV,
40 Mu1RequireQual =
True,
41 Mu2PtMin = 2.*Units.GeV,
43 MuonContainerKey = MuonContainer,
44 TrackContainerKey = IdTrackContainer,
45 OppositeCharge =
False,
46 applyTrigger = applyTrigger,
47 InvariantMassLow = 60*Units.GeV,
48 BranchPrefix =
"Muon1ZmumuSC"))
50 acc.merge(DiMuonTaggingAlgCfg(flags,
51 name =
"DiMuonTaggingJpsi",
52 Mu1PtMin = 4.*Units.GeV,
54 Mu1RequireQual =
True,
55 Mu2PtMin = 2.*Units.GeV,
57 MuonContainerKey = MuonContainer,
58 TrackContainerKey = IdTrackContainer,
59 applyTrigger = applyTrigger,
60 InvariantMassLow = 2.0*Units.GeV,
61 InvariantMassHigh = 4.8*Units.GeV,
62 BranchPrefix =
"Muon1JPsi"))
64 acc.merge(DiMuonTaggingAlgCfg(flags,
65 name =
"DiMuonTaggingUpsilon",
66 Mu1PtMin = 4.*Units.GeV,
68 Mu1RequireQual =
True,
69 Mu2PtMin = 2.*Units.GeV,
70 MuonContainerKey = MuonContainer,
71 TrackContainerKey = IdTrackContainer,
72 InvariantMassLow = 7.0*Units.GeV,
73 InvariantMassHigh = 13.*Units.GeV,
74 applyTrigger = applyTrigger,
75 BranchPrefix =
"Muon1Upsilon"))
78 acc.merge(DiMuonTaggingAlgCfg(flags,
79 name =
"MuonTruthTagging",
80 Mu1PtMin = 2.*Units.GeV,
81 Mu1RequireQual =
True,
82 Mu2PtMin = 60.*Units.TeV,
84 MuonContainerKey = MuonContainer,
85 TrackContainerKey = IdTrackContainer,
86 OppositeCharge =
False,
87 InvariantMassLow = 60*Units.TeV,
88 applyTrigger = applyTrigger,
89 IDTrackThinningConeSize = 0.1,
90 BranchPrefix =
"TruthMuon"))
97 """Configure the derivation framework driving algorithm (kernel) for MUON1"""
98 acc = ComponentAccumulator()
100 kwargs.setdefault(
"MuonContainer",
"Muons")
101 kwargs.setdefault(
"IdTrkContainer",
"InDetTrackParticles")
102 kwargs.setdefault(
"MsTrkContainer",
"ExtrapolatedMuonTrackParticles")
103 kwargs.setdefault(
"scheduleThinning",
True)
109 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
110 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
114 MuonContainer= kwargs[
"MuonContainer"],
115 IdTrackContainer=kwargs[
"IdTrkContainer"])
120 muonThinFlags = [
"pass{flag}".format(flag = algo.BranchPrefix)
for algo
in diMuonSelAcc.getEventAlgos()]
121 skimmingORs = [f
"DIMU_{flag} > 0" for flag
in muonThinFlags]
122 trkThinFlags = [muonThinFlags[i]
for i, algo
in enumerate(diMuonSelAcc.getEventAlgos())
if algo.UseTrackProbe ]
123 acc.merge(diMuonSelAcc)
128 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthClassifierFallbackCfg
129 MUON1MuonTruthClassifierFallback = acc.getPrimaryAndMerge(MuonTruthClassifierFallbackCfg(flags,
130 name =
"MUON1MuonTruthClassifierFallback",
131 ContainerKey = kwargs[
"MuonContainer"]))
132 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"MuonTruthClassifierFallBack",
133 AugmentationTools=[MUON1MuonTruthClassifierFallback]))
134 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthIsolationDecorAlgCfg
135 acc.merge(MuonTruthIsolationDecorAlgCfg(flags,
136 name =
"MUON1MuonTruthIsolationAlg",
137 ContainerKey = kwargs[
"MuonContainer"]))
141 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
142 acc.merge(AddMCPJPsiVertexFitCfg(flags,
144 IdTrkContainer = kwargs[
"IdTrkContainer"],
145 MuonContainer = kwargs[
"MuonContainer"]))
147 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
148 acc.merge(TrackIsolationCfg(flags,
149 TrackCollection=kwargs[
"IdTrkContainer"],
150 TrackSelections = trkThinFlags))
151 acc.merge(TrackIsolationCfg(flags,
152 TrackCollection=kwargs[
"MsTrkContainer"]))
155 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
156 acc.merge(MuonCaloDepositAlgCfg(flags,
157 ContainerKey= kwargs[
"MuonContainer"],
158 TrackSelections = muonThinFlags))
159 acc.merge(MuonCaloDepositAlgCfg(flags,
160 name =
"IdTrkCaloDepsitDecorator",
161 ContainerKey= kwargs[
"IdTrkContainer"],
162 TrackSelections = trkThinFlags))
165 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonTPExtrapolationAlgCfg
166 acc.merge(MuonTPExtrapolationAlgCfg(flags,
167 ContainerKey= kwargs[
"MuonContainer"],
168 TrackSelections = [
"passMuon1JPsi"]))
170 acc.merge(MuonTPExtrapolationAlgCfg(flags,
171 name =
"MuonTPTrigExtrapolation",
172 ContainerKey= kwargs[
"IdTrkContainer"],
173 TrackSelections = [
"passMuon1JPsi"]))
179 MUON1SkimmingTools = []
180 skimming_expression =
'||'.join(skimmingORs)
181 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
182 MUON1SkimmingTool1 = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
183 name =
"MUON1SkimmingTool1",
184 expression = skimming_expression))
185 MUON1SkimmingTools.append(MUON1SkimmingTool1)
192 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
193 from DerivationFrameworkCalo.CaloCellDFGetterConfig
import thinCaloCellsForDFCfg
194 from DerivationFrameworkMuons.MuonsToolsConfig
import AnalysisMuonThinningAlgCfg
195 MUON1ThinningTools = []
196 if kwargs[
"scheduleThinning"]:
197 fwdTracks =
"InDetForwardTrackParticles"
198 if fwdTracks
not in flags.Input.Collections:
200 acc.merge(AnalysisMuonThinningAlgCfg(flags,
201 MuonPassFlags = [
"{cont}.{passDecor}".format(cont = kwargs[
"MuonContainer"],
202 passDecor = passDecor)
for passDecor
in muonThinFlags],
203 TrkPassFlags =[
"{cont}.{passDecor}".format(cont = kwargs[
"IdTrkContainer"],
204 passDecor = passDecor)
for passDecor
in trkThinFlags],
205 IdTrkFwdThinning=fwdTracks,
206 StreamName = kwargs[
'StreamName']))
210 MUON1ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
211 name =
"MUON1ThinningTool4",
212 StreamName = kwargs[
'StreamName'],
214 SelectionString =
"Muons.pt>4*GeV",
215 TopoClCollectionSGKey =
"CaloCalTopoClusters",
217 MUON1ThinningTools.append(MUON1ThinningTool1)
220 acc.merge(thinCaloCellsForDFCfg(flags,
221 inputClusterKeys = [
"MuonClusterCollection"],
222 streamName = kwargs[
'StreamName'],
223 outputCellKey =
"DFMUONCellContainer"))
226 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import Thin_vtxTrkCfg
227 MUON1Thin_vtxTrk = acc.getPrimaryAndMerge(Thin_vtxTrkCfg(flags,
228 name =
"MUON1Thin_vtxTrk",
229 StreamName = kwargs[
'StreamName'],
230 TrackParticleContainerName =
"InDetTrackParticles",
231 VertexContainerNames = [
"Muon1JpsiCandidates"],
232 PassFlags = [
"passed_Jpsi"] ))
233 MUON1ThinningTools.append(MUON1Thin_vtxTrk)
237 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
238 MUON1TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags,
239 name =
"MUON1TruthThinningTool",
240 StreamName = kwargs[
'StreamName'],
241 WritePartons =
False,
242 WriteHadrons =
False,
243 WriteCHadrons =
False,
244 WriteBHadrons =
True,
247 PartonPtThresh = -1.0,
250 WriteBosonProducts =
False,
251 WriteBSMProducts =
True,
252 WriteTopAndDecays =
False,
253 WriteEverything =
False,
254 WriteAllLeptons =
True,
255 WriteLeptonsNotFromHadrons =
False,
256 WriteNotPhysical =
False,
258 PreserveAncestors =
False,
259 PreserveParentsSiblingsChildren =
True,
260 PreserveGeneratorDescendants =
False))
263 MUON1ThinningTools.append(MUON1TruthThinningTool)
270 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
271 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite =
True))
274 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,
275 SkimmingTools = MUON1SkimmingTools,
276 ThinningTools = MUON1ThinningTools))
281 stream_name =
'StreamDAOD_MUON1'
282 acc = ComponentAccumulator()
287 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
288 MUON1TriggerListsHelper = TriggerListsHelper(flags)
293 acc.merge(
MUON1KernelCfg(flags, name=
"MUON1Kernel", StreamName = stream_name, TriggerListsHelper = MUON1TriggerListsHelper))
296 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg
297 acc.merge(DecoratePLITAlgsCfg(flags))
302 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
303 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
304 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
306 isoCones = [f
"pt{cone}cone{size}_Nonprompt_All_MaxWeightTTVA_pt{pt}" for cone
in [
"",
"var"]
for size
in range(20,50,10)
for pt
in [500, 1000] ]
307 isoCones += [f
"{cone}{size}" for cone
in [
"topoetcone",
"neflowisol"]
for size
in range(20,50,10)]
309 decorationsID = [
"TTVA_AMVFVertices" ,
"TTVA_AMVFWeights",
"vx",
"vy",
"vz"]
311 decoartionsMuon = [
"EnergyLossSigma"]
313 decorationsID += isoCones
314 decorationsME += isoCones
315 CaloDeposDecors = [
"CaloDeposits",
"CaloElosses",
"CaloDepType"]
316 decorationsID += CaloDeposDecors
317 decoartionsMuon += CaloDeposDecors
318 tpExtrapolations = [
"EtaTriggerPivot",
"PhiTriggerPivot",
"DecoratedPivotEtaPhi"]
319 decorationsID += tpExtrapolations
320 decoartionsMuon += tpExtrapolations
323 MUON1SlimmingHelper =
SlimmingHelper(
"MUON1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
324 MUON1SlimmingHelper.SmartCollections = [
"EventInfo",
329 "InDetTrackParticles",
331 "AntiKt4EMPFlowJets",
332 "MET_Baseline_AntiKt4EMTopo",
333 "MET_Baseline_AntiKt4EMPFlow",
338 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
339 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
342 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
344 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
345 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
346 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
347 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
348 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
349 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
350 StaticContent += [
"xAOD::VertexContainer#Muon1JpsiCandidates"]
351 StaticContent += [
"xAOD::VertexAuxContainer#Muon1JpsiCandidatesAux."+excludedVertexAuxData]
352 StaticContent += [
"CaloCellContainer#DFMUONCellContainer"]
353 StaticContent += [
"CaloClusterCellLinkContainer#MuonClusterCollection_links"]
355 MUON1SlimmingHelper.StaticContent = StaticContent
357 from IsolationSelection.IsolationSelectionConfig
import setupIsoCloseBySlimmingVariables
358 setupIsoCloseBySlimmingVariables(MUON1SlimmingHelper)
360 MUON1SlimmingHelper.ExtraVariables += [
"AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
361 "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
362 "TruthPrimaryVertices.t.x.y.z",
363 "PrimaryVertices.trackWeights",
364 "MuonSegments.chiSquared.numberDoF.nPrecisionHits.x.y.z",
365 "Muons." +
".".join(decoartionsMuon),
366 "InDetTrackParticles."+
".".join(decorationsID),
367 "ExtrapolatedMuonTrackParticles." +
".".join(decorationsME),
368 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
369 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
370 "TauJets.dRmax.etOverPtLeadTrk",
371 "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
372 "CombinedMuonTrackParticles.vx.vy.vz",
373 "MuonSpectrometerTrackParticles.vx.vy.vz",
374 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
375 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
378 from LeptonTaggers.LeptonTaggersConfig
import GetExtraPLITVariablesForDxAOD
379 MUON1SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
383 MUON1SlimmingHelper.AllVariables += [
"TruthEvents",
"TruthParticles",
"TruthVertices",
"MuonTruthParticles"]
385 MUON1SlimmingHelper.AllVariables += [
"MuonClusterCollection"]
388 MUON1SlimmingHelper.IncludeTriggerNavigation =
False
389 MUON1SlimmingHelper.IncludeJetTriggerContent =
False
390 MUON1SlimmingHelper.IncludeMuonTriggerContent =
True
391 MUON1SlimmingHelper.IncludeEGammaTriggerContent =
False
392 MUON1SlimmingHelper.IncludeTauTriggerContent =
False
393 MUON1SlimmingHelper.IncludeEtMissTriggerContent =
False
394 MUON1SlimmingHelper.IncludeBJetTriggerContent =
False
395 MUON1SlimmingHelper.IncludeBPhysTriggerContent =
True
396 MUON1SlimmingHelper.IncludeMinBiasTriggerContent =
False
400 if flags.Trigger.EDMVersion == 2:
401 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
402 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
403 OutputContainerPrefix =
"TrigMatch_",
404 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesTau)
405 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
406 OutputContainerPrefix =
"TrigMatch_",
407 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesNoTau)
410 from DerivationFrameworkMuons.MuonsExtraTriggerConfig
import MuonExtraTriggerHelper
411 ExtraHelper = MuonExtraTriggerHelper(flags,MUON1TriggerListsHelper)
412 acc.merge(ExtraHelper.Run2MatchAugmentationCfg(flags))
413 ExtraHelper.AddRun2MatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
414 OutputContainerPrefix =
"TrigMatch_")
417 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
418 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
419 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON1SlimmingHelper)
422 MUON1ItemList = MUON1SlimmingHelper.GetItemList()
423 acc.merge(OutputStreamCfg(flags,
"DAOD_MUON1", ItemList=MUON1ItemList, AcceptAlgs=[
"MUON1Kernel"]))
424 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_MUON1", AcceptAlgs=[
"MUON1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))