ATLAS Offline Software
TGC_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured TGC Digitization tools and algorithms
2 
3 Copyright (C) 2002-2022 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 TgcDigitToTgcRDOCfg
11 from MuonConfig.MuonCablingConfig import TGCCablingConfigCfg
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 TgcDigitizationTool.
20  return -50
21 
22 
24  return 75
25 
26 
27 def TGC_RangeCfg(flags, name="TGC_Range", **kwargs):
28  """Return a PileUpXingFolder tool configured for TGC"""
29  kwargs.setdefault("FirstXing", TGC_FirstXing())
30  kwargs.setdefault("LastXing", TGC_LastXing())
31  kwargs.setdefault("CacheRefreshFrequency", 1.0)
32  kwargs.setdefault("ItemList", ["TGCSimHitCollection#TGC_Hits"])
33  return PileUpXingFolderCfg(flags, name, **kwargs)
34 
35 
36 def TGC_DigitizationToolCfg(flags, name="TgcDigitizationTool", **kwargs):
37  """Return ComponentAccumulator with configured TgcDigitizationTool"""
38  acc = ComponentAccumulator()
39  if flags.Digitization.PileUp:
40  intervals = []
41  if flags.Digitization.DoXingByXingPileUp:
42  kwargs.setdefault("FirstXing", TGC_FirstXing())
43  kwargs.setdefault("LastXing", TGC_LastXing())
44  else:
45  intervals += [acc.popToolsAndMerge(TGC_RangeCfg(flags))]
46  kwargs.setdefault("PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
47  else:
48  kwargs.setdefault("PileUpMergeSvc", '')
49  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
50  if flags.Digitization.DoXingByXingPileUp:
51  kwargs.setdefault("FirstXing", TGC_FirstXing())
52  kwargs.setdefault("LastXing", TGC_LastXing())
53  kwargs.setdefault("OutputObjectName", "TGC_DIGITS")
54  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
55  kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "TGC_SDO")
56  else:
57  kwargs.setdefault("OutputSDOName", "TGC_SDO")
58 
59  from MuonConfig.MuonCondAlgConfig import TgcDigitCondAlgCfg
60  acc.merge(TgcDigitCondAlgCfg(flags))
61  kwargs.setdefault("TGCDigitASDposKey", "TGCDigitASDposData")
62  kwargs.setdefault("TGCDigitTimeOffsetKey", "TGCDigitTimeOffsetData")
63  kwargs.setdefault("TGCDigitCrosstalkKey", "TGCDigitCrosstalkData")
64 
65  from AthenaConfiguration.Enums import LHCPeriod
66  if flags.GeoModel.Run < LHCPeriod.Run3:
67  kwargs.setdefault("FourBunchDigitization", False)
68 
69  from RngComps.RngCompsConfig import AthRNGSvcCfg
70  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
71 
72  TgcDigitizationTool = CompFactory.TgcDigitizationTool
73  acc.setPrivateTools(TgcDigitizationTool(name, **kwargs))
74  return acc
75 
76 
77 def TGC_OverlayDigitizationToolCfg(flags, name="Tgc_OverlayDigitizationTool", **kwargs):
78  """Return ComponentAccumulator with TgcDigitizationTool configured for Overlay"""
79  acc = ComponentAccumulator()
80  kwargs.setdefault("OnlyUseContainerName", False)
81  kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "TGC_DIGITS")
82  kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "TGC_SDO")
83 
84  from MuonConfig.MuonCondAlgConfig import TgcDigitCondAlgCfg
85  acc.merge(TgcDigitCondAlgCfg(flags))
86  kwargs.setdefault("TGCDigitASDposKey", "TGCDigitASDposData")
87  kwargs.setdefault("TGCDigitTimeOffsetKey", "TGCDigitTimeOffsetData")
88  kwargs.setdefault("TGCDigitCrosstalkKey", "TGCDigitCrosstalkData")
89 
90  from AthenaConfiguration.Enums import LHCPeriod
91  if flags.GeoModel.Run < LHCPeriod.Run3:
92  kwargs.setdefault("FourBunchDigitization", False)
93 
94  from RngComps.RngCompsConfig import AthRNGSvcCfg
95  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
96  kwargs.setdefault("PileUpMergeSvc", '')
97  TgcDigitizationTool = CompFactory.TgcDigitizationTool
98  acc.setPrivateTools(TgcDigitizationTool(name, **kwargs))
99  return acc
100 
101 
102 def TGC_OutputCfg(flags):
103  """Return ComponentAccumulator with Output for TGC. Not standalone."""
104  acc = ComponentAccumulator()
105  if flags.Output.doWriteRDO:
106  ItemList = ["TgcRdoContainer#*"]
107  if flags.Digitization.EnableTruth:
108  ItemList += ["MuonSimDataCollection#*"]
109  acc.merge(TruthDigitizationOutputCfg(flags))
110  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
111  return acc
112 
113 
114 def TGC_DigitizationBasicCfg(flags, **kwargs):
115  """Return ComponentAccumulator for TGC digitization"""
116  acc = MuonGeoModelCfg(flags)
117  if "PileUpTools" not in kwargs:
118  PileUpTools = acc.popToolsAndMerge(TGC_DigitizationToolCfg(flags))
119  kwargs["PileUpTools"] = PileUpTools
120  acc.merge(PileUpToolsCfg(flags, **kwargs))
121  return acc
122 
123 
124 def TGC_OverlayDigitizationBasicCfg(flags, **kwargs):
125  """Return ComponentAccumulator with TGC Overlay digitization"""
126  acc = MuonGeoModelCfg(flags)
127  if flags.Common.ProductionStep != ProductionStep.FastChain:
128  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
129  acc.merge(SGInputLoaderCfg(flags, ["TGCSimHitCollection#TGC_Hits"]))
130 
131  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(TGC_OverlayDigitizationToolCfg(flags)))
132 
133  if flags.Concurrency.NumThreads > 0:
134  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
135 
136  # Set common overlay extra inputs
137  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
138 
139  the_alg = CompFactory.MuonDigitizer(name="TGC_OverlayDigitizer", **kwargs)
140  acc.addEventAlgo(the_alg)
141  return acc
142 
143 
144 # with output defaults
145 def TGC_DigitizationCfg(flags, **kwargs):
146  """Return ComponentAccumulator for TGC digitization and Output"""
147  acc = TGC_DigitizationBasicCfg(flags, **kwargs)
148  acc.merge(TGC_OutputCfg(flags))
149  return acc
150 
151 
153  """Return ComponentAccumulator with TGC digitization and Digit to TGCRDO"""
154  acc = TGC_DigitizationCfg(flags)
155  acc.merge(TGCCablingConfigCfg(flags))
156  acc.merge(TgcDigitToTgcRDOCfg(flags))
157  return acc
TgcDigitizationTool
Definition: TgcDigitizationTool.h:41
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.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
python.TGC_DigitizationConfig.TGC_OverlayDigitizationToolCfg
def TGC_OverlayDigitizationToolCfg(flags, name="Tgc_OverlayDigitizationTool", **kwargs)
Definition: TGC_DigitizationConfig.py:77
python.MuonCablingConfig.TGCCablingConfigCfg
def TGCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:74
python.MuonCondAlgConfig.TgcDigitCondAlgCfg
def TgcDigitCondAlgCfg(flags)
Definition: MuonCondAlgConfig.py:171
python.TGC_DigitizationConfig.TGC_FirstXing
def TGC_FirstXing()
Definition: TGC_DigitizationConfig.py:19
python.TGC_DigitizationConfig.TGC_DigitizationToolCfg
def TGC_DigitizationToolCfg(flags, name="TgcDigitizationTool", **kwargs)
Definition: TGC_DigitizationConfig.py:36
python.TGC_DigitizationConfig.TGC_DigitizationBasicCfg
def TGC_DigitizationBasicCfg(flags, **kwargs)
Definition: TGC_DigitizationConfig.py:114
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.TGC_DigitizationConfig.TGC_RangeCfg
def TGC_RangeCfg(flags, name="TGC_Range", **kwargs)
Definition: TGC_DigitizationConfig.py:27
python.TGC_DigitizationConfig.TGC_LastXing
def TGC_LastXing()
Definition: TGC_DigitizationConfig.py:23
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
python.TGC_DigitizationConfig.TGC_OutputCfg
def TGC_OutputCfg(flags)
Definition: TGC_DigitizationConfig.py:102
python.TGC_DigitizationConfig.TGC_OverlayDigitizationBasicCfg
def TGC_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: TGC_DigitizationConfig.py:124
python.TGC_DigitizationConfig.TGC_DigitizationCfg
def TGC_DigitizationCfg(flags, **kwargs)
Definition: TGC_DigitizationConfig.py:145
python.TGC_DigitizationConfig.TGC_DigitizationDigitToRDOCfg
def TGC_DigitizationDigitToRDOCfg(flags)
Definition: TGC_DigitizationConfig.py:152
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.MuonByteStreamCnvTestConfig.TgcDigitToTgcRDOCfg
def TgcDigitToTgcRDOCfg(flags, name="TgcDigitToTgcRDO", **kwargs)
Definition: MuonByteStreamCnvTestConfig.py:175
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
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51