ATLAS Offline Software
MM_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured MM 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 DigitizationConfig.PileUpMergeSvcConfig import PileUpMergeSvcCfg, PileUpXingFolderCfg
9 from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
10 from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
11 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
12 from MuonConfig.MuonByteStreamCnvTestConfig import MM_DigitToRDOCfg
13 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
14 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
15 
16 # The earliest and last bunch crossing times for which interactions will be sent
17 # to the MMDigitizationTool.
19  return -200
20 
21 
23  return 200
24 
25 
26 def MM_RangeCfg(flags, name="MMRange", **kwargs):
27  """Return a PileUpXingFolder tool configured for MM"""
28  kwargs.setdefault("FirstXing", MM_FirstXing())
29  kwargs.setdefault("LastXing", MM_LastXing())
30  kwargs.setdefault("CacheRefreshFrequency", 1.0)
31  if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.TypedCollections:
32  kwargs.setdefault("ItemList", ["MMSimHitCollection#MicromegasSensitiveDetector"])
33  else:
34  kwargs.setdefault("ItemList", ["MMSimHitCollection#MM_Hits"])
35  return PileUpXingFolderCfg(flags, name, **kwargs)
36 
37 
38 def MM_DigitizationToolCfg(flags, name="MM_DigitizationTool", **kwargs):
39  """Return ComponentAccumulator with configured MM_DigitizationTool"""
40  from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg, MMCalibSmearingToolCfg
41  result = ComponentAccumulator()
42  kwargs.setdefault("CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
43  kwargs.setdefault("SmearingTool", result.popToolsAndMerge(MMCalibSmearingToolCfg(flags)))
44  result.merge(AtlasFieldCacheCondAlgCfg(flags))
45  if flags.Digitization.PileUp:
46  intervals = []
47  if flags.Digitization.DoXingByXingPileUp:
48  kwargs.setdefault("FirstXing", MM_FirstXing())
49  kwargs.setdefault("LastXing", MM_LastXing())
50  else:
51  intervals += [result.popToolsAndMerge(MM_RangeCfg(flags))]
52  kwargs.setdefault("MergeSvc", result.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
53  else:
54  kwargs.setdefault("MergeSvc", '')
55  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
56  kwargs.setdefault("CheckSimHits", True)
57  if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.TypedCollections:
58  kwargs.setdefault("InputObjectName", "MicromegasSensitiveDetector")
59  else:
60  kwargs.setdefault("InputObjectName", "MM_Hits")
61  kwargs.setdefault("OutputObjectName", "MM_DIGITS")
62  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
63  kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "MM_SDO")
64  else:
65  kwargs.setdefault("OutputSDOName", "MM_SDO")
66  from RngComps.RngCompsConfig import AthRNGSvcCfg
67  kwargs.setdefault("RndmSvc", result.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
68  result.setPrivateTools(CompFactory.MM_DigitizationTool(name, **kwargs))
69  return result
70 
71 
72 def MM_OverlayDigitizationToolCfg(flags, name="MM_OverlayDigitizationTool", **kwargs):
73  """Return ComponentAccumulator with MM_DigitizationTool configured for Overlay"""
75  from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg, MMCalibSmearingToolCfg
76  kwargs.setdefault("CalibrationTool", acc.popToolsAndMerge(NSWCalibToolCfg(flags)))
77  kwargs.setdefault("SmearingTool", acc.popToolsAndMerge(MMCalibSmearingToolCfg(flags)))
78  acc.merge(AtlasFieldCacheCondAlgCfg(flags))
79  kwargs.setdefault("MergeSvc", '')
80  kwargs.setdefault("CheckSimHits", True)
81  kwargs.setdefault("OnlyUseContainerName", False)
82  if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.SecondaryTypedCollections:
83  kwargs.setdefault("InputObjectName", "MicromegasSensitiveDetector")
84  else:
85  kwargs.setdefault("InputObjectName", "MM_Hits")
86  kwargs.setdefault("OutputObjectName", flags.Overlay.SigPrefix + "MM_DIGITS")
87  kwargs.setdefault("OutputSDOName", flags.Overlay.SigPrefix + "MM_SDO")
88  from RngComps.RngCompsConfig import AthRNGSvcCfg
89  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
90  acc.setPrivateTools(CompFactory.MM_DigitizationTool(name, **kwargs))
91  return acc
92 
93 
94 def MM_OutputCfg(flags):
95  """Return ComponentAccumulator with Output for MM. Not standalone."""
96  acc = ComponentAccumulator()
97  if flags.Output.doWriteRDO:
98  ItemList = ["Muon::MM_RawDataContainer#*"]
99  if flags.Digitization.EnableTruth:
100  ItemList += ["MuonSimDataCollection#*"]
101  acc.merge(TruthDigitizationOutputCfg(flags))
102  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
103  return acc
104 
105 
106 def MM_DigitizationBasicCfg(flags, **kwargs):
107  """Return ComponentAccumulator for MM digitization"""
108  acc = MuonGeoModelCfg(flags)
109  if "PileUpTools" not in kwargs:
110  PileUpTools = acc.popToolsAndMerge(MM_DigitizationToolCfg(flags))
111  kwargs["PileUpTools"] = PileUpTools
112  acc.merge(PileUpToolsCfg(flags, **kwargs))
113  return acc
114 
115 
116 def MM_OverlayDigitizationBasicCfg(flags, **kwargs):
117  """Return ComponentAccumulator with MM Overlay digitization"""
118  acc = MuonGeoModelCfg(flags)
119  if flags.Common.ProductionStep != ProductionStep.FastChain:
120  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
121  if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.SecondaryTypedCollections:
122  acc.merge(SGInputLoaderCfg(flags, ["MMSimHitCollection#MicromegasSensitiveDetector"]))
123  else:
124  acc.merge(SGInputLoaderCfg(flags, ["MMSimHitCollection#MM_Hits"]))
125 
126  kwargs.setdefault("DigitizationTool", acc.popToolsAndMerge(MM_OverlayDigitizationToolCfg(flags)))
127 
128  if flags.Concurrency.NumThreads > 0:
129  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
130 
131  # Set common overlay extra inputs
132  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
133 
134  acc.addEventAlgo(CompFactory.MuonDigitizer(name="MM_OverlayDigitizer", **kwargs))
135  return acc
136 
137 
138 # with output defaults
139 def MM_DigitizationCfg(flags, **kwargs):
140  """Return ComponentAccumulator for MM digitization and Output"""
141  acc = MM_DigitizationBasicCfg(flags, **kwargs)
142  acc.merge(MM_OutputCfg(flags))
143  return acc
144 
145 
147  """Return ComponentAccumulator with TGC digitization and Digit to TGCRDO"""
148  acc = MM_DigitizationCfg(flags)
149  acc.merge(MM_DigitToRDOCfg(flags))
150  return acc
python.MM_DigitizationConfig.MM_OverlayDigitizationBasicCfg
def MM_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: MM_DigitizationConfig.py:116
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.MM_DigitizationConfig.MM_DigitizationToolCfg
def MM_DigitizationToolCfg(flags, name="MM_DigitizationTool", **kwargs)
Definition: MM_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.MuonByteStreamCnvTestConfig.MM_DigitToRDOCfg
def MM_DigitToRDOCfg(flags, name="MM_DigitToRDO", **kwargs)
Definition: MuonByteStreamCnvTestConfig.py:244
python.MM_DigitizationConfig.MM_OutputCfg
def MM_OutputCfg(flags)
Definition: MM_DigitizationConfig.py:94
python.TruthDigitizationOutputConfig.TruthDigitizationOutputCfg
def TruthDigitizationOutputCfg(flags)
Definition: TruthDigitizationOutputConfig.py:9
python.MM_DigitizationConfig.MM_RangeCfg
def MM_RangeCfg(flags, name="MMRange", **kwargs)
Definition: MM_DigitizationConfig.py:26
python.MM_DigitizationConfig.MM_OverlayDigitizationToolCfg
def MM_OverlayDigitizationToolCfg(flags, name="MM_OverlayDigitizationTool", **kwargs)
Definition: MM_DigitizationConfig.py:72
python.MM_DigitizationConfig.MM_FirstXing
def MM_FirstXing()
Definition: MM_DigitizationConfig.py:18
python.MM_DigitizationConfig.MM_DigitizationBasicCfg
def MM_DigitizationBasicCfg(flags, **kwargs)
Definition: MM_DigitizationConfig.py:106
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.MM_DigitizationConfig.MM_LastXing
def MM_LastXing()
Definition: MM_DigitizationConfig.py:22
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
python.MuonCalibrationConfig.MMCalibSmearingToolCfg
def MMCalibSmearingToolCfg(flags, name="MMCalibSmearingTool", **kwargs)
Definition: MuonCalibrationConfig.py:158
python.MM_DigitizationConfig.MM_DigitizationDigitToRDOCfg
def MM_DigitizationDigitToRDOCfg(flags)
Definition: MM_DigitizationConfig.py:146
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.PileUpMergeSvcConfig.PileUpXingFolderCfg
def PileUpXingFolderCfg(flags, name="PileUpXingFolder", **kwargs)
Definition: PileUpMergeSvcConfig.py:35
python.MagFieldServicesConfig.AtlasFieldCacheCondAlgCfg
def AtlasFieldCacheCondAlgCfg(flags, **kwargs)
Definition: MagFieldServicesConfig.py:8
python.PileUpMergeSvcConfig.PileUpMergeSvcCfg
def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs)
Definition: PileUpMergeSvcConfig.py:10
python.MM_DigitizationConfig.MM_DigitizationCfg
def MM_DigitizationCfg(flags, **kwargs)
Definition: MM_DigitizationConfig.py:139
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51