Belle II Software  release-05-02-19
studyTBCResolution.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 from basf2 import *
5 import sys
6 import glob
7 from ROOT import Belle2
8 from ROOT import TH1F, TH2F, TF1, TFile, TGraphErrors
9 
10 #
11 # ------------------------------------------------------------------------
12 # Module to study the features of the double pulse used for the TOP calibration.
13 # To be used to determine the TBC quality and precision
14 #
15 # Contributors: Umberto Tamponi (tamponi@to.infn.it)
16 #
17 # usage: basf2 studyTBCResolution.py dbaddress (path|none) type (local|pocket) output_name.root path_to_sroot run1 run2 ... runN
18 # The run number accepts wildcards
19 # ------------------------------------------------------------------------
20 
21 
22 class TOPTBCResolution(Module):
23 
24  ''' Module to study resolution and performances of the TOP Time Base Calibration.'''
25 
26 
27  h_WidthVSAmplitude_1 = TH2F(
28  'WidthVSAmplitude_1',
29  'Width VS amplidute of the TOPDigits, first calibration pulse',
30  2000, 0., 2000, 100, 0., 10.)
31 
32  h_WidthVSAmplitude_2 = TH2F(
33  'WidthVSAmplitude_2',
34  'Width VS amplidute of the TOPDigits, second calibration pulse',
35  2000, 0., 2000, 100, 0., 10.)
36 
37 
38  h_dVdtRising_1 = TH1F('dVdtRising_1', ' dV/dt of the TOPRawDigits (rising edge), first calibration pulse', 1000, 0, 1000)
39 
40  h_dVdtRising_2 = TH1F('dVdtRising_2', ' dV/dt of the TOPRawDigits (rising edge), second calibration pulse', 1000, 0, 1000)
41 
42  h_dVdtFalling_1 = TH1F('dVdtFalling_1', ' dV/dt of the TOPRawDigits (falling edge), first calibration pulse', 1000, 0, 1000)
43 
44  h_dVdtFalling_2 = TH1F('dVdtFalling_2', ' dV/dt of the TOPRawDigits (falling edge), second calibration pulse', 1000, 0, 1000)
45 
46  h_dVdtRisingVSdVdtFalling_1 = TH2F(
47  'dVdtRisingVSdVdtFalling_1',
48  ' dV/dt of the TOPRawDigit: rising edge VS falling edge, first calibration pulse ',
49  1000, 0, 1000, 1000, 0., 1000.)
50 
51  h_dVdtRisingVSdVdtFalling_2 = TH2F(
52  'dVdtRisingVSdVdtFalling_2',
53  ' dV/dt of the TOPRawDigit: rising edge VS falling edge, second calibration pulse ',
54  1000, 0, 1000, 1000, 0., 1000.)
55 
56  h_dVdtRisingDifference = TH1F(
57  'dVdtRisingDifference', ' difference between the rising edge dV/dt of the first and the second pulse', 1000, -500, 500)
58 
59  h_dVdtFallingDifference = TH1F(
60  'dVdtFallingDifference', ' difference between the falling edge dV/dt of the first and the second pulse', 1000, -500, 500)
61 
62 
63  h_DeltaT_RR = TH1F('DeltaT_RR', ' DeltaT bewteen the rising edges', 4000, 10, 30)
64 
65  h_DeltaT_FF = TH1F('DeltaT_FF', ' DeltaT bewteen the falling edges', 4000, 10, 30)
66 
67  h_DeltaT_FR = TH1F('DeltaT_FR', ' DeltaT bewteen falling and rising edges', 4000, 10, 30)
68 
69  h_DeltaT_RF = TH1F('DeltaT_RF', ' DeltaT bewteen rising and falling edges', 4000, 10, 30)
70 
71 
72  h_DeltaTVSChannel_RR = TH2F(
73  'DeltaTVSChannel_RR',
74  ' DeltaT bewteen the rising edges, as function of the channel number',
75  512 * 16, 0, 512 * 16, 4000, 10., 30.)
76 
77  h_DeltaTVSChannel_FF = TH2F(
78  'DeltaTVSChannel_FF',
79  ' DeltaT bewteen the falling edges, as function of the channel number',
80  512 * 16, 0, 512 * 16, 4000, 10., 30.)
81 
82  h_DeltaTVSChannel_FR = TH2F(
83  'DeltaTVSChannel_FR',
84  ' DeltaT bewteen falling (pulse 1) and rising (pulse 2) edge, as function of the channel number',
85  512 * 16, 0, 512 * 16, 4000, 10., 30.)
86 
87  h_DeltaTVSChannel_RF = TH2F(
88  'DeltaTVSChannel_RF',
89  ' DeltaT bewteen rising (pulse 1) and falling (pulse 2) edge, as function of the channel number',
90  512 * 16, 0, 512 * 16, 4000, 10., 30.)
91 
92  h_DeltaTVSdVdt_RR = TH2F(
93  'DeltaTVSdVdt_RR',
94  'DeltaT bewteen the rising edges VS average of dV/dt on the first and second pulser',
95  1000, 0., 1000., 4000, 10., 30.)
96 
97  h_DeltaTVSdVdt_FF = TH2F(
98  'DeltaTVSdVdt_FF',
99  'DeltaT bewteen the rising edges VS average of dV/dt on the first and second pulser',
100  1000, 0., 1000., 4000, 10., 30.)
101 
102 
103  h_ResolutionVSdVdt_FF = TGraphErrors()
104 
105  h_ResolutionVSdVdt_RR = TGraphErrors()
106 
107 
108  outname = 'outStudyTBCResolution.root'
109 
110  m_calpulseMaxWidth = 3.
111 
112  m_calpulseMinWidth = 0.5
113 
114  m_calpulseMaxAmp = 700.
115 
116  m_calpulseMinAmp = 250.
117 
118  m_ignoreNotCalibrated = True
119 
120  def setOutputName(self, outputname):
121  ''' Sets the output file name '''
122 
123  self.outname = outputname
124 
125  def setMaxWidth(self, maxWidth):
126  ''' Sets the maximum calpulse width '''
127 
128  self.m_calpulseMaxWidth = maxWidth
129 
130  def setMinWidth(self, minWidth):
131  ''' Sets the minimum calpulse width '''
132 
133  self.m_calpulseMinWidth = minWidth
134 
135  def setMaxAmp(self, maxAmp):
136  ''' Sets the maximum calpulse amplitude '''
137 
138  self.m_calpulseMaxAmp = maxAmp
139 
140  def setMinAmp(self, minAmp):
141  ''' Sets the minimum calpulse amplitude '''
142 
143  self.m_calpulseMinAmp = minAmp
144 
145  def ignoreNotCalibrated(self, ignoreNotCal):
146  ''' Sets the flag to ingore the hits without calibration '''
147 
148  self.m_ignoreNotCalibrated = ignoreNotCal
149 
150  def event(self):
151  ''' Event processor: fill histograms '''
152 
153  digits = Belle2.PyStoreArray('TOPDigits')
154 
155  for ipulse1, digit1 in enumerate(digits):
156  if(self.ignoreNotCalibrated and not digit1.isTimeBaseCalibrated()):
157  continue
158  if (digit1.getHitQuality() != 0 and
159  digit1.getPulseHeight() > self.m_calpulseMinAmp and
160  digit1.getPulseHeight() < self.m_calpulseMaxAmp and
161  digit1.getPulseWidth() > self.m_calpulseMinWidth and
162  digit1.getPulseWidth() < self.m_calpulseMaxWidth):
163 
164  slotID = digit1.getModuleID()
165  hwchan = digit1.getChannel()
166  for ipulse2, digit2 in enumerate(digits, start=ipulse1 + 1):
167  if(self.ignoreNotCalibrated and not digit2.isTimeBaseCalibrated()):
168  continue
169 
170  if (digit2.getHitQuality() != 0 and
171  digit2.getPulseHeight() > self.m_calpulseMinAmp and
172  digit2.getPulseHeight() < self.m_calpulseMaxAmp and
173  digit2.getPulseWidth() > self.m_calpulseMinWidth and
174  digit2.getPulseWidth() < self.m_calpulseMaxWidth and
175  slotID == digit2.getModuleID() and
176  hwchan == digit2.getChannel()):
177 
178  # finds which one is the first calpulse
179  rawDigitFirst = digit1.getRelated('TOPRawDigits')
180  rawDigitSecond = digit2.getRelated('TOPRawDigits')
181  if digit1.getTime() > digit2.getTime():
182  rawDigitFirst = digit2.getRelated('TOPRawDigits')
183  rawDigitSecond = digit1.getRelated('TOPRawDigits')
184  digitFirst = rawDigitFirst.getRelated('TOPDigits')
185  digitSecond = rawDigitSecond.getRelated('TOPDigits')
186 
187  globalCh = hwchan + 512 * (slotID - 1)
188  dV1_R = rawDigitFirst.getLeadingSlope()
189  dV1_F = -rawDigitFirst.getFallingSlope()
190  dV2_R = rawDigitSecond.getLeadingSlope()
191  dV2_F = -rawDigitSecond.getFallingSlope()
192  t1_R = digitFirst.getTime()
193  t1_F = digitFirst.getTime() + digitFirst.getPulseWidth()
194  t2_R = digitSecond.getTime()
195  t2_F = digitSecond.getTime() + digitSecond.getPulseWidth()
196  amp1 = digitFirst.getPulseHeight()
197  amp2 = digitSecond.getPulseHeight()
198  w1 = digitFirst.getPulseWidth()
199  w2 = digitSecond.getPulseWidth()
200 
201  self.h_WidthVSAmplitude_1.Fill(amp1, w1)
202  self.h_WidthVSAmplitude_2.Fill(amp2, w2)
203  self.h_dVdtRising_1.Fill(dV1_R)
204  self.h_dVdtRising_2.Fill(dV2_R)
205  self.h_dVdtFalling_1.Fill(dV1_F)
206  self.h_dVdtFalling_2.Fill(dV2_F)
207  self.h_dVdtRisingVSdVdtFalling_1.Fill(dV1_F, dV1_R)
208  self.h_dVdtRisingVSdVdtFalling_2.Fill(dV2_F, dV2_R)
209  self.h_dVdtRisingDifference.Fill(dV1_R - dV2_R)
210  self.h_dVdtFallingDifference.Fill(dV1_F - dV2_F)
211  self.h_DeltaT_RR.Fill(t2_R - t1_R)
212  self.h_DeltaT_FF.Fill(t2_F - t1_F)
213  self.h_DeltaT_FR.Fill(t2_F - t1_R)
214  self.h_DeltaT_RF.Fill(t2_R - t1_F)
215  self.h_DeltaTVSChannel_RR.Fill(globalCh, t2_R - t1_R)
216  self.h_DeltaTVSChannel_FF.Fill(globalCh, t2_F - t1_F)
217  self.h_DeltaTVSChannel_FR.Fill(globalCh, t2_F - t1_R)
218  self.h_DeltaTVSChannel_RF.Fill(globalCh, t2_R - t1_F)
219  self.h_DeltaTVSdVdt_RR.Fill(0.5 * (dV1_R + dV2_R), t2_R - t1_R)
220  self.h_DeltaTVSdVdt_FF.Fill(0.5 * (dV1_F + dV2_F), t2_F - t1_F)
221 
222  def terminate(self):
223  ''' Write histograms to file, fills and fits the resolution plots'''
224 
225  self.h_ResolutionVSdVdt_RR.SetName('ResolutionVSdVdt_RR')
226  self.h_ResolutionVSdVdt_RR.SetTitle('Resolution VS dV/dt (rising-rising)')
227  self.h_ResolutionVSdVdt_FF.SetName('ResolutionVSdVdt_FF')
228  self.h_ResolutionVSdVdt_FF.SetTitle('Resolution VS dV/dt (falling-falling)')
229 
230  for ibin in range(0, 10):
231  projection = self.h_DeltaTVSdVdt_RR.ProjectionY("tmpProj", ibin * 100 + 1, (ibin + 1) * 100)
232  gaussFit = TF1("gaussFit", "[0]*exp(-0.5*((x-[1])/[2])**2)", 10., 30.)
233  gaussFit.SetParameter(0, 1.)
234  gaussFit.SetParameter(1, projection.GetMean())
235  gaussFit.SetParameter(2, projection.GetRMS())
236  gaussFit.SetParLimits(2, 0., 3. * projection.GetRMS())
237 
238  projection.Fit("gaussFit")
239  self.h_ResolutionVSdVdt_RR.SetPoint(ibin, ibin * 100. + 50., gaussFit.GetParameter(2))
240  self.h_ResolutionVSdVdt_RR.SetPointError(ibin, 50., gaussFit.GetParError(2))
241 
242  tfile = TFile(self.outname, 'recreate')
243  self.h_WidthVSAmplitude_1.GetXaxis().SetTitle("TOPDigit amplitude [ADC counts]")
244  self.h_WidthVSAmplitude_1.GetYaxis().SetTitle("TOPDigit width [ns]")
245  self.h_WidthVSAmplitude_1.Write()
246  self.h_WidthVSAmplitude_2.GetXaxis().SetTitle("TOPDigit amplitude [ADC counts]")
247  self.h_WidthVSAmplitude_2.GetYaxis().SetTitle("TOPDigit width [ns]")
248  self.h_WidthVSAmplitude_2.Write()
249 
250  self.h_dVdtRising_1.GetXaxis().SetTitle("dV/dt [ADC counts / sample]")
251  self.h_dVdtRising_1.Write()
252  self.h_dVdtRising_2.GetXaxis().SetTitle("dV/dt [ADC counts / sample]")
253  self.h_dVdtRising_2.Write()
254  self.h_dVdtFalling_1.GetXaxis().SetTitle("dV/dt [ADC counts / sample]")
255  self.h_dVdtFalling_1.Write()
256  self.h_dVdtFalling_2.GetXaxis().SetTitle("dV/dt [ADC counts / sample]")
257  self.h_dVdtFalling_2.Write()
258 
259  self.h_dVdtRisingVSdVdtFalling_1.GetXaxis().SetTitle("dV/dt on the falling edge [ADC counts / sample]")
260  self.h_dVdtRisingVSdVdtFalling_1.GetYaxis().SetTitle("dV/dt on the rising edge [ADC counts / sample]")
261  self.h_dVdtRisingVSdVdtFalling_1.Write()
262 
263  self.h_dVdtRisingVSdVdtFalling_2.GetXaxis().SetTitle("dV/dt on the falling edge [ADC counts / sample]")
264  self.h_dVdtRisingVSdVdtFalling_2.GetYaxis().SetTitle("dV/dt on the rising edge [ADC counts / sample]")
265  self.h_dVdtRisingVSdVdtFalling_2.Write()
266 
267  self.h_dVdtFallingDifference.GetXaxis().SetTitle("dV/dt_1 - dV/dt_2 [ADC counts / sample]")
268  self.h_dVdtFallingDifference.Write()
269 
270  self.h_dVdtRisingDifference.GetXaxis().SetTitle("dV/dt_1 - dV/dt_2 [ADC counts / sample]")
271  self.h_dVdtRisingDifference.Write()
272 
273  self.h_DeltaT_RR.GetXaxis().SetTitle("#Delta t [ns]")
274  self.h_DeltaT_RR.Write()
275  self.h_DeltaT_FF.GetXaxis().SetTitle("#Delta t [ns]")
276  self.h_DeltaT_FF.Write()
277  self.h_DeltaT_FR.GetXaxis().SetTitle("#Delta t [ns]")
278  self.h_DeltaT_FR.Write()
279  self.h_DeltaT_RF.GetXaxis().SetTitle("#Delta t [ns]")
280  self.h_DeltaT_RF.Write()
281 
282  self.h_DeltaTVSChannel_RR.GetXaxis().SetTitle("Global channel number [hwChannel + 512*(slotID-1)]")
283  self.h_DeltaTVSChannel_RR.GetYaxis().SetTitle("#Delta t [ns]")
284  self.h_DeltaTVSChannel_RR.Write()
285  self.h_DeltaTVSChannel_FF.GetXaxis().SetTitle("Global channel number [hwChannel + 512*(slotID-1)]")
286  self.h_DeltaTVSChannel_FF.GetYaxis().SetTitle("#Delta t [ns]")
287  self.h_DeltaTVSChannel_FF.Write()
288  self.h_DeltaTVSChannel_FR.GetXaxis().SetTitle("Global channel number [hwChannel + 512*(slotID-1)]")
289  self.h_DeltaTVSChannel_FR.GetYaxis().SetTitle("#Delta t [ns]")
290  self.h_DeltaTVSChannel_FR.Write()
291  self.h_DeltaTVSChannel_RF.GetXaxis().SetTitle("Global channel number [hwChannel + 512*(slotID-1)]")
292  self.h_DeltaTVSChannel_RF.GetYaxis().SetTitle("#Delta t [ns]")
293  self.h_DeltaTVSChannel_RF.Write()
294 
295  self.h_DeltaTVSdVdt_RR.GetXaxis().SetTitle("Average of dV/dt on first and second pulse [ACD counts / sample]")
296  self.h_DeltaTVSdVdt_RR.GetYaxis().SetTitle("#Delta t [ns]")
297  self.h_DeltaTVSdVdt_RR.Write()
298 
299  self.h_DeltaTVSdVdt_FF.GetXaxis().SetTitle("Average of dV/dt on first and second pulse [ACD counts / sample]")
300  self.h_DeltaTVSdVdt_FF.GetYaxis().SetTitle("#Delta t [ns]")
301  self.h_DeltaTVSdVdt_FF.Write()
302 
303  self.h_ResolutionVSdVdt_RR.Write()
304  tfile.Close()
305 
306 
307 argvs = sys.argv
308 
309 print('usage: basf2', argvs[0], 'runNumber outfileName')
310 
311 dbaddress = argvs[1] # path to the calibration DB (absolute path or 'none')
312 datatype = argvs[2] # data type ('pocket' or 'local')
313 outfile = argvs[3] # output name
314 folder = argvs[4] # folder containing the sroot files
315 runnumbers = sys.argv[5:] # run numbers
316 
317 files = []
318 for runnumber in runnumbers:
319  files += [f for f in glob.glob(str(folder) + '/*' + str(runnumber) + '*.sroot')]
320 
321 for fname in files:
322  print("file: " + fname)
323 
324 if dbaddress != 'none':
325  print("using local DB " + dbaddress)
326  reset_database()
327  use_local_database(dbaddress + "/localDB.txt", dbaddress)
328 else:
329  print("database not set. Continuing without calibrations")
330 
331 # Suppress messages and warnings during processing
332 set_log_level(LogLevel.ERROR)
333 
334 # Define a global tag (note: the one given bellow can be out-dated!)
335 use_central_database('data_reprocessing_proc8')
336 
337 # Create path
338 main = create_path()
339 
340 # input
341 roinput = register_module('SeqRootInput')
342 roinput.param('inputFileNames', files)
343 main.add_module(roinput)
344 
345 # conversion from RawCOPPER or RawDataBlock to RawDetector objects
346 if datatype == 'pocket':
347  print('pocket DAQ data assumed')
348  converter = register_module('Convert2RawDet')
349  main.add_module(converter)
350 
351 # Initialize TOP geometry parameters (creation of Geant geometry is not needed)
352 main.add_module('TOPGeometryParInitializer')
353 
354 # Unpacking (format auto detection works now)
355 unpack = register_module('TOPUnpacker')
356 main.add_module(unpack)
357 
358 # Add multiple hits by running feature extraction offline
359 featureExtractor = register_module('TOPWaveformFeatureExtractor')
360 main.add_module(featureExtractor)
361 
362 # Convert to TOPDigits
363 converter = register_module('TOPRawDigitConverter')
364 if dbaddress == 'none':
365  print("Not using TBC")
366  converter.param('useSampleTimeCalibration', False)
367 else:
368  print("Using TBC")
369  converter.param('useSampleTimeCalibration', True)
370 converter.param('useAsicShiftCalibration', False)
371 converter.param('useChannelT0Calibration', False)
372 converter.param('useModuleT0Calibration', False)
373 converter.param('useCommonT0Calibration', False)
374 converter.param('calibrationChannel', -1) # do not specify the calpulse channel
375 converter.param('lookBackWindows', 28) # in number of windows
376 main.add_module(converter)
377 
378 # resolution plotter
379 resolutionModule = TOPTBCResolution()
380 resolutionModule.setOutputName(outfile)
381 resolutionModule.setMinWidth(0.5) # calpluse candidate selection
382 resolutionModule.setMaxWidth(3.5) # calpluse candidate selection
383 resolutionModule.setMinAmp(150) # calpluse candidate selection
384 resolutionModule.setMaxAmp(999) # calpluse candidate selection
385 if dbaddress == 'none':
386  resolutionModule.ignoreNotCalibrated(False)
387 else:
388  resolutionModule.ignoreNotCalibrated(True)
389 main.add_module(resolutionModule)
390 
391 # Show progress of processing
392 progress = register_module('Progress')
393 main.add_module(progress)
394 
395 # Process events
396 process(main)
397 
398 # Print call statistics
399 print(statistics)
400 print(statistics(statistics.TERM))
studyTBCResolution.TOPTBCResolution.m_calpulseMaxAmp
int m_calpulseMaxAmp
minimum amplitude to flag a calpulse candidate
Definition: studyTBCResolution.py:114
studyTBCResolution.TOPTBCResolution.h_WidthVSAmplitude_2
h_WidthVSAmplitude_2
Width VS amplitude, second calibration pulse.
Definition: studyTBCResolution.py:32
studyTBCResolution.TOPTBCResolution.h_DeltaT_RF
h_DeltaT_RF
DeltaT rising-falling.
Definition: studyTBCResolution.py:69
studyTBCResolution.TOPTBCResolution.h_DeltaT_RR
h_DeltaT_RR
DeltaT rising-rising.
Definition: studyTBCResolution.py:63
studyTBCResolution.TOPTBCResolution.h_dVdtRisingVSdVdtFalling_2
h_dVdtRisingVSdVdtFalling_2
dV/dt on the rising edge VS dV/dt on the falling edge, first calibration pulse
Definition: studyTBCResolution.py:51
studyTBCResolution.TOPTBCResolution.setMinWidth
def setMinWidth(self, minWidth)
Definition: studyTBCResolution.py:130
studyTBCResolution.TOPTBCResolution.h_DeltaTVSChannel_FR
h_DeltaTVSChannel_FR
DeltaT falling-rising VS channel.
Definition: studyTBCResolution.py:82
studyTBCResolution.TOPTBCResolution.h_ResolutionVSdVdt_FF
h_ResolutionVSdVdt_FF
DeltaT resolution VS average of dV/dt (falling-falling)
Definition: studyTBCResolution.py:103
studyTBCResolution.TOPTBCResolution.event
def event(self)
Definition: studyTBCResolution.py:150
studyTBCResolution.TOPTBCResolution.h_WidthVSAmplitude_1
h_WidthVSAmplitude_1
Width VS amplitude, first calibration pulse.
Definition: studyTBCResolution.py:27
studyTBCResolution.TOPTBCResolution.h_DeltaTVSChannel_RF
h_DeltaTVSChannel_RF
DeltaT rising-falling VS channel.
Definition: studyTBCResolution.py:87
studyTBCResolution.TOPTBCResolution.h_dVdtFallingDifference
h_dVdtFallingDifference
Difference between the dV/dt of the first and the second calpulse, using the rising edges.
Definition: studyTBCResolution.py:59
studyTBCResolution.TOPTBCResolution.h_dVdtRisingVSdVdtFalling_1
h_dVdtRisingVSdVdtFalling_1
dV/dt on the rising edge VS dV/dt on the falling edge, first calibration pulse
Definition: studyTBCResolution.py:46
studyTBCResolution.TOPTBCResolution.m_ignoreNotCalibrated
bool m_ignoreNotCalibrated
ignores the hits wthout calibration
Definition: studyTBCResolution.py:118
studyTBCResolution.TOPTBCResolution.h_DeltaTVSdVdt_FF
h_DeltaTVSdVdt_FF
DeltaT falling-falling VS average of dV/dt on the first and second pulse.
Definition: studyTBCResolution.py:97
studyTBCResolution.TOPTBCResolution.h_DeltaTVSChannel_FF
h_DeltaTVSChannel_FF
DeltaT falling-falling VS channel.
Definition: studyTBCResolution.py:77
studyTBCResolution.TOPTBCResolution.setMaxWidth
def setMaxWidth(self, maxWidth)
Definition: studyTBCResolution.py:125
studyTBCResolution.TOPTBCResolution.terminate
def terminate(self)
Definition: studyTBCResolution.py:222
studyTBCResolution.TOPTBCResolution.setMaxAmp
def setMaxAmp(self, maxAmp)
Definition: studyTBCResolution.py:135
studyTBCResolution.TOPTBCResolution.h_DeltaT_FF
h_DeltaT_FF
DeltaT falling-falling.
Definition: studyTBCResolution.py:65
studyTBCResolution.TOPTBCResolution.h_DeltaTVSdVdt_RR
h_DeltaTVSdVdt_RR
DeltaT rising-rising VS average of dV/dt on the first and second pulse.
Definition: studyTBCResolution.py:92
studyTBCResolution.TOPTBCResolution.m_calpulseMinAmp
int m_calpulseMinAmp
minimum amplitude to flag a calpulse candidate
Definition: studyTBCResolution.py:116
studyTBCResolution.TOPTBCResolution.h_DeltaT_FR
h_DeltaT_FR
DeltaT falling-rising.
Definition: studyTBCResolution.py:67
studyTBCResolution.TOPTBCResolution.h_dVdtRising_2
h_dVdtRising_2
dV/dt on the rising edge, second calibration pulse
Definition: studyTBCResolution.py:40
studyTBCResolution.TOPTBCResolution.h_DeltaTVSChannel_RR
h_DeltaTVSChannel_RR
DeltaT rising-rising VS channel.
Definition: studyTBCResolution.py:72
studyTBCResolution.TOPTBCResolution.h_dVdtFalling_1
h_dVdtFalling_1
dV/dt on the falling edge, first calibration pulse
Definition: studyTBCResolution.py:42
studyTBCResolution.TOPTBCResolution.m_calpulseMinWidth
float m_calpulseMinWidth
minimum width to flag a calpulse candidate
Definition: studyTBCResolution.py:112
studyTBCResolution.TOPTBCResolution
Definition: studyTBCResolution.py:22
studyTBCResolution.TOPTBCResolution.setOutputName
def setOutputName(self, outputname)
Definition: studyTBCResolution.py:120
Belle2::PyStoreArray
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:58
studyTBCResolution.TOPTBCResolution.h_dVdtRisingDifference
h_dVdtRisingDifference
Difference between the dV/dt of the first and the second calpulse, using the rising edges.
Definition: studyTBCResolution.py:56
studyTBCResolution.TOPTBCResolution.h_ResolutionVSdVdt_RR
h_ResolutionVSdVdt_RR
DeltaT resolution VS average of dV/dt (rising-rising)
Definition: studyTBCResolution.py:105
studyTBCResolution.TOPTBCResolution.outname
string outname
output root file
Definition: studyTBCResolution.py:108
studyTBCResolution.TOPTBCResolution.setMinAmp
def setMinAmp(self, minAmp)
Definition: studyTBCResolution.py:140
studyTBCResolution.TOPTBCResolution.ignoreNotCalibrated
def ignoreNotCalibrated(self, ignoreNotCal)
Definition: studyTBCResolution.py:145
studyTBCResolution.TOPTBCResolution.h_dVdtRising_1
h_dVdtRising_1
dV/dt on the rising edge, first calibration pulse
Definition: studyTBCResolution.py:38
studyTBCResolution.TOPTBCResolution.h_dVdtFalling_2
h_dVdtFalling_2
dV/dt on the falling edge, second calibration pulse
Definition: studyTBCResolution.py:44
studyTBCResolution.TOPTBCResolution.m_calpulseMaxWidth
int m_calpulseMaxWidth
maximum width to flag a calpulse candidate
Definition: studyTBCResolution.py:110