112 '''define histograms'''
119 timeBin = int(maxTime - minTime)
137 reso_TH2D_Histograms_Count = 0
146 self.
TH1F_Store.append(TH1F(
"th1f_svdEventT0",
"SVD EventT0", 500, -50., 50.))
147 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"SVD EventT0 (ns)")
148 self.
TH1F_Index[
"th1f_svdEventT0"] = TH1F_Store_Count
149 TH1F_Store_Count += 1
150 self.
TH1F_Store.append(TH1F(
"th1f_svdEventT0_State",
"SVD EventT0 Availability", 2, -0.5, 1.5))
151 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(1,
"Not Available")
152 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(2,
"Available")
153 self.
TH1F_Index[
"th1f_svdEventT0_State"] = TH1F_Store_Count
154 TH1F_Store_Count += 1
156 self.
TH1F_Store.append(TH1F(
"th1f_cdcEventT0",
"CDC EventT0", 500, -50., 50.))
157 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"CDC EventT0 (ns)")
158 self.
TH1F_Index[
"th1f_cdcEventT0"] = TH1F_Store_Count
159 TH1F_Store_Count += 1
160 self.
TH1F_Store.append(TH1F(
"th1f_cdcEventT0_State",
"CDC EventT0 Availability", 2, -0.5, 1.5))
161 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(1,
"Not Available")
162 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(2,
"Available")
163 self.
TH1F_Index[
"th1f_cdcEventT0_State"] = TH1F_Store_Count
164 TH1F_Store_Count += 1
168 self.
TH1F_Store.append(TH1F(
"th1f_svdEventT0topRef",
"SVD EventT0 - TOP Online EventT0", 500, -20., 20.))
169 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"SVD EventT0 - TOP Online EventT0 (ns)")
170 self.
TH1F_Index[
"th1f_svdEventT0topRef"] = TH1F_Store_Count
171 TH1F_Store_Count += 1
175 self.
TH1F_Store.append(TH1F(
"th1f_clsTime_PreTracking",
"(PreTracking) Cluster Time", timeBin, minTime, maxTime))
176 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
178 self.
TH1F_Index[
"th1f_clsTime_PreTracking"] = TH1F_Store_Count
179 TH1F_Store_Count += 1
180 self.
TH1F_Store.append(TH1F(
"th1f_bkgClsTime_PreTracking",
"(PreTracking) Bkg Cluster Time", timeBin, minTime, maxTime))
181 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
183 self.
TH1F_Index[
"th1f_bkgClsTime_PreTracking"] = TH1F_Store_Count
184 TH1F_Store_Count += 1
185 self.
TH1F_Store.append(TH1F(
"th1f_sigClsTime_PreTracking",
"(PreTracking) Sig Cluster Time", timeBin, minTime, maxTime))
186 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
188 self.
TH1F_Index[
"th1f_sigClsTime_PreTracking"] = TH1F_Store_Count
189 TH1F_Store_Count += 1
191 self.
TH1F_Store.append(TH1F(
"th1f_clsTime_PostTracking",
"(PostTracking) Cluster Time", timeBin, minTime, maxTime))
192 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
194 self.
TH1F_Index[
"th1f_clsTime_PostTracking"] = TH1F_Store_Count
195 TH1F_Store_Count += 1
196 self.
TH1F_Store.append(TH1F(
"th1f_bkgClsTime_PostTracking",
"(PostTracking) Bkg Cluster Time", timeBin, minTime, maxTime))
197 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
199 self.
TH1F_Index[
"th1f_bkgClsTime_PostTracking"] = TH1F_Store_Count
200 TH1F_Store_Count += 1
201 self.
TH1F_Store.append(TH1F(
"th1f_sigClsTime_PostTracking",
"(PostTracking) Sig Cluster Time", timeBin, minTime, maxTime))
202 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
204 self.
TH1F_Index[
"th1f_sigClsTime_PostTracking"] = TH1F_Store_Count
205 TH1F_Store_Count += 1
207 self.
TH1F_Store.append(TH1F(
"th1f_trackTime",
"Track Time", timeBin * 10, minTime, maxTime))
208 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Track Time (ns)")
209 self.
TH1F_Index[
"th1f_trackTime"] = TH1F_Store_Count
210 TH1F_Store_Count += 1
211 self.
TH1F_Store.append(TH1F(
"th1f_trackTimeCDCRef",
"Track Time - CDC EventT0", 10000, -50, 50))
212 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Track Time - CDC EventT0 (ns)")
213 self.
TH1F_Index[
"th1f_trackTimeCDCRef"] = TH1F_Store_Count
214 TH1F_Store_Count += 1
218 self.
TH1F_Store.append(TH1F(
"th1f_clsTimeCdcRef_PreTracking",
"(PreTracking) Cluster Time - CDC EventT0",
219 timeBin * 2, minTime, maxTime))
220 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time - CDC EventT0 (ns)")
222 self.
TH1F_Index[
"th1f_clsTimeCdcRef_PreTracking"] = TH1F_Store_Count
223 TH1F_Store_Count += 1
225 self.
TH1F_Store.append(TH1F(
"th1f_clsTimeCdcRef_PostTracking",
"(PostTracking) Cluster Time - CDC EventT0",
226 timeBin * 2, minTime, maxTime))
227 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"Cluster Time - CDC EventT0 (ns)")
229 self.
TH1F_Index[
"th1f_clsTimeCdcRef_PostTracking"] = TH1F_Store_Count
230 TH1F_Store_Count += 1
234 self.
TH1F_Store.append(TH1F(
"th1f_eclTCEmax",
"ECL E_{max}^{TC}", 1250, 0.5, 1250.5))
235 self.
TH1F_Store[-1].GetXaxis().SetTitle(
"ECL E_{max}^{TC} (ADC)")
236 self.
TH1F_Index[
"th1f_eclTCEmax"] = TH1F_Store_Count
237 TH1F_Store_Count += 1
238 self.
TH1F_Store.append(TH1F(
"th1f_eclTCEmax_State",
"ECL E_{max}^{TC} Availability", 2, -0.5, 1.5))
239 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(1,
"Not Available")
240 self.
TH1F_Store[-1].GetXaxis().SetBinLabel(2,
"Available")
241 self.
TH1F_Index[
"th1f_eclTCEmax_State"] = TH1F_Store_Count
242 TH1F_Store_Count += 1
244 self.
TH2F_Store.append(TH2F(
"th2f_timeGr_vs_grAmp",
"Time Group vs Group Amplitude", 60, 0., 300, 21, -1.5, 19.5))
245 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Group Amplitude")
246 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"Time Group")
247 self.
TH2F_Index[
"th2f_timeGr_vs_grAmp"] = TH2F_Store_Count
248 TH2F_Store_Count += 1
249 self.
TH2F_Store.append(TH2F(
"th2f_timeGr_vs_grCenter",
"Time Group vs Group Center", 80, minTime, maxTime, 21, -1.5, 19.5))
250 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Group Center (ns)")
251 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"Time Group")
252 self.
TH2F_Index[
"th2f_timeGr_vs_grCenter"] = TH2F_Store_Count
253 TH2F_Store_Count += 1
254 self.
TH2F_Store.append(TH2F(
"th2f_timeGr_vs_grWidth",
"Time Group vs Group Width", 50, 1, 11, 21, -1.5, 19.5))
255 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Group Width (ns)")
256 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"Time Group")
257 self.
TH2F_Index[
"th2f_timeGr_vs_grWidth"] = TH2F_Store_Count
258 TH2F_Store_Count += 1
259 self.
TH2F_Store.append(TH2F(
"th2f_timeGr_vs_clsTime",
"Time Group vs Cluster Time",
260 timeBin, minTime, maxTime, 21, -1.5, 19.5))
261 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
262 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"Time Group")
263 self.
TH2F_Index[
"th2f_timeGr_vs_clsTime"] = TH2F_Store_Count
264 TH2F_Store_Count += 1
265 self.
TH2F_Store.append(TH2F(
"th2f_timeGr_vs_clsTime_PostTracking",
"(PostTracking) Time Group vs Cluster Time",
266 timeBin, minTime, maxTime, 21, -1.5, 19.5))
267 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Cluster Time (ns)")
268 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"Time Group")
269 self.
TH2F_Index[
"th2f_timeGr_vs_clsTime_PostTracking"] = TH2F_Store_Count
270 TH2F_Store_Count += 1
273 self.
TH2F_Store.append(TH2F(
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0",
"Center of 'Group " +
274 str(i) +
"' vs CDC EventT0", 500, -50., 50., 500, -50., 50.))
275 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Center of 'Group " + str(i) +
"' (ns)")
276 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
277 self.
TH2F_Index[
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0"] = TH2F_Store_Count
278 TH2F_Store_Count += 1
279 self.
TH2F_Store.append(TH2F(
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0_rot45pos",
280 "Center of 'Group " + str(i) +
"' vs CDC EventT0 (Rotated 45)",
281 500, -50., 50., 500, -50., 50.))
282 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Center of 'Group " + str(i) +
"' (ns)")
283 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
284 self.
TH2F_Index[
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0_rot45pos"] = TH2F_Store_Count
285 TH2F_Store_Count += 1
286 self.
TH2F_Store.append(TH2F(
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0_rot45neg",
287 "Center of 'Group " + str(i) +
"' vs CDC EventT0 (Rotated -45)",
288 500, -50., 50., 500, -50., 50.))
289 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Center of 'Group " + str(i) +
"' (ns)")
290 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
291 self.
TH2F_Index[
"th2f_sig" + str(i) +
"GrMean_vs_cdcEventT0_rot45neg"] = TH2F_Store_Count
292 TH2F_Store_Count += 1
294 self.
TH2F_Store.append(TH2F(
"th2f_aveClsTimeInTrk_vs_cdcEventT0",
295 "Track Time vs CDC EventT0", 500, -50., 50., 500, -50., 50.))
296 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"<Cluster Time> in Track (ns)")
297 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
298 self.
TH2F_Index[
"th2f_aveClsTimeInTrk_vs_cdcEventT0"] = TH2F_Store_Count
299 TH2F_Store_Count += 1
300 self.
TH2F_Store.append(TH2F(
"th2f_svdEventT0_vs_cdcEventT0",
"SVD EventT0 vs CDC EventT0",
301 500, -50., 50., 500, -50., 50.))
302 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"SVD EventT0 (ns)")
303 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
304 self.
TH2F_Index[
"th2f_svdEventT0_vs_cdcEventT0"] = TH2F_Store_Count
305 TH2F_Store_Count += 1
306 self.
TH2F_Store.append(TH2F(
"th2f_svdEventT0_vs_cdcEventT0_rot45pos",
307 "SVD EventT0 vs CDC EventT0 (Rotated 45)", 500, -50., 50., 500, -50., 50.))
308 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"SVD EventT0 (ns)")
309 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
310 self.
TH2F_Index[
"th2f_svdEventT0_vs_cdcEventT0_rot45pos"] = TH2F_Store_Count
311 TH2F_Store_Count += 1
312 self.
TH2F_Store.append(TH2F(
"th2f_svdEventT0_vs_cdcEventT0_rot45neg",
313 "SVD EventT0 vs CDC EventT0 (Rotated -45)", 500, -50., 50., 500, -50., 50.))
314 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"SVD EventT0 (ns)")
315 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 (ns)")
316 self.
TH2F_Index[
"th2f_svdEventT0_vs_cdcEventT0_rot45neg"] = TH2F_Store_Count
317 TH2F_Store_Count += 1
319 self.
TH2F_Store.append(TH2F(
"th2f_trkTime_vs_clsTime_inCDCEventT0",
"Track Time vs Cluster Time",
320 timeBin, minTime, maxTime, timeBin, minTime, maxTime))
321 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Track Time - Cluster Time (ns)")
322 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 - Track Time (ns)")
323 self.
TH2F_Index[
"th2f_trkTime_vs_clsTime_inCDCEventT0"] = TH2F_Store_Count
324 TH2F_Store_Count += 1
325 self.
TH2F_Store.append(TH2F(
"th2f_trkTime_vs_clsTime_inSVDEventT0",
"Track Time vs Cluster Time",
326 timeBin, minTime, maxTime, timeBin, minTime, maxTime))
327 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"Track Time - Cluster Time (ns)")
328 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"SVD EventT0 - Track Time (ns)")
329 self.
TH2F_Index[
"th2f_trkTime_vs_clsTime_inSVDEventT0"] = TH2F_Store_Count
330 TH2F_Store_Count += 1
332 self.
TH2F_Store.append(TH2F(
"th2f_aveClsTimeInTrk_vs_clsTime_inCDCEventT0",
"<Cluster Time> in Track vs Cluster Time",
333 timeBin, minTime, maxTime, timeBin, minTime, maxTime))
334 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"<Cluster Time> in Track - Cluster Time (ns)")
335 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"CDC EventT0 - <Cluster Time> in Track (ns)")
336 self.
TH2F_Index[
"th2f_aveClsTimeInTrk_vs_clsTime_inCDCEventT0"] = TH2F_Store_Count
337 TH2F_Store_Count += 1
338 self.
TH2F_Store.append(TH2F(
"th2f_aveClsTimeInTrk_vs_clsTime_inSVDEventT0",
"<Cluster Time> in Track vs Cluster Time",
339 timeBin, minTime, maxTime, timeBin, minTime, maxTime))
340 self.
TH2F_Store[-1].GetXaxis().SetTitle(
"<Cluster Time> in Track - Cluster Time (ns)")
341 self.
TH2F_Store[-1].GetYaxis().SetTitle(
"SVD EventT0 - <Cluster Time> in Track (ns)")
342 self.
TH2F_Index[
"th2f_aveClsTimeInTrk_vs_clsTime_inSVDEventT0"] = TH2F_Store_Count
343 TH2F_Store_Count += 1
348 "(PreTracking) ECL E_{max}^{TC} vs Cluster Time - TOP Online EventT0",
349 usedBin1, eclMinVal, eclMaxVal, usedBin2, -50, 50.))
353 reso_TH2D_Histograms_Count += 1
355 "(PostTracking) ECL E_{max}^{TC} vs Cluster Time - TOP Online EventT0",
356 usedBin1, eclMinVal, eclMaxVal, usedBin2, -50, 50.))
360 reso_TH2D_Histograms_Count += 1
363 "ECL E_{max}^{TC} vs SVD EventT0 - TOP Online EventT0",
364 usedBin1, eclMinVal, eclMaxVal, usedBin2, -50, 50.))
368 reso_TH2D_Histograms_Count += 1
371 "ECL E_{max}^{TC} vs Total SVD Tracks",
372 usedBin1, eclMinVal, eclMaxVal, 36, -0.5, 35.5))
376 reso_TH2D_Histograms_Count += 1
379 "(PreTracking) ECL E_{max}^{TC} vs Total SVD Clusters",
380 usedBin1, eclMinVal, eclMaxVal, 1000, 0.5, 1000.5))
384 reso_TH2D_Histograms_Count += 1
386 "(PostTracking) ECL E_{max}^{TC} vs Total SVD Clusters",
387 usedBin1, eclMinVal, eclMaxVal, 1000, 0.5, 1000.5))
391 reso_TH2D_Histograms_Count += 1
397 svdEventT0 = math.nan
398 cdcEventT0 = math.nan
402 if EventT0.hasTemporaryEventT0(svd):
403 tmp = EventT0.getTemporaryEventT0s(Belle2.Const.SVD)
404 svdEventT0 = tmp.back().eventT0
405 if EventT0.hasTemporaryEventT0(cdc):
406 tmp = EventT0.getTemporaryEventT0s(Belle2.Const.CDC)
407 cdcEventT0 = tmp.back().eventT0
409 if not math.isnan(svdEventT0):
414 if not math.isnan(cdcEventT0):
420 if not math.isnan(svdEventT0)
and not math.isnan(cdcEventT0):
423 svdEventT0 * TMath.Cos(TMath.PiOver4()) + cdcEventT0 * TMath.Sin(TMath.PiOver4()),
424 - svdEventT0 * TMath.Sin(TMath.PiOver4()) + cdcEventT0 * TMath.Cos(TMath.PiOver4()))
426 svdEventT0 * TMath.Cos(-TMath.PiOver4()) + cdcEventT0 * TMath.Sin(-TMath.PiOver4()),
427 - svdEventT0 * TMath.Sin(-TMath.PiOver4()) + cdcEventT0 * TMath.Cos(-TMath.PiOver4()))
432 topOnlineEventT0 = math.nan
433 for evt
in OnlineEventT0:
434 if evt.getOnlineEventT0Detector() == top:
435 topOnlineEventT0 = evt.getOnlineEventT0()
437 if not math.isnan(topOnlineEventT0)
and not math.isnan(svdEventT0):
444 for trgHit
in TRGECLData:
445 hitWin = trgHit.getHitWin()
446 if hitWin != 3
and hitWin != 4:
448 if trgHit.getTCEnergy() > eclTCEmax:
449 eclTCEmax = trgHit.getTCEnergy()
454 if not math.isnan(topOnlineEventT0)
and not math.isnan(svdEventT0):
456 eclTCEmax, svdEventT0 - topOnlineEventT0)
465 eclTCEmax, len(clusterList))
467 for d
in clusterList:
468 clsTime = d.getClsTime()
471 if not math.isnan(cdcEventT0):
473 if not math.isnan(topOnlineEventT0)
and eclTCEmax:
475 eclTCEmax, clsTime - topOnlineEventT0)
477 groupIds = d.getTimeGroupId()
478 groupInfo = d.getTimeGroupInfo()
484 for id
in range(len(groupIds)):
488 if len(groupInfo) > 0:
489 par0, par1, par2 = groupInfo[id]
491 if len(groupIds) == 0:
499 if fillOnce == minId
and fillOnce < 4:
500 if not math.isnan(cdcEventT0):
501 hname =
"th2f_sig" + str(fillOnce) +
"GrMean_vs_cdcEventT0"
503 hname =
"th2f_sig" + str(fillOnce) +
"GrMean_vs_cdcEventT0_rot45neg"
505 par1 * TMath.Cos(-TMath.PiOver4()) + cdcEventT0 * TMath.Sin(-TMath.PiOver4()),
506 - par1 * TMath.Sin(-TMath.PiOver4()) + cdcEventT0 * TMath.Cos(-TMath.PiOver4()))
507 hname =
"th2f_sig" + str(fillOnce) +
"GrMean_vs_cdcEventT0_rot45pos"
509 par1 * TMath.Cos(TMath.PiOver4()) + cdcEventT0 * TMath.Sin(TMath.PiOver4()),
510 - par1 * TMath.Sin(TMath.PiOver4()) + cdcEventT0 * TMath.Cos(TMath.PiOver4()))
521 nTracks = len(recoTrackList)
523 for recoTrk
in recoTrackList:
524 if not recoTrk.wasFitSuccessful():
528 trackList = recoTrk.getRelationsFrom(
'Tracks')
529 if len(trackList) == 0:
532 trkTime0 = trackList[0].getTrackTime()
535 if not math.isnan(cdcEventT0):
538 clusterList = recoTrk.getRelationsFrom(
"SVDClusters")
539 nClusters += len(clusterList)
540 if len(clusterList) == 0:
544 for d
in clusterList:
545 trkTime += d.getClsTime()
546 trkTime /= len(clusterList)
548 for d
in clusterList:
549 clsTime = d.getClsTime()
550 groupIds = d.getTimeGroupId()
551 groupInfo = d.getTimeGroupInfo()
553 if not math.isnan(svdEventT0):
555 trkTime0 - clsTime, svdEventT0 - trkTime0)
556 if not math.isnan(cdcEventT0):
558 trkTime0 - clsTime, cdcEventT0 - trkTime0)
559 self.
TH2F_Store[self.
TH2F_Index[
"th2f_aveClsTimeInTrk_vs_cdcEventT0"]].Fill(trkTime, cdcEventT0)
560 if not math.isnan(svdEventT0):
562 trkTime - clsTime, svdEventT0 - trkTime)
563 if not math.isnan(cdcEventT0):
565 trkTime - clsTime, cdcEventT0 - trkTime)
568 if not math.isnan(cdcEventT0):
570 if not math.isnan(topOnlineEventT0)
and eclTCEmax:
572 eclTCEmax, clsTime - topOnlineEventT0)
578 if len(groupIds) == 0:
580 for id
in range(len(groupIds)):
584 if len(groupInfo) > 0:
585 par0, par1, par2 = groupInfo[id]
589 if par1 > sigMin
and par1 < sigMax:
597 eclTCEmax, nClusters)