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
result.addEventAlgo(CompFactory.MuonR4.MeasTruthAssocMapProvider(name=f
"Muon{cont_name}TruthAssocMap{suffix}"
,
64
PrdContainer=cont_name,
65
AssociationMap=f
"{cont_name}_TruthAssocMap"
))
66
return
result
67
68
def
SimHitToTruthPartAlgCfg
(flags, useSDO = False):
69
result = ComponentAccumulator()
70
if
flags.Detector.GeometryMDT:
71
container =
"xMdtSimHits"
if
not
useSDO
else
"MDT_SDO"
72
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonMdtSimHitToTruthParticleAssoc"
,
73
SimHitContainer = container,
74
HitIdDecoration =
"truthMdtHits"
)
75
result.addEventAlgo(the_alg)
76
if
flags.Detector.GeometryRPC:
77
container =
"xRpcSimHits"
if
not
useSDO
else
"RPC_SDO"
78
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonRpcSimHitToTruthParticleAssoc"
,
79
SimHitContainer = container,
80
HitIdDecoration =
"truthRpcHits"
)
81
result.addEventAlgo(the_alg)
82
if
flags.Detector.GeometryTGC:
83
container =
"xTgcSimHits"
if
not
useSDO
else
"TGC_SDO"
84
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonTgcSimHitToTruthParticleAssoc"
,
85
SimHitContainer = container,
86
HitIdDecoration =
"truthTgcHits"
)
87
result.addEventAlgo(the_alg)
88
if
flags.Detector.GeometryMM:
89
container =
"xMmSimHits"
if
not
useSDO
else
"MM_SDO"
90
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonMmSimHitToTruthParticleAssoc"
,
91
SimHitContainer = container,
92
HitIdDecoration =
"truthMMHits"
)
93
result.addEventAlgo(the_alg)
94
if
flags.Detector.GeometrysTGC:
95
container =
"xStgcSimHits"
if
not
useSDO
else
"sTGC_SDO"
96
the_alg = CompFactory.MuonR4.SimHitToTruthPartAssocAlg(
"MuonsTGCSimHitToTruthParticleAssoc"
,
97
SimHitContainer = container,
98
HitIdDecoration =
"truthStgcHits"
)
99
result.addEventAlgo(the_alg)
100
101
return
result
102
103
def
TruthHitSummaryAlgCfg
(flags, name="MuonTruthHitSummaryAlg", **kwargs):
104
result = ComponentAccumulator()
105
from
MuonTrackFindingAlgs.TrackFindingConfig
import
TrackSummaryToolCfg, TrackSummaryLockCfg
106
kwargs.setdefault(
"SummaryTool"
, result.popToolsAndMerge(TrackSummaryToolCfg(flags,
107
fillHoles=
False
, fillOutliers=
False
,
108
recomputeSegment =
False
)))
109
110
kwargs.setdefault(
"ExtraOutputs"
, [(
'xAOD::TruthParticleContainer'
,
'MuonTruthParticles.truthHitSummary'
)])
111
result.merge(TrackSummaryLockCfg(flags, inContainer=
"MuonTruthParticles"
, fillHoles =
False
,
112
fillOutliers =
False
, ExtraInputs = kwargs[
"ExtraOutputs"
]))
113
the_alg = CompFactory.MuonR4.TruthHitSummaryAlg(name, **kwargs)
114
result.addEventAlgo(the_alg, primary =
True
)
115
return
result
116
117
def
RecoSegmentTruthAssocCfg
(flags, **kwargs):
118
result = ComponentAccumulator()
119
120
kwargs.setdefault(
"SegmentKey"
,
""
)
121
from
MuonConfig.MuonDataPrepConfig
import
PrimaryMeasContNamesCfg
122
kwargs.setdefault(
"PrdContainer"
, PrimaryMeasContNamesCfg(flags))
123
the_alg = CompFactory.MuonR4.RecoSegToTruthAssocAlg(**kwargs)
124
result.addEventAlgo(the_alg, primary =
True
)
125
return
result
126
127
def
TruthSegmentToTruthPartAssocCfg
(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs):
128
result = ComponentAccumulator()
129
hitDecors = []
130
if
flags.Detector.GeometryMDT: hitDecors+=[
"truthMdtHits"
]
131
if
flags.Detector.GeometryRPC: hitDecors+=[
"truthRpcHits"
]
132
if
flags.Detector.GeometryTGC: hitDecors+=[
"truthTgcHits"
]
133
if
flags.Detector.GeometryMM: hitDecors+=[
"truthMMHits"
]
134
if
flags.Detector.GeometrysTGC: hitDecors+=[
"truthStgcHits"
]
135
kwargs.setdefault(
"SimHitIds"
, hitDecors)
136
from
ActsConfig.ActsGeometryConfig
import
ActsExtrapolationToolCfg
137
kwargs.setdefault(
"ExtrapolationTool"
, result.popToolsAndMerge(ActsExtrapolationToolCfg(flags, MaxSteps=100000)))
138
kwargs.setdefault(
"includePileUpObjs"
, flags.Muon.includePileUpTruth)
139
the_alg = CompFactory.MuonR4.TruthSegToTruthPartAssocAlg(name, **kwargs)
140
result.addEventAlgo(the_alg, primary =
True
)
141
return
result
142
143
def
TrackToTruthPartAssocCfg
(flags, **kwargs):
144
result = ComponentAccumulator()
145
hitDecors = []
146
if
flags.Detector.GeometryMDT: hitDecors+=[
"truthMdtHits"
]
147
if
flags.Detector.GeometryRPC: hitDecors+=[
"truthRpcHits"
]
148
if
flags.Detector.GeometryTGC: hitDecors+=[
"truthTgcHits"
]
149
if
flags.Detector.GeometryMM: hitDecors+=[
"truthMMHits"
]
150
if
flags.Detector.GeometrysTGC: hitDecors+=[
"truthStgcHits"
]
151
kwargs.setdefault(
"SimHitIds"
, hitDecors)
152
the_alg = CompFactory.MuonR4.TrackToTruthPartAssocAlg(**kwargs)
153
result.addEventAlgo(the_alg, primary =
True
)
154
return
result
155
156
157
def
MuonTruthSegConnectorAlgCfg
(flags, name="MuonTruthSegConnector",**kwargs):
158
result = ComponentAccumulator()
159
the_alg = CompFactory.MuonR4.TruthSegConnectionAlg(name=name, **kwargs)
160
result.addEventAlgo(the_alg, primary =
True
)
161
return
result
162
163
164
def
MuonToTruthAssocAlgCfg
(flags, name="MuonToTruthMatchingAlg", **kwargs):
165
result = ComponentAccumulator()
166
if
not
flags.Muon.setupTruthAlgorithms:
167
return
result
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
return
result
202
203
def
MuonActsTruthMatchingCfg
(flags,
204
TrackContainer:str,
205
ParticleContainer:str,
206
isCombined: bool =
False
):
207
result = ComponentAccumulator()
208
from
ActsConfig.ActsTruthConfig
import
ActsTrackParticleTruthDecorationAlgCfg, \
209
ActsTrackToTruthAssociationAlgCfg, \
210
ActsTruthParticleHitCountAlgCfg
211
MapSuffix=
"MS"
if
not
isCombined
else
"CB"
212
TruthHitCountMap = f
"ActsHitCountMap_{MapSuffix}"
213
214
result.merge(ActsTruthParticleHitCountAlgCfg(flags, name=f
"MuonActsTruthHitsCounts_{MapSuffix}"
,
215
TruthParticleHitCountsOut= TruthHitCountMap,
216
doInner = isCombined, doMuon=
True
))
217
218
result.merge(ActsTrackToTruthAssociationAlgCfg(flags, name =f
"MuonTrackTruthMatching_{TrackContainer}"
,
219
ACTSTracksLocation=TrackContainer,
220
AssociationMapOut=f
"{TrackContainer}ToTruthParticles"
,
221
doInner = isCombined, doMuon =
True
))
222
223
result.merge(ActsTrackParticleTruthDecorationAlgCfg(flags, name=f
"MuonTrackParticleToTruth_{ParticleContainer}"
,
224
TrackParticleContainerName=ParticleContainer,
225
TrackToTruthAssociationMaps =[f
"{TrackContainer}ToTruthParticles"
],
226
DerivateTruthKey=
"MuonTruthParticles"
,
227
TruthParticleHitCounts=TruthHitCountMap))
228
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:164
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:157
MuonTruthAlgsConfig.MuonTruthAlgsCfg
MuonTruthAlgsCfg(flags)
Definition
MuonConfig/python/MuonTruthAlgsConfig.py:103
MuonTruthAlgsConfig.TruthSegmentToTruthPartAssocCfg
TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:127
MuonTruthAlgsConfig.MuonActsTruthMatchingCfg
MuonActsTruthMatchingCfg(flags, str TrackContainer, str ParticleContainer, bool isCombined=False)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:206
MuonTruthAlgsConfig.RecoSegmentTruthAssocCfg
RecoSegmentTruthAssocCfg(flags, **kwargs)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:117
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:143
MuonTruthAlgsConfig.SimHitToTruthPartAlgCfg
SimHitToTruthPartAlgCfg(flags, useSDO=False)
Definition
MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:68
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:103
Generated on
for ATLAS Offline Software by
1.17.0