12 from ROOT
import Belle2
14 from ROOT
import gStyle, gROOT, AddressOf, TH2F
18 gROOT.ProcessLine(
'struct TreeStruct {\
33 from ROOT
import TreeStruct
40 ''' t0const ntpule infomation '''
47 f = ROOT.TFile.Open(
't0const_slot' + str(args[1]) +
'.root')
49 t0const[event.channel] = event.t0Const
52 histTimeCh = TH2F(
'before T0Cal slot#' + str(args[1]),
'before T0Cal slot#' + str(args[1]), 512, 0, 511, 500, 50, 100)
54 histCalTimeCh = TH2F(
'after T0Cal slot#' + str(args[1]),
'after T0Cal slot#' + str(args[1]), 512, 0, 511, 500, 50, 100)
56 histTimeCh.GetXaxis().SetTitle(
'channel')
57 histTimeCh.GetYaxis().SetTitle(
'time [ns]')
58 histCalTimeCh.GetXaxis().SetTitle(
'channel')
59 histCalTimeCh.GetYaxis().SetTitle(
'time [ns]')
62 ''' Initialize the Module: output root file '''
65 self.
file = ROOT.TFile(
't0CalTime_slot' + str(args[1]) +
'.root',
'recreate')
67 self.
tree = ROOT.TTree(
'laser',
'')
71 for key
in TreeStruct.__dict__.keys():
74 if isinstance(self.
data.__getattribute__(key), int):
76 self.
tree.Branch(key, AddressOf(self.
data, key), key + formstring)
79 ''' Event processor: fill the tree and scatter plots '''
83 if digit.getModuleID() == int(args[1]):
84 self.
data.slot = digit.getModuleID()
85 self.
data.channel = digit.getChannel()
86 self.
data.pixel = digit.getPixelID()
87 self.
data.time = digit.getTime()
88 self.
data.caltime = digit.getTime() + t0const.get(digit.getChannel())
89 self.
data.height = digit.getPulseHeight()
90 self.
data.width = digit.getPulseWidth()
91 self.
data.quality = digit.getHitQuality()
92 self.
data.rawtime = digit.getRawTime()
93 self.
data.firstwindow = digit.getFirstWindow()
94 self.
data.pmtpixel = digit.getPMTPixel()
95 self.
data.pmt = digit.getPMTNumber()
100 self.
histTimeCh.Fill(digit.getChannel(), digit.getTime())
101 self.
histCalTimeCh.Fill(digit.getChannel(), digit.getTime() - t0const.get(digit.getChannel()))
104 ''' Write the file '''
117 main.add_module(
'RootInput')
123 main.add_module(
'Progress')