ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonPhaseII
MuonPatternRecognition
MuonTruthAlgsR4
python
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
from
AthenaConfiguration.AccumulatorCache
import
AccumulatorCache
3
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
4
from
AthenaConfiguration.ComponentFactory
import
CompFactory
5
6
7
def
TruthSegmentMakerCfg
(flags, name = "MuonTruthSegmentMaker", useSDO = True, **kwargs):
8
result = ComponentAccumulator()
9
if
not
flags.Input.isMC:
10
return
result
11
12
from
ActsAlignmentAlgs.AlignmentAlgsConfig
import
ActsGeometryContextAlgCfg
13
result.merge(ActsGeometryContextAlgCfg(flags))
14
containerNames = []
15
16
if
flags.Detector.EnableMDT: containerNames+=[
"MDT_SDO"
if
useSDO
else
"xMdtSimHits"
]
17
if
flags.Detector.EnableRPC: containerNames+=[
"RPC_SDO"
if
useSDO
else
"xRpcSimHits"
]
18
if
flags.Detector.EnableTGC: containerNames+=[
"TGC_SDO"
if
useSDO
else
"xTgcSimHits"
]
19
if
flags.Detector.EnableMM: containerNames+=[
"MM_SDO"
if
useSDO
else
"xMmSimHits"
]
20
if
flags.Detector.EnablesTGC: containerNames+=[
"sTGC_SDO"
if
useSDO
else
"xStgcSimHits"
]
21
22
from
MuonConfig.MuonCalibrationConfig
import
MdtCalibDbAlgCfg, NswErrorCalibDbAlgCfg
23
if
flags.Detector.EnableMDT:
24
result.merge(MdtCalibDbAlgCfg(flags))
25
if
flags.Detector.EnableMM
or
flags.Detector.EnablesTGC:
26
result.merge(NswErrorCalibDbAlgCfg(flags))
27
kwargs.setdefault(
"SimHitKeys"
, containerNames)
28
kwargs.setdefault(
"includePileUpHits"
, flags.Muon.includePileUpTruth)
29
30
the_alg = CompFactory.MuonR4.TruthSegmentMaker(name, **kwargs)
31
result.addEventAlgo(the_alg, primary =
True
)
32
return
result
33
34
def
MeasToSimHitAssocAlgCfg
(flags, name="MeasToSimHitConvAlg", **kwargs):
35
result = ComponentAccumulator()
36
from
ActsAlignmentAlgs.AlignmentAlgsConfig
import
ActsGeometryContextAlgCfg
37
result.merge(ActsGeometryContextAlgCfg(flags))
38
the_alg = CompFactory.MuonR4.PrepDataToSimHitAssocAlg(name, **kwargs)
39
result.addEventAlgo(the_alg, primary =
True
)
40
return
result
41
42
def
TruthHitAssociationCfg
(flags, suffix = ""):
43
result = ComponentAccumulator()
44
if
not
flags.Input.isMC:
45
return
result
46
from
MuonConfig.MuonDataPrepConfig
import
PrimaryMeasContNamesCfg
47
for
cont_name
in
PrimaryMeasContNamesCfg(flags):
48
simHits =
""
49
if
"xMdt"
in
cont_name:
50
simHits =
"MDT_SDO"
51
elif
"xRpc"
in
cont_name:
52
simHits =
"RPC_SDO"
53
elif
"xTgc"
in
cont_name:
54
simHits =
"TGC_SDO"
55
elif
"MM"
in
cont_name:
56
simHits =
"MM_SDO"
57
else
:
58
simHits =
"sTGC_SDO"
59
result.merge(
MeasToSimHitAssocAlgCfg
(flags,
60
name=f
"Muon{cont_name}ToSimHitAssoc{suffix}"
,
61
SimHits = simHits,
62
Measurements=cont_name))
63
return
result
64
65
def
SimHitToTruthPartAlgCfg
(flags, useSDO = False):
66
result = ComponentAccumulator()
67
if
flags.Detector.GeometryMDT:
68
container =
"xMdtSimHits"
if
not
useSDO
else
"MDT_SDO"
69
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonMdtSimHitToTruthParticleAssoc"
,
70
SimHitContainer = container,
71
HitIdDecoration =
"truthMdtHits"
)
72
result.addEventAlgo(the_alg)
73
if
flags.Detector.GeometryRPC:
74
container =
"xRpcSimHits"
if
not
useSDO
else
"RPC_SDO"
75
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonRpcSimHitToTruthParticleAssoc"
,
76
SimHitContainer = container,
77
HitIdDecoration =
"truthRpcHits"
)
78
result.addEventAlgo(the_alg)
79
if
flags.Detector.GeometryTGC:
80
container =
"xTgcSimHits"
if
not
useSDO
else
"TGC_SDO"
81
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonTgcSimHitToTruthParticleAssoc"
,
82
SimHitContainer = container,
83
HitIdDecoration =
"truthTgcHits"
)
84
result.addEventAlgo(the_alg)
85
if
flags.Detector.GeometryMM:
86
container =
"xMmSimHits"
if
not
useSDO
else
"MM_SDO"
87
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonMmSimHitToTruthParticleAssoc"
,
88
SimHitContainer = container,
89
HitIdDecoration =
"truthMMHits"
)
90
result.addEventAlgo(the_alg)
91
if
flags.Detector.GeometrysTGC:
92
container =
"xStgcSimHits"
if
not
useSDO
else
"sTGC_SDO"
93
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonsTGCSimHitToTruthParticleAssoc"
,
94
SimHitContainer = container,
95
HitIdDecoration =
"truthStgcHits"
)
96
result.addEventAlgo(the_alg)
97
98
return
result
99
100
def
TruthHitSummaryAlgCfg
(flags, name="MuonTruthHitSummaryAlg", **kwargs):
101
result = ComponentAccumulator()
102
from
MuonTrackFindingAlgs.TrackFindingConfig
import
TrackSummaryToolCfg, TrackSummaryLockCfg
103
kwargs.setdefault(
"SummaryTool"
, result.popToolsAndMerge(TrackSummaryToolCfg(flags,
104
fillHoles=
False
, fillOutliers=
False
,
105
recomputeSegment =
False
)))
106
107
kwargs.setdefault(
"ExtraOutputs"
, [(
'xAOD::TruthParticleContainer'
,
'MuonTruthParticles.truthHitSummary'
)])
108
result.merge(TrackSummaryLockCfg(flags, inContainer=
"MuonTruthParticles"
, fillHoles =
False
,
109
fillOutliers =
False
, ExtraInputs = kwargs[
"ExtraOutputs"
]))
110
the_alg = CompFactory.MuonR4.TruthHitSummaryAlg(name, **kwargs)
111
result.addEventAlgo(the_alg, primary =
True
)
112
return
result
113
114
def
RecoSegmentTruthAssocCfg
(flags, **kwargs):
115
result = ComponentAccumulator()
116
117
kwargs.setdefault(
"SegmentKey"
,
""
)
118
from
MuonConfig.MuonDataPrepConfig
import
PrimaryMeasContNamesCfg
119
kwargs.setdefault(
"PrdContainer"
, PrimaryMeasContNamesCfg(flags))
120
the_alg = CompFactory.MuonR4.RecoSegToTruthAssocAlg(**kwargs)
121
result.addEventAlgo(the_alg, primary =
True
)
122
return
result
123
124
def
TruthSegmentToTruthPartAssocCfg
(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs):
125
result = ComponentAccumulator()
126
hitDecors = []
127
if
flags.Detector.GeometryMDT: hitDecors+=[
"truthMdtHits"
]
128
if
flags.Detector.GeometryRPC: hitDecors+=[
"truthRpcHits"
]
129
if
flags.Detector.GeometryTGC: hitDecors+=[
"truthTgcHits"
]
130
if
flags.Detector.GeometryMM: hitDecors+=[
"truthMMHits"
]
131
if
flags.Detector.GeometrysTGC: hitDecors+=[
"truthStgcHits"
]
132
kwargs.setdefault(
"SimHitIds"
, hitDecors)
133
from
ActsConfig.ActsGeometryConfig
import
ActsExtrapolationToolCfg
134
kwargs.setdefault(
"ExtrapolationTool"
, result.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=100000)))
135
kwargs.setdefault(
"includePileUpObjs"
, flags.Muon.includePileUpTruth)
136
the_alg = CompFactory.MuonR4.TruthSegToTruthPartAssocAlg(name, **kwargs)
137
result.addEventAlgo(the_alg, primary =
True
)
138
return
result
139
140
def
TrackToTruthPartAssocCfg
(flags, **kwargs):
141
result = ComponentAccumulator()
142
hitDecors = []
143
if
flags.Detector.GeometryMDT: hitDecors+=[
"truthMdtHits"
]
144
if
flags.Detector.GeometryRPC: hitDecors+=[
"truthRpcHits"
]
145
if
flags.Detector.GeometryTGC: hitDecors+=[
"truthTgcHits"
]
146
if
flags.Detector.GeometryMM: hitDecors+=[
"truthMMHits"
]
147
if
flags.Detector.GeometrysTGC: hitDecors+=[
"truthStgcHits"
]
148
kwargs.setdefault(
"SimHitIds"
, hitDecors)
149
the_alg = CompFactory.MuonR4.TrackToTruthPartAssocAlg(**kwargs)
150
result.addEventAlgo(the_alg, primary =
True
)
151
return
result
152
153
154
def
MuonTruthSegConnectorAlgCfg
(flags, name="MuonTruthSegConnector",**kwargs):
155
result = ComponentAccumulator()
156
the_alg = CompFactory.MuonR4.TruthSegConnectionAlg(name=name, **kwargs)
157
result.addEventAlgo(the_alg, primary =
True
)
158
return
result
159
160
161
def
MuonToTruthAssocAlgCfg
(flags, name="MuonToTruthMatchingAlg", **kwargs):
162
result = ComponentAccumulator()
163
if
not
flags.Muon.setupTruthAlgorithms:
164
return
result
165
tracks = []
166
if
flags.Reco.EnableTracking: tracks +=[
"InDetTrackParticles"
]
167
kwargs.setdefault(
"TrackKeys"
, tracks)
168
the_alg = CompFactory.MuonR4.MuonToTruthAssocAlg(name, **kwargs)
169
result.addEventAlgo(the_alg, primary =
True
)
170
return
result
171
172
# Fragment for algs producing (and decorating) truth objects
173
def
MuonTruthObjCreatorsCfg
(flags, useSDO=True):
174
result = ComponentAccumulator()
175
if
not
flags.Muon.setupTruthAlgorithms:
176
return
result
177
178
from
MuonConfig.MuonTruthAlgsConfig
import
TruthMuonMakerAlgCfg
179
result.merge(
TruthMuonMakerAlgCfg
(flags))
180
result.merge(
SimHitToTruthPartAlgCfg
(flags, useSDO = useSDO))
181
result.merge(
TruthSegmentMakerCfg
(flags, useSDO = useSDO))
182
result.merge(
TruthSegmentToTruthPartAssocCfg
(flags))
183
result.merge(
TruthHitSummaryAlgCfg
(flags))
184
185
if
flags.Muon.includePileUpTruth:
186
result.merge(
MuonTruthSegConnectorAlgCfg
(flags))
187
188
return
result
189
190
@AccumulatorCache
191
def
MuonTruthAlgsCfg
(flags, useSDO=True, recoAssoc = True):
192
result = ComponentAccumulator()
193
if
not
flags.Muon.setupTruthAlgorithms:
194
return
result
195
196
result.merge(
MuonTruthObjCreatorsCfg
(flags, useSDO=useSDO))
197
198
if
useSDO
and
recoAssoc:
199
result.merge(
TruthHitAssociationCfg
(flags))
200
201
# result.merge(MuonTruthHitCountsAlgCfg(flags))
202
205
return
result
MuonTruthAlgsConfig.MeasToSimHitAssocAlgCfg
MeasToSimHitAssocAlgCfg(flags, name="MeasToSimHitConvAlg", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:34
MuonTruthAlgsConfig.MuonToTruthAssocAlgCfg
MuonToTruthAssocAlgCfg(flags, name="MuonToTruthMatchingAlg", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:161
MuonTruthAlgsConfig.TruthSegmentMakerCfg
TruthSegmentMakerCfg(flags, name="MuonTruthSegmentMaker", useSDO=True, **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:7
MuonTruthAlgsConfig.MuonTruthSegConnectorAlgCfg
MuonTruthSegConnectorAlgCfg(flags, name="MuonTruthSegConnector", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:154
MuonTruthAlgsConfig.MuonTruthAlgsCfg
MuonTruthAlgsCfg(flags)
Definition
MuonConfig/python/MuonTruthAlgsConfig.py:103
MuonTruthAlgsConfig.TruthSegmentToTruthPartAssocCfg
TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:124
MuonTruthAlgsConfig.RecoSegmentTruthAssocCfg
RecoSegmentTruthAssocCfg(flags, **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:114
MuonTruthAlgsConfig.TruthHitAssociationCfg
TruthHitAssociationCfg(flags, suffix="")
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:42
MuonTruthAlgsConfig.TrackToTruthPartAssocCfg
TrackToTruthPartAssocCfg(flags, **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:140
MuonTruthAlgsConfig.SimHitToTruthPartAlgCfg
SimHitToTruthPartAlgCfg(flags, useSDO=False)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:65
MuonTruthAlgsConfig.TruthMuonMakerAlgCfg
TruthMuonMakerAlgCfg(flags, name="TruthMuonMakerAlg", **kwargs)
Definition
MuonConfig/python/MuonTruthAlgsConfig.py:29
MuonTruthAlgsConfig.MuonTruthObjCreatorsCfg
MuonTruthObjCreatorsCfg(flags, useSDO=True)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:173
MuonTruthAlgsConfig.TruthHitSummaryAlgCfg
TruthHitSummaryAlgCfg(flags, name="MuonTruthHitSummaryAlg", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:100
Generated on
for ATLAS Offline Software by
1.17.0