Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
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  if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)):
103  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMdtSimHits_G4")]
104  else:
105  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMdtSimHits")]
106  if flags.Detector.EnableMM:
107  if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)):
108  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMmSimHits_G4")]
109  else:
110  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawMmSimHits")]
111  if flags.Detector.EnableRPC:
112  if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)):
113  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawRpcSimHits_G4")]
114  else:
115  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawRpcSimHits")]
116  if flags.Detector.EnableTGC:
117  if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)):
118  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawTgcSimHits_G4")]
119  else:
120  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawTgcSimHits")]
121  if flags.Detector.EnablesTGC:
122  if (flags.Sim.ISFRun and flags.Sim.ISF.HITSMergingRequired.get('MUON', True)):
123  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawStgcSimHits_G4")]
124  else:
125  simHitContainers+=[("xAOD::MuonSimHitContainer", "xRawStgcSimHits")]
126 
127  return simHitContainers
128 
130  dependcies = []
131  if not flags.Muon.usePhaseIIGeoSetup: return dependcies
132  if flags.Detector.EnableMDT:
133  dependcies+=[("ActsTrk::DetectorAlignStore", "MdtActsAlignContainer")]
134  if flags.Detector.EnableMM:
135  dependcies+=[("ActsTrk::DetectorAlignStore", "MmActsAlignContainer")]
136  if flags.Detector.EnableRPC:
137  dependcies+=[("ActsTrk::DetectorAlignStore", "RpcActsAlignContainer")]
138  if flags.Detector.EnableTGC:
139  dependcies+=[("ActsTrk::DetectorAlignStore", "TgcActsAlignContainer")]
140  if flags.Detector.EnablesTGC:
141  dependcies+=[("ActsTrk::DetectorAlignStore", "sTgcActsAlignContainer")]
142  return dependcies
143 
145  outContainers = []
146  containerNames = []
147  if flags.Detector.EnableMDT:
148  containerNames+=["xMdtSimHits"]
149  if flags.Detector.EnableMM:
150  containerNames+=["xMmSimHits"]
151  if flags.Detector.EnableRPC:
152  containerNames+=["xRpcSimHits"]
153  if flags.Detector.EnableTGC:
154  containerNames+=["xTgcSimHits"]
155  if flags.Detector.EnablesTGC:
156  containerNames+=["xStgcSimHits"]
157 
158  outContainers +=[ f"xAOD::MuonSimHitContainer#{cont}" for cont in containerNames]
159  outContainers +=[ f"xAOD::MuonSimHitAuxContainer#{cont}Aux.-MuonSim_G4TrkId" for cont in containerNames]
160 
161  return outContainers
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
SensitiveDetectorsCfg.RpcSensitiveDetectorToolCfg
def RpcSensitiveDetectorToolCfg(flags, name="RpcSensitiveDetector", **kwargs)
Definition: SensitiveDetectorsCfg.py:33
SensitiveDetectorsCfg.TgcSensitiveDetectorToolCfg
def TgcSensitiveDetectorToolCfg(flags, name="TgcSensitiveDetector", **kwargs)
Definition: SensitiveDetectorsCfg.py:47
MuonSimHitSortingCfg.MuonSimHitSortingAlgCfg
def MuonSimHitSortingAlgCfg(flags, name="MuonSimHitSortingAlg", **kwargs)
Definition: MuonSimHitSortingCfg.py:5
SensitiveDetectorsCfg.MuonDependenciesCfg
def MuonDependenciesCfg(flags)
Definition: SensitiveDetectorsCfg.py:129
SensitiveDetectorsCfg.OutputSimContainersCfg
def OutputSimContainersCfg(flags)
Returns the list of Container names written to the HITS file.
Definition: SensitiveDetectorsCfg.py:144
SensitiveDetectorsCfg.sTgcSensitiveDetectorToolCfg
def sTgcSensitiveDetectorToolCfg(flags, name="sTgcSensitiveDetector", **kwargs)
Definition: SensitiveDetectorsCfg.py:61
SensitiveDetectorsCfg.SimHitContainerListCfg
def SimHitContainerListCfg(flags)
Name of the container names written by the R4 sensitive detectors.
Definition: SensitiveDetectorsCfg.py:99
SensitiveDetectorsCfg.MdtSensitiveDetectorToolCfg
def MdtSensitiveDetectorToolCfg(flags, name="MdtSensitiveDetector", **kwargs)
Definition: SensitiveDetectorsCfg.py:5
SensitiveDetectorsCfg.SetupSensitiveDetectorsCfg
def SetupSensitiveDetectorsCfg(flags)
Definition: SensitiveDetectorsCfg.py:76
SensitiveDetectorsCfg.MmSensitiveDetectorToolCfg
def MmSensitiveDetectorToolCfg(flags, name="MmSensitiveDetector", **kwargs)
Definition: SensitiveDetectorsCfg.py:19
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28