ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonPhaseII
MuonG4
MuonSensitiveDetectorsR4
python
SensitiveDetectorsCfg.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
3
from
AthenaConfiguration.ComponentFactory
import
CompFactory
4
5
def
MdtSensitiveDetectorToolCfg
(flags, name = "MdtSensitiveDetector", **kwargs):
6
result = ComponentAccumulator()
7
kwargs.setdefault(
"OutputCollectionNames"
, [
"xRawMdtSimHits"
])
8
kwargs.setdefault(
"LogicalVolumeNames"
, [
"MuonR4::MDTDriftGas"
])
9
kwargs.setdefault(
"AlignStoreKey"
,
"MdtActsAlignContainer"
)
10
the_tool = CompFactory.MuonG4R4.MdtSensitiveDetectorTool(name, **kwargs)
11
from
MuonSimHitSorting.MuonSimHitSortingCfg
import
MuonSimHitSortingAlgCfg
12
result.merge(MuonSimHitSortingAlgCfg(flags,name=
"MdtSimHitSorterAlg"
,
13
InContainers=[
"xRawMdtSimHits"
],
14
OutContainer =
"xMdtSimHits"
,
15
deepCopy =
True
))
16
result.setPrivateTools(the_tool)
17
return
result
18
19
def
MmSensitiveDetectorToolCfg
(flags, name = "MmSensitiveDetector", **kwargs):
20
result = ComponentAccumulator()
21
kwargs.setdefault(
"OutputCollectionNames"
, [
"xRawMmSimHits"
])
22
kwargs.setdefault(
"LogicalVolumeNames"
, [
"MuonR4::actMicroMegaGas"
])
23
kwargs.setdefault(
"AlignStoreKey"
,
"MmActsAlignContainer"
)
24
the_tool = CompFactory.MuonG4R4.MmSensitiveDetectorTool(name, **kwargs)
25
from
MuonSimHitSorting.MuonSimHitSortingCfg
import
MuonSimHitSortingAlgCfg
26
result.merge(MuonSimHitSortingAlgCfg(flags,name=
"MmSimHitSorterAlg"
,
27
InContainers=[
"xRawMmSimHits"
],
28
OutContainer =
"xMmSimHits"
,
29
deepCopy =
True
))
30
result.setPrivateTools(the_tool)
31
return
result
32
33
def
RpcSensitiveDetectorToolCfg
(flags, name = "RpcSensitiveDetector", **kwargs):
34
result = ComponentAccumulator()
35
kwargs.setdefault(
"OutputCollectionNames"
, [
"xRawRpcSimHits"
])
36
kwargs.setdefault(
"LogicalVolumeNames"
, [
"MuonR4::RpcGasGap"
])
37
kwargs.setdefault(
"AlignStoreKey"
,
"RpcActsAlignContainer"
)
38
from
MuonSimHitSorting.MuonSimHitSortingCfg
import
MuonSimHitSortingAlgCfg
39
result.merge(MuonSimHitSortingAlgCfg(flags,name=
"RpcSimHitSorterAlg"
,
40
InContainers=[
"xRawRpcSimHits"
],
41
OutContainer =
"xRpcSimHits"
,
42
deepCopy =
True
))
43
the_tool = CompFactory.MuonG4R4.RpcSensitiveDetectorTool(name, **kwargs)
44
result.setPrivateTools(the_tool)
45
return
result
46
47
def
TgcSensitiveDetectorToolCfg
(flags, name = "TgcSensitiveDetector", **kwargs):
48
result = ComponentAccumulator()
49
kwargs.setdefault(
"OutputCollectionNames"
, [
"xRawTgcSimHits"
])
50
kwargs.setdefault(
"LogicalVolumeNames"
, [
"MuonR4::TgcGas"
])
51
kwargs.setdefault(
"AlignStoreKey"
,
"TgcActsAlignContainer"
)
52
from
MuonSimHitSorting.MuonSimHitSortingCfg
import
MuonSimHitSortingAlgCfg
53
result.merge(MuonSimHitSortingAlgCfg(flags,name=
"TgcSimHitSorterAlg"
,
54
InContainers=[
"xRawTgcSimHits"
],
55
OutContainer =
"xTgcSimHits"
,
56
deepCopy =
True
))
57
the_tool = CompFactory.MuonG4R4.TgcSensitiveDetectorTool(name, **kwargs)
58
result.setPrivateTools(the_tool)
59
return
result
60
61
def
sTgcSensitiveDetectorToolCfg
(flags, name = "sTgcSensitiveDetector", **kwargs):
62
result = ComponentAccumulator()
63
kwargs.setdefault(
"OutputCollectionNames"
, [
"xRawStgcSimHits"
])
64
kwargs.setdefault(
"LogicalVolumeNames"
, [
"MuonR4::sTgcGas"
])
65
kwargs.setdefault(
"AlignStoreKey"
,
"sTgcActsAlignContainer"
)
66
from
MuonSimHitSorting.MuonSimHitSortingCfg
import
MuonSimHitSortingAlgCfg
67
result.merge(MuonSimHitSortingAlgCfg(flags,name=
"sTgcSimHitSorterAlg"
,
68
InContainers=[
"xRawStgcSimHits"
],
69
OutContainer =
"xStgcSimHits"
,
70
deepCopy =
True
))
71
the_tool = CompFactory.MuonG4R4.sTgcSensitiveDetectorTool(name, **kwargs)
72
result.setPrivateTools(the_tool)
73
return
result
74
75
76
def
SetupSensitiveDetectorsCfg
(flags):
77
result = ComponentAccumulator()
78
from
MuonConfig.MuonGeometryConfig
import
MuonGeoModelCfg
79
result.merge(MuonGeoModelCfg(flags))
80
tools = []
81
82
if
flags.Detector.EnableMDT:
83
tools += [result.popToolsAndMerge(
MdtSensitiveDetectorToolCfg
(flags))]
84
85
if
flags.Detector.EnableRPC:
86
tools += [result.popToolsAndMerge(
RpcSensitiveDetectorToolCfg
(flags))]
87
88
if
flags.Detector.EnableMM:
89
tools += [result.popToolsAndMerge(
MmSensitiveDetectorToolCfg
(flags))]
90
91
if
flags.Detector.EnableTGC:
92
tools += [result.popToolsAndMerge(
TgcSensitiveDetectorToolCfg
(flags))]
93
if
flags.Detector.EnablesTGC:
94
tools += [result.popToolsAndMerge(
sTgcSensitiveDetectorToolCfg
(flags))]
95
result.setPrivateTools(tools)
96
return
result
97
98
99
def
SimHitContainerListCfg
(flags):
100
simHitContainers = []
101
if
flags.Detector.EnableMDT:
102
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMdtSimHits"
)]
103
if
(flags.Sim.ISFRun
and
flags.Sim.ISF.HITSMergingRequired.get(
'MUON'
,
True
)):
104
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMdtSimHits_G4"
)]
105
if
(
not
(
'G4MS'
in
flags.Sim.ISF.Simulator.value
and
'ACTS'
in
flags.Sim.ISF.Simulator.value)):
106
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMdtSimHits_Fatras"
)]
107
if
flags.Detector.EnableMM:
108
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMmSimHits"
)]
109
if
(flags.Sim.ISFRun
and
flags.Sim.ISF.HITSMergingRequired.get(
'MUON'
,
True
)):
110
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMmSimHits_G4"
)]
111
if
(
not
(
'G4MS'
in
flags.Sim.ISF.Simulator.value
and
'ACTS'
in
flags.Sim.ISF.Simulator.value)):
112
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawMmSimHits_Fatras"
)]
113
if
flags.Detector.EnableRPC:
114
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawRpcSimHits"
)]
115
if
(flags.Sim.ISFRun
and
flags.Sim.ISF.HITSMergingRequired.get(
'MUON'
,
True
)):
116
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawRpcSimHits_G4"
)]
117
if
(
not
(
'G4MS'
in
flags.Sim.ISF.Simulator.value
and
'ACTS'
in
flags.Sim.ISF.Simulator.value)):
118
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawRpcSimHits_Fatras"
)]
119
if
flags.Detector.EnableTGC:
120
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawTgcSimHits"
)]
121
if
(flags.Sim.ISFRun
and
flags.Sim.ISF.HITSMergingRequired.get(
'MUON'
,
True
)):
122
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawTgcSimHits_G4"
)]
123
if
(
not
(
'G4MS'
in
flags.Sim.ISF.Simulator.value
and
'ACTS'
in
flags.Sim.ISF.Simulator.value)):
124
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawTgcSimHits_Fatras"
)]
125
if
flags.Detector.EnablesTGC:
126
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawStgcSimHits"
)]
127
if
(flags.Sim.ISFRun
and
flags.Sim.ISF.HITSMergingRequired.get(
'MUON'
,
True
)):
128
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawStgcSimHits_G4"
)]
129
if
(
not
(
'G4MS'
in
flags.Sim.ISF.Simulator.value
and
'ACTS'
in
flags.Sim.ISF.Simulator.value)):
130
simHitContainers+=[(
"xAOD::MuonSimHitContainer"
,
"xRawStgcSimHits_Fatras"
)]
131
132
return
simHitContainers
133
134
def
MuonDependenciesCfg
(flags):
135
dependcies = []
136
if
not
flags.Muon.usePhaseIIGeoSetup:
return
dependcies
137
if
flags.Detector.EnableMDT:
138
dependcies+=[(
"ActsTrk::DetectorAlignStore"
,
"MdtActsAlignContainer"
)]
139
if
flags.Detector.EnableMM:
140
dependcies+=[(
"ActsTrk::DetectorAlignStore"
,
"MmActsAlignContainer"
)]
141
if
flags.Detector.EnableRPC:
142
dependcies+=[(
"ActsTrk::DetectorAlignStore"
,
"RpcActsAlignContainer"
)]
143
if
flags.Detector.EnableTGC:
144
dependcies+=[(
"ActsTrk::DetectorAlignStore"
,
"TgcActsAlignContainer"
)]
145
if
flags.Detector.EnablesTGC:
146
dependcies+=[(
"ActsTrk::DetectorAlignStore"
,
"sTgcActsAlignContainer"
)]
147
return
dependcies
148
149
def
OutputSimContainersCfg
(flags):
150
outContainers = []
151
containerNames = []
152
if
flags.Detector.EnableMDT:
153
containerNames+=[
"xMdtSimHits"
]
154
if
flags.Detector.EnableMM:
155
containerNames+=[
"xMmSimHits"
]
156
if
flags.Detector.EnableRPC:
157
containerNames+=[
"xRpcSimHits"
]
158
if
flags.Detector.EnableTGC:
159
containerNames+=[
"xTgcSimHits"
]
160
if
flags.Detector.EnablesTGC:
161
containerNames+=[
"xStgcSimHits"
]
162
163
outContainers +=[ f
"xAOD::MuonSimHitContainer#{cont}"
for
cont
in
containerNames]
164
outContainers +=[ f
"xAOD::MuonSimHitAuxContainer#{cont}Aux.-MuonSim_G4TrkId"
for
cont
in
containerNames]
165
166
return
outContainers
SensitiveDetectorsCfg.OutputSimContainersCfg
OutputSimContainersCfg(flags)
Returns the list of Container names written to the HITS file.
Definition
SensitiveDetectorsCfg.py:149
SensitiveDetectorsCfg.MuonDependenciesCfg
MuonDependenciesCfg(flags)
Definition
SensitiveDetectorsCfg.py:134
SensitiveDetectorsCfg.SimHitContainerListCfg
SimHitContainerListCfg(flags)
Name of the container names written by the R4 sensitive detectors.
Definition
SensitiveDetectorsCfg.py:99
SensitiveDetectorsCfg.MdtSensitiveDetectorToolCfg
MdtSensitiveDetectorToolCfg(flags, name="MdtSensitiveDetector", **kwargs)
Definition
SensitiveDetectorsCfg.py:5
SensitiveDetectorsCfg.RpcSensitiveDetectorToolCfg
RpcSensitiveDetectorToolCfg(flags, name="RpcSensitiveDetector", **kwargs)
Definition
SensitiveDetectorsCfg.py:33
SensitiveDetectorsCfg.TgcSensitiveDetectorToolCfg
TgcSensitiveDetectorToolCfg(flags, name="TgcSensitiveDetector", **kwargs)
Definition
SensitiveDetectorsCfg.py:47
SensitiveDetectorsCfg.sTgcSensitiveDetectorToolCfg
sTgcSensitiveDetectorToolCfg(flags, name="sTgcSensitiveDetector", **kwargs)
Definition
SensitiveDetectorsCfg.py:61
SensitiveDetectorsCfg.MmSensitiveDetectorToolCfg
MmSensitiveDetectorToolCfg(flags, name="MmSensitiveDetector", **kwargs)
Definition
SensitiveDetectorsCfg.py:19
SensitiveDetectorsCfg.SetupSensitiveDetectorsCfg
SetupSensitiveDetectorsCfg(flags)
Definition
SensitiveDetectorsCfg.py:76
Generated on
for ATLAS Offline Software by
1.17.0