3 """Define method to construct configured Tile digits maker algorithm"""
5 from TileSimAlgs.TileHitVecToCntConfig
import TileHitVecToCntCfg
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import ProductionStep
8 from TileConfiguration.TileConfigFlags
import TileRunType
11 """Return component accumulator with configured Tile digits maker algorithm
14 flags -- Athena configuration flags
16 name -- name of TileDigitsMaker algorithm. Defaults to TileDigitsMaker.
17 UseCoolPulseShapes -- flag to use pulse shape from database. Defaults to True.
18 RndmEvtOverlay -- flag to add PileUp or noise by overlaying random events.
19 True if flag.Common.isOverlay equals to True.
20 MaskBadChannels -- flag to mask channels tagged bad. Defaults to False.
23 kwargs.setdefault(
'name',
'TileDigitsMaker')
24 kwargs.setdefault(
'UseCoolPulseShapes',
True)
25 kwargs.setdefault(
'MaskBadChannels',
False)
26 kwargs.setdefault(
'RndmEvtOverlay', flags.Common.isOverlay)
27 kwargs.setdefault(
'OnlyUseContainerName',
not flags.Common.isOverlay)
31 from TileConditions.TileInfoLoaderConfig
import TileInfoLoaderCfg
33 infoLoader = infoLoaderAcc.getPrimary()
34 acc.merge( infoLoaderAcc )
36 infoLoaderProperties = infoLoader._properties.items()
38 if 'TileNoise' in infoLoaderProperties:
39 tileNoise = infoLoaderProperties[
'TileNoise']
41 tileNoise = infoLoader._descriptors[
'TileNoise'].default
43 if 'TileCoherNoise' in infoLoaderProperties:
44 tileCoherNoise = infoLoaderProperties[
'TileCoherNoise']
46 tileCoherNoise = infoLoader._descriptors[
'TileCoherNoise'].default
48 from TileConditions.TileCablingSvcConfig
import TileCablingSvcCfg
51 from TileConditions.TileSampleNoiseConfig
import TileSampleNoiseCondAlgCfg
54 from TileConditions.TileEMScaleConfig
import TileEMScaleCondAlgCfg
57 from TileConditions.TileSamplingFractionConfig
import TileSamplingFractionCondAlgCfg
60 if kwargs[
'RndmEvtOverlay']:
62 tileCoherNoise =
False
64 if flags.Overlay.DataOverlay:
65 from TileByteStream.TileByteStreamConfig
import TileRawDataReadingCfg
68 from TileRecUtils.TileDQstatusConfig
import TileDQstatusAlgCfg
71 kwargs[
'InputTileDigitContainer'] = f
'{flags.Overlay.BkgPrefix}TileDigitsCnt'
72 kwargs[
'TileDQstatus'] =
'TileDQstatus'
74 if not flags.Overlay.DataOverlay:
75 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
76 acc.merge(
SGInputLoaderCfg(flags, [f
'TileDigitsContainer#{kwargs["InputTileDigitContainer"]}']))
78 if tileNoise
or tileCoherNoise
or kwargs[
'RndmEvtOverlay']:
79 if 'RndmSvc' not in kwargs:
80 from RngComps.RngCompsConfig
import AthRNGSvcCfg
81 kwargs[
'RndmSvc'] = acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags) ).name
83 kwargs[
'RndmSvc'] =
None
85 if kwargs[
'UseCoolPulseShapes']:
86 from TileConditions.TilePulseShapeConfig
import TilePulseShapeCondAlgCfg
89 if kwargs[
'MaskBadChannels']
or kwargs[
'RndmEvtOverlay']:
90 from TileConditions.TileBadChannelsConfig
import TileBadChannelsCondAlgCfg
93 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
94 kwargs.setdefault(
'TileDigitsContainer', flags.Overlay.BkgPrefix +
'TileDigitsCnt')
96 kwargs.setdefault(
'TileDigitsContainer',
'TileDigitsCnt')
98 kwargs.setdefault(
'DoHSTruthReconstruction', flags.Digitization.EnableCaloHSTruthRecoInputs)
99 if kwargs[
'DoHSTruthReconstruction']:
100 kwargs.setdefault(
'TileHitContainer_DigiHSTruth',
'TileHitCnt_DigiHSTruth')
101 kwargs.setdefault(
'TileDigitsContainer_DigiHSTruth',
'TileDigitsCnt_DigiHSTruth')
103 kwargs.setdefault(
'TileHitContainer_DigiHSTruth',
'')
104 kwargs.setdefault(
'TileDigitsContainer_DigiHSTruth',
'')
107 kwargs.setdefault(
'IntegerDigits', flags.Common.ProductionStep != ProductionStep.PileUpPresampling)
109 TileDigitsMaker=CompFactory.TileDigitsMaker
112 acc.addEventAlgo(digitsMaker, primary =
True)
117 """Return component accumulator with configured Tile digits maker algorithm and Output Stream
120 flags -- Athena configuration flags
122 name -- name of TileDigitsMaker algorithm. Defaults to TileDigitsMaker.
123 UseCoolPulseShapes -- flag to use pulse shape from database. Defaults to True.
124 RndmEvtOverlay -- flag to add PileUp or noise by overlaying random events.
125 True if Common.ProductionStep equals to ProductionStep.Overlay.
126 MaskBadChannels -- flag to mask channels tagged bad. Defaults to False.
130 tileDigitsMaker = acc.getPrimary()
132 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
133 if hasattr(tileDigitsMaker,
'TileDigitsContainer'):
134 tileDigitsContainer = tileDigitsMaker.TileDigitsContainer
136 tileDigitsContainer = tileDigitsMaker.getDefaultProperty(
'TileDigitsContainer')
138 if hasattr(tileDigitsMaker,
'TileFilteredContainer'):
139 tileDigitsContainer = tileDigitsMaker.TileFilteredContainer
141 tileDigitsContainer = tileDigitsMaker.getDefaultProperty(
'TileFilteredContainer')
143 tileDigitsContainer =
str(tileDigitsContainer).
split(
'+').pop()
144 if flags.Digitization.AddCaloDigi:
145 outputItemList = [
'TileDigitsContainer#*']
147 outputItemList = [
'TileDigitsContainer#' + tileDigitsContainer]
149 if flags.Output.doWriteRDO:
150 if flags.Digitization.EnableTruth:
151 outputItemList += [
"CaloCalibrationHitContainer#*"]
152 from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
154 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
155 acc.merge(
OutputStreamCfg(flags, streamName =
'RDO', ItemList = outputItemList) )
160 if __name__ ==
"__main__":
162 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
163 from AthenaConfiguration.TestDefaults
import defaultConditionsTags, defaultTestFiles
164 from AthenaCommon.Logging
import log
171 flags.Input.Files = defaultTestFiles.HITS_RUN2
172 flags.Tile.RunType = TileRunType.PHY
173 flags.Output.RDOFileName =
'myRDO-TileDigitsMaker.pool.root'
174 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_MC
175 flags.Digitization.PileUp =
False
176 flags.Exec.MaxEvents = 3
184 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
187 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
190 if 'EventInfo' not in flags.Input.Collections:
191 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
193 inputKey=
'McEventInfo',
194 outputKey=
'EventInfo'))
198 acc.printConfig(withDetails =
True, summariseProps =
True)
199 acc.store(
open(
'TileDigitsMaker.pkl',
'wb') )
204 sys.exit(
not sc.isSuccess())