1"""Define methods to construct configured HGTD Digitization tools and algorithms
3Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.Enums
import ProductionStep
8from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
9from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
10from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
11from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
12from HGTD_Calibration.HGTD_CalibrationConfig
import HGTD_TdcCalibrationToolCfg
26 acc = ComponentAccumulator()
28 acc.setPrivateTools(CompFactory.HGTD_FrontEndTool(name, **kwargs))
33 acc = ComponentAccumulator()
35 from HGTD_Calibration.HGTD_CalibrationConfig
import HGTD_TimeResolutionToolCfg
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))
46 """Return ComponentAccumulator with configured HGTD_DigitizationTool"""
47 if flags.HGTD.Geometry.useGeoModelXml:
48 from HGTD_GeoModelXml.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
50 from HGTD_GeoModel.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
51 acc = HGTD_ReadoutGeometryCfg(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:
61 from RngComps.RngCompsConfig
import AthRNGSvcCfg
62 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
64 acc.setPrivateTools(CompFactory.HGTD_DigitizationTool(name, **kwargs))
69 """Return ComponentAccumulator with configured HGTD_DigitizationBasicTool"""
70 acc = ComponentAccumulator()
72 if flags.Digitization.PileUp:
74 if not flags.Digitization.DoXingByXingPileUp:
76 kwargs.setdefault(
"MergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
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")
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")
91 acc.setPrivateTools(pileupTool)
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")
107 """Return a configured PileUpXingFolder tool"""
110 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
111 kwargs.setdefault(
"ItemList", [
"SiHitCollection#HGTD_Hits"])
112 return PileUpXingFolderCfg(flags, name, **kwargs)
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))
130 """Return ComponentAccumulator for HGTD digitization"""
131 acc = ComponentAccumulator()
132 if "PileUpTools" not in kwargs:
134 acc.merge(PileUpToolsCfg(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"]))
145 if "DigitizationTool" not in kwargs:
148 if flags.Concurrency.NumThreads > 0:
149 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
152 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
154 acc.addEventAlgo(CompFactory.HGTD_Digitization(name=
"HGTD_OverlayDigitization", **kwargs))
160 """Return ComponentAccumulator for HGTD digitization and Output"""
HGTD_DigitizationBasicCfg(flags, **kwargs)
HGTD_SurfaceChargesGeneratorCfg(flags, name="HGTD_SurfaceChargesGenerator", **kwargs)
HGTD_FrontEndToolCfg(flags, name="HGTD_FrontEndTool", **kwargs)
HGTD_DigitizationToolCfg(flags, name="HGTD_DigitizationTool", **kwargs)
HGTD_RangeCfg(flags, name="HGTD_Range", **kwargs)
HGTD_OverlayDigitizationBasicCfg(flags, **kwargs)
HGTD_DigitizationCfg(flags, **kwargs)
HGTD_DigitizationBasicToolCfg(flags, name="HGTD_DigitizationBasicTool", **kwargs)
HGTD_OverlayDigitizationToolCfg(flags, name="HGTD_OverlayDigitizationTool", **kwargs)