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