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 
65 def SdoMultiTruthMakerCfg(flags, useSDO = False):
66  result = ComponentAccumulator()
67 
68  if flags.Detector.GeometryMDT:
69  container = "xMdtSimHits" if not useSDO else "MDT_SDO"
70  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerMdt",
71  SimContainer = container,
72  WriteKey = "MDT_TruthMap")
73  result.addEventAlgo(the_alg)
74  if flags.Detector.GeometryRPC:
75  container = "xRpcSimHits" if not useSDO else "RPC_SDO"
76  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerRpc",
77  SimContainer = container,
78  WriteKey = "RPC_TruthMap")
79  result.addEventAlgo(the_alg)
80  if flags.Detector.GeometryTGC:
81  container = "xTgcSimHits" if not useSDO else "TGC_SDO"
82  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerTgc",
83  SimContainer = container,
84  WriteKey = "TGC_TruthMap")
85  result.addEventAlgo(the_alg)
86  if flags.Detector.GeometryMM:
87  container = "xMmSimHits" if not useSDO else "MM_SDO"
88  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerMm",
89  SimContainer = container,
90  WriteKey = "MM_TruthMap")
91  result.addEventAlgo(the_alg)
92  if flags.Detector.GeometrysTGC:
93  container = "xStgcSimHits" if not useSDO else "sTGC_SDO"
94  the_alg = CompFactory.MuonR4.SdoMultiTruthMaker("SdoMultiTruthMakerSTGC",
95  SimContainer = container,
96  WriteKey = "STGC_TruthMap")
97  result.addEventAlgo(the_alg)
98 
99  return result
100 
101 def RecoSegmentTruthAssocCfg(flags, **kwargs):
102  result = ComponentAccumulator()
103 
104  kwargs.setdefault("SegmentKey", "")
105  the_alg = CompFactory.MuonR4.RecoSegToTruthAssocAlg(**kwargs)
106  result.addEventAlgo(the_alg, primary = True)
107  return result
108 
109 def TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs):
110  result = ComponentAccumulator()
111  hitDecors = []
112  if flags.Detector.GeometryMDT: hitDecors+=["truthMdtHits"]
113  if flags.Detector.GeometryRPC: hitDecors+=["truthRpcHits"]
114  if flags.Detector.GeometryTGC: hitDecors+=["truthTgcHits"]
115  if flags.Detector.GeometryMM: hitDecors+=["truthMMHits"]
116  if flags.Detector.GeometrysTGC: hitDecors+=["truthStgcHits"]
117  kwargs.setdefault("SimHitIds", hitDecors)
118  the_alg = CompFactory.MuonR4.TruthSegToTruthPartAssocAlg(name, **kwargs)
119  result.addEventAlgo(the_alg, primary = True)
120  return result
121 
122 def TrackToTruthPartAssocCfg(flags, **kwargs):
123  result = ComponentAccumulator()
124  hitDecors = []
125  if flags.Detector.GeometryMDT: hitDecors+=["truthMdtHits"]
126  if flags.Detector.GeometryRPC: hitDecors+=["truthRpcHits"]
127  if flags.Detector.GeometryTGC: hitDecors+=["truthTgcHits"]
128  if flags.Detector.GeometryMM: hitDecors+=["truthMMHits"]
129  if flags.Detector.GeometrysTGC: hitDecors+=["truthStgcHits"]
130  kwargs.setdefault("SimHitIds", hitDecors)
131  the_alg = CompFactory.MuonR4.TrackToTruthPartAssocAlg(**kwargs)
132  result.addEventAlgo(the_alg, primary = True)
133  return result
134 
135 
136 @AccumulatorCache
137 def MuonTruthAlgsCfg(flags):
138  result = ComponentAccumulator()
139  if not flags.Input.isMC:
140  return result
141  result.merge(TruthHitAssociationCfg(flags))
142  from MuonConfig.MuonDataPrepConfig import PrimaryMeasContNamesCfg
143  PrdLinkInputs = [( "xAOD::UncalibratedMeasurementContainer" ,
144  "StoreGateSvc+{cont_name}.simHitLink".format(cont_name = cont_name)) for cont_name in PrimaryMeasContNamesCfg(flags) ]
145  result.merge(TruthSegmentMakerCfg(flags, ExtraInputs = PrdLinkInputs))
146  result.merge(SdoMultiTruthMakerCfg(flags, useSDO = True))
147  from MuonConfig.MuonTruthAlgsConfig import TruthMuonMakerAlgCfg, MuonTruthHitCountsAlgCfg
148  result.merge(TruthMuonMakerAlgCfg(flags))
149  result.merge(MuonTruthHitCountsAlgCfg(flags))
150 
153  result.merge(TruthSegmentToTruthPartAssocCfg(flags))
154  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:65
MuonTruthAlgsConfig.TruthSegmentToTruthPartAssocCfg
def TruthSegmentToTruthPartAssocCfg(flags, name="MuonTruthSegmentToTruthAssocAlg", **kwargs)
Definition: MuonPhaseII/MuonPatternRecognition/MuonTruthAlgsR4/python/MuonTruthAlgsConfig.py:109
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:122
AlignmentAlgsConfig.ActsGeometryContextAlgCfg
def ActsGeometryContextAlgCfg(flags, name="GeometryContextAlg", **kwargs)
Setup the Geometry context algorithm.
Definition: AlignmentAlgsConfig.py:109
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:101
MuonCalibrationConfig.MdtCalibDbAlgCfg
def MdtCalibDbAlgCfg(flags, name="MdtCalibDbAlg", **kwargs)
Definition: MuonCalibrationConfig.py:128
MuonTruthAlgsConfig.MuonTruthAlgsCfg
def MuonTruthAlgsCfg(flags)
Definition: MuonConfig/python/MuonTruthAlgsConfig.py:99
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