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 TruthKey =
"TruthMuons",
81 Mu1PtMin = 2.*Units.GeV,
82 Mu1RequireQual =
True,
83 Mu2PtMin = 60.*Units.TeV,
85 MuonContainerKey = MuonContainer,
86 TrackContainerKey = IdTrackContainer,
87 OppositeCharge =
False,
88 InvariantMassLow = 60*Units.TeV,
89 applyTrigger = applyTrigger,
90 IDTrackThinningConeSize = 0.1,
91 BranchPrefix =
"TruthMuon"))
98 """Configure the derivation framework driving algorithm (kernel) for MUON1"""
99 acc = ComponentAccumulator()
100 stream_name=
'StreamDAOD_MUON1'
102 kwargs.setdefault(
"MuonContainer",
"Muons")
103 kwargs.setdefault(
"IdTrkContainer",
"InDetTrackParticles")
104 kwargs.setdefault(
"MsTrkContainer",
"ExtrapolatedMuonTrackParticles")
105 kwargs.setdefault(
"scheduleThinning",
True)
111 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
112 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
116 MuonContainer= kwargs[
"MuonContainer"],
117 IdTrackContainer=kwargs[
"IdTrkContainer"])
122 muonThinFlags = [
"pass{flag}".format(flag = algo.BranchPrefix)
for algo
in diMuonSelAcc.getEventAlgos()]
123 skimmingORs = [f
"DIMU_{flag} > 0" for flag
in muonThinFlags]
124 trkThinFlags = [muonThinFlags[i]
for i, algo
in enumerate(diMuonSelAcc.getEventAlgos())
if algo.UseTrackProbe ]
125 acc.merge(diMuonSelAcc)
130 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthClassifierFallbackCfg
131 MUON1MuonTruthClassifierFallback = acc.getPrimaryAndMerge(MuonTruthClassifierFallbackCfg(flags,
132 name =
"MUON1MuonTruthClassifierFallback",
133 ContainerKey = kwargs[
"MuonContainer"]))
134 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"MuonTruthClassifierFallBack",
135 AugmentationTools=[MUON1MuonTruthClassifierFallback]))
136 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthIsolationDecorAlgCfg
137 acc.merge(MuonTruthIsolationDecorAlgCfg(flags,
138 name =
"MUON1MuonTruthIsolationAlg",
139 ContainerKey = kwargs[
"MuonContainer"]))
143 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
144 acc.merge(AddMCPJPsiVertexFitCfg(flags,
146 IdTrkContainer = kwargs[
"IdTrkContainer"],
147 MuonContainer = kwargs[
"MuonContainer"]))
149 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
150 acc.merge(TrackIsolationCfg(flags,
151 TrackCollection=kwargs[
"IdTrkContainer"]))
152 acc.merge(TrackIsolationCfg(flags,
153 TrackCollection=kwargs[
"MsTrkContainer"]))
156 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
157 acc.merge(MuonCaloDepositAlgCfg(flags,
158 name =
"MuonCaloDepositAlg",
159 ContainerKey= kwargs[
"MuonContainer"]))
160 acc.merge(MuonCaloDepositAlgCfg(flags,
161 name =
"IdTrkCaloDepositDecorator",
162 ContainerKey= kwargs[
"IdTrkContainer"]))
165 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonTPExtrapolationAlgCfg
166 acc.merge(MuonTPExtrapolationAlgCfg(flags,
167 name =
"MuonTPExtrapolationAlgMUON1",
168 ContainerKey= kwargs[
"MuonContainer"],
169 TrackSelections = [
"passMuon1JPsi"]))
171 acc.merge(MuonTPExtrapolationAlgCfg(flags,
172 name =
"MuonTPTrigExtrapolationMUON1",
173 ContainerKey= kwargs[
"IdTrkContainer"],
174 TrackSelections = [
"passMuon1JPsi"]))
180 MUON1SkimmingTools = []
181 skimming_expression =
'||'.join(skimmingORs)
182 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
183 MUON1SkimmingTool1 = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
184 name =
"MUON1SkimmingTool1",
185 expression = skimming_expression))
186 MUON1SkimmingTools.append(MUON1SkimmingTool1)
193 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
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 name =
"AnalysisMuonThinningAlgMUON1",
202 MuonPassFlags = [
"{cont}.{passDecor}".format(cont = kwargs[
"MuonContainer"],
203 passDecor = passDecor)
for passDecor
in muonThinFlags],
204 TrkPassFlags =[
"{cont}.{passDecor}".format(cont = kwargs[
"IdTrkContainer"],
205 passDecor = passDecor)
for passDecor
in trkThinFlags],
206 IdTrkFwdThinning=fwdTracks,
207 StreamName = stream_name))
211 MUON1ThinningTool1 = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
212 name =
"MUON1ThinningTool4",
213 StreamName = stream_name,
215 SelectionString =
"Muons.pt>4*GeV",
216 TopoClCollectionSGKey =
"CaloCalTopoClusters",
218 MUON1ThinningTools.append(MUON1ThinningTool1)
221 muon1CellThinAlg = CompFactory.CaloThinCellsByClusterAlg(
222 'MUON1_CaloThinCellsByClusterAlg_MuonClusterCollection',
223 StreamName = stream_name,
224 Clusters =
'MuonClusterCollection',
226 acc.addEventAlgo(muon1CellThinAlg)
230 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import Thin_vtxTrkCfg
231 MUON1Thin_vtxTrk = acc.getPrimaryAndMerge(Thin_vtxTrkCfg(flags,
232 name =
"MUON1Thin_vtxTrk",
233 StreamName = stream_name,
234 TrackParticleContainerName =
"InDetTrackParticles",
235 VertexContainerNames = [
"Muon1JpsiCandidates"],
236 PassFlags = [
"passed_Jpsi"] ))
237 MUON1ThinningTools.append(MUON1Thin_vtxTrk)
241 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
242 MUON1TruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags,
243 name =
"MUON1TruthThinningTool",
244 StreamName = stream_name,
245 WritePartons =
False,
246 WriteHadrons =
False,
247 WriteCHadrons =
False,
248 WriteBHadrons =
True,
251 PartonPtThresh = -1.0,
254 WriteBosonProducts =
False,
255 WriteBSMProducts =
True,
256 WriteTopAndDecays =
False,
257 WriteEverything =
False,
258 WriteAllLeptons =
True,
259 WriteLeptonsNotFromHadrons =
False,
260 WriteNotPhysical =
False,
262 PreserveAncestors =
False,
263 PreserveParentsSiblingsChildren =
True,
264 PreserveGeneratorDescendants =
False))
267 MUON1ThinningTools.append(MUON1TruthThinningTool)
274 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
275 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite =
True))
278 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,
279 SkimmingTools = MUON1SkimmingTools,
280 ThinningTools = MUON1ThinningTools))
285 stream_name =
'StreamDAOD_MUON1'
286 acc = ComponentAccumulator()
291 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
292 MUON1TriggerListsHelper = TriggerListsHelper(flags)
297 acc.merge(
MUON1KernelCfg(flags, name=
"MUON1Kernel", StreamName = stream_name, TriggerListsHelper = MUON1TriggerListsHelper))
300 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg
301 acc.merge(DecoratePLITAlgsCfg(flags))
306 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
307 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
308 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
310 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] ]
311 isoCones += [f
"{cone}{size}" for cone
in [
"topoetcone",
"neflowisol"]
for size
in range(20,50,10)]
313 decorationsID = [
"TTVA_AMVFVertices" ,
"TTVA_AMVFWeights",
"vx",
"vy",
"vz"]
315 decoartionsMuon = [
"EnergyLossSigma"]
317 decorationsID += isoCones
318 decorationsME += isoCones
319 CaloDeposDecors = [
"CaloDeposits",
"CaloElosses",
"CaloDepType"]
320 decorationsID += CaloDeposDecors
321 decoartionsMuon += CaloDeposDecors
322 tpExtrapolations = [
"EtaTriggerPivot",
"PhiTriggerPivot",
"DecoratedPivotEtaPhi"]
323 decorationsID += tpExtrapolations
324 decoartionsMuon += tpExtrapolations
327 MUON1SlimmingHelper =
SlimmingHelper(
"MUON1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
328 MUON1SlimmingHelper.SmartCollections = [
"EventInfo",
333 "InDetTrackParticles",
335 "AntiKt4EMPFlowJets",
336 "MET_Baseline_AntiKt4EMTopo",
337 "MET_Baseline_AntiKt4EMPFlow",
342 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
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
361 setupIsoCloseBySlimmingVariables(MUON1SlimmingHelper)
363 MUON1SlimmingHelper.ExtraVariables += [
"AntiKt4EMTopoJets.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
364 "AntiKt4EMPFlowJets.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
382 MUON1SlimmingHelper.ExtraVariables += 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
405 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
406 OutputContainerPrefix =
"TrigMatch_",
407 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesTau)
408 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
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
422 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(MUON1SlimmingHelper)
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]))