2
# Class for reading cell noise from ntuple
3
# Author: Brian Martin (brian.thomas.martin@cern.ch)
4
from src.ReadGenericCalibration import *
5
from src.region import *
7
class ReadCellNoiseFile(ReadGenericCalibration):
8
'''Class to read cell noise values from calibration ntuple'''
10
def __init__(self,processingDir='/afs/cern.ch/user/t/tilecali/w0/ntuples/ped'):
11
self.processingDir = processingDir
12
self.ftDict = {} # Each element is a [TTree, TFile]
14
self.gainStr = ['LGLG','LGHG','HGLG','HGHG','HG--','--HG']
15
self.part2side = [-1,0,1,0,1] # [AUX,LBA,LBC,EBA,EBC]
17
def get_index(self, side, mod, samp, tower, gain):
18
return side *64*4*17*6\
24
def addTree(self,runNumber):
25
f, t = self.getFileTree('RawCh_NoiseCalib_%s_%s.root' % (runNumber,'Ped'), 'RawCh_NoiseCalib')
26
if [f, t] == [None, None]:
27
f, t = self.getFileTree('RawCh_NoiseCalib_%s_%s.root' % (runNumber,'Phys'), 'RawCh_NoiseCalib')
28
if [f, t] == [None, None]:
29
print 'File missing for run: ',runNumber
32
self.ftDict[runNumber] = [f, t]
36
def ProcessStart(self):
39
def ProcessStop(self):
42
def ProcessRegion(self, region):
44
# only interested in cell level
45
if '_t' not in region.GetHash():
46
for event in region.GetEvents():
47
if event.runType != 'staging':
49
region.SetEvents(newevents)
51
# check if Ped event exists (if so, use them). if staging events exist, convert to ped
52
for event in region.GetEvents():
53
if event.runType == 'Ped':
54
if self.addTree(event.runNumber):
56
if event.runType == 'staging':
57
if self.addTree(event.runNumber):
58
newevents.add(Event('Ped', event.runNumber, event.data, event.time))
60
for event in newevents:
61
# Get data from noise tree
62
[f, t] = self.ftDict[event.runNumber]
63
t.GetEntry(0) # ntuples have run info stored as single event
65
[part, mod, samp, tower] = region.GetNumber()
66
for gain in xrange(6):
67
index = self.get_index(self.part2side[part], mod - 1, samp, tower, gain)
68
event.data['cellenergy'+self.gainStr[gain]] = t.ecell_av[index]
69
event.data['cellnoise'+self.gainStr[gain]] = t.ecell_rms[index]
71
region.SetEvents(newevents)