ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDigitization
BCM_Digitization
python
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.
18
def
BCM_FirstXing
():
19
return
-25
20
21
22
def
BCM_LastXing
():
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)))
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
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)))
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_DigitizationTool
Pileup tool for BCM digitization.
Definition
BCM_DigitizationTool.h:34
BCM_Digitization
Top algorithm class for BCM digitization.
Definition
BCM_Digitization.h:14
BCM_DigitizationConfig.BCM_LastXing
BCM_LastXing()
Definition
BCM_DigitizationConfig.py:22
BCM_DigitizationConfig.BCM_FirstXing
BCM_FirstXing()
Definition
BCM_DigitizationConfig.py:18
BCM_DigitizationConfig.BCM_DigitizationToolCfg
BCM_DigitizationToolCfg(flags, name="BCM_DigitizationTool", **kwargs)
Definition
BCM_DigitizationConfig.py:75
BCM_DigitizationConfig.BCM_OverlayDigitizationToolCfg
BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs)
Definition
BCM_DigitizationConfig.py:91
BCM_DigitizationConfig.BCM_OverlayDigitizationCfg
BCM_OverlayDigitizationCfg(flags, **kwargs)
Definition
BCM_DigitizationConfig.py:153
BCM_DigitizationConfig.BCM_DigitizationBasicCfg
BCM_DigitizationBasicCfg(flags, **kwargs)
Definition
BCM_DigitizationConfig.py:113
BCM_DigitizationConfig.BCM_DigitizationToolCommonCfg
BCM_DigitizationToolCommonCfg(flags, name="BCM_DigitizationTool", **kwargs)
Definition
BCM_DigitizationConfig.py:36
BCM_DigitizationConfig.BCM_RangeCfg
BCM_RangeCfg(flags, name="BCM_Range", **kwargs)
Definition
BCM_DigitizationConfig.py:26
BCM_DigitizationConfig.BCM_DigitizationCfg
BCM_DigitizationCfg(flags, **kwargs)
Definition
BCM_DigitizationConfig.py:146
BCM_DigitizationConfig.BCM_OverlayDigitizationBasicCfg
BCM_OverlayDigitizationBasicCfg(flags, name="BCM_OverlayDigitization", **kwargs)
Definition
BCM_DigitizationConfig.py:123
BCM_DigitizationConfig.BCM_OutputCfg
BCM_OutputCfg(flags)
Definition
BCM_DigitizationConfig.py:101
Generated on
for ATLAS Offline Software by
1.17.0