ATLAS Offline Software
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 = "TruthSegmentMakerAlg", **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"]
17  if flags.Detector.EnableRPC: containerNames+=["RPC_SDO"]
18  if flags.Detector.EnableTGC: containerNames+=["TGC_SDO"]
19  if flags.Detector.EnableMM: containerNames+=["MM_SDO"]
20  if flags.Detector.EnablesTGC: containerNames+=["sTGC_SDO"]
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 
29  the_alg = CompFactory.MuonR4.TruthSegmentMaker(name, **kwargs)
30  result.addEventAlgo(the_alg, primary = True)
31  return result
32 
33 def MeasToSimHitAssocAlgCfg(flags, name="MeasToSimHitConvAlg", **kwargs):
34  result = ComponentAccumulator()
35  from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
36  result.merge(ActsGeometryContextAlgCfg(flags))
37  the_alg = CompFactory.MuonR4.PrepDataToSimHitAssocAlg(name, **kwargs)
38  result.addEventAlgo(the_alg, primary = True)
39  return result
40 
42  result = ComponentAccumulator()
43  if not flags.Input.isMC:
44  return result
45  from MuonConfig.MuonDataPrepConfig import PrimaryMeasContNamesCfg
46  for cont_name in PrimaryMeasContNamesCfg(flags):
47  simHits = ""
48  if "xMdt" in cont_name:
49  simHits = "MDT_SDO"
50  elif "xRpc" in cont_name:
51  simHits = "RPC_SDO"
52  elif "xTgc" in cont_name:
53  simHits = "TGC_SDO"
54  elif "MM" in cont_name:
55  simHits = "MM_SDO"
56  else:
57  simHits = "sTGC_SDO"
58  result.merge(MeasToSimHitAssocAlgCfg(flags,
59  name=f"{cont_name}PrepDataToSimHitAssoc",
60  SimHits = simHits,
61  Measurements=cont_name,
62  AssocPull = 1. if cont_name=="xAODsTgcPads" else 3. ))
63  return result
64 
66  result = ComponentAccumulator()
67  from MuonConfig.MuonDataPrepConfig import PrimaryMeasContNamesCfg
68  prdContainer = PrimaryMeasContNamesCfg(flags)
69  if flags.Detector.GeometryMDT:
70  the_alg = CompFactory.MuonR4.PrdMultiTruthMaker("PrdMultiTruthMakerMdt",
71  PrdContainer = [prd for prd in prdContainer if "xMdt" in prd],
72  WriteKey = "MDT_TruthMap")
73  result.addEventAlgo(the_alg)
74  if flags.Detector.GeometryRPC:
75  the_alg = CompFactory.MuonR4.PrdMultiTruthMaker("PrdMultiTruthMakerRpc",
76  PrdContainer = [prd for prd in prdContainer if "xRpc" in prd],
77  WriteKey = "RPC_TruthMap")
78  result.addEventAlgo(the_alg)
79  if flags.Detector.GeometryTGC:
80  the_alg = CompFactory.MuonR4.PrdMultiTruthMaker("PrdMultiTruthMakerTgc",
81  PrdContainer = [prd for prd in prdContainer if "xTgc" in prd],
82  WriteKey = "TGC_TruthMap")
83  result.addEventAlgo(the_alg)
84  if flags.Detector.GeometryMM:
85  the_alg = CompFactory.MuonR4.PrdMultiTruthMaker("PrdMultiTruthMakerMm",
86  PrdContainer = [prd for prd in prdContainer if "MM" in prd],
87  WriteKey = "MM_TruthMap")
88  result.addEventAlgo(the_alg)
89  if flags.Detector.GeometrysTGC:
90  the_alg = CompFactory.MuonR4.PrdMultiTruthMaker("PrdMultiTruthMakerSTGC",
91  PrdContainer = [prd for prd in prdContainer if "sTgc" in prd],
92  WriteKey = "STGC_TruthMap")
93  result.addEventAlgo(the_alg)
94  return result
95 
96 
97 def SdoMultiTruthMakerCfg(flags, useSDO = False):
98  result = ComponentAccumulator()
99 
100  if flags.Detector.GeometryMDT:
101  container = "xMdtSimHits" if not useSDO else "MDT_SDO"
102  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerMdt",
103  SimContainer = container,
104  WriteKey = "MDT_TruthMap")
105  result.addEventAlgo(the_alg)
106  if flags.Detector.GeometryRPC:
107  container = "xRpcSimHits" if not useSDO else "RPC_SDO"
108  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerRpc",
109  SimContainer = container,
110  WriteKey = "RPC_TruthMap")
111  result.addEventAlgo(the_alg)
112  if flags.Detector.GeometryTGC:
113  container = "xTgcSimHits" if not useSDO else "TGC_SDO"
114  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerTgc",
115  SimContainer = container,
116  WriteKey = "TGC_TruthMap")
117  result.addEventAlgo(the_alg)
118  if flags.Detector.GeometryMM:
119  container = "xMmSimHits" if not useSDO else "MM_SDO"
120  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerMm",
121  SimContainer = container,
122  WriteKey = "MM_TruthMap")
123  result.addEventAlgo(the_alg)
124  if flags.Detector.GeometrysTGC:
125  container = "xStgcSimHits" if not useSDO else "sTGC_SDO"
126  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerSTGC",
127  SimContainer = container,
128  WriteKey = "STGC_TruthMap")
129  result.addEventAlgo(the_alg)
130 
131  return result
132 
133 def RecoSegmentTruthAssocCfg(flags, **kwargs):
134  result = ComponentAccumulator()
135 
136  kwargs.setdefault("SegmentKey", "")
137  the_alg = CompFactory.MuonR4.RecoSegToTruthAssocAlg(**kwargs)
138  result.addEventAlgo(the_alg, primary = True)
139  return result
140 
141 def TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs):
142  result = ComponentAccumulator()
143  hitDecors = []
144  if flags.Detector.GeometryMDT: hitDecors+=["truthMdtHits"]
145  if flags.Detector.GeometryRPC: hitDecors+=["truthRpcHits"]
146  if flags.Detector.GeometryTGC: hitDecors+=["truthTgcHits"]
147  if flags.Detector.GeometryMM: hitDecors+=["truthMMHits"]
148  if flags.Detector.GeometrysTGC: hitDecors+=["truthStgcHits"]
149  kwargs.setdefault("SimHitIds", hitDecors)
150  the_alg = CompFactory.MuonR4.TruthSegToTruthPartAssocAlg(name, **kwargs)
151  result.addEventAlgo(the_alg, primary = True)
152  return result
153 
154 def TrackToTruthPartAssocCfg(flags, **kwargs):
155  result = ComponentAccumulator()
156  hitDecors = []
157  if flags.Detector.GeometryMDT: hitDecors+=["truthMdtHits"]
158  if flags.Detector.GeometryRPC: hitDecors+=["truthRpcHits"]
159  if flags.Detector.GeometryTGC: hitDecors+=["truthTgcHits"]
160  if flags.Detector.GeometryMM: hitDecors+=["truthMMHits"]
161  if flags.Detector.GeometrysTGC: hitDecors+=["truthStgcHits"]
162  kwargs.setdefault("SimHitIds", hitDecors)
163  the_alg = CompFactory.MuonR4.TrackToTruthPartAssocAlg(**kwargs)
164  result.addEventAlgo(the_alg, primary = True)
165  return result
166 
167 
168 @AccumulatorCache
169 def MuonTruthAlgsCfg(flags):
170  result = ComponentAccumulator()
171  if not flags.Input.isMC:
172  return result
173  result.merge(TruthHitAssociationCfg(flags))
174  from MuonConfig.MuonDataPrepConfig import PrimaryMeasContNamesCfg
175  PrdLinkInputs = [( "xAOD::UncalibratedMeasurementContainer" ,
176  "StoreGateSvc+{cont_name}.simHitLink".format(cont_name = cont_name)) for cont_name in PrimaryMeasContNamesCfg(flags) ]
177  result.merge(TruthSegmentMakerCfg(flags, ExtraInputs = PrdLinkInputs))
178  result.merge(PrdMultiTruthMakerCfg(flags))
179  from MuonConfig.MuonTruthAlgsConfig import TruthMuonMakerAlgCfg, MuonTruthHitCountsAlgCfg
180  result.merge(TruthMuonMakerAlgCfg(flags))
181  result.merge(MuonTruthHitCountsAlgCfg(flags))
182 
185  result.merge(TruthSegmentToTruthPartAssocCfg(flags))
186  return result
MuonTruthAlgsConfig.TruthSegmentMakerCfg
def TruthSegmentMakerCfg(flags, name="TruthSegmentMakerAlg", **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:7
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
MuonTruthAlgsConfig.TruthHitAssociationCfg
def TruthHitAssociationCfg(flags)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:41
MuonTruthAlgsConfig.SdoMultiTruthMakerCfg
def SdoMultiTruthMakerCfg(flags, useSDO=False)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:97
MuonTruthAlgsConfig.TruthSegmentToTruthPartAssocCfg
def TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:141
MuonTruthAlgsConfig.MuonTruthAlgsCfg
def MuonTruthAlgsCfg(flags)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:169
MuonCalibrationConfig.NswErrorCalibDbAlgCfg
def NswErrorCalibDbAlgCfg(flags, name="NswErrorCalibDbAlg", **kwargs)
Definition: MuonCalibrationConfig.py:209
MuonDataPrepConfig.PrimaryMeasContNamesCfg
def PrimaryMeasContNamesCfg(flags)
Definition: MuonDataPrepConfig.py:6
MuonTruthAlgsConfig.TrackToTruthPartAssocCfg
def TrackToTruthPartAssocCfg(flags, **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:154
MuonTruthAlgsConfig.PrdMultiTruthMakerCfg
def PrdMultiTruthMakerCfg(flags)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:65
AlignmentAlgsConfig.ActsGeometryContextAlgCfg
def ActsGeometryContextAlgCfg(flags, name="GeometryContextAlg", **kwargs)
Setup the Geometry context algorithm.
Definition: AlignmentAlgsConfig.py:125
MuonTruthAlgsConfig.MeasToSimHitAssocAlgCfg
def MeasToSimHitAssocAlgCfg(flags, name="MeasToSimHitConvAlg", **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:33
MuonTruthAlgsConfig.RecoSegmentTruthAssocCfg
def RecoSegmentTruthAssocCfg(flags, **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:133
MuonCalibrationConfig.MdtCalibDbAlgCfg
def MdtCalibDbAlgCfg(flags, name="MdtCalibDbAlg", **kwargs)
Definition: MuonCalibrationConfig.py:128
MuonTruthAlgsConfig.MuonTruthHitCountsAlgCfg
def MuonTruthHitCountsAlgCfg(flags, name="MuonTruthHitSummaryAlg", **kwargs)
Definition: MuonConfig/python/MuonTruthAlgsConfig.py:49
MuonTruthAlgsConfig.TruthMuonMakerAlgCfg
def TruthMuonMakerAlgCfg(flags, name="TruthMuonMakerAlg", **kwargs)
Definition: MuonConfig/python/MuonTruthAlgsConfig.py:28