ATLAS Offline Software
Loading...
Searching...
No Matches
python.MUON1 Namespace Reference

Functions

 Muon1SelectionCfg (flags, MuonContainer="Muons", IdTrackContainer="InDetTrackParticles", applyTrigger=False)
 MUON1KernelCfg (flags, name='MUON1Kernel', **kwargs)
 MUON1Cfg (flags)

Function Documentation

◆ MUON1Cfg()

python.MUON1.MUON1Cfg ( flags)

Definition at line 280 of file MUON1.py.

280def MUON1Cfg(flags):
281 stream_name = 'StreamDAOD_MUON1'
282 acc = ComponentAccumulator()
283
284 # Get the lists of triggers needed for trigger matching.
285 # This is needed at this scope (for the slimming) and further down in the config chain
286 # for actually configuring the matching, so we create it here and pass it down
287 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
288 MUON1TriggerListsHelper = TriggerListsHelper(flags)
289
290
291
292 # Common augmentations
293 acc.merge(MUON1KernelCfg(flags, name="MUON1Kernel", StreamName = stream_name, TriggerListsHelper = MUON1TriggerListsHelper))
294
295 # LeptonTaggers isolation to schedule PLIT
296 from LeptonTaggers.LeptonTaggersConfig import DecoratePLITAlgsCfg
297 acc.merge(DecoratePLITAlgsCfg(flags))
298
299 # ============================
300 # Define contents of the format
301 # =============================
302 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
303 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
304 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
305
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)]
308
309 decorationsID = ["TTVA_AMVFVertices" , "TTVA_AMVFWeights", "vx", "vy", "vz"]
310 decorationsME = []
311 decoartionsMuon = ["EnergyLossSigma"]
312
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
321
322
323 MUON1SlimmingHelper = SlimmingHelper("MUON1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
324 MUON1SlimmingHelper.SmartCollections = ["EventInfo",
325 "Electrons",
326 "Photons",
327 "Muons",
328 "PrimaryVertices",
329 "InDetTrackParticles",
330 "AntiKt4EMTopoJets",
331 "AntiKt4EMPFlowJets",
332 "MET_Baseline_AntiKt4EMTopo",
333 "MET_Baseline_AntiKt4EMPFlow",
334 "TauJets",
335 "TauJets_MuonRM",
336 "DiTauJets",
337 "DiTauJetsLowPt",
338 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
339 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
340 ]
341
342 excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
343 StaticContent = []
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"]
354
355 MUON1SlimmingHelper.StaticContent = StaticContent
356
357 from IsolationSelection.IsolationSelectionConfig import setupIsoCloseBySlimmingVariables
358 setupIsoCloseBySlimmingVariables(MUON1SlimmingHelper)
359 # Extra content
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"]
376
377 # LeptonTaggers PLIT content
378 from LeptonTaggers.LeptonTaggersConfig import GetExtraPLITVariablesForDxAOD
379 MUON1SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
380
381 # Truth content
382 if flags.Input.isMC:
383 MUON1SlimmingHelper.AllVariables += ["TruthEvents", "TruthParticles", "TruthVertices", "MuonTruthParticles"]
384
385 MUON1SlimmingHelper.AllVariables += ["MuonClusterCollection"]
386
387 # Trigger content
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
397
398 # Trigger matching
399 # Run 2
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)
408
409 # Custom (B-physics) muon chains not in PHYS
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_")
415
416 # Run 3, or Run 2 with navigation conversion
417 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
418 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
419 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON1SlimmingHelper)
420
421 # Output stream
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]))
425
426 return acc
427

◆ MUON1KernelCfg()

python.MUON1.MUON1KernelCfg ( flags,
name = 'MUON1Kernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for MUON1

Definition at line 96 of file MUON1.py.

96def MUON1KernelCfg(flags, name='MUON1Kernel', **kwargs):
97 """Configure the derivation framework driving algorithm (kernel) for MUON1"""
98 acc = ComponentAccumulator()
99
100 kwargs.setdefault("MuonContainer", "Muons")
101 kwargs.setdefault("IdTrkContainer", "InDetTrackParticles")
102 kwargs.setdefault("MsTrkContainer", "ExtrapolatedMuonTrackParticles")
103 kwargs.setdefault("scheduleThinning", True)
104
105
106 # --------------------
107 # Common augmentations
108 # --------------------
109 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
110 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
111
112
113 diMuonSelAcc = Muon1SelectionCfg(flags,
114 MuonContainer= kwargs["MuonContainer"],
115 IdTrackContainer=kwargs["IdTrkContainer"])
116 # ------------
117 # Augmentation
118 # ------------
119 # Strings for applying cuts based on augmentations
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)
124
125
126
127 if flags.Input.isMC:
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"]))
138
139
140
141 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg import AddMCPJPsiVertexFitCfg
142 acc.merge(AddMCPJPsiVertexFitCfg(flags,
143 prefix='Muon1',
144 IdTrkContainer = kwargs["IdTrkContainer"],
145 MuonContainer = kwargs["MuonContainer"]))
146
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"]))
153
154
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))
163
164
165 from DerivationFrameworkMuons.MuonsToolsConfig import MuonTPExtrapolationAlgCfg
166 acc.merge(MuonTPExtrapolationAlgCfg(flags,
167 ContainerKey= kwargs["MuonContainer"],
168 TrackSelections = ["passMuon1JPsi"]))
169
170 acc.merge(MuonTPExtrapolationAlgCfg(flags,
171 name = "MuonTPTrigExtrapolation",
172 ContainerKey= kwargs["IdTrkContainer"],
173 TrackSelections = ["passMuon1JPsi"]))
174
175
176 # --------
177 # Skimming
178 # --------
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)
186
187 # --------
188 # Thinning
189 # --------
190
191 # Thinning tools
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:
199 fwdTracks = ""
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']))
207
208
209 # keep topoclusters around muons
210 MUON1ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
211 name = "MUON1ThinningTool4",
212 StreamName = kwargs['StreamName'],
213 SGKey = "Muons",
214 SelectionString = "Muons.pt>4*GeV",
215 TopoClCollectionSGKey = "CaloCalTopoClusters",
216 ConeSize = 0.5))
217 MUON1ThinningTools.append(MUON1ThinningTool1)
218
219
220 acc.merge(thinCaloCellsForDFCfg(flags,
221 inputClusterKeys = ["MuonClusterCollection"],
222 streamName = kwargs['StreamName'],
223 outputCellKey = "DFMUONCellContainer"))
224
225
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)
234
235
236 if flags.Input.isMC:
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,
245 WriteGeant = False,
246 WriteTauHad = False,
247 PartonPtThresh = -1.0,
248 WriteBSM = True,
249 WriteBosons = True,
250 WriteBosonProducts = False,
251 WriteBSMProducts = True,
252 WriteTopAndDecays = False,
253 WriteEverything = False,
254 WriteAllLeptons = True,
255 WriteLeptonsNotFromHadrons = False,
256 WriteNotPhysical = False,
257 WriteFirstN = -1,
258 PreserveAncestors = False,
259 PreserveParentsSiblingsChildren = True,
260 PreserveGeneratorDescendants = False))
261 # Not sure what this should be set to nowadays
262 #SimBarcodeOffset = DerivationFrameworkSimBarcodeOffset)
263 MUON1ThinningTools.append(MUON1TruthThinningTool)
264
265 # --------------------
266 # The kernel algorithm
267 # --------------------
268
269
270 from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
271 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite = True))
272
273
274 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,
275 SkimmingTools = MUON1SkimmingTools,
276 ThinningTools = MUON1ThinningTools))
277 return acc
278
279

◆ Muon1SelectionCfg()

python.MUON1.Muon1SelectionCfg ( flags,
MuonContainer = "Muons",
IdTrackContainer = "InDetTrackParticles",
applyTrigger = False )

Definition at line 14 of file MUON1.py.

17 applyTrigger = False):
18 acc = ComponentAccumulator()
19 from DerivationFrameworkMuons.MuonsToolsConfig import DiMuonTaggingAlgCfg
20
21 acc.merge(DiMuonTaggingAlgCfg(flags,
22 name = "DiMuonTaggingZmumuOC",
23 Mu1PtMin = 4.*Units.GeV,
24 Mu1AbsEtaMax = 2.75,
25 Mu1RequireQual = True,
26 Mu2PtMin = 2.*Units.GeV,
27 UseTrackProbe = True,
28 MuonContainerKey = MuonContainer,
29 TrackContainerKey = IdTrackContainer,
30 InvariantMassLow = 60*Units.GeV,
31 IDTrackThinningConeSize = 0.4,
32 applyTrigger = applyTrigger,
33 BranchPrefix = "Muon1ZmumuOC"))
34
35
36 acc.merge(DiMuonTaggingAlgCfg(flags,
37 name = "DiMuonTaggingZmumuSC",
38 Mu1PtMin = 4.*Units.GeV,
39 Mu1AbsEtaMax = 2.75,
40 Mu1RequireQual = True,
41 Mu2PtMin = 2.*Units.GeV,
42 UseTrackProbe = True,
43 MuonContainerKey = MuonContainer,
44 TrackContainerKey = IdTrackContainer,
45 OppositeCharge = False,
46 applyTrigger = applyTrigger,
47 InvariantMassLow = 60*Units.GeV,
48 BranchPrefix = "Muon1ZmumuSC"))
49 # Jpsi
50 acc.merge(DiMuonTaggingAlgCfg(flags,
51 name = "DiMuonTaggingJpsi",
52 Mu1PtMin = 4.*Units.GeV,
53 Mu1AbsEtaMax = 2.75,
54 Mu1RequireQual = True,
55 Mu2PtMin = 2.*Units.GeV,
56 UseTrackProbe = True,
57 MuonContainerKey = MuonContainer,
58 TrackContainerKey = IdTrackContainer,
59 applyTrigger = applyTrigger,
60 InvariantMassLow = 2.0*Units.GeV,
61 InvariantMassHigh = 4.8*Units.GeV,
62 BranchPrefix = "Muon1JPsi"))
63
64 acc.merge(DiMuonTaggingAlgCfg(flags,
65 name = "DiMuonTaggingUpsilon",
66 Mu1PtMin = 4.*Units.GeV,
67 Mu1AbsEtaMax = 2.75,
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"))
76 if flags.Input.isMC:
77
78 acc.merge(DiMuonTaggingAlgCfg(flags,
79 name = "MuonTruthTagging",
80 Mu1PtMin = 2.*Units.GeV,
81 Mu1RequireQual = True,
82 Mu2PtMin = 60.*Units.TeV, # Dummy value
83 UseTrackProbe = True,
84 MuonContainerKey = MuonContainer,
85 TrackContainerKey = IdTrackContainer,
86 OppositeCharge = False,
87 InvariantMassLow = 60*Units.TeV, # Dummy value
88 applyTrigger = applyTrigger,
89 IDTrackThinningConeSize = 0.1,
90 BranchPrefix = "TruthMuon"))
91
92 return acc
93
94
95# Main algorithm config