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 'sTGCSimHitCollection#sTGCSensitiveDetector' in flags.Input.TypedCollections:
32  kwargs.setdefault("ItemList", ["sTGCSimHitCollection#sTGCSensitiveDetector"])
33  else:
34  kwargs.setdefault("ItemList", ["sTGCSimHitCollection#sTGC_Hits"])
35  return PileUpXingFolderCfg(flags, name, **kwargs)
36 
37 
38 def sTGC_DigitizationToolCfg(flags, name="sTgcDigitizationTool", **kwargs):
39  """Return ComponentAccumulator with configured sTgcDigitizationTool"""
40  from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg, STgcCalibSmearingToolCfg
41  result = ComponentAccumulator()
42  kwargs.setdefault("CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
43  kwargs.setdefault("SmearingTool", result.popToolsAndMerge(STgcCalibSmearingToolCfg(flags)))
44  kwargs.setdefault("padChargeSharing", False)
45  # sTGC VMM configurables
46  kwargs.setdefault("deadtimeStrip", 250)
47  kwargs.setdefault("deadtimePad" , 250)
48  kwargs.setdefault("deadtimeWire" , 250)
49  kwargs.setdefault("neighborOn", True)
50  if flags.Digitization.PileUp:
51  intervals = []
52  if flags.Digitization.DoXingByXingPileUp:
53  kwargs.setdefault("FirstXing", sTGC_FirstXing())
54  kwargs.setdefault("LastXing", sTGC_LastXing())
55  else:
56  intervals += [result.popToolsAndMerge(sTGC_RangeCfg(flags))]
57  kwargs.setdefault("MergeSvc", result.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
58  else:
59  kwargs.setdefault("MergeSvc", '')
60  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
61  kwargs.setdefault("doToFCorrection", True)
62  kwargs.setdefault("doEfficiencyCorrection", False)
63  # Operating voltage in the sTGC in kV. Sets the gas gain from electron avalance
64  # Every 100V increase roughly doubles the total electric charge per hit
65  kwargs.setdefault("operatingHVinkV", 2.8)
66 
67  if 'sTGCSimHitCollection#sTGCSensitiveDetector' in flags.Input.TypedCollections:
68  kwargs.setdefault("InputObjectName", "sTGCSensitiveDetector")
69  else:
70  kwargs.setdefault("InputObjectName", "sTGC_Hits")
71  kwargs.setdefault("OutputObjectName", "sTGC_DIGITS")
72  from RngComps.RngCompsConfig import AthRNGSvcCfg
73  kwargs.setdefault("RndmSvc", result.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
74  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
75  kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "sTGC_SDO")
76  else:
77  kwargs.setdefault("OutputSDOName", "sTGC_SDO")
78  sTgcDigitizationTool = CompFactory.sTgcDigitizationTool(name, **kwargs)
79  result.setPrivateTools(sTgcDigitizationTool)
80  return result
81 
82 
83 def sTGC_OverlayDigitizationToolCfg(flags, name="STGC_OverlayDigitizationTool", **kwargs):
84  """Return ComponentAccumulator with TgcDigitizationTool configured for Overlay"""
85  acc = ComponentAccumulator()
86  kwargs.setdefault("doToFCorrection", True)
87  kwargs.setdefault("doEfficiencyCorrection", False)
88  # Operating voltage in the sTGC in kV. Sets the gas gain from electron avalance
89  # Every 100V increase roughly doubles the total electric charge per hit
90  kwargs.setdefault("operatingHVinkV", 2.8)
91  kwargs.setdefault("MergeSvc", '')
92  kwargs.setdefault("OnlyUseContainerName", False)
93  if 'sTGCSimHitCollection#sTGCSensitiveDetector' in flags.Input.SecondaryTypedCollections:
94  kwargs.setdefault("InputObjectName", "sTGCSensitiveDetector")
95  else:
96  kwargs.setdefault("InputObjectName", "sTGC_Hits")
97  kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "sTGC_DIGITS")
98  kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "sTGC_SDO")
99  from RngComps.RngCompsConfig import AthRNGSvcCfg
100  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
101  sTgcDigitizationTool = CompFactory.sTgcDigitizationTool
102  acc.setPrivateTools(sTgcDigitizationTool(name, **kwargs))
103  return acc
104 
105 
106 def sTGC_OutputCfg(flags):
107  """Return ComponentAccumulator with Output for sTGC. Not standalone."""
108  acc = ComponentAccumulator()
109  if flags.Output.doWriteRDO:
110  ItemList = ["Muon::STGC_RawDataContainer#*"]
111  if flags.Digitization.EnableTruth:
112  ItemList += ["MuonSimDataCollection#*"]
113  acc.merge(TruthDigitizationOutputCfg(flags))
114  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
115  return acc
116 
117 
118 def sTGC_DigitizationBasicCfg(flags, **kwargs):
119  """Return ComponentAccumulator for sTGC digitization"""
120  acc = MuonGeoModelCfg(flags)
121  if "PileUpTools" not in kwargs:
122  PileUpTools = acc.popToolsAndMerge(sTGC_DigitizationToolCfg(flags))
123  kwargs["PileUpTools"] = PileUpTools
124  acc.merge(PileUpToolsCfg(flags, **kwargs))
125  return acc
126 
127 
128 def sTGC_OverlayDigitizationBasicCfg(flags, **kwargs):
129  """Return ComponentAccumulator with sTGC Overlay digitization"""
130  acc = MuonGeoModelCfg(flags)
131  if flags.Common.ProductionStep != ProductionStep.FastChain:
132  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
133  if 'sTGCSimHitCollection#sTGCSensitiveDetector' in flags.Input.SecondaryTypedCollections:
134  acc.merge(SGInputLoaderCfg(flags, ["sTGCSimHitCollection#sTGCSensitiveDetector"]))
135  else:
136  acc.merge(SGInputLoaderCfg(flags, ["sTGCSimHitCollection#sTGC_Hits"]))
137 
138  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(sTGC_OverlayDigitizationToolCfg(flags)))
139 
140  if flags.Concurrency.NumThreads > 0:
141  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
142 
143  # Set common overlay extra inputs
144  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
145 
146  the_alg = CompFactory.MuonDigitizer(name="STGC_OverlayDigitizer", **kwargs)
147  acc.addEventAlgo(the_alg)
148  return acc
149 
150 
151 # with output defaults
152 def sTGC_DigitizationCfg(flags, **kwargs):
153  """Return ComponentAccumulator for sTGC digitization and Output"""
154  acc = sTGC_DigitizationBasicCfg(flags, **kwargs)
155  acc.merge(sTGC_OutputCfg(flags))
156  return acc
157 
158 
160  """Return ComponentAccumulator with sTGC digitization and Digit to TGCRDO"""
161  acc = sTGC_DigitizationCfg(flags)
162  acc.merge(STGC_DigitToRDOCfg(flags))
163  return acc
python.sTGC_DigitizationConfig.sTGC_OverlayDigitizationBasicCfg
def sTGC_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:128
python.sTGC_DigitizationConfig.sTGC_FirstXing
def sTGC_FirstXing()
Definition: sTGC_DigitizationConfig.py:18
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.sTGC_DigitizationConfig.sTGC_DigitizationToolCfg
def sTGC_DigitizationToolCfg(flags, name="sTgcDigitizationTool", **kwargs)
Definition: sTGC_DigitizationConfig.py:38
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
python.sTGC_DigitizationConfig.sTGC_RangeCfg
def sTGC_RangeCfg(flags, name="sTgcRange", **kwargs)
Definition: sTGC_DigitizationConfig.py:26
python.sTGC_DigitizationConfig.sTGC_LastXing
def sTGC_LastXing()
Definition: sTGC_DigitizationConfig.py:22
python.sTGC_DigitizationConfig.sTGC_DigitizationDigitToRDOCfg
def sTGC_DigitizationDigitToRDOCfg(flags)
Definition: sTGC_DigitizationConfig.py:159
python.sTGC_DigitizationConfig.sTGC_DigitizationBasicCfg
def sTGC_DigitizationBasicCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:118
python.sTGC_DigitizationConfig.sTGC_OverlayDigitizationToolCfg
def sTGC_OverlayDigitizationToolCfg(flags, name="STGC_OverlayDigitizationTool", **kwargs)
Definition: sTGC_DigitizationConfig.py:83
python.sTGC_DigitizationConfig.sTGC_DigitizationCfg
def sTGC_DigitizationCfg(flags, **kwargs)
Definition: sTGC_DigitizationConfig.py:152
python.MuonCalibrationConfig.NSWCalibToolCfg
def NSWCalibToolCfg(flags, name="NSWCalibTool", **kwargs)
Definition: MuonCalibrationConfig.py:142
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.MuonByteStreamCnvTestConfig.STGC_DigitToRDOCfg
def STGC_DigitToRDOCfg(flags, name="STGC_DigitToRDO", **kwargs)
Definition: MuonByteStreamCnvTestConfig.py:227
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.sTGC_DigitizationConfig.sTGC_OutputCfg
def sTGC_OutputCfg(flags)
Definition: sTGC_DigitizationConfig.py:106
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
sTgcDigitizationTool
Definition: sTgcDigitizationTool.h:50
python.MuonCalibrationConfig.STgcCalibSmearingToolCfg
def STgcCalibSmearingToolCfg(flags, name="STgcCalibSmearingTool", **kwargs)
Definition: MuonCalibrationConfig.py:166
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51