ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
HighGranularityTimingDetector
HGTD_Digitization
HGTD_Digitization
python
HGTD_DigitizationConfig.py
Go to the documentation of this file.
1
"""Define methods to construct configured HGTD Digitization tools and algorithms
2
3
Copyright (C) 2002-2025 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
OutputStreamAthenaPool.OutputStreamConfig
import
OutputStreamCfg
12
from
HGTD_Calibration.HGTD_CalibrationConfig
import
HGTD_TdcCalibrationToolCfg
13
14
# The earliest bunch crossing time for which interactions will be sent
15
# to the HGTD Digitization code.
16
def
HGTD_FirstXing
():
17
return
0
18
# The latest bunch crossing time for which interactions will be sent
19
# to the HGTD Digitization code.
20
def
HGTD_LastXing
():
21
return
0
22
# NOTE: related to 3BC mode?
23
24
25
def
HGTD_FrontEndToolCfg
(flags, name="HGTD_FrontEndTool", **kwargs):
26
acc = ComponentAccumulator()
27
28
acc.setPrivateTools(CompFactory.HGTD_FrontEndTool(name, **kwargs))
29
return
acc
30
31
32
def
HGTD_SurfaceChargesGeneratorCfg
(flags, name="HGTD_SurfaceChargesGenerator", **kwargs):
33
acc = ComponentAccumulator()
34
35
from
HGTD_Calibration.HGTD_CalibrationConfig
import
HGTD_TimeResolutionToolCfg
36
37
kwargs.setdefault(
"ActiveTimeWindow"
, 1.25)
38
kwargs.setdefault(
"SmearMeanTime"
,
True
)
39
kwargs.setdefault(
"TimeResolutionTool"
, acc.popToolsAndMerge(
40
HGTD_TimeResolutionToolCfg(flags)))
41
acc.setPrivateTools(CompFactory.HGTD_SurfaceChargesGenerator(name, **kwargs))
42
return
acc
43
44
45
def
HGTD_DigitizationBasicToolCfg
(flags, name="HGTD_DigitizationBasicTool", **kwargs):
46
"""Return ComponentAccumulator with configured HGTD_DigitizationTool"""
47
if
flags.HGTD.Geometry.useGeoModelXml:
48
from
HGTD_GeoModelXml.HGTD_GeoModelConfig
import
HGTD_ReadoutGeometryCfg
49
else
:
50
from
HGTD_GeoModel.HGTD_GeoModelConfig
import
HGTD_ReadoutGeometryCfg
51
acc = HGTD_ReadoutGeometryCfg(flags)
52
# set up tool handles
53
kwargs.setdefault(
"FrontEnd"
, acc.popToolsAndMerge(
HGTD_FrontEndToolCfg
(flags)))
54
kwargs.setdefault(
"SurfaceChargesGenerator"
, acc.popToolsAndMerge(
HGTD_SurfaceChargesGeneratorCfg
(flags)))
55
kwargs.setdefault(
"HGTD_TdcCalibrationTool"
, acc.popToolsAndMerge(HGTD_TdcCalibrationToolCfg(flags)))
56
kwargs.setdefault(
"InputObjectName"
,
"HGTD_Hits"
)
57
kwargs.setdefault(
"HGTDDetEleCollKey"
,
"HGTD_DetectorElementCollection"
)
58
if
flags.Digitization.DoXingByXingPileUp:
59
kwargs.setdefault(
"FirstXing"
,
HGTD_FirstXing
())
60
kwargs.setdefault(
"LastXing"
,
HGTD_LastXing
())
61
from
RngComps.RngCompsConfig
import
AthRNGSvcCfg
62
kwargs.setdefault(
"RndmSvc"
, acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
63
64
acc.setPrivateTools(CompFactory.HGTD_DigitizationTool(name, **kwargs))
65
return
acc
66
67
68
def
HGTD_DigitizationToolCfg
(flags, name="HGTD_DigitizationTool", **kwargs):
69
"""Return ComponentAccumulator with configured HGTD_DigitizationBasicTool"""
70
acc = ComponentAccumulator()
71
72
if
flags.Digitization.PileUp:
73
intervals = []
74
if
not
flags.Digitization.DoXingByXingPileUp:
75
intervals += [acc.popToolsAndMerge(
HGTD_RangeCfg
(flags))]
76
kwargs.setdefault(
"MergeSvc"
, acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
77
else
:
78
kwargs.setdefault(
"MergeSvc"
,
""
)
79
kwargs.setdefault(
"OnlyUseContainerName"
, flags.Digitization.PileUp)
80
if
flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
81
if
flags.HGTD.outputAltirocRDO:
82
kwargs.setdefault(
"AltirocOutputObject"
, f
"{flags.Overlay.BkgPrefix}HGTD_ALTIROC_RDOs"
)
83
kwargs.setdefault(
"OutputObjectName"
, f
"{flags.Overlay.BkgPrefix}HGTD_RDOs"
)
84
kwargs.setdefault(
"OutputSDOName"
, f
"{flags.Overlay.BkgPrefix}HGTD_SDO_Map"
)
85
else
:
86
if
flags.HGTD.outputAltirocRDO:
87
kwargs.setdefault(
"AltirocOutputObject"
,
"HGTD_ALTIROC_RDOs"
)
88
kwargs.setdefault(
"OutputObjectName"
,
"HGTD_RDOs"
)
89
kwargs.setdefault(
"OutputSDOName"
,
"HGTD_SDO_Map"
)
90
pileupTool = acc.popToolsAndMerge(
HGTD_DigitizationBasicToolCfg
(flags, name, **kwargs))
91
acc.setPrivateTools(pileupTool)
92
return
acc
93
94
95
def
HGTD_OverlayDigitizationToolCfg
(flags, name="HGTD_OverlayDigitizationTool", **kwargs):
96
"""Return ComponentAccumulator with HGTD_DigitizationTool configured for overlay"""
97
kwargs.setdefault(
"OnlyUseContainerName"
,
False
)
98
kwargs.setdefault(
"OutputSDOName"
, f
"{flags.Overlay.SigPrefix}HGTD_SDO_Map"
)
99
kwargs.setdefault(
"MergeSvc"
,
""
)
100
kwargs.setdefault(
"OutputObjectName"
, f
"{flags.Overlay.SigPrefix}HGTD_RDOs"
)
101
if
flags.HGTD.outputAltirocRDO:
102
kwargs.setdefault(
"AltirocOutputObject"
, f
"{flags.Overlay.SigPrefix}HGTD_ALTIROC_RDOs"
)
103
return
HGTD_DigitizationBasicToolCfg
(flags, name, **kwargs)
104
105
106
def
HGTD_RangeCfg
(flags, name="HGTD_Range", **kwargs):
107
"""Return a configured PileUpXingFolder tool"""
108
kwargs.setdefault(
"FirstXing"
,
HGTD_FirstXing
())
109
kwargs.setdefault(
"LastXing"
,
HGTD_LastXing
())
110
kwargs.setdefault(
"CacheRefreshFrequency"
, 1.0)
# default 0 no dataproxy reset
111
kwargs.setdefault(
"ItemList"
, [
"SiHitCollection#HGTD_Hits"
])
112
return
PileUpXingFolderCfg(flags, name, **kwargs)
113
114
115
def
HGTD_OutputCfg
(flags):
116
"""Return ComponentAccumulator with Output for HGTD. Not standalone."""
117
acc = ComponentAccumulator()
118
if
flags.Output.doWriteRDO:
119
ItemList = [
"HGTD_RDO_Container#*"
]
120
if
flags.HGTD.outputAltirocRDO:
121
ItemList += [
"HGTD_ALTIROC_RDO_Container#*"
]
122
if
flags.Digitization.EnableTruth:
123
ItemList += [
"InDetSimDataCollection#*"
]
124
acc.merge(TruthDigitizationOutputCfg(flags))
125
acc.merge(OutputStreamCfg(flags,
"RDO"
, ItemList))
126
return
acc
127
128
129
def
HGTD_DigitizationBasicCfg
(flags, **kwargs):
130
"""Return ComponentAccumulator for HGTD digitization"""
131
acc = ComponentAccumulator()
132
if
"PileUpTools"
not
in
kwargs:
133
kwargs[
"PileUpTools"
] = acc.popToolsAndMerge(
HGTD_DigitizationToolCfg
(flags))
134
acc.merge(PileUpToolsCfg(flags, **kwargs))
135
return
acc
136
137
138
def
HGTD_OverlayDigitizationBasicCfg
(flags, **kwargs):
139
"""Return ComponentAccumulator with HGTD Overlay digitization"""
140
acc = ComponentAccumulator()
141
if
flags.Common.ProductionStep != ProductionStep.FastChain:
142
from
SGComps.SGInputLoaderConfig
import
SGInputLoaderCfg
143
acc.merge(SGInputLoaderCfg(flags, [
"SiHitCollection#HGTD_Hits"
]))
144
145
if
"DigitizationTool"
not
in
kwargs:
146
kwargs[
"DigitizationTool"
] = acc.popToolsAndMerge(
HGTD_OverlayDigitizationToolCfg
(flags))
147
148
if
flags.Concurrency.NumThreads > 0:
149
kwargs.setdefault(
"Cardinality"
, flags.Concurrency.NumThreads)
150
151
# Set common overlay extra inputs
152
kwargs.setdefault(
"ExtraInputs"
, flags.Overlay.ExtraInputs)
153
154
acc.addEventAlgo(CompFactory.HGTD_Digitization(name=
"HGTD_OverlayDigitization"
, **kwargs))
155
return
acc
156
157
158
# with output defaults
159
def
HGTD_DigitizationCfg
(flags, **kwargs):
160
"""Return ComponentAccumulator for HGTD digitization and Output"""
161
acc =
HGTD_DigitizationBasicCfg
(flags, **kwargs)
162
acc.merge(
HGTD_OutputCfg
(flags))
163
return
acc
HGTD_DigitizationConfig.HGTD_OverlayDigitizationBasicCfg
HGTD_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition
HGTD_DigitizationConfig.py:138
HGTD_DigitizationConfig.HGTD_FrontEndToolCfg
HGTD_FrontEndToolCfg(flags, name="HGTD_FrontEndTool", **kwargs)
Definition
HGTD_DigitizationConfig.py:25
HGTD_DigitizationConfig.HGTD_DigitizationBasicCfg
HGTD_DigitizationBasicCfg(flags, **kwargs)
Definition
HGTD_DigitizationConfig.py:129
HGTD_DigitizationConfig.HGTD_OutputCfg
HGTD_OutputCfg(flags)
Definition
HGTD_DigitizationConfig.py:115
HGTD_DigitizationConfig.HGTD_DigitizationCfg
HGTD_DigitizationCfg(flags, **kwargs)
Definition
HGTD_DigitizationConfig.py:159
HGTD_DigitizationConfig.HGTD_FirstXing
HGTD_FirstXing()
Definition
HGTD_DigitizationConfig.py:16
HGTD_DigitizationConfig.HGTD_OverlayDigitizationToolCfg
HGTD_OverlayDigitizationToolCfg(flags, name="HGTD_OverlayDigitizationTool", **kwargs)
Definition
HGTD_DigitizationConfig.py:95
HGTD_DigitizationConfig.HGTD_SurfaceChargesGeneratorCfg
HGTD_SurfaceChargesGeneratorCfg(flags, name="HGTD_SurfaceChargesGenerator", **kwargs)
Definition
HGTD_DigitizationConfig.py:32
HGTD_DigitizationConfig.HGTD_DigitizationBasicToolCfg
HGTD_DigitizationBasicToolCfg(flags, name="HGTD_DigitizationBasicTool", **kwargs)
Definition
HGTD_DigitizationConfig.py:45
HGTD_DigitizationConfig.HGTD_LastXing
HGTD_LastXing()
Definition
HGTD_DigitizationConfig.py:20
HGTD_DigitizationConfig.HGTD_RangeCfg
HGTD_RangeCfg(flags, name="HGTD_Range", **kwargs)
Definition
HGTD_DigitizationConfig.py:106
HGTD_DigitizationConfig.HGTD_DigitizationToolCfg
HGTD_DigitizationToolCfg(flags, name="HGTD_DigitizationTool", **kwargs)
Definition
HGTD_DigitizationConfig.py:68
Generated on
for ATLAS Offline Software by
1.17.0