10def TileDigitsMakerCfg(flags, **kwargs):
11 """Return component accumulator with configured Tile digits maker algorithm
12
13 Arguments:
14 flags -- Athena configuration flags
15 Keyword arguments:
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.
21 """
22
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)
28
29 acc = TileHitVecToCntCfg(flags)
30
31 from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
32 infoLoaderAcc = TileInfoLoaderCfg(flags)
33 infoLoader = infoLoaderAcc.getPrimary()
34 acc.merge( infoLoaderAcc )
35
36 infoLoaderProperties = infoLoader._properties.items()
37
38 if 'TileNoise' in infoLoaderProperties:
39 tileNoise = infoLoaderProperties['TileNoise']
40 else:
41 tileNoise = infoLoader._descriptors['TileNoise'].default
42
43 if 'TileCoherNoise' in infoLoaderProperties:
44 tileCoherNoise = infoLoaderProperties['TileCoherNoise']
45 else:
46 tileCoherNoise = infoLoader._descriptors['TileCoherNoise'].default
47
48 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
49 acc.merge(TileCablingSvcCfg(flags))
50
51 from TileConditions.TileSampleNoiseConfig import TileSampleNoiseCondAlgCfg
52 acc.merge( TileSampleNoiseCondAlgCfg(flags) )
53
54 from TileConditions.TileEMScaleConfig import TileEMScaleCondAlgCfg
55 acc.merge( TileEMScaleCondAlgCfg(flags) )
56
57 from TileConditions.TileSamplingFractionConfig import TileSamplingFractionCondAlgCfg
58 acc.merge( TileSamplingFractionCondAlgCfg(flags) )
59
60 if kwargs['RndmEvtOverlay']:
61 tileNoise = False
62 tileCoherNoise = False
63
64 kwargs['InputTileDigitContainer'] = f'{flags.Overlay.BkgPrefix}TileDigitsCnt'
65 kwargs['TileDQstatus'] = 'TileDQstatus'
66
67 if flags.Overlay.ByteStream:
68 from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
69 acc.merge(TileRawDataReadingCfg(flags, readMuRcv=False))
70 else:
71 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
72 acc.merge(SGInputLoaderCfg(flags, [f'TileDigitsContainer#{kwargs["InputTileDigitContainer"]}']))
73
74 from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
75 acc.merge(TileDQstatusAlgCfg(flags))
76
77 if tileNoise or tileCoherNoise or kwargs['RndmEvtOverlay']:
78 if 'RndmSvc' not in kwargs:
79 from RngComps.RngCompsConfig import AthRNGSvcCfg
80 kwargs['RndmSvc'] = acc.getPrimaryAndMerge( AthRNGSvcCfg(flags) )
81 else:
82 kwargs['RndmSvc'] = None
83
84 if kwargs['UseCoolPulseShapes']:
85 from TileConditions.TilePulseShapeConfig import TilePulseShapeCondAlgCfg
86 acc.merge( TilePulseShapeCondAlgCfg(flags) )
87
88 if kwargs['MaskBadChannels'] or kwargs['RndmEvtOverlay']:
89 from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
90 acc.merge( TileBadChannelsCondAlgCfg(flags) )
91
92 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
93 kwargs.setdefault('TileDigitsContainer', flags.Overlay.BkgPrefix + 'TileDigitsCnt')
94 else:
95 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt')
96
97 kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.EnableCaloHSTruthRecoInputs)
98 if kwargs['DoHSTruthReconstruction']:
99 kwargs.setdefault('TileHitContainer_DigiHSTruth', 'TileHitCnt_DigiHSTruth')
100 kwargs.setdefault('TileDigitsContainer_DigiHSTruth', 'TileDigitsCnt_DigiHSTruth')
101 else:
102 kwargs.setdefault('TileHitContainer_DigiHSTruth', '')
103 kwargs.setdefault('TileDigitsContainer_DigiHSTruth', '')
104
105
106 kwargs.setdefault('IntegerDigits', flags.Common.ProductionStep != ProductionStep.PileUpPresampling)
107
108 TileDigitsMaker=CompFactory.TileDigitsMaker
110
111 acc.addEventAlgo(digitsMaker, primary = True)
112
113 return acc
114
This algorithm performs digitization in TileCal, obtaining TileDigits from TileHits.