ATLAS Offline Software
sTGC_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured STGC 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 ProductionStep
8 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
9 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
10 from MuonConfig.MuonByteStreamCnvTestConfig import STGC_DigitToRDOCfg
11 from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
12 from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
13 from DigitizationConfig.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
14 
15 
16 # The earliest and last bunch crossing times for which interactions will be sent
17 # to the sTgcDigitizationTool.
19  return -100
20 
21 
23  return 100
24 
25 
26 def sTGC_RangeCfg(flags, name="sTgcRange", **kwargs):
27  """Return a PileUpXingFolder tool configured for sTGC"""
28  kwargs.setdefault("FirstXing", sTGC_FirstXing())
29  kwargs.setdefault("LastXing", sTGC_LastXing())
30  kwargs.setdefault("CacheRefreshFrequency", 1.0)
31  if flags.Muon.usePhaseIIGeoSetup:
32  kwargs.setdefault("ItemList", ["xAOD::MuonSimHitContainer#xStgcSimHits",
33  "xAOD::MuonSimHitAuxContainer#xStgcSimHitsAux."])
34  else:
35  kwargs.setdefault("ItemList", ["sTGCSimHitCollection#sTGC_Hits"])
36  return PileUpXingFolderCfg(flags, name, **kwargs)
37 
38 def sTGC_DigitizationToolCfg(flags, name="sTgcDigitizationTool", **kwargs):
39  result = ComponentAccumulator()
40 
41  from RngComps.RngCompsConfig import AthRNGSvcCfg
42  kwargs.setdefault("RndmSvc", result.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
43 
44 
45  if flags.Digitization.PileUp:
46  intervals = []
47  if flags.Digitization.DoXingByXingPileUp:
48  kwargs.setdefault("FirstXing", sTGC_FirstXing())
49  kwargs.setdefault("LastXing", sTGC_LastXing())
50  else:
51  intervals += [result.popToolsAndMerge(sTGC_RangeCfg(flags))]
52  kwargs.setdefault("PileUpMergeSvc", result.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
53  else:
54  kwargs.setdefault("PileUpMergeSvc", '')
55  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
56 
57  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
58  kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "sTGC_SDO")
59  else:
60  kwargs.setdefault("OutputSDOName", "sTGC_SDO")
61  kwargs.setdefault("OutputObjectName", "sTGC_DIGITS")
62 
63  the_tool = None
64  if not flags.Muon.usePhaseIIGeoSetup:
65  from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg, STgcCalibSmearingToolCfg
66  kwargs.setdefault("CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
67  kwargs.setdefault("SmearingTool", result.popToolsAndMerge(STgcCalibSmearingToolCfg(flags)))
68  # sTGC VMM configurables
69  kwargs.setdefault("doToFCorrection", True)
70  kwargs.setdefault("InputObjectName", "sTGC_Hits")
71  the_tool = CompFactory.sTgcDigitizationTool(name, **kwargs)
72 
73  elif flags.Muon.doFastsTGCDigitization:
74  from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
75  result.merge(ActsGeometryContextAlgCfg(flags))
76  kwargs.setdefault("StreamName", "sTgcSimForklift")
77  kwargs.setdefault("SimHitKey", "xStgcSimHits")
78  kwargs.setdefault("EffiDataKey", "")
79  """
80  from MuonConfig.MuonCondAlgConfig import sTgcDigitEffiCondAlgCfg
81  result.merge(sTgcDigitEffiCondAlgCfg(flags,readFromJSON="EffMapsTGC.json"))
82  kwargs.setdefault("EffiDataKey", "sTgcDigitEff")
83  """
84  from MuonConfig.MuonCalibrationConfig import NswErrorCalibDbAlgCfg
85  result.merge(NswErrorCalibDbAlgCfg(flags))
86  the_tool = CompFactory.MuonR4.sTgcFastDigiTool(name, **kwargs)
87 
88  else:
89  from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
90  result.merge(ActsGeometryContextAlgCfg(flags))
91  kwargs.setdefault("StreamName", "sTgcSimForklift")
92  kwargs.setdefault("SimHitKey", "xStgcSimHits")
93  kwargs.setdefault("EffiDataKey", "")
94 
95  from MuonConfig.MuonCalibrationConfig import NswErrorCalibDbAlgCfg, STgcCalibSmearingToolCfg
96  kwargs.setdefault("doToFCorrection", True)
97  kwargs.setdefault("SmearingTool", result.popToolsAndMerge(STgcCalibSmearingToolCfg(flags)))
98  result.merge(NswErrorCalibDbAlgCfg(flags))
99  the_tool = CompFactory.MuonR4.sTgcDigitizationTool(name, **kwargs)
100 
101  result.setPrivateTools(the_tool)
102  return result
103 
104 def sTGC_OverlayDigitizationToolCfg(flags, name="STGC_OverlayDigitizationTool", **kwargs):
105  """Return ComponentAccumulator with TgcDigitizationTool configured for Overlay"""
106  acc = ComponentAccumulator()
107  kwargs.setdefault("PileUpMergeSvc", '')
108  kwargs.setdefault("OnlyUseContainerName", False)
109  kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "sTGC_DIGITS")
110  kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "sTGC_SDO")
111  the_tool = acc.popToolsAndMerge(sTGC_DigitizationToolCfg(flags, name=name, **kwargs))
112  acc.setPrivateTools(the_tool)
113  return acc
114 
115 
116 def sTGC_OutputCfg(flags):
117  """Return ComponentAccumulator with Output for sTGC. Not standalone."""
118  acc = ComponentAccumulator()
119  if flags.Output.doWriteRDO:
120  ItemList = ["Muon::STGC_RawDataContainer#*"]
121  if flags.Digitization.EnableTruth:
122  ItemList += ["MuonSimDataCollection#*"]
123  ItemList += ["xAOD::MuonSimHitContainer#*STGC_SDO",
124  "xAOD::MuonSimHitAuxContainer#*STGC_SDOAux."]
125 
126  acc.merge(TruthDigitizationOutputCfg(flags))
127  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
128  return acc
129 
130 
131 def sTGC_DigitizationBasicCfg(flags, **kwargs):
132  """Return ComponentAccumulator for sTGC digitization"""
133  acc = MuonGeoModelCfg(flags)
134  if "PileUpTools" not in kwargs:
135  PileUpTools = acc.popToolsAndMerge(sTGC_DigitizationToolCfg(flags))
136  kwargs["PileUpTools"] = PileUpTools
137  acc.merge(PileUpToolsCfg(flags, **kwargs))
138  return acc
139 
140 
141 def sTGC_OverlayDigitizationBasicCfg(flags, **kwargs):
142  """Return ComponentAccumulator with sTGC Overlay digitization"""
143  acc = MuonGeoModelCfg(flags)
144  if flags.Common.ProductionStep != ProductionStep.FastChain:
145  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
146  if flags.Muon.usePhaseIIGeoSetup:
147  acc.merge(SGInputLoaderCfg(flags, ["xAOD::MuonSimHitContainer#xStgcSimHits",
148  "xAOD::MuonSimHitAuxContainer#xStgcSimHitsAux."]))
149  else:
150  acc.merge(SGInputLoaderCfg(flags, ["sTGCSimHitCollection#sTGC_Hits"]))
151  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(sTGC_OverlayDigitizationToolCfg(flags)))
152 
153  if flags.Concurrency.NumThreads > 0:
154  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
155 
156  # Set common overlay extra inputs
157  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
158 
159  the_alg = CompFactory.MuonDigitizer(name="STGC_OverlayDigitizer", **kwargs)
160  acc.addEventAlgo(the_alg)
161  return acc
162 
163 
164 # with output defaults
165 def sTGC_DigitizationCfg(flags, **kwargs):
166  """Return ComponentAccumulator for sTGC digitization and Output"""
167  acc = sTGC_DigitizationBasicCfg(flags, **kwargs)
168  acc.merge(sTGC_OutputCfg(flags))
169  return acc
170 
171 
173  """Return ComponentAccumulator with sTGC digitization and Digit to TGCRDO"""
174  acc = sTGC_DigitizationCfg(flags)
175  acc.merge(STGC_DigitToRDOCfg(flags))
176  return acc
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
MuonCalibrationConfig.NSWCalibToolCfg
def NSWCalibToolCfg(flags, name="NSWCalibTool", **kwargs)
Definition: MuonCalibrationConfig.py:177
sTGC_DigitizationConfig.sTGC_OverlayDigitizationToolCfg
def sTGC_OverlayDigitizationToolCfg(flags, name="STGC_OverlayDigitizationTool", **kwargs)
Definition: sTGC_DigitizationConfig.py:104
python.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
sTGC_DigitizationConfig.sTGC_FirstXing
def sTGC_FirstXing()
Definition: sTGC_DigitizationConfig.py:18
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
sTGC_DigitizationConfig.sTGC_RangeCfg
def sTGC_RangeCfg(flags, name="sTgcRange", **kwargs)
Definition: sTGC_DigitizationConfig.py:26
MuonByteStreamCnvTestConfig.STGC_DigitToRDOCfg
def STGC_DigitToRDOCfg(flags, name="STGC_DigitToRDO", **kwargs)
Definition: MuonByteStreamCnvTestConfig.py:268
sTGC_DigitizationConfig.sTGC_OverlayDigitizationBasicCfg
def sTGC_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:141
MuonCalibrationConfig.NswErrorCalibDbAlgCfg
def NswErrorCalibDbAlgCfg(flags, name="NswErrorCalibDbAlg", **kwargs)
Definition: MuonCalibrationConfig.py:209
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
sTGC_DigitizationConfig.sTGC_DigitizationCfg
def sTGC_DigitizationCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:165
MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
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
sTGC_DigitizationConfig.sTGC_DigitizationBasicCfg
def sTGC_DigitizationBasicCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:131
MuonCalibrationConfig.STgcCalibSmearingToolCfg
def STgcCalibSmearingToolCfg(flags, name="STgcCalibSmearingTool", **kwargs)
Definition: MuonCalibrationConfig.py:201
sTGC_DigitizationConfig.sTGC_DigitizationDigitToRDOCfg
def sTGC_DigitizationDigitToRDOCfg(flags)
Definition: sTGC_DigitizationConfig.py:172
python.PileUpMergeSvcConfig.PileUpXingFolderCfg
def PileUpXingFolderCfg(flags, name="PileUpXingFolder", **kwargs)
Definition: PileUpMergeSvcConfig.py:35
python.PileUpMergeSvcConfig.PileUpMergeSvcCfg
def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs)
Definition: PileUpMergeSvcConfig.py:10
sTGC_DigitizationConfig.sTGC_LastXing
def sTGC_LastXing()
Definition: sTGC_DigitizationConfig.py:22
sTGC_DigitizationConfig.sTGC_OutputCfg
def sTGC_OutputCfg(flags)
Definition: sTGC_DigitizationConfig.py:116
sTGC_DigitizationConfig.sTGC_DigitizationToolCfg
def sTGC_DigitizationToolCfg(flags, name="sTgcDigitizationTool", **kwargs)
Definition: sTGC_DigitizationConfig.py:38
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51