8 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
9 from AthenaConfiguration.ComponentFactory
import CompFactory
10 from AthenaConfiguration.Enums
import MetadataCategory
15 MuonContainer="Muons",
16 IdTrackContainer="InDetTrackParticles",
17 applyTrigger = False):
19 from DerivationFrameworkMuons.MuonsToolsConfig
import DiMuonTaggingAlgCfg
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"))
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"))
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"))
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"))
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"""
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
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
130 name =
"MUON1MuonTruthClassifierFallback",
131 ContainerKey = kwargs[
"MuonContainer"]))
132 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"MuonTruthClassifierFallBack",
133 AugmentationTools=[MUON1MuonTruthClassifierFallback]))
134 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthIsolationDecorAlgCfg
136 name =
"MUON1MuonTruthIsolationAlg",
137 ContainerKey = kwargs[
"MuonContainer"]))
141 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
144 IdTrkContainer = kwargs[
"IdTrkContainer"],
145 MuonContainer = kwargs[
"MuonContainer"]))
147 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
149 TrackCollection=kwargs[
"IdTrkContainer"],
150 TrackSelections = trkThinFlags))
152 TrackCollection=kwargs[
"MsTrkContainer"]))
155 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
157 ContainerKey= kwargs[
"MuonContainer"],
158 TrackSelections = muonThinFlags))
160 name =
"IdTrkCaloDepsitDecorator",
161 ContainerKey= kwargs[
"IdTrkContainer"],
162 TrackSelections = trkThinFlags))
165 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonTPExtrapolationAlgCfg
167 ContainerKey= kwargs[
"MuonContainer"],
168 TrackSelections = [
"passMuon1JPsi"]))
171 name =
"MuonTPTrigExtrapolation",
172 ContainerKey= kwargs[
"IdTrkContainer"],
173 TrackSelections = [
"passMuon1JPsi"]))
179 MUON1SkimmingTools = []
180 skimming_expression =
'||'.
join(skimmingORs)
181 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
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:
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']))
211 name =
"MUON1ThinningTool4",
212 StreamName = kwargs[
'StreamName'],
214 SelectionString =
"Muons.pt>4*GeV",
215 TopoClCollectionSGKey =
"CaloCalTopoClusters",
217 MUON1ThinningTools.append(MUON1ThinningTool1)
221 inputClusterKeys = [
"MuonClusterCollection"],
222 streamName = kwargs[
'StreamName'],
223 outputCellKey =
"DFMUONCellContainer"))
226 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import Thin_vtxTrkCfg
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
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
274 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,
275 SkimmingTools = MUON1SkimmingTools,
276 ThinningTools = MUON1ThinningTools))
281 stream_name =
'StreamDAOD_MUON1'
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
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 "BTagging_AntiKt4EMPFlow",
333 "BTagging_AntiKtVR30Rmax4Rmin02Track",
334 "MET_Baseline_AntiKt4EMTopo",
335 "MET_Baseline_AntiKt4EMPFlow",
340 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
341 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
342 "AntiKtVR30Rmax4Rmin02PV0TrackJets",
345 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
347 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
348 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
349 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
350 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
351 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
352 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
353 StaticContent += [
"xAOD::VertexContainer#Muon1JpsiCandidates"]
354 StaticContent += [
"xAOD::VertexAuxContainer#Muon1JpsiCandidatesAux."+excludedVertexAuxData]
355 StaticContent += [
"CaloCellContainer#DFMUONCellContainer"]
356 StaticContent += [
"CaloClusterCellLinkContainer#MuonClusterCollection_links"]
358 MUON1SlimmingHelper.StaticContent = StaticContent
360 from IsolationSelection.IsolationSelectionConfig
import setupIsoCloseBySlimmingVariables
363 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",
364 "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",
365 "TruthPrimaryVertices.t.x.y.z",
366 "PrimaryVertices.trackWeights",
367 "MuonSegments.chiSquared.numberDoF.nPrecisionHits.x.y.z",
368 "Muons." +
".".
join(decoartionsMuon),
369 "InDetTrackParticles."+
".".
join(decorationsID),
370 "ExtrapolatedMuonTrackParticles." +
".".
join(decorationsME),
371 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
372 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
373 "TauJets.dRmax.etOverPtLeadTrk",
374 "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
375 "CombinedMuonTrackParticles.vx.vy.vz",
376 "MuonSpectrometerTrackParticles.vx.vy.vz",
377 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
378 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
381 from LeptonTaggers.LeptonTaggersConfig
import GetExtraPLITVariablesForDxAOD
386 MUON1SlimmingHelper.AllVariables += [
"TruthEvents",
"TruthParticles",
"TruthVertices",
"MuonTruthParticles"]
388 MUON1SlimmingHelper.AllVariables += [
"MuonClusterCollection"]
391 MUON1SlimmingHelper.IncludeTriggerNavigation =
False
392 MUON1SlimmingHelper.IncludeJetTriggerContent =
False
393 MUON1SlimmingHelper.IncludeMuonTriggerContent =
True
394 MUON1SlimmingHelper.IncludeEGammaTriggerContent =
False
395 MUON1SlimmingHelper.IncludeTauTriggerContent =
False
396 MUON1SlimmingHelper.IncludeEtMissTriggerContent =
False
397 MUON1SlimmingHelper.IncludeBJetTriggerContent =
False
398 MUON1SlimmingHelper.IncludeBPhysTriggerContent =
True
399 MUON1SlimmingHelper.IncludeMinBiasTriggerContent =
False
403 if flags.Trigger.EDMVersion == 2:
404 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
406 OutputContainerPrefix =
"TrigMatch_",
407 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesTau)
409 OutputContainerPrefix =
"TrigMatch_",
410 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesNoTau)
413 from DerivationFrameworkMuons.MuonsExtraTriggerConfig
import MuonExtraTriggerHelper
414 ExtraHelper = MuonExtraTriggerHelper(flags,MUON1TriggerListsHelper)
415 acc.merge(ExtraHelper.Run2MatchAugmentationCfg(flags))
416 ExtraHelper.AddRun2MatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
417 OutputContainerPrefix =
"TrigMatch_")
420 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
421 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
425 MUON1ItemList = MUON1SlimmingHelper.GetItemList()
426 acc.merge(
OutputStreamCfg(flags,
"DAOD_MUON1", ItemList=MUON1ItemList, AcceptAlgs=[
"MUON1Kernel"]))
427 acc.merge(
SetupMetaDataForStreamCfg(flags,
"DAOD_MUON1", AcceptAlgs=[
"MUON1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))