ATLAS Offline Software
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.
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.
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)).name)
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)).name)
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 
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
def AFP_OverlayDigitizationToolCfg(flags, name="AFP_OverlayDigitizationTool", **kwargs)
Definition: AFP_DigitizationConfig.py:66
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
AFP_DigitizationConfig.AFP_OverlayDigitizationBasicCfg
def AFP_OverlayDigitizationBasicCfg(flags, **kwargs)
Definition: AFP_DigitizationConfig.py:100
AFP_DigitizationConfig.AFP_DigitizationToolCfg
def AFP_DigitizationToolCfg(flags, name="AFP_PileUpTool", **kwargs)
Definition: AFP_DigitizationConfig.py:41
AFP_DigitizationConfig.AFP_DigitizationBasicCfg
def AFP_DigitizationBasicCfg(flags, **kwargs)
Definition: AFP_DigitizationConfig.py:89
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.PileUpToolsConfig.PileUpToolsCfg
def PileUpToolsCfg(flags, **kwargs)
Definition: PileUpToolsConfig.py:14
AFP_DigitizationConfig.AFP_FirstXing
def AFP_FirstXing()
Definition: AFP_DigitizationConfig.py:14
AFP_DigitizationConfig.AFP_TDPUXinfFolderCfg
def AFP_TDPUXinfFolderCfg(flags, name="AFP_TDXinfFolder", **kwargs)
Definition: AFP_DigitizationConfig.py:32
AFP_DigitizationConfig.AFP_DigitizationOutputCfg
def AFP_DigitizationOutputCfg(flags)
Definition: AFP_DigitizationConfig.py:76
AFP_DigitizationConfig.AFP_SIDPUXinfFolderCfg
def AFP_SIDPUXinfFolderCfg(flags, name="AFP_SIDXinfFolder", **kwargs)
Definition: AFP_DigitizationConfig.py:23
AFP_DigitizationConfig.AFP_DigitizationOverlayCfg
def AFP_DigitizationOverlayCfg(flags, **kwargs)
Definition: AFP_DigitizationConfig.py:129
python.PileUpMergeSvcConfig.PileUpXingFolderCfg
def PileUpXingFolderCfg(flags, name="PileUpXingFolder", **kwargs)
Definition: PileUpMergeSvcConfig.py:35
AFP_DigitizationConfig.AFP_DigitizationCfg
def AFP_DigitizationCfg(flags, **kwargs)
Definition: AFP_DigitizationConfig.py:120
python.PileUpMergeSvcConfig.PileUpMergeSvcCfg
def PileUpMergeSvcCfg(flags, name="PileUpMergeSvc", Intervals=[], **kwargs)
Definition: PileUpMergeSvcConfig.py:10
AFP_DigitizationConfig.AFP_LastXing
def AFP_LastXing()
Definition: AFP_DigitizationConfig.py:19
RngCompsConfig.AthRNGSvcCfg
def AthRNGSvcCfg(flags, name="AthRNGSvc")
Definition: RngCompsConfig.py:51