33def TileTBAANtupleCfg(flags, outputFile='', useFELIX=None, **kwargs):
34
35 ''' Function to configure TileTBAANtuple algorithm.'''
36
37 cisRun = flags.Tile.RunType is TileRunType.CIS
38 monoRun = flags.Tile.RunType is TileRunType.MONOCIS
39 pedestalRun = flags.Tile.RunType is TileRunType.PED
40
41
42 offlineUnits = 0 if cisRun or monoRun or pedestalRun else 3
43 calibrateEnergy = (offlineUnits != 0)
44
45 run = flags.Input.RunNumbers[0]
46
47 if useFELIX is None:
48 useFELIX = True if run > 2310438 else False
49
50 TBperiod = getTileTBperiod(run, useFELIX) if not flags.Input.isMC else 2003
51
52 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt')
53 kwargs.setdefault('TileBeamElemContainer', 'TileBeamElemCnt' if not flags.Input.isMC else "")
54 kwargs.setdefault('TileRawChannelContainerFlat', "")
55 kwargs.setdefault('TileRawChannelContainerFit', 'TileRawChannelFit' if flags.Tile.doFit else "")
56 kwargs.setdefault('TileRawChannelContainerOpt', "TileRawChannelOpt2" if flags.Tile.doOpt2 else "")
57 kwargs.setdefault('TileRawChannelContainerDsp', "")
58 kwargs.setdefault('TileRawChannelContainerFitCool', 'TileRawChannelFitCool' if flags.Tile.doFitCOOL else "")
59
60 kwargs.setdefault('TileDigitsContainerFlx', 'TileDigitsFlxCnt' if useFELIX else "")
61 kwargs.setdefault('TileRawChannelContainerFitFlx', 'TileRawChannelFlxFit' if useFELIX and flags.Tile.doFit else "")
62 kwargs.setdefault('TileRawChannelContainerOptFlx', 'TileRawChannelFlxOpt2' if useFELIX and flags.Tile.doOpt2 else "")
63
64 kwargs.setdefault('TileHitContainer', 'TileHitCnt' if flags.Input.isMC else "")
65 kwargs.setdefault('TileHitVector', 'TileHitVec' if flags.Input.isMC else "")
66 kwargs.setdefault('CaloCellContainer', 'AllCalo')
67
68 kwargs.setdefault('TileLaserObj', "")
69
70 kwargs.setdefault('OfflineUnits', offlineUnits)
71 kwargs.setdefault('CalibrateEnergy', calibrateEnergy)
72 kwargs.setdefault('CalibMode', pedestalRun or cisRun)
73 kwargs.setdefault('PMTOrder', not (cisRun or monoRun or pedestalRun))
74
75 kwargs.setdefault('NSamples', -1)
76 kwargs.setdefault('NSamplesFelix', 16 if useFELIX else 0)
77
78 kwargs.setdefault('TBperiod', TBperiod)
79
80 if flags.Input.isMC:
81 kwargs.setdefault('beamFragList', [])
82 kwargs.setdefault('CompleteNtuple', False)
83
84 from TileGeoModel.TileGMConfig import TileGMCfg
85 acc = TileGMCfg(flags)
86
87 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
88 acc.merge( TileCablingSvcCfg(flags) )
89
90 if 'TileCondToolEmscale' not in kwargs:
91 from TileConditions.TileEMScaleConfig import TileCondToolEmscaleCfg
92 emScaleTool = acc.popToolsAndMerge( TileCondToolEmscaleCfg(flags) )
93 kwargs['TileCondToolEmscale'] = emScaleTool
94
95 from TileRecUtils.TileDQstatusConfig import TileDQstatusAlgCfg
96 acc.merge( TileDQstatusAlgCfg(flags) )
97
98 if flags.Input.isMC:
99 from TileConditions.TileSamplingFractionConfig import TileSamplingFractionCondAlgCfg
100 acc.merge( TileSamplingFractionCondAlgCfg(flags) )
101 else:
102 kwargs['TileSamplingFraction'] = ""
103
104 if not outputFile:
105 outputFile = f'tiletb_{run}.aan.root'
106 histsvc = CompFactory.THistSvc()
107 histsvc.Output += ["%s DATAFILE='%s' OPT='RECREATE'" % ('AANT', outputFile)]
108 acc.addService(histsvc)
109
110 alg = CompFactory.TileTBAANtuple(**kwargs)
111 from TileMonitoring.TileTBBeamChambersCalibration import updateBeamChambersCalibrations
112 updateBeamChambersCalibrations(alg, run)
113 acc.addEventAlgo(alg, primary=True)
114
115 return acc
116
117