ATLAS Offline Software
Loading...
Searching...
No Matches
MuSAVtxFitterConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6#default MuSAVtxFitterTool configuration
7def MuSAVtxFitterToolConfig(flags, name="MuSAVtxFitterTool", **kwargs):
8 acc = ComponentAccumulator()
9
10 if "VertexFitterTool" not in kwargs:
11 from TrkConfig.TrkVKalVrtFitterConfig import TrkVKalVrtFitterCfg
12 kwargs.setdefault("VertexFitterTool", acc.popToolsAndMerge(TrkVKalVrtFitterCfg(flags, IterationNumber = 100, allowUltraDisplaced = True)))
13
14
15 if "Extrapolator" not in kwargs:
16 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
17 kwargs.setdefault("Extrapolator", acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags)))
18
19
20 kwargs.setdefault("etaCutMSTP", 2.5)
21 kwargs.setdefault("baseChi2Cut", 50)
22
23 kwargs.setdefault("doValidation", False)
24 kwargs.setdefault("doStacoRecovery", True)
25
26 acc.setPrivateTools(CompFactory.Rec.MuSAVtxFitterTool(name,**kwargs))
27 return acc
28
29#default MuSAVtxFitter configuration
30def MuSAVtxFitterConfig(flags, name="MuSAVtxFitter", **kwargs):
31 acc = ComponentAccumulator()
32
33 kwargs.setdefault("MuSAVtxContainerName", "MuSAVertices")
34 kwargs.setdefault("MuSAExtrapolatedTracksName", "MuSAExtrapolatedTrackParticles")
35 kwargs.setdefault("MuonContainerName", "Muons")
36 kwargs.setdefault("MSTPContainerName", "MuonSpectrometerTrackParticles")
37
38 if "TrackToVertexTool" not in kwargs:
39 from TrackToVertex.TrackToVertexConfig import TrackToVertexCfg
40 kwargs.setdefault("TrackToVertexTool", acc.popToolsAndMerge(TrackToVertexCfg(flags)))
41
42 if "MuSAVtxToolName" not in kwargs:
43 from MuSAVtxFitter.MuSAVtxFitterConfig import MuSAVtxFitterToolConfig
44 kwargs.setdefault("MuSAVtxToolName", acc.popToolsAndMerge(MuSAVtxFitterToolConfig(flags)))
45
46 acc.addEventAlgo(CompFactory.Rec.MuSAVtxFitter(name, **kwargs))
47
48 return acc
49
50# config for J/Psi collection for tag and probe validation
51def MuSAVtxJPsiValidationAlgCfg(flags, name="MuSAVtxJPsiValidationAlg", **kwargs):
52 acc = ComponentAccumulator()
53
54 # Define J/Psi mass window
55 Jpsi_lo = 2000 # MeV
56 Jpsi_hi = 4000 # MeV
57
58 # Get required tools
59 from TrkConfig.TrkVKalVrtFitterConfig import TrkVKalVrtFitterCfg
60 vkalvrt = acc.popToolsAndMerge(TrkVKalVrtFitterCfg(flags))
61
62 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
63 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
64
65 from InDetConfig.InDetTrackSelectorToolConfig import InDetTrackSelectorToolCfg
66 trackselect = acc.popToolsAndMerge(InDetTrackSelectorToolCfg(flags, Extrapolator=extrapolator))
67 acc.addPublicTool(trackselect)
68
69 from InDetConfig.InDetConversionFinderToolsConfig import BPHY_VertexPointEstimatorCfg
70 vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags))
71 acc.addPublicTool(vpest)
72
73 # Configure the JpsiFinder tool
74 jpsiFinderTool = CompFactory.Analysis.JpsiFinder(
75 name = "JPsiFinderTool",
76 muAndMu = True, # Default: m_mumu = true
77 muAndTrack = False, # Default: m_mutrk = false
78 TrackAndTrack = False, # Default: m_trktrk = false
79 assumeDiMuons = True, # Default: m_diMuons = true
80 invMassLower = Jpsi_lo, # Default: m_invMassLower = 0.0
81 invMassUpper = Jpsi_hi, # Default: m_invMassUpper = 100000.0
82 Chi2Cut = 50., # Default: m_Chi2Cut = 50.
83 oppChargesOnly = True, # Default: m_oppChOnly = true
84 atLeastOneComb = True, # Default: m_atLeastOneComb = true
85 useCombinedMeasurement = False, # Default: m_useCombMeasurement = false
86 muonCollectionKey = "StdWithLRTMuons", # Default: not explicitly set
87 TrackParticleCollection = "InDetWithLRTTrackParticles", # Default: not explicitly set
88 useV0Fitter = False, # Default: m_useV0Fitter = false
89 TrkVertexFitterTool = vkalvrt, # Default: not explicitly set
90 TrackSelectorTool = trackselect, # Default: not explicitly set
91 VertexPointEstimator = vpest, # Default: not explicitly set
92 useMCPCuts = False # Default: m_mcpCuts = true
93 )
94
95 acc.addPublicTool(jpsiFinderTool)
96 kwargs.setdefault("JpsiFinderTool", jpsiFinderTool)
97
98 kwargs.setdefault("MuonContainer", "StdWithLRTMuons")
99 kwargs.setdefault("EventInfo", "EventInfo")
100 kwargs.setdefault("JPsiMuonContainer", "JPsiMuons")
101 kwargs.setdefault("JPsiVertexContainer", "JPsiVertices")
102
103 acc.addEventAlgo(CompFactory.Rec.MuSAVtxJPsiValidationAlg(name, **kwargs))
104
105 return acc
106
107#config for running MuSAFitter on all MSTPs
108def MuSAVtxFitterValidationConfig(flags, name="MuSAVtxFitterValidation", **kwargs):
109 acc = ComponentAccumulator()
110
111 kwargs.setdefault("MuSAVtxContainerName", "JPsiMuSAVertices")
112 kwargs.setdefault("MuSAExtrapolatedTracksName", "JPsiMuSAExtrapolatedTrackParticles")
113 kwargs.setdefault("MuonContainerName", "JPsiMuons")
114 kwargs.setdefault("MSTPContainerName", "MuonSpectrometerTrackParticles")
115
116 if "TrackToVertexTool" not in kwargs:
117 from TrackToVertex.TrackToVertexConfig import TrackToVertexCfg
118 kwargs.setdefault("TrackToVertexTool", acc.popToolsAndMerge(TrackToVertexCfg(flags)))
119
120 if "MuSAVtxToolName" not in kwargs:
121 from MuSAVtxFitter.MuSAVtxFitterConfig import MuSAVtxFitterToolConfig
122 kwargs.setdefault("MuSAVtxToolName", acc.popToolsAndMerge(MuSAVtxFitterToolConfig(flags, doValidation=True)))
123
124 acc.addEventAlgo(CompFactory.Rec.MuSAVtxFitter(name, **kwargs))
125
126 return acc
127
128# snippet for running standalone / unit test
129
130if __name__ == "__main__":
131 from AthenaConfiguration.AllConfigFlags import initConfigFlags
132 from AthenaConfiguration.TestDefaults import defaultTestFiles
133 from MuonConfig.MuonConfigUtils import executeTest, SetupMuonStandaloneCA, configureCondTag
134 flags = initConfigFlags()
135 flags.Concurrency.NumThreads = 1
136 flags.Concurrency.NumConcurrentEvents = 1
137 flags.Input.Files = defaultTestFiles.AOD_RUN2_MC
138 configureCondTag(flags)
139 flags.fillFromArgs()
140
141 flags.lock()
142
143 cfg = SetupMuonStandaloneCA(flags)
144 from DerivationFrameworkLLP.LLPToolsConfig import LRTMuonMergerAlg
145 from AthenaConfiguration.Enums import LHCPeriod
146 cfg.merge(LRTMuonMergerAlg(flags,
147 OutputMuonLocation = "StdWithLRTMuons",
148 CreateViewCollection = False,
149 overlapStrategy = 1,
150 UseRun3WP = flags.GeoModel.Run == LHCPeriod.Run3))
151 cfg.merge(MuSAVtxFitterConfig(flags, MuonContainerName="StdWithLRTMuons"))
152 flags.dump()
153
154 cfg.getService("MessageSvc").enableSuppression = True
155
156 executeTest(cfg)
157
MuSAVtxFitterValidationConfig(flags, name="MuSAVtxFitterValidation", **kwargs)
MuSAVtxJPsiValidationAlgCfg(flags, name="MuSAVtxJPsiValidationAlg", **kwargs)
MuSAVtxFitterToolConfig(flags, name="MuSAVtxFitterTool", **kwargs)