ATLAS Offline Software
MDT_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured MDT Digitization tools and algorithms
2 
3 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
4 """
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.Enums import BeamType, ProductionStep
8 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
9 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
10 from MuonConfig.MuonByteStreamCnvTestConfig import MdtDigitToMdtRDOCfg
11 from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg
12 from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
13 from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
14 from DigitizationConfig.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
15 
16 
17 # The earliest and last bunch crossing times for which interactions will be sent
18 # to the MdtDigitizationTool.
20  return -800
21 
22 
24  # was 800 for large time window
25  return 150
26 
27 
28 def MDT_RangeCfg(flags, name="MDT_Range", **kwargs):
29  """Return a PileUpXingFolder tool configured for MDT"""
30  kwargs.setdefault("FirstXing", MDT_FirstXing())
31  kwargs.setdefault("LastXing", MDT_LastXing())
32  kwargs.setdefault("CacheRefreshFrequency", 1.0)
33  kwargs.setdefault("ItemList", ["MDTSimHitCollection#MDT_Hits"])
34  return PileUpXingFolderCfg(flags, name, **kwargs)
35 
36 
37 def RT_Relation_DB_DigiToolCfg(flags, name="RT_Relation_DB_DigiTool", **kwargs):
38  """Return an RT_Relation_DB_DigiTool"""
39  acc = ComponentAccumulator()
40  acc.setPrivateTools(CompFactory.RT_Relation_DB_DigiTool(name, **kwargs))
41  return acc
42 
43 
44 def MDT_Response_DigiToolCfg(flags, name="MDT_Response_DigiTool",**kwargs):
45  """Return a configured MDT_Response_DigiTool"""
46  acc = ComponentAccumulator()
47  kwargs.setdefault("DoQballGamma", (flags.Input.SpecialConfiguration.get("MDT_QballConfig", "False") == "True"))
48  MDT_Response_DigiTool = CompFactory.MDT_Response_DigiTool
49  acc.setPrivateTools(MDT_Response_DigiTool(name, **kwargs))
50  return acc
51 
52 
53 def MDT_DigitizationToolCommonCfg(flags, name="MdtDigitizationTool", **kwargs):
54  """Return ComponentAccumulator with common MdtDigitizationTool config"""
55  from MuonConfig.MuonCondAlgConfig import MdtCondDbAlgCfg # MT-safe conditions access
56  from MuonConfig.MuonCalibrationConfig import MdtCalibDbAlgCfg
57 
58  acc = ComponentAccumulator()
59  acc.merge(MdtCondDbAlgCfg(flags))
60  acc.merge(MdtCalibDbAlgCfg(flags))
61 
62 
63  if not flags.Muon.usePhaseIIGeoSetup:
64  kwargs.setdefault("DiscardEarlyHits", True)
65  kwargs.setdefault("UseTof", flags.Beam.Type is not BeamType.Cosmics)
66  kwargs.setdefault("DoQballCharge", (flags.Input.SpecialConfiguration.get("MDT_QballConfig", "False") == "True"))
67  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(MDT_Response_DigiToolCfg(flags)))
68  else:
69 
70  from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
71  acc.merge(ActsGeometryContextAlgCfg(flags))
72  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(RT_Relation_DB_DigiToolCfg(flags)))
73  kwargs.setdefault("SimHitKey", "xMdtSimHits")
74  kwargs.setdefault("StreamName", "MdtDigitForklifting")
75 
76  if flags.Digitization.DoXingByXingPileUp:
77  kwargs.setdefault("FirstXing", MDT_FirstXing())
78  kwargs.setdefault("LastXing", MDT_LastXing())
79  from RngComps.RngCompsConfig import AthRNGSvcCfg
80  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
81  if not flags.Muon.usePhaseIIGeoSetup:
82  acc.setPrivateTools(CompFactory.MdtDigitizationTool(name, **kwargs))
83  else:
84  acc.setPrivateTools(CompFactory.MuonR4.MdtDigitizationTool(name, **kwargs))
85  return acc
86 
87 
88 def MDT_DigitizationToolCfg(flags, name="MdtDigitizationTool", **kwargs):
89  """Return ComponentAccumulator with configured MdtDigitizationTool"""
90  acc = ComponentAccumulator()
91  if flags.Digitization.PileUp:
92  intervals = []
93  if not flags.Digitization.DoXingByXingPileUp:
94  intervals += [acc.popToolsAndMerge(MDT_RangeCfg(flags))]
95  kwargs.setdefault("PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
96  else:
97  kwargs.setdefault("PileUpMergeSvc", '')
98  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
99  kwargs.setdefault("OutputObjectName", "MDT_DIGITS")
100  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
101  kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "MDT_SDO")
102  else:
103  kwargs.setdefault("OutputSDOName", "MDT_SDO")
104  tool = acc.popToolsAndMerge(MDT_DigitizationToolCommonCfg(flags, name, **kwargs))
105  acc.setPrivateTools(tool)
106  return acc
107 
108 
109 def MDT_OverlayDigitizationToolCfg(flags, name="Mdt_OverlayDigitizationTool", **kwargs):
110  """Return ComponentAccumulator with MdtDigitizationTool configured for Overlay"""
111  kwargs.setdefault("OnlyUseContainerName", False)
112  kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "MDT_DIGITS")
113  kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "MDT_SDO")
114  kwargs.setdefault("PileUpMergeSvc", '')
115  return MDT_DigitizationToolCommonCfg(flags, name, **kwargs)
116 
117 
118 def MDT_OutputCfg(flags):
119  """Return ComponentAccumulator with Output for MDT. Not standalone."""
120  acc = ComponentAccumulator()
121  if flags.Output.doWriteRDO:
122  ItemList = ["MdtCsmContainer#*"]
123  if flags.Digitization.EnableTruth:
124  for pref in [flags.Overlay.SigPrefix, flags.Overlay.BkgPrefix, ""]:
125 
126  ItemList += [f"MuonSimDataCollection#{pref}MDT_SDO"]
127 
128  ItemList += [f"xAOD::MuonSimHitContainer#{pref}MDT_SDO", f"xAOD::MuonSimHitAuxContainer#{pref}MDT_SDOAux."]
129  acc.merge(TruthDigitizationOutputCfg(flags))
130  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
131  return acc
132 
133 
134 def MDT_DigitizationBasicCfg(flags, **kwargs):
135  """Return ComponentAccumulator for MDT digitization"""
136  acc = MuonGeoModelCfg(flags)
137  if "PileUpTools" not in kwargs:
138  PileUpTools = acc.popToolsAndMerge(MDT_DigitizationToolCfg(flags))
139  kwargs["PileUpTools"] = PileUpTools
140  acc.merge(PileUpToolsCfg(flags, **kwargs))
141  return acc
142 
143 
144 def MDT_OverlayDigitizationBasicCfg(flags, **kwargs):
145  """Return ComponentAccumulator with MDT Overlay digitization"""
146  acc = MuonGeoModelCfg(flags)
147  from MuonConfig.MuonCalibrationConfig import MdtCalibDbAlgCfg
148  acc.merge(MdtCalibDbAlgCfg(flags))
149 
150  if flags.Common.ProductionStep != ProductionStep.FastChain:
151  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
152  acc.merge(SGInputLoaderCfg(flags, ["MDTSimHitCollection#MDT_Hits"]))
153 
154  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(MDT_OverlayDigitizationToolCfg(flags)))
155 
156  if flags.Concurrency.NumThreads > 0:
157  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
158 
159  # Set common overlay extra inputs
160  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
161 
162  acc.addEventAlgo(CompFactory.MuonDigitizer(name="MDT_OverlayDigitizer", **kwargs))
163  return acc
164 
165 
166 # with output defaults
167 def MDT_DigitizationCfg(flags, **kwargs):
168  """Return ComponentAccumulator for MDT digitization and Output"""
169  acc = MDT_DigitizationBasicCfg(flags, **kwargs)
170  acc.merge(MDT_OutputCfg(flags))
171  return acc
172 
173 
175  """Return ComponentAccumulator with MDT digitization and Digit to MDTCSM RDO"""
176  acc = MDT_DigitizationCfg(flags)
177  acc.merge(MDTCablingConfigCfg(flags))
178  acc.merge(MdtDigitToMdtRDOCfg(flags))
179  return acc
MDT_Response_DigiTool
Definition: MDT_Response_DigiTool.h:26
python.MDT_DigitizationConfig.MDT_Response_DigiToolCfg
def MDT_Response_DigiToolCfg(flags, name="MDT_Response_DigiTool", **kwargs)
Definition: MDT_DigitizationConfig.py:44
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.MDT_DigitizationConfig.MDT_DigitizationBasicCfg
def MDT_DigitizationBasicCfg(flags, **kwargs)
Definition: MDT_DigitizationConfig.py:134
python.MDT_DigitizationConfig.MDT_OutputCfg
def MDT_OutputCfg(flags)
Definition: MDT_DigitizationConfig.py:118
python.MDT_DigitizationConfig.MDT_DigitizationToolCommonCfg
def MDT_DigitizationToolCommonCfg(flags, name="MdtDigitizationTool", **kwargs)
Definition: MDT_DigitizationConfig.py:53
python.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
python.MDT_DigitizationConfig.RT_Relation_DB_DigiToolCfg
def RT_Relation_DB_DigiToolCfg(flags, name="RT_Relation_DB_DigiTool", **kwargs)
Definition: MDT_DigitizationConfig.py:37
python.MDT_DigitizationConfig.MDT_DigitizationToolCfg
def MDT_DigitizationToolCfg(flags, name="MdtDigitizationTool", **kwargs)
Definition: MDT_DigitizationConfig.py:88
python.MuonCondAlgConfig.MdtCondDbAlgCfg
def MdtCondDbAlgCfg(flags, **kwargs)
Definition: MuonCondAlgConfig.py:13
python.MuonCablingConfig.MDTCablingConfigCfg
def MDTCablingConfigCfg(flags, name="MuonMDT_CablingAlg", **kwargs)
Definition: MuonCablingConfig.py:91
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.MDT_DigitizationConfig.MDT_FirstXing
def MDT_FirstXing()
Definition: MDT_DigitizationConfig.py:19
AlignmentAlgsConfig.ActsGeometryContextAlgCfg
def ActsGeometryContextAlgCfg(flags, name="GeometryContextAlg", **kwargs)
Setup the Geometry context algorithm.
Definition: AlignmentAlgsConfig.py:125
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
python.MDT_DigitizationConfig.MDT_DigitizationDigitToRDOCfg
def MDT_DigitizationDigitToRDOCfg(flags)
Definition: MDT_DigitizationConfig.py:174
python.MDT_DigitizationConfig.MDT_LastXing
def MDT_LastXing()
Definition: MDT_DigitizationConfig.py:23
python.MuonByteStreamCnvTestConfig.MdtDigitToMdtRDOCfg
def MdtDigitToMdtRDOCfg(flags, name="MdtDigitToMdtRDO", **kwargs)
Definition: MuonByteStreamCnvTestConfig.py:128
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.MDT_DigitizationConfig.MDT_RangeCfg
def MDT_RangeCfg(flags, name="MDT_Range", **kwargs)
Definition: MDT_DigitizationConfig.py:28
python.PileUpMergeSvcConfig.PileUpXingFolderCfg
def PileUpXingFolderCfg(flags, name="PileUpXingFolder", **kwargs)
Definition: PileUpMergeSvcConfig.py:35
python.MDT_DigitizationConfig.MDT_DigitizationCfg
def MDT_DigitizationCfg(flags, **kwargs)
Definition: MDT_DigitizationConfig.py:167
python.MuonCalibrationConfig.MdtCalibDbAlgCfg
def MdtCalibDbAlgCfg(flags, name="MdtCalibDbAlg", **kwargs)
Definition: MuonCalibrationConfig.py:101
python.MDT_DigitizationConfig.MDT_OverlayDigitizationToolCfg
def MDT_OverlayDigitizationToolCfg(flags, name="Mdt_OverlayDigitizationTool", **kwargs)
Definition: MDT_DigitizationConfig.py:109
python.PileUpMergeSvcConfig.PileUpMergeSvcCfg
def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs)
Definition: PileUpMergeSvcConfig.py:10
python.MDT_DigitizationConfig.MDT_OverlayDigitizationBasicCfg
def MDT_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: MDT_DigitizationConfig.py:144
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51