61def hitMaps(Nev = -1):
62
63
64
65
66 for s in systemAndPlanes:
67 for l in range(systemAndPlanes[s]):
68 ut.bookHist(h,'hit_'+str(s*10+l),'channel map / plane '+str(s*10+l),160,-0.5,159.5)
69 if s==3: ut.bookHist(h,'bar_'+str(s*10+l),'hit map / plane '+str(s*10+l),60,-0.5,59.5)
70 else: ut.bookHist(h,'bar_'+str(s*10+l),'hit map / plane '+str(s*10+l),10,-0.5,9.5)
71 ut.bookHist(h,'sig_'+str(s*10+l),'signal / plane '+str(s*10+l),200,0.0,200.)
72 if s==2: ut.bookHist(h,'sigS_'+str(s*10+l),'signal / plane '+str(s*10+l),200,0.0,200.)
73 ut.bookHist(h,'sigL_'+str(s*10+l),'signal / plane '+str(s*10+l),200,0.0,200.)
74 ut.bookHist(h,'sigR_'+str(s*10+l),'signal / plane '+str(s*10+l),200,0.0,200.)
75 ut.bookHist(h,'Tsig_'+str(s*10+l),'signal / plane '+str(s*10+l),200,0.0,200.)
76 ut.bookHist(h,'occ_'+str(s*10+l),'channel occupancy '+str(s*10+l),100,0.0,200.)
77 ut.bookHist(h,'occTag_'+str(s*10+l),'channel occupancy '+str(s*10+l),100,0.0,200.)
78
79 ut.bookHist(h,'leftvsright_1','Veto hits in left / right',10,-0.5,9.5,10,-0.5,9.5)
80 ut.bookHist(h,'leftvsright_2','US hits in left / right',10,-0.5,9.5,10,-0.5,9.5)
81 ut.bookHist(h,'leftvsright_3','DS hits in left / right',2,-0.5,1.5,2,-0.5,1.5)
82 ut.bookHist(h,'leftvsright_signal_1','Veto signal in left / right',100,-0.5,200.,100,-0.5,200.)
83 ut.bookHist(h,'leftvsright_signal_2','US signal in left / right',100,-0.5,200.,100,-0.5,200.)
84 ut.bookHist(h,'leftvsright_signal_3','DS signal in left / right',100,-0.5,200.,100,-0.5,200.)
85
86 ut.bookHist(h,'dtime','delta event time; dt [ns]',100,0.0,1000.)
87 ut.bookHist(h,'dtimeu','delta event time; dt [us]',100,0.0,1000.)
88 ut.bookHist(h,'dtimem','delta event time; dt [ms]',100,0.0,1000.)
89
90 ut.bookHist(h,'bs','beam spot',100,-100.,10.,100,0.,80.)
91 ut.bookHist(h,'bsDS','beam spot',60,-0.5,59.5,60,-0.5,59.5)
92 ut.bookHist(h,'slopes','track slopes',100,-0.1,0.1,100,-0.1,0.1)
93
94 N=-1
95 Tprev = 0
96 if Nev < 0 : Nev = eventTree.GetEntries()
97 eventTree.GetEvent(0)
98 t0 = eventTree.EventHeader.GetEventTime()/freq
99
100 for event in eventTree:
101 N+=1
102 if N>Nev: break
103 withX = False
104 planes = {}
105 for aHit in event.Digi_MuFilterHits:
106 if not aHit.isValid(): continue
107 detID = aHit.GetDetectorID()
108 if aHit.isVertical(): withX = True
109 s = detID//10000
110 l = (detID%10000)//1000
111 bar = (detID%1000)
112 key = s*100+l
113 if s>2:
114 l=2*l
115 if bar>59:
116 bar=bar-60
117 l+=1
118 if not key in planes: planes[key] = {}
119 sumSignal = aHit.SumOfSignals()
120 planes[key][bar] = [sumSignal['SumL'],sumSignal['SumR']]
121 nSiPMs = aHit.GetnSiPMs()
122 nSides = aHit.GetnSides()
123
124
125 allChannels = aHit.GetAllSignals(False)
126 if nSides==2:
127 Nleft = 0
128 Nright = 0
129 Sleft = 0
130 Sright = 0
131 for c in allChannels:
132 if nSiPMs > c[0]:
133 Nleft+=1
134 Sleft+=c[1]
135 else:
136 Nright+=1
137 Sright+=c[1]
138 rc = h['leftvsright_'+str(s)].Fill(Nleft,Nright)
139 rc = h['leftvsright_signal_'+str(s)].Fill(Sleft,Sright)
140 for c in allChannels:
141 channel = bar*nSiPMs*nSides + c[0]
142 rc = h['hit_'+str(s)+str(l)].Fill( int(channel))
143 rc = h['bar_'+str(s)+str(l)].Fill(bar)
144 if s==2 and smallSiPMchannel(c[0]) : rc = h['sigS_'+str(s)+str(l)].Fill(c[1])
145 elif c[0]<nSiPMs: rc = h['sigL_'+str(s)+str(l)].Fill(c[1])
146 else : rc = h['sigR_'+str(s)+str(l)].Fill(c[1])
147 rc = h['sig_'+str(s)+str(l)].Fill(c[1])
148 maxOneBar = True
149 for key in planes:
150 if len(planes[key]) > 2: maxOneBar = False
151 if withX and maxOneBar: beamSpot()
152
153 installed_stations = {}
154 for s in range(1,4):
155 for l in range(systemAndPlanes[s]):
156 if h['hit_'+str(s)+str(l)].GetEntries()>0:
157 if not s in installed_stations: installed_stations[s]=0
158 installed_stations[s]+=1
159 x = 0
160 y = 0
161 for s in installed_stations:
162 if installed_stations[s]>0: x+=1
163 if installed_stations[s]>y: y = installed_stations[s]
164 ut.bookCanvas(h,'hitmaps',' ',1200,1600,x,y)
165 ut.bookCanvas(h,'barmaps',' ',1200,1600,x,y)
166 ut.bookCanvas(h,'signal',' ',1200,1600,x,y)
167 ut.bookCanvas(h,'Tsignal',' ',1200,1600,x,y)
168
169 for S in installed_stations:
170 for l in range(installed_stations[S]):
171 n = S-1 + l*x
172 tc = h['hitmaps'].cd(n)
173 h['hit_'+str(S)+str(l)].Draw()
174 tc = h['barmaps'].cd(n)
175 h['bar_'+str(S)+str(l)].Draw()
176 tc = h['signal'].cd(n)
177 h['sig_'+str(S)+str(l)].Draw()
178 tc = h['Tsignal'].cd(n)
179 h['Tsig_'+str(S)+str(l)].Draw()
180
181 ut.bookCanvas(h,'USBars',' ',1200,900,1,1)
182 colours = {0:ROOT.kOrange,1:ROOT.kRed,2:ROOT.kGreen,3:ROOT.kBlue,4:ROOT.kMagenta}
183 for i in range(5):
184 h['bar_2'+str(i)].SetLineColor(colours[i])
185 h['bar_2'+str(i)].SetLineWidth(2)
186 h['bar_2'+str(i)].SetStats(0)
187 h['bar_20'].Draw()
188 h['bar_21'].Draw('same')
189 h['bar_22'].Draw('same')
190 h['bar_23'].Draw('same')
191 h['bar_24'].Draw('same')
192 h['lbar2']=ROOT.TLegend(0.6,0.6,0.99,0.99)
193 for i in range(5):
194 h['lbar2'].AddEntry(h['bar_2'+str(i)],'plane '+str(i+1),"f")
195 h['lbar2'].Draw()
196 for i in range(4):
197 h['hit_3'+str(i)].SetLineColor(colours[i])
198 h['hit_3'+str(i)].SetLineWidth(2)
199 h['hit_3'+str(i)].SetStats(0)
200 h['hit_30'].Draw()
201 h['hit_31'].Draw('same')
202 h['hit_32'].Draw('same')
203 h['hit_33'].Draw('same')
204 h['lbar3']=ROOT.TLegend(0.6,0.6,0.99,0.99)
205 for i in range(4):
206 h['lbar3'].AddEntry(h['hit_3'+str(i)],'plane '+str(i+1),"f")
207 h['lbar3'].Draw()
208
209 ut.bookCanvas(h,'LR',' ',1800,900,3,2)
210 h['LR'].cd(1)
211 h['leftvsright_'+str(1)].Draw('textBox')
212 h['LR'].cd(2)
213 h['leftvsright_'+str(2)].Draw('textBox')
214 h['LR'].cd(3)
215 h['leftvsright_'+str(3)].Draw('textBox')
216 h['LR'].cd(4)
217 h['leftvsright_signal_1'].SetMaximum(h['leftvsright_signal_1'].GetBinContent(10,10))
218 h['leftvsright_signal_2'].SetMaximum(h['leftvsright_signal_2'].GetBinContent(10,10))
219 h['leftvsright_signal_3'].SetMaximum(h['leftvsright_signal_3'].GetBinContent(10,10))
220 h['leftvsright_signal_'+str(1)].Draw('colz')
221 h['LR'].cd(5)
222 h['leftvsright_signal_'+str(2)].Draw('colz')
223 h['LR'].cd(6)
224 h['leftvsright_signal_'+str(3)].Draw('colz')
225
226 ut.bookCanvas(h,'LRinEff',' ',1800,450,3,1)
227 for s in range(1,4):
228 h['lLRinEff'+str(s)]=ROOT.TLegend(0.6,0.54,0.99,0.93)
229 name = 'leftvsright_signal_'+str(s)
230 h[name+'0Y'] = h[name].ProjectionY(name+'0Y',1,1)
231 h[name+'0X'] = h[name].ProjectionX(name+'0X',1,1)
232 h[name+'1X'] = h[name].ProjectionY(name+'1Y')
233 h[name+'1Y'] = h[name].ProjectionX(name+'1X')
234 tc = h['LRinEff'].cd(s)
235 tc.SetLogy()
236 h[name+'0X'].SetStats(0)
237 h[name+'0Y'].SetStats(0)
238 h[name+'1X'].SetStats(0)
239 h[name+'1Y'].SetStats(0)
240 h[name+'0X'].SetLineColor(ROOT.kRed)
241 h[name+'0Y'].SetLineColor(ROOT.kGreen)
242 h[name+'1X'].SetLineColor(ROOT.kMagenta)
243 h[name+'1Y'].SetLineColor(ROOT.kCyan)
244 h[name+'0X'].SetMaximum(max(h[name+'1X'].GetMaximum(),h[name+'1Y'].GetMaximum()))
245 h[name+'0X'].Draw()
246 h[name+'0Y'].Draw('same')
247 h[name+'1X'].Draw('same')
248 h[name+'1Y'].Draw('same')
249
250 h['lLRinEff'+str(s)].AddEntry(h[name+'0X'],'left with no signal right',"f")
251 h['lLRinEff'+str(s)].AddEntry(h[name+'0Y'],'right with no signal left',"f")
252 h['lLRinEff'+str(s)].AddEntry(h[name+'1X'],'left all',"f")
253 h['lLRinEff'+str(s)].AddEntry(h[name+'1Y'],'right all',"f")
254 h['lLRinEff'+str(s)].Draw()
255
256
257
258 ut.bookCanvas(h,'signalUSVeto',' ',1200,1600,3,7)
259 s = 1
260 l = 1
261 for plane in range(2):
262 for side in ['L','R','S']:
263 tc = h['signalUSVeto'].cd(l)
264 l+=1
265 if side=='S': continue
266 h['sig'+side+'_'+str( s*10+plane)].Draw()
267 s=2
268 for plane in range(5):
269 for side in ['L','R','S']:
270 tc = h['signalUSVeto'].cd(l)
271 l+=1
272 h['sig'+side+'_'+str( s*10+plane)].Draw()
273 ut.bookCanvas(h,'signalDS',' ',900,1600,2,7)
274 s = 3
275 l = 1
276 for plane in range(7):
277 for side in ['L','R']:
278 tc = h['signalDS'].cd(l)
279 l+=1
280 h['sig'+side+'_'+str( s*10+plane)].Draw()
281
282
283 for canvas in ['signalUSVeto','LR','hitmaps','barmaps','signal','Tsignal','USBars']:
284 h[canvas].Update()
285 h[canvas].Print(canvas+'-run'+str(options.runNumber)+'.png')
286