9 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
10 from AthenaConfiguration.ComponentFactory
import CompFactory
11 from AthenaConfiguration.Enums
import MetadataCategory
16 MuonContainer="Muons",
17 IdTrackContainer="InDetTrackParticles",
18 applyTrigger = False):
20 from DerivationFrameworkMuons.MuonsToolsConfig
import DiMuonTaggingAlgCfg
23 name =
"DiMuonTaggingZmumuOC",
24 Mu1PtMin = 4.*Units.GeV,
26 Mu1RequireQual =
True,
27 Mu2PtMin = 2.*Units.GeV,
29 MuonContainerKey = MuonContainer,
30 TrackContainerKey = IdTrackContainer,
31 InvariantMassLow = 60*Units.GeV,
32 IDTrackThinningConeSize = 0.4,
33 applyTrigger = applyTrigger,
34 BranchPrefix =
"Muon1ZmumuOC"))
38 name =
"DiMuonTaggingZmumuSC",
39 Mu1PtMin = 4.*Units.GeV,
41 Mu1RequireQual =
True,
42 Mu2PtMin = 2.*Units.GeV,
44 MuonContainerKey = MuonContainer,
45 TrackContainerKey = IdTrackContainer,
46 OppositeCharge =
False,
47 applyTrigger = applyTrigger,
48 InvariantMassLow = 60*Units.GeV,
49 BranchPrefix =
"Muon1ZmumuSC"))
52 name =
"DiMuonTaggingJpsi",
53 Mu1PtMin = 4.*Units.GeV,
55 Mu1RequireQual =
True,
56 Mu2PtMin = 2.*Units.GeV,
58 MuonContainerKey = MuonContainer,
59 TrackContainerKey = IdTrackContainer,
60 applyTrigger = applyTrigger,
61 InvariantMassLow = 2.0*Units.GeV,
62 InvariantMassHigh = 4.8*Units.GeV,
63 BranchPrefix =
"Muon1JPsi"))
66 name =
"DiMuonTaggingUpsilon",
67 Mu1PtMin = 4.*Units.GeV,
69 Mu1RequireQual =
True,
70 Mu2PtMin = 2.*Units.GeV,
71 MuonContainerKey = MuonContainer,
72 TrackContainerKey = IdTrackContainer,
73 InvariantMassLow = 7.0*Units.GeV,
74 InvariantMassHigh = 13.*Units.GeV,
75 applyTrigger = applyTrigger,
76 BranchPrefix =
"Muon1Upsilon"))
80 name =
"MuonTruthTagging",
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"""
101 kwargs.setdefault(
"MuonContainer",
"Muons")
102 kwargs.setdefault(
"IdTrkContainer",
"InDetTrackParticles")
103 kwargs.setdefault(
"MsTrkContainer",
"ExtrapolatedMuonTrackParticles")
104 kwargs.setdefault(
"scheduleThinning",
True)
110 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
115 MuonContainer= kwargs[
"MuonContainer"],
116 IdTrackContainer=kwargs[
"IdTrkContainer"])
121 muonThinFlags = [
"pass{flag}".
format(flag = algo.BranchPrefix)
for algo
in diMuonSelAcc.getEventAlgos()]
122 skimmingORs = [f
"DIMU_{flag} > 0" for flag
in muonThinFlags]
123 trkThinFlags = [muonThinFlags[i]
for i, algo
in enumerate(diMuonSelAcc.getEventAlgos())
if algo.UseTrackProbe ]
124 acc.merge(diMuonSelAcc)
129 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthClassifierFallbackCfg
131 name =
"MUON1MuonTruthClassifierFallback",
132 ContainerKey = kwargs[
"MuonContainer"]))
133 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"MuonTruthClassifierFallBack",
134 AugmentationTools=[MUON1MuonTruthClassifierFallback]))
135 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MuonTruthIsolationDecorAlgCfg
137 name =
"MUON1MuonTruthIsolationAlg",
138 ContainerKey = kwargs[
"MuonContainer"]))
142 from DerivationFrameworkMuons.JPsiVertexFitSetupCfg
import AddMCPJPsiVertexFitCfg
145 IdTrkContainer = kwargs[
"IdTrkContainer"],
146 MuonContainer = kwargs[
"MuonContainer"]))
148 from DerivationFrameworkMuons.TrackIsolationDecoratorConfig
import TrackIsolationCfg
150 TrackCollection=kwargs[
"IdTrkContainer"],
151 TrackSelections = trkThinFlags))
153 TrackCollection=kwargs[
"MsTrkContainer"]))
156 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonCaloDepositAlgCfg
158 ContainerKey= kwargs[
"MuonContainer"],
159 TrackSelections = muonThinFlags))
161 name =
"IdTrkCaloDepsitDecorator",
162 ContainerKey= kwargs[
"IdTrkContainer"],
163 TrackSelections = trkThinFlags))
166 from DerivationFrameworkMuons.MuonsToolsConfig
import MuonTPExtrapolationAlgCfg
168 ContainerKey= kwargs[
"MuonContainer"],
169 TrackSelections = [
"passMuon1JPsi"]))
172 name =
"MuonTPTrigExtrapolation",
173 ContainerKey= kwargs[
"IdTrkContainer"],
174 TrackSelections = [
"passMuon1JPsi"]))
180 MUON1SkimmingTools = []
181 skimming_expression =
'||'.
join(skimmingORs)
182 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import xAODStringSkimmingToolCfg
184 name =
"MUON1SkimmingTool1",
185 expression = skimming_expression))
186 MUON1SkimmingTools.append(MUON1SkimmingTool1)
193 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
194 from DerivationFrameworkCalo.CaloCellDFGetterConfig
import thinCaloCellsForDFCfg
195 from DerivationFrameworkMuons.MuonsToolsConfig
import AnalysisMuonThinningAlgCfg
196 MUON1ThinningTools = []
197 if kwargs[
"scheduleThinning"]:
199 MuonPassFlags = [
"{cont}.{passDecor}".
format(cont = kwargs[
"MuonContainer"],
200 passDecor = passDecor)
for passDecor
in muonThinFlags],
201 TrkPassFlags =[
"{cont}.{passDecor}".
format(cont = kwargs[
"IdTrkContainer"],
202 passDecor = passDecor)
for passDecor
in trkThinFlags],
203 StreamName = kwargs[
'StreamName']))
208 name =
"MUON1ThinningTool4",
209 StreamName = kwargs[
'StreamName'],
211 SelectionString =
"Muons.pt>4*GeV",
212 TopoClCollectionSGKey =
"CaloCalTopoClusters",
214 MUON1ThinningTools.append(MUON1ThinningTool1)
218 inputClusterKeys = [
"MuonClusterCollection"],
219 streamName = kwargs[
'StreamName'],
220 outputCellKey =
"DFMUONCellContainer"))
223 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import Thin_vtxTrkCfg
225 name =
"MUON1Thin_vtxTrk",
226 StreamName = kwargs[
'StreamName'],
227 TrackParticleContainerName =
"InDetTrackParticles",
228 VertexContainerNames = [
"Muon1JpsiCandidates"],
229 PassFlags = [
"passed_Jpsi"] ))
230 MUON1ThinningTools.append(MUON1Thin_vtxTrk)
234 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import MenuTruthThinningCfg
236 name =
"MUON1TruthThinningTool",
237 StreamName = kwargs[
'StreamName'],
238 WritePartons =
False,
239 WriteHadrons =
False,
240 WriteCHadrons =
False,
241 WriteBHadrons =
True,
244 PartonPtThresh = -1.0,
247 WriteBosonProducts =
False,
248 WriteBSMProducts =
True,
249 WriteTopAndDecays =
False,
250 WriteEverything =
False,
251 WriteAllLeptons =
True,
252 WriteLeptonsNotFromHadrons =
False,
253 WriteNotPhysical =
False,
255 PreserveAncestors =
False,
256 PreserveParentsSiblingsChildren =
True,
257 PreserveGeneratorDescendants =
False))
260 MUON1ThinningTools.append(MUON1TruthThinningTool)
267 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
271 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,
272 SkimmingTools = MUON1SkimmingTools,
273 ThinningTools = MUON1ThinningTools))
278 stream_name =
'StreamDAOD_MUON1'
284 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
285 MUON1TriggerListsHelper = TriggerListsHelper(flags)
290 acc.merge(
MUON1KernelCfg(flags, name=
"MUON1Kernel", StreamName = stream_name, TriggerListsHelper = MUON1TriggerListsHelper))
295 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
296 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
297 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
299 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] ]
300 isoCones += [f
"{cone}{size}" for cone
in [
"topoetcone",
"neflowisol"]
for size
in range(20,50,10)]
302 decorationsID = [
"TTVA_AMVFVertices" ,
"TTVA_AMVFWeights",
"vx",
"vy",
"vz"]
304 decoartionsMuon = [
"EnergyLossSigma"]
306 decorationsID += isoCones
307 decorationsME += isoCones
308 CaloDeposDecors = [
"CaloDeposits",
"CaloElosses",
"CaloDepType"]
309 decorationsID += CaloDeposDecors
310 decoartionsMuon += CaloDeposDecors
311 tpExtrapolations = [
"EtaTriggerPivot",
"PhiTriggerPivot",
"DecoratedPivotEtaPhi"]
312 decorationsID += tpExtrapolations
313 decoartionsMuon += tpExtrapolations
316 MUON1SlimmingHelper =
SlimmingHelper(
"MUON1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
317 MUON1SlimmingHelper.SmartCollections = [
"EventInfo",
322 "InDetTrackParticles",
324 "AntiKt4EMPFlowJets",
325 "BTagging_AntiKt4EMPFlow",
326 "BTagging_AntiKtVR30Rmax4Rmin02Track",
327 "MET_Baseline_AntiKt4EMTopo",
328 "MET_Baseline_AntiKt4EMPFlow",
333 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
334 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
335 "AntiKtVR30Rmax4Rmin02PV0TrackJets",
338 excludedVertexAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
340 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
341 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
342 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
343 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
344 StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
345 StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
346 StaticContent += [
"xAOD::VertexContainer#Muon1JpsiCandidates"]
347 StaticContent += [
"xAOD::VertexAuxContainer#Muon1JpsiCandidatesAux."+excludedVertexAuxData]
349 MUON1SlimmingHelper.StaticContent = StaticContent
351 from IsolationSelection.IsolationSelectionConfig
import setupIsoCloseBySlimmingVariables
354 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",
355 "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",
356 "TruthPrimaryVertices.t.x.y.z",
357 "PrimaryVertices.trackWeights",
358 "MuonSegments.chiSquared.numberDoF.nPrecisionHits.x.y.z",
359 "Muons." +
".".
join(decoartionsMuon),
360 "InDetTrackParticles."+
".".
join(decorationsID),
361 "ExtrapolatedMuonTrackParticles." +
".".
join(decorationsME),
362 "CaloCalTopoClusters.calE.calEta.calM.calPhi.e_sampl.rawM.rawPhi.rawEta.rawE",
363 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ",
364 "TauJets.dRmax.etOverPtLeadTrk",
365 "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
366 "CombinedMuonTrackParticles.vx.vy.vz",
367 "MuonSpectrometerTrackParticles.vx.vy.vz",
368 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
369 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
373 MUON1SlimmingHelper.AllVariables += [
"TruthEvents",
"TruthParticles",
"TruthVertices",
"MuonTruthParticles"]
376 MUON1SlimmingHelper.IncludeTriggerNavigation =
False
377 MUON1SlimmingHelper.IncludeJetTriggerContent =
False
378 MUON1SlimmingHelper.IncludeMuonTriggerContent =
True
379 MUON1SlimmingHelper.IncludeEGammaTriggerContent =
False
380 MUON1SlimmingHelper.IncludeJetTauEtMissTriggerContent =
False
381 MUON1SlimmingHelper.IncludeTauTriggerContent =
False
382 MUON1SlimmingHelper.IncludeEtMissTriggerContent =
False
383 MUON1SlimmingHelper.IncludeBJetTriggerContent =
False
384 MUON1SlimmingHelper.IncludeBPhysTriggerContent =
True
385 MUON1SlimmingHelper.IncludeMinBiasTriggerContent =
False
389 if flags.Trigger.EDMVersion == 2:
390 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
392 OutputContainerPrefix =
"TrigMatch_",
393 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesTau)
395 OutputContainerPrefix =
"TrigMatch_",
396 TriggerList = MUON1TriggerListsHelper.Run2TriggerNamesNoTau)
399 from DerivationFrameworkMuons.MuonsExtraTriggerConfig
import MuonExtraTriggerHelper
400 ExtraHelper = MuonExtraTriggerHelper(flags,MUON1TriggerListsHelper)
401 acc.merge(ExtraHelper.Run2MatchAugmentationCfg(flags))
402 ExtraHelper.AddRun2MatchingToSlimmingHelper(SlimmingHelper = MUON1SlimmingHelper,
403 OutputContainerPrefix =
"TrigMatch_")
407 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
408 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
414 if flags.Trigger.doEDMVersionConversion:
415 from DerivationFrameworkTrigger.TrigSlimmingHelper
import addTrigEDMSetToOutput
416 from AthenaCommon.Logging
import logging
417 msg = logging.getLogger(
'MUON1Cfg')
418 msg.warn(
'doEDMVersionConversion is still in validation, WRITING FULL TRIGGER EDM TO THE DAOD!')
420 MUON1SlimmingHelper.AppendToDictionary.update({
'HLTNav_R2ToR3Summary':
'xAOD::TrigCompositeContainer',
'HLTNav_R2ToR3SummaryAux':
'xAOD::TrigCompositeAuxContainer'})
421 MUON1SlimmingHelper.AllVariables += [
'HLTNav_R2ToR3Summary']
426 MUON1ItemList = MUON1SlimmingHelper.GetItemList()
427 acc.merge(
OutputStreamCfg(flags,
"DAOD_MUON1", ItemList=MUON1ItemList, AcceptAlgs=[
"MUON1Kernel"]))
428 acc.merge(
SetupMetaDataForStreamCfg(flags,
"DAOD_MUON1", AcceptAlgs=[
"MUON1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))