15def TileAANtupleCfg(flags, outputFile='', saveTMDB=True, **kwargs):
16 ''' Function to configure TileAANtuple algorithm.'''
17
18
19 cisRun = flags.Tile.RunType is TileRunType.CIS
20 laserRun = flags.Tile.RunType is TileRunType.LAS
21 pedestalRun = flags.Tile.RunType is TileRunType.PED
22 physicsRun = flags.Tile.RunType is TileRunType.PHY
23
24 readDigits = flags.Tile.readDigits
25
26 kwargs.setdefault('UseDspUnits', False)
27 useDspUnits = kwargs['UseDspUnits']
28
29 offlineUnits = 3
30 if useDspUnits:
31 offlineUnits = -1
32 elif cisRun:
33 offlineUnits = 0
34 elif not (pedestalRun or physicsRun):
35 offlineUnits = 1
36
37 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt' if readDigits else "")
38 kwargs.setdefault('TileDigitsContainerFlt', 'TileDigitsFlt' if not readDigits else "")
39 kwargs.setdefault('TileRawChannelContainer', flags.Tile.RawChannelContainer)
40 kwargs.setdefault('TileRawChannelContainerFit', 'TileRawChannelFit' if flags.Tile.doFit else "")
41 kwargs.setdefault('TileRawChannelContainerFitCool', 'TileRawChannelFitCool' if flags.Tile.doFitCOOL else "")
42 kwargs.setdefault('TileRawChannelContainerOpt', "")
43 kwargs.setdefault('TileRawChannelContainerQIE', 'TileRawChannelQIE' if flags.Tile.doQIE else "")
44 kwargs.setdefault('TileRawChannelContainerOF1', 'TileRawChannelOF1' if flags.Tile.doOF1 else "")
45 kwargs.setdefault('TileRawChannelContainerMF', 'TileRawChannelMF' if flags.Tile.doMF else "")
46 kwargs.setdefault('TileRawChannelContainerWiener', "")
47 kwargs.setdefault('TileRawChannelContainerDsp', "")
48 kwargs.setdefault('TileLaserObject', 'TileLaserObj' if laserRun else "")
49 kwargs.setdefault('TileBeamElemContainer', 'TileBeamElemCnt' if not physicsRun else "")
50
51 kwargs.setdefault('TileMuRcvRawChannelContainer', 'MuRcvRawChCnt' if saveTMDB else "")
52 kwargs.setdefault('TileMuRcvDigitsContainer', 'MuRcvDigitsCnt' if saveTMDB else "")
53 kwargs.setdefault('TileMuRcvContainer', "TileMuRcvCnt" if saveTMDB else "")
54
55 kwargs.setdefault('CheckDCS', flags.Tile.useDCS)
56 kwargs.setdefault('BSInput', flags.Input.Format is Format.BS and not physicsRun)
57 kwargs.setdefault('CalibMode', pedestalRun or cisRun)
58 kwargs.setdefault('CalibrateEnergy', flags.Input.isMC or useDspUnits or not cisRun)
59 kwargs.setdefault('OfflineUnits', offlineUnits)
60
61 acc = ComponentAccumulator()
62
63 from TileGeoModel.TileGMConfig import TileGMCfg
64 acc.merge(TileGMCfg(flags))
65
66 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
67 acc.merge(LArGMCfg(flags))
68
69 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
70 acc.merge( TileCablingSvcCfg(flags) )
71
72 if 'TileBadChanTool' not in kwargs:
73 from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
74 acc.merge( TileBadChannelsCondAlgCfg(flags) )
75
76 if 'TileCondToolEmscale' not in kwargs:
77 from TileConditions.TileEMScaleConfig import TileCondToolEmscaleCfg
78 emScaleTool = acc.popToolsAndMerge( TileCondToolEmscaleCfg(flags) )
79 kwargs['TileCondToolEmscale'] = emScaleTool
80
81 if kwargs['CheckDCS']:
82 from TileConditions.TileDCSConfig import TileDCSCondAlgCfg
83 acc.merge( TileDCSCondAlgCfg(flags) )
84
85 from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
86 acc.merge( TileDQstatusAlgCfg(flags) )
87
88 if not outputFile:
89 run = str(flags.Input.RunNumbers[0])
90 outputFile = 'tile_{}.aan.root'.format(run)
91 histsvc = CompFactory.THistSvc()
92 histsvc.Output += ["%s DATAFILE='%s' OPT='RECREATE'" % ('AANT', outputFile)]
93 acc.addService(histsvc)
94
95 TileAANtuple = CompFactory.TileAANtuple
96 acc.addEventAlgo(
TileAANtuple(
'TileNtuple', **kwargs), primary =
True)
97
98 return acc
99
100
class to produce TileCal commissioning ntuples