1
# Author: Christopher Tunnell <tunnell@hep.uchicago.edu>
6
from src.GenericWorker import *
7
from src.oscalls import *
10
class PlotModuleChannel(GenericWorker):
11
"Make a plot of module number versus channel number for all partitions"
13
c1 = src.MakeCanvas.MakeCanvas()
16
runType1 = 'CIS', parameter1='isCalibrated', text1='Is Calibrated', invert1 = False,\
17
runType2 = 'CIS', parameter2='isDefault', text2='Is Default', invert2 = False,):
18
self.runType1 = runType1
19
self.runType2 = runType2
21
self.parameter1 = parameter1
22
self.parameter2 = parameter2
27
self.invert1 = invert1
28
self.invert2 = invert2
30
self.dir = getPlotDirectory()
31
self.fileSuffix = '_'.join([runType1, parameter1, str(invert1), '_'.join(text1.split(' ')), runType2, parameter2, str(invert2), '_'.join(text2.split(' '))])
34
def ProcessStart(self):
35
self.graphs1 = [ROOT.TGraph() for i in range(4)]
36
self.graphs1i = [0 for i in range(4)]
38
self.graphs2 = [ROOT.TGraph() for i in range(4)]
39
self.graphs2i = [0 for i in range(4)]
41
def ProcessStop(self):
44
self.c1.Print("%s/mod_chan_%s.ps[" % (self.dir, self.fileSuffix))
47
# todo fixme, this should be in src/region.py
48
if i == 0: name = 'LBA'
49
elif i == 1: name = 'LBC'
50
elif i == 2: name = 'EBA'
51
elif i == 3: name = 'EBC'
53
graph = self.graphs1[i]
57
graph.GetXaxis().SetTitle("Module Number")
58
graph.GetYaxis().SetTitle("Channel Number within Module")
59
graph.GetXaxis().SetLimits(0.2,65.8)
60
graph.GetYaxis().SetRangeUser(0.2,48.8)
62
graph.SetMarkerStyle(20)
63
graph.SetMarkerSize(2.0)
64
graph.SetMarkerColor(ROOT.kRed)
67
graph2 = self.graphs2[i]
70
graph2.SetFillColor(0)
71
graph2.GetXaxis().SetTitle("Module Number")
72
graph2.GetYaxis().SetTitle("Channel Number within Module")
73
graph2.GetXaxis().SetLimits(0.2,65.8)
74
graph2.GetYaxis().SetRangeUser(0.2,48.8)
76
graph2.SetMarkerStyle(20)
77
graph2.SetMarkerSize(1.3)
78
graph2.SetMarkerColor(ROOT.kBlue)
80
if graph.GetN(): graph.Draw("AP")
81
if graph2.GetN() and not graph.GetN(): graph2.Draw("AP")
82
elif graph2.GetN(): graph2.Draw("P")
84
leg = ROOT.TLegend(0.6190,0.96,1.0,1.0)
88
if graph.GetN(): leg.AddEntry(graph, self.text1,"p")
89
if graph2.GetN(): leg.AddEntry(graph2, self.text2,"p")
93
pt = ROOT.TPaveText(0.1017812,0.96,0.3053435,1.0, "brNDC")
94
pt.AddText("%s Status" % name)
99
self.c1.Print("%s/mod_chan_%s.ps" % (self.dir, self.fileSuffix))
100
self.c1.Print("%s/mod_chan_%s.root" % (self.dir, self.fileSuffix))
103
self.c1.Print("%s/mod_chan_%s.ps]" % (self.dir, self.fileSuffix))
107
def ProcessRegion(self, region):
108
if 'gain' not in region.GetHash():
111
x, y, z, w = region.GetNumber()
113
for event in region.GetEvents():
114
if event.runType == self.runType1 and 'low' in region.GetHash():
115
if event.data.has_key(self.parameter1):
116
if not self.invert1 and event.data[self.parameter1]:
117
self.graphs1[x].SetPoint(self.graphs1i[x], y, z)
118
self.graphs1i[x] += 1
121
if self.invert1 and not event.data[self.parameter1]:
122
self.graphs1[x].SetPoint(self.graphs1i[x], y, z)
123
self.graphs1i[x] += 1
126
for event in region.GetEvents():
127
if event.runType == self.runType2 and 'high' in region.GetHash():
128
if event.data.has_key(self.parameter2):
129
if not self.invert2 and event.data[self.parameter2]:
130
self.graphs2[x].SetPoint(self.graphs2i[x], y, z)
131
self.graphs2i[x] += 1
134
if self.invert2 and not event.data[self.parameter2]:
135
self.graphs2[x].SetPoint(self.graphs2i[x], y, z)
136
self.graphs2i[x] += 1