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' if not flags.Overlay.IgnoreBkgInputs else ""
65 kwargs['TileDQstatus'] = 'TileDQstatus'
66
67 if kwargs['InputTileDigitContainer']:
68 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
69 acc.merge(SGInputLoaderCfg(flags, [f'TileDigitsContainer#{kwargs["InputTileDigitContainer"]}']))
70
71 from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
72 acc.merge(TileDQstatusAlgCfg(flags))
73
74 if tileNoise or tileCoherNoise or kwargs['RndmEvtOverlay']:
75 if 'RndmSvc' not in kwargs:
76 from RngComps.RngCompsConfig import AthRNGSvcCfg
77 kwargs['RndmSvc'] = acc.getPrimaryAndMerge( AthRNGSvcCfg(flags) )
78 else:
79 kwargs['RndmSvc'] = None
80
81 if kwargs['UseCoolPulseShapes']:
82 from TileConditions.TilePulseShapeConfig import TilePulseShapeCondAlgCfg
83 acc.merge( TilePulseShapeCondAlgCfg(flags) )
84
85 if kwargs['MaskBadChannels'] or kwargs['RndmEvtOverlay']:
86 from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
87 acc.merge( TileBadChannelsCondAlgCfg(flags) )
88
89 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
90 kwargs.setdefault('TileDigitsContainer', flags.Overlay.BkgPrefix + 'TileDigitsCnt')
91 else:
92 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt')
93
94 kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.EnableCaloHSTruthRecoInputs)
95 if kwargs['DoHSTruthReconstruction']:
96 kwargs.setdefault('TileHitContainer_DigiHSTruth', 'TileHitCnt_DigiHSTruth')
97 kwargs.setdefault('TileDigitsContainer_DigiHSTruth', 'TileDigitsCnt_DigiHSTruth')
98 else:
99 kwargs.setdefault('TileHitContainer_DigiHSTruth', '')
100 kwargs.setdefault('TileDigitsContainer_DigiHSTruth', '')
101
102
103 kwargs.setdefault('IntegerDigits', flags.Common.ProductionStep != ProductionStep.PileUpPresampling)
104
105 TileDigitsMaker=CompFactory.TileDigitsMaker
107
108 acc.addEventAlgo(digitsMaker, primary = True)
109
110 return acc
111
This algorithm performs digitization in TileCal, obtaining TileDigits from TileHits.