ATLAS Offline Software
Loading...
Searching...
No Matches
BCM_DigitizationConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured BCM Digitization tools and algs
2
3Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import ProductionStep
8from RngComps.RngCompsConfig import AthRNGSvcCfg
9from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
10from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
11from DigitizationConfig.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg
12from DigitizationConfig.PileUpToolsConfig import PileUpToolsCfg
13from 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
26def 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
36def 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)))
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)))
69
70 BCM_DigitizationTool = CompFactory.BCM_DigitizationTool
71 acc.setPrivateTools(BCM_DigitizationTool(name, **kwargs))
72 return acc
73
74
75def 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)))
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
91def 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
101def 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
113def 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
123def 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
146def 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
153def 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
Pileup tool for BCM digitization.
Top algorithm class for BCM digitization.
BCM_DigitizationBasicCfg(flags, **kwargs)
BCM_DigitizationToolCommonCfg(flags, name="BCM_DigitizationTool", **kwargs)
BCM_OverlayDigitizationCfg(flags, **kwargs)
BCM_RangeCfg(flags, name="BCM_Range", **kwargs)
BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs)
BCM_OverlayDigitizationBasicCfg(flags, name="BCM_OverlayDigitization", **kwargs)
BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs)