ATLAS Offline Software
BCM_DigitizationConfig.py
Go to the documentation of this file.
1 """Define methods to construct configured BCM Digitization tools and algs
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 RngComps.RngCompsConfig import AthRNGSvcCfg
9 from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
10 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
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 BCM Digitization code.
19  return -25
20 
21 
23  return 0
24 
25 
26 def BCM_RangeCfg(flags, name="BCM_Range", **kwargs):
27  """Return a BCM configured PileUpXingFolder tool"""
28  kwargs.setdefault("FirstXing", BCM_FirstXing())
29  kwargs.setdefault("LastXing", BCM_LastXing())
30  # Default 0 no dataproxy reset
31  kwargs.setdefault("CacheRefreshFrequency", 1.0)
32  kwargs.setdefault("ItemList", ["SiHitCollection#BCMHits"])
33  return PileUpXingFolderCfg(flags, name, **kwargs)
34 
35 
36 def BCM_DigitizationToolCommonCfg(flags, name="BCM_DigitizationTool", **kwargs):
37  """Return a ComponentAccumulator with configured BCM_DigitizationTool"""
38  acc = ComponentAccumulator()
39  kwargs.setdefault("RndmSvc",
40  acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
41  kwargs.setdefault("HitCollName", "BCMHits")
42  if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
43  kwargs.setdefault("OutputRDOKey", flags.Overlay.BkgPrefix + "BCM_RDOs")
44  kwargs.setdefault("OutputSDOKey", flags.Overlay.BkgPrefix + "BCM_SDO_Map")
45  elif flags.Common.isOverlay:
46  kwargs.setdefault("OnlyUseContainerName", False)
47  kwargs.setdefault("OutputRDOKey", flags.Overlay.SigPrefix + "BCM_RDOs")
48  kwargs.setdefault("OutputSDOKey", flags.Overlay.SigPrefix + "BCM_SDO_Map")
49  else:
50  kwargs.setdefault("OutputRDOKey", "BCM_RDOs")
51  kwargs.setdefault("OutputSDOKey", "BCM_SDO_Map")
52  if flags.Digitization.DoInnerDetectorNoise:
53  kwargs.setdefault("ModNoise", [90.82] * 8)
54  else:
55  kwargs.setdefault("ModNoise", [0.0] * 8)
56  kwargs.setdefault("ModSignal", [450.0] * 8)
57  kwargs.setdefault("NinoThr", [330.0] * 8)
58  # BCM with diamond
59  kwargs.setdefault("MIPDeposit", 0.33)
60  # Alternative BCM with graphite
61  # kwargs.setdefault("MIPDeposit", 0.25)
62  kwargs.setdefault("EffDistanceParam", 4.0)
63  kwargs.setdefault("EffSharpnessParam", 0.11)
64  kwargs.setdefault("TimeDelay", 9.0)
65  if flags.Digitization.DoXingByXingPileUp:
66  kwargs.setdefault("FirstXing", BCM_FirstXing())
67  kwargs.setdefault("LastXing", BCM_LastXing())
68  kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)).name)
69 
70  BCM_DigitizationTool = CompFactory.BCM_DigitizationTool
71  acc.setPrivateTools(BCM_DigitizationTool(name, **kwargs))
72  return acc
73 
74 
75 def BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs):
76  """Return ComponentAccumulator with BCM_DigitizationTool for non-overlay"""
77  acc = ComponentAccumulator()
78  if flags.Digitization.PileUp:
79  intervals = []
80  if not flags.Digitization.DoXingByXingPileUp:
81  intervals += [acc.popToolsAndMerge(BCM_RangeCfg(flags))]
82  kwargs.setdefault("MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
83  else:
84  kwargs.setdefault("MergeSvc", '')
85  kwargs.setdefault("OnlyUseContainerName", flags.Digitization.PileUp)
86  tool = acc.popToolsAndMerge(BCM_DigitizationToolCommonCfg(flags, name, **kwargs))
87  acc.setPrivateTools(tool)
88  return acc
89 
90 
91 def BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs):
92  """Return ComponentAccumulator with BCM_DigitizationTool for Overlay"""
93  acc = ComponentAccumulator()
94  kwargs.setdefault("MergeSvc", '')
95  kwargs.setdefault("OnlyUseContainerName", False)
96  tool = acc.popToolsAndMerge(BCM_DigitizationToolCommonCfg(flags, name, **kwargs))
97  acc.setPrivateTools(tool)
98  return acc
99 
100 
101 def BCM_OutputCfg(flags):
102  """Return ComponentAccumulator with Output for BCM. Not standalone."""
103  acc = ComponentAccumulator()
104  if flags.Output.doWriteRDO:
105  ItemList = ["BCM_RDO_Container#*"]
106  if flags.Digitization.EnableTruth:
107  ItemList += ["InDetSimDataCollection#*"]
108  acc.merge(TruthDigitizationOutputCfg(flags))
109  acc.merge(OutputStreamCfg(flags, "RDO", ItemList))
110  return acc
111 
112 
113 def BCM_DigitizationBasicCfg(flags, **kwargs):
114  """Return ComponentAccumulator for BCM digitization"""
115  acc = PixelReadoutGeometryCfg(flags)
116  if "PileUpTools" not in kwargs:
117  PileUpTools = acc.popToolsAndMerge(BCM_DigitizationToolCfg(flags))
118  kwargs["PileUpTools"] = PileUpTools
119  acc.merge(PileUpToolsCfg(flags, **kwargs))
120  return acc
121 
122 
123 def BCM_OverlayDigitizationBasicCfg(flags, name="BCM_OverlayDigitization", **kwargs):
124  """Return ComponentAccumulator with BCM Overlay digitization"""
125  acc = PixelReadoutGeometryCfg(flags)
126  if flags.Common.ProductionStep != ProductionStep.FastChain:
127  from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
128  acc.merge(SGInputLoaderCfg(flags, ["SiHitCollection#BCMHits"]))
129 
130  if "DigitizationTool" not in kwargs:
131  tool = acc.popToolsAndMerge(BCM_OverlayDigitizationToolCfg(flags))
132  kwargs["DigitizationTool"] = tool
133 
134  if flags.Concurrency.NumThreads > 0:
135  kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
136 
137  # Set common overlay extra inputs
138  kwargs.setdefault("ExtraInputs", flags.Overlay.ExtraInputs)
139 
140  BCM_Digitization = CompFactory.BCM_Digitization
141  acc.addEventAlgo(BCM_Digitization(name, **kwargs))
142  return acc
143 
144 
145 # with output defaults
146 def BCM_DigitizationCfg(flags, **kwargs):
147  """Return ComponentAccumulator for BCM digitization and Output"""
148  acc = BCM_DigitizationBasicCfg(flags, **kwargs)
149  acc.merge(BCM_OutputCfg(flags))
150  return acc
151 
152 
153 def BCM_OverlayDigitizationCfg(flags, **kwargs):
154  """Return ComponentAccumulator with BCM Overlay digitization and Output"""
155  acc = BCM_OverlayDigitizationBasicCfg(flags, **kwargs)
156  acc.merge(BCM_OutputCfg(flags))
157  return acc
BCM_Digitization
Top algorithm class for BCM digitization.
Definition: BCM_Digitization.h:14
BCM_DigitizationConfig.BCM_FirstXing
def BCM_FirstXing()
Definition: BCM_DigitizationConfig.py:18
BCM_DigitizationConfig.BCM_OverlayDigitizationCfg
def BCM_OverlayDigitizationCfg(flags, **kwargs)
Definition: BCM_DigitizationConfig.py:153
BCM_DigitizationTool
Pileup tool for BCM digitization.
Definition: BCM_DigitizationTool.h:34
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
BCM_DigitizationConfig.BCM_OverlayDigitizationBasicCfg
def BCM_OverlayDigitizationBasicCfg(flags, name="BCM_OverlayDigitization", **kwargs)
Definition: BCM_DigitizationConfig.py:123
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
BCM_DigitizationConfig.BCM_OutputCfg
def BCM_OutputCfg(flags)
Definition: BCM_DigitizationConfig.py:101
BCM_DigitizationConfig.BCM_DigitizationToolCfg
def BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs)
Definition: BCM_DigitizationConfig.py:75
BCM_DigitizationConfig.BCM_DigitizationCfg
def BCM_DigitizationCfg(flags, **kwargs)
Definition: BCM_DigitizationConfig.py:146
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
BCM_DigitizationConfig.BCM_DigitizationBasicCfg
def BCM_DigitizationBasicCfg(flags, **kwargs)
Definition: BCM_DigitizationConfig.py:113
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
PixelGeoModelConfig.PixelReadoutGeometryCfg
def PixelReadoutGeometryCfg(flags)
Definition: PixelGeoModelConfig.py:42
BCM_DigitizationConfig.BCM_LastXing
def BCM_LastXing()
Definition: BCM_DigitizationConfig.py:22
BCM_DigitizationConfig.BCM_DigitizationToolCommonCfg
def BCM_DigitizationToolCommonCfg(flags, name="BCM_DigitizationTool", **kwargs)
Definition: BCM_DigitizationConfig.py:36
BCM_DigitizationConfig.BCM_RangeCfg
def BCM_RangeCfg(flags, name="BCM_Range", **kwargs)
Definition: BCM_DigitizationConfig.py:26
BCM_DigitizationConfig.BCM_OverlayDigitizationToolCfg
def BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs)
Definition: BCM_DigitizationConfig.py:91
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