9def TilePulseForTileMuonReceiverCfg(flags, **kwargs):
10 """Return component accumulator with configured Tile muon receiver algorithm
11
12 Arguments:
13 flags -- Athena configuration flags
14 """
15
16 kwargs.setdefault('name', 'TilePulseForTileMuonReceiver')
17 kwargs.setdefault('TileHitContainer', 'TileHitCnt')
18 kwargs.setdefault('MuonReceiverRawChannelContainer', 'MuRcvRawChCnt')
19 kwargs.setdefault('MaskBadChannels', False)
20 kwargs.setdefault('UseCoolPulseShapes', True)
21 kwargs.setdefault('UseCoolPedestal', False)
22 kwargs.setdefault('UseCoolNoise', False)
23 kwargs.setdefault('TilePulseShape', 'TileMuRcvPulseShape')
24
25 acc = TileHitVecToCntCfg(flags)
26
27 from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
28 acc.merge( TileInfoLoaderCfg(flags) )
29 infoLoader = acc.getService('TileInfoLoader')
30 pedestal = infoLoader._descriptors['MuRcvPed'].default
31
32 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
33 acc.merge(TileCablingSvcCfg(flags))
34
35 from TileConditions.TileSamplingFractionConfig import TileSamplingFractionCondAlgCfg
36 acc.merge( TileSamplingFractionCondAlgCfg(flags) )
37
38 if 'RndmSvc' not in kwargs:
39 from RngComps.RngCompsConfig import AthRNGSvcCfg
40 kwargs['RndmSvc'] = acc.getPrimaryAndMerge(AthRNGSvcCfg(flags))
41
42 if kwargs['UseCoolNoise'] or kwargs['UseCoolPedestal']:
43 from TileConditions.TileSampleNoiseConfig import TileSampleNoiseCondAlgCfg
44 acc.merge( TileSampleNoiseCondAlgCfg(flags) )
45
46 from TileConditions.TileEMScaleConfig import TileEMScaleCondAlgCfg
47 acc.merge( TileEMScaleCondAlgCfg(flags) )
48
49 if kwargs['MaskBadChannels']:
50 from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
51 acc.merge( TileBadChannelsCondAlgCfg(flags) )
52
53 if kwargs['UseCoolPulseShapes']:
54 from TileConditions.TilePulseShapeConfig import TilePulseShapeCondAlgCfg
55 acc.merge( TilePulseShapeCondAlgCfg(flags, Source='FILE', TilePulseShape=kwargs['TilePulseShape'], PulseType='MURCV') )
56
57 if 'TileRawChannelBuilderMF' not in kwargs:
58 from TileConditions.TilePulseShapeConfig import TileCondToolMuRcvPulseShapeCfg
59 pulseShapeTool = acc.popToolsAndMerge( TileCondToolMuRcvPulseShapeCfg(flags) )
60
61 from TileConditions.TileOFCConfig import TileCondToolOfcCfg
62 ofcTool = acc.popToolsAndMerge( TileCondToolOfcCfg(flags,
63 OptFilterDeltaCorrelation = True,
64 TileCondToolPulseShape = pulseShapeTool) )
65
66
67 from TileRecUtils.TileRawChannelBuilderMFConfig import TileRawChannelBuilderMFCfg
68 rawChanBuilder = acc.popToolsAndMerge( TileRawChannelBuilderMFCfg(flags, MF = 1,
69 PedestalMode = 0,
70 DefaultPedestal = pedestal,
71 TileCondToolOfcOnFly = ofcTool,
72 TileCondToolOfc = ofcTool,
73 TileRawChannelContainer = "") )
74 kwargs['TileRawChannelBuilderMF'] = rawChanBuilder
75
76
77 kwargs.setdefault('IntegerDigits', flags.Common.ProductionStep != ProductionStep.PileUpPresampling)
78
79 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
80 kwargs.setdefault('MuonReceiverDigitsContainer', flags.Overlay.BkgPrefix + 'MuRcvDigitsCnt')
81 else:
82 kwargs.setdefault('MuonReceiverDigitsContainer', 'MuRcvDigitsCnt')
83
84 if flags.Common.isOverlay and flags.Concurrency.NumThreads > 0:
85 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
86
87 TilePulseForTileMuonReceiver=CompFactory.TilePulseForTileMuonReceiver
89
90 return acc
91
92