~vpec/maus/tof_calib_read

« back to all changes in this revision

Viewing changes to workers/PlotModuleChannel.py

  • Committer: tunnell
  • Date: 2010-09-20 10:52:02 UTC
  • Revision ID: tunnell@itchy-20100920105202-ce4w9jm59zvgnsxq
moving stuff from tucs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Author: Christopher Tunnell <tunnell@hep.uchicago.edu>
 
2
#
 
3
# March 04, 2009
 
4
#
 
5
 
 
6
from src.GenericWorker import *
 
7
from src.oscalls import *
 
8
import src.MakeCanvas
 
9
 
 
10
class PlotModuleChannel(GenericWorker):
 
11
    "Make a plot of module number versus channel number for all partitions"
 
12
 
 
13
    c1 = src.MakeCanvas.MakeCanvas()
 
14
 
 
15
    def __init__(self,\
 
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
 
20
 
 
21
        self.parameter1 = parameter1
 
22
        self.parameter2 = parameter2
 
23
 
 
24
        self.text1 = text1
 
25
        self.text2 = text2
 
26
 
 
27
        self.invert1 = invert1
 
28
        self.invert2 = invert2
 
29
 
 
30
        self.dir = getPlotDirectory()
 
31
        self.fileSuffix =  '_'.join([runType1, parameter1, str(invert1), '_'.join(text1.split(' ')), runType2, parameter2, str(invert2), '_'.join(text2.split(' '))])
 
32
            
 
33
 
 
34
    def ProcessStart(self):
 
35
        self.graphs1 = [ROOT.TGraph() for i in range(4)]
 
36
        self.graphs1i = [0 for i in range(4)]
 
37
        
 
38
        self.graphs2 = [ROOT.TGraph() for i in range(4)]
 
39
        self.graphs2i = [0 for i in range(4)]
 
40
 
 
41
    def ProcessStop(self):
 
42
        self.c1.cd()
 
43
 
 
44
        self.c1.Print("%s/mod_chan_%s.ps[" % (self.dir, self.fileSuffix))
 
45
 
 
46
        for i in range(4):
 
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'
 
52
 
 
53
            graph = self.graphs1[i]
 
54
            if graph.GetN():
 
55
                graph.Draw("AP")
 
56
                graph.SetFillColor(0)
 
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)
 
61
                
 
62
                graph.SetMarkerStyle(20)
 
63
                graph.SetMarkerSize(2.0)
 
64
                graph.SetMarkerColor(ROOT.kRed)            
 
65
                graph.Draw("AP")
 
66
 
 
67
            graph2 = self.graphs2[i]
 
68
            if graph2.GetN():
 
69
                graph2.Draw("AP")
 
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)
 
75
                                                
 
76
                graph2.SetMarkerStyle(20)
 
77
                graph2.SetMarkerSize(1.3)
 
78
                graph2.SetMarkerColor(ROOT.kBlue)
 
79
 
 
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")
 
83
 
 
84
            leg = ROOT.TLegend(0.6190,0.96,1.0,1.0)
 
85
            leg.SetBorderSize(0)
 
86
            leg.SetFillColor(0)
 
87
 
 
88
            if graph.GetN():  leg.AddEntry(graph, self.text1,"p")
 
89
            if graph2.GetN(): leg.AddEntry(graph2, self.text2,"p")
 
90
 
 
91
            leg.Draw()
 
92
            
 
93
            pt = ROOT.TPaveText(0.1017812,0.96,0.3053435,1.0, "brNDC")
 
94
            pt.AddText("%s Status" % name)
 
95
            pt.SetBorderSize(0)
 
96
            pt.SetFillColor(0)
 
97
            pt.Draw()
 
98
            
 
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))
 
101
            self.c1.Clear()
 
102
                    
 
103
        self.c1.Print("%s/mod_chan_%s.ps]" % (self.dir, self.fileSuffix))
 
104
                
 
105
        
 
106
        
 
107
    def ProcessRegion(self, region):
 
108
        if 'gain' not in region.GetHash():
 
109
            return
 
110
 
 
111
        x, y, z, w = region.GetNumber()
 
112
        x = x - 1
 
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
 
119
                        break
 
120
 
 
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
 
124
                        break
 
125
 
 
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
 
132
                        break
 
133
                            
 
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
 
137
                        break
 
138
                                                                                                                                                                    
 
139
 
 
140
                
 
141