ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
AFP
AFP_Digitization
python
AFP_DigitizationConfig.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
#==============================================================
4
# Job options file for the AFP_Digitization package
5
#==============================================================
6
7
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
8
from
AthenaConfiguration.ComponentFactory
import
CompFactory
9
from
AthenaConfiguration.Enums
import
ProductionStep
10
from
DigitizationConfig.PileUpMergeSvcConfig
import
PileUpMergeSvcCfg, PileUpXingFolderCfg
11
12
13
# The earliest bunch crossing time for which interactions will be sent to the AFP Digitization code.
14
def
AFP_FirstXing
():
15
return
0
#Assume AFP is only sensitive to the current bunch crossing, for the moment
16
17
18
# The latest bunch crossing time for which interactions will be sent to the AFP Digitization code.
19
def
AFP_LastXing
():
20
return
0
#Assume AFP is only sensitive to the current bunch crossing, for the moment
21
22
23
def
AFP_SIDPUXinfFolderCfg
(flags, name="AFP_SIDXinfFolder", **kwargs):
24
"""Return a PileUpXingFoldertool for AFP SID"""
25
# bunch crossing range in ns
26
kwargs.setdefault(
"FirstXing"
,
AFP_FirstXing
())
27
kwargs.setdefault(
"LastXing"
,
AFP_LastXing
())
28
kwargs.setdefault(
"ItemList"
, [
"AFP_SIDSimHitCollection#AFP_SIDSimHitCollection"
])
29
return
PileUpXingFolderCfg(flags, name, **kwargs)
30
31
32
def
AFP_TDPUXinfFolderCfg
(flags, name="AFP_TDXinfFolder", **kwargs):
33
"""Return a PileUpXingFoldertool for AFP TD"""
34
# bunch crossing range in ns
35
kwargs.setdefault(
"FirstXing"
,
AFP_FirstXing
())
36
kwargs.setdefault(
"LastXing"
,
AFP_LastXing
())
37
kwargs.setdefault(
"ItemList"
, [
"AFP_TDSimHitCollection#AFP_TDSimHitCollection"
])
38
return
PileUpXingFolderCfg(flags, name, **kwargs)
39
40
41
def
AFP_DigitizationToolCfg
(flags, name="AFP_PileUpTool", **kwargs):
42
"""Return ComponentAccumulator with AFP digitization tool."""
43
acc = ComponentAccumulator()
44
45
if
flags.Digitization.PileUp:
46
intervals = []
47
if
flags.Digitization.DoXingByXingPileUp:
48
kwargs.setdefault(
"FirstXing"
,
AFP_FirstXing
())
49
kwargs.setdefault(
"LastXing"
,
AFP_LastXing
())
50
else
:
51
intervals += [acc.popToolsAndMerge(
AFP_SIDPUXinfFolderCfg
(flags))]
52
intervals += [acc.popToolsAndMerge(
AFP_TDPUXinfFolderCfg
(flags))]
53
kwargs.setdefault(
"mergeSvc"
, acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
54
kwargs.setdefault(
"OnlyUseContainerName"
,
True
)
55
else
:
56
kwargs.setdefault(
"mergeSvc"
,
''
)
57
kwargs.setdefault(
"OnlyUseContainerName"
,
False
)
58
59
from
RngComps.RngCompsConfig
import
AthRNGSvcCfg
60
kwargs.setdefault(
"RndmSvc"
, acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
61
62
acc.setPrivateTools(CompFactory.AFP_PileUpTool(name, **kwargs))
63
return
acc
64
65
66
def
AFP_OverlayDigitizationToolCfg
(flags, name="AFP_OverlayDigitizationTool", **kwargs):
67
"""Return ComponentAccumulator with AFP_DigitizationTool for Overlay"""
68
acc = ComponentAccumulator()
69
kwargs.setdefault(
"mergeSvc"
,
''
)
70
kwargs.setdefault(
"OnlyUseContainerName"
,
False
)
71
tool = acc.popToolsAndMerge(
AFP_DigitizationToolCfg
(flags, name, **kwargs))
72
acc.setPrivateTools(tool)
73
return
acc
74
75
76
def
AFP_DigitizationOutputCfg
(flags):
77
"""Return ComponentAccumulator with Output for AFP. Not standalone."""
78
acc = ComponentAccumulator()
79
if
flags.Output.doWriteRDO:
80
ItemList = [
"AFP_TDDigiCollection#AFP_TDDigiCollection"
,
81
"AFP_SiDigiCollection#AFP_SiDigiCollection"
,
82
"xAOD::AFPSiHitContainer#AFPSiHitContainer"
,
"xAOD::AFPSiHitAuxContainer#AFPSiHitContainerAux."
,
83
"xAOD::AFPToFHitContainer#AFPToFHitContainer"
,
"xAOD::AFPToFHitAuxContainer#AFPToFHitContainerAux."
]
84
from
OutputStreamAthenaPool.OutputStreamConfig
import
OutputStreamCfg
85
acc.merge(OutputStreamCfg(flags,
"RDO"
, ItemList))
86
return
acc
87
88
89
def
AFP_DigitizationBasicCfg
(flags, **kwargs):
90
"""Return ComponentAccumulator for AFP digitization"""
91
acc = ComponentAccumulator()
92
if
"PileUpTools"
not
in
kwargs:
93
PileUpTools = acc.popToolsAndMerge(
AFP_DigitizationToolCfg
(flags))
94
kwargs[
"PileUpTools"
] = PileUpTools
95
from
DigitizationConfig.PileUpToolsConfig
import
PileUpToolsCfg
96
acc.merge(PileUpToolsCfg(flags, **kwargs))
97
return
acc
98
99
100
def
AFP_OverlayDigitizationBasicCfg
(flags, **kwargs):
101
"""Return ComponentAccumulator with AFP_DigiTop."""
102
acc = ComponentAccumulator()
103
if
flags.Common.ProductionStep != ProductionStep.FastChain:
104
from
SGComps.SGInputLoaderConfig
import
SGInputLoaderCfg
105
acc.merge(SGInputLoaderCfg(flags,Load={(
'AFP_TDSimHitCollection'
,
'StoreGateSvc+AFP_TDSimHitCollection'
),
106
(
'AFP_SIDSimHitCollection'
,
'StoreGateSvc+AFP_SIDSimHitCollection'
)} ) )
107
if
"DigitizationTool"
not
in
kwargs:
108
kwargs.setdefault(
"DigitizationTool"
, acc.popToolsAndMerge(
AFP_OverlayDigitizationToolCfg
(flags)))
109
110
if
flags.Concurrency.NumThreads > 0:
111
kwargs.setdefault(
"Cardinality"
, flags.Concurrency.NumThreads)
112
113
# Set common overlay extra inputs
114
kwargs.setdefault(
"ExtraInputs"
, flags.Overlay.ExtraInputs)
115
116
acc.addEventAlgo(CompFactory.AFP_DigiTop(
"AFP_DigiTop"
, **kwargs))
117
return
acc
118
119
120
def
AFP_DigitizationCfg
(flags, **kwargs):
121
"""Return ComponentAccumulator for AFP digitization and Output"""
122
acc = ComponentAccumulator()
123
acc.merge(
AFP_DigitizationBasicCfg
(flags, **kwargs))
124
acc.merge(
AFP_DigitizationOutputCfg
(flags))
125
126
return
acc
127
128
129
def
AFP_DigitizationOverlayCfg
(flags, **kwargs):
130
"""Return ComponentAccumulator for AFP digitization and Output"""
131
acc = ComponentAccumulator()
132
acc.merge(
AFP_OverlayDigitizationBasicCfg
(flags, **kwargs))
133
acc.merge(
AFP_DigitizationOutputCfg
(flags))
134
135
return
acc
AFP_DigitizationConfig.AFP_OverlayDigitizationToolCfg
AFP_OverlayDigitizationToolCfg(flags, name="AFP_OverlayDigitizationTool", **kwargs)
Definition
AFP_DigitizationConfig.py:66
AFP_DigitizationConfig.AFP_DigitizationCfg
AFP_DigitizationCfg(flags, **kwargs)
Definition
AFP_DigitizationConfig.py:120
AFP_DigitizationConfig.AFP_DigitizationBasicCfg
AFP_DigitizationBasicCfg(flags, **kwargs)
Definition
AFP_DigitizationConfig.py:89
AFP_DigitizationConfig.AFP_TDPUXinfFolderCfg
AFP_TDPUXinfFolderCfg(flags, name="AFP_TDXinfFolder", **kwargs)
Definition
AFP_DigitizationConfig.py:32
AFP_DigitizationConfig.AFP_OverlayDigitizationBasicCfg
AFP_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition
AFP_DigitizationConfig.py:100
AFP_DigitizationConfig.AFP_SIDPUXinfFolderCfg
AFP_SIDPUXinfFolderCfg(flags, name="AFP_SIDXinfFolder", **kwargs)
Definition
AFP_DigitizationConfig.py:23
AFP_DigitizationConfig.AFP_LastXing
AFP_LastXing()
Definition
AFP_DigitizationConfig.py:19
AFP_DigitizationConfig.AFP_FirstXing
AFP_FirstXing()
Definition
AFP_DigitizationConfig.py:14
AFP_DigitizationConfig.AFP_DigitizationOverlayCfg
AFP_DigitizationOverlayCfg(flags, **kwargs)
Definition
AFP_DigitizationConfig.py:129
AFP_DigitizationConfig.AFP_DigitizationOutputCfg
AFP_DigitizationOutputCfg(flags)
Definition
AFP_DigitizationConfig.py:76
AFP_DigitizationConfig.AFP_DigitizationToolCfg
AFP_DigitizationToolCfg(flags, name="AFP_PileUpTool", **kwargs)
Definition
AFP_DigitizationConfig.py:41
Generated on
for ATLAS Offline Software by
1.17.0