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