ATLAS Offline Software
Loading...
Searching...
No Matches
SensitiveDetectorsCfg.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5def 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
19def 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
33def 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
47def 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
61def 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
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
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
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
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
MmSensitiveDetectorToolCfg(flags, name="MmSensitiveDetector", **kwargs)
MdtSensitiveDetectorToolCfg(flags, name="MdtSensitiveDetector", **kwargs)
RpcSensitiveDetectorToolCfg(flags, name="RpcSensitiveDetector", **kwargs)
sTgcSensitiveDetectorToolCfg(flags, name="sTgcSensitiveDetector", **kwargs)
OutputSimContainersCfg(flags)
Returns the list of Container names written to the HITS file.
SimHitContainerListCfg(flags)
Name of the container names written by the R4 sensitive detectors.
TgcSensitiveDetectorToolCfg(flags, name="TgcSensitiveDetector", **kwargs)