Belle II Software  release-05-01-25
validatePhase2Cosmics.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # *****************************************************************************
5 
6 # title : 3_ValidationCosmics.py
7 # description : Validation of cosmic tracks in phase II
8 # author : Jakub Kandra (jakub.kandra@karlov.mff.cuni.cz)
9 # date : 8. 2. 2018
10 
11 # *****************************************************************************
12 
13 from modularAnalysis import *
14 import math
15 from basf2 import *
16 
17 import ROOT
18 from ROOT import Belle2
19 from ROOT import gROOT, AddressOf
20 
21 gROOT.ProcessLine('struct TrackData {\
22  float chi2;\
23  float ndf;\
24  float chiSquaredOverNdf;\
25  float momentum;\
26 };')
27 
28 gROOT.ProcessLine('struct DEDXData {\
29  float acdCount;\
30  float dE;\
31  float path;\
32  float momentumCDC;\
33  int numberOfHits;\
34  float distanceKLM;\
35 };')
36 
37 from ROOT import TrackData, DEDXData
38 
39 
40 class CosmicAnalysis(Module):
41 
42  """A module to analyse residuals in overlaps of ladders."""
43 
44  def __init__(self):
45  """Initialize the module"""
46 
47  super(CosmicAnalysis, self).__init__()
48 
49 
50  self.rootfile = ROOT.TFile('cosmicAnalysis.root', 'recreate')
51 
52  self.tree_track = ROOT.TTree('track', '')
53 
54  self.tree_DEDX = ROOT.TTree('dedx', '')
55 
56  ROOT.gStyle.Reset()
57  ROOT.gStyle.SetCanvasColor(0)
58  ROOT.gStyle.SetStatBorderSize(1)
59  ROOT.gStyle.SetStatColor(0)
60  ROOT.gStyle.SetTitleColor(1)
61  ROOT.gStyle.SetCanvasColor(0)
62  ROOT.gStyle.SetPadColor(0)
63  ROOT.gStyle.SetPadBorderMode(0)
64  ROOT.gStyle.SetCanvasBorderMode(0)
65  ROOT.gStyle.SetFrameBorderMode(0)
66  ROOT.gStyle.SetOptStat(0)
67 
68 
69  self.trackData = TrackData()
70  # Declare tree branches
71  for key in TrackData.__dict__:
72  if '__' not in key:
73  formstring = '/F'
74  if isinstance(self.trackData.__getattribute__(key), int):
75  formstring = '/I'
76  self.tree_track.Branch(key, AddressOf(self.trackData, key), key + formstring)
77 
78  self.dedxData = DEDXData()
79  # Declare tree branches
80  for key in DEDXData.__dict__:
81  if '__' not in key:
82  formstring = '/F'
83  if isinstance(self.dedxData.__getattribute__(key), int):
84  formstring = '/I'
85  self.tree_DEDX.Branch(key, AddressOf(self.dedxData, key), key + formstring)
86 
87  self.TotalNumberOfHits = ROOT.TH1F('TotalNumberOfHits', '', 6, 0.5, 6.5)
88 
89  self.HitsVsLayer = ROOT.TH2F('HitsVsLayer', '', 6, 0.5, 6.5, 6, 0.5, 6.5)
90 
91  self.HitsVsSensor = ROOT.TH2F('HitsVsSensor', '', 6, 0.5, 6.5, 5, 0.5, 5.5)
92 
93  self.LayerVsSensor = ROOT.TH2F('LayerVsSensor', '', 6, 0.5, 6.5, 5, 0.5, 5.5)
94 
95  self.PXDClusterSize = ROOT.TH1F('PXDClusterSize', '', 20, 0.5, 20.5)
96 
97  self.Chi2 = ROOT.TH1F('Chi2', '', 300, 0.0, 500)
98 
99  self.NDF = ROOT.TH1F('NDF', '', 200, 0.0, 200)
100 
101  self.Chi2OverNDF = ROOT.TH1F('Chi2OverNDF', '', 300, 0.0, 5)
102 
103  self.Momentum = ROOT.TH1F('Momentum', '', 500, 0.0, 1000)
104 
105  self.ADCCountOverNumberOfHitsInCDC = ROOT.TH1F('ADCCountOverNumberOfHitsInCDC', '', 200, 0.0, 300)
106 
108  'ADCCountOverNumberOfHitsInCDCVsMomentum', '', 200, 0.0, 300, 0.0, 1000)
109 
111  'MomentumVsADCCountOverNumberOfHitsInCDC', '', 100, 0.0, 100, 0.0, 1000)
112 
113  def beginRun(self):
114  """Do nothing"""
115 
116  def event(self):
117  """ Fill histograms """
118 
119  # Study dEdx (CDC) as prediction of momentum
120  cdcDedxTracks = Belle2.PyStoreArray('CDCDedxTracks')
121  nCDCDedxTracks = cdcDedxTracks.getEntries()
122  for DEDXTrack_index in range(nCDCDedxTracks):
123  dedxTrack = cdcDedxTracks[DEDXTrack_index]
124  self.dedxData.momentumCDC = dedxTrack.getMomentum()
125  self.dedxData.acdCount = 0
126  self.dedxData.dE = 0
127  self.dedxData.path = 0
128  self.dedxData.numberOfHits = dedxTrack.size()
129  KLMClusters = Belle2.PyStoreArray('KLMClusters')
130  nKLMClusters = KLMClusters.getEntries()
131  if nKLMClusters == 2:
132  for nHit in range(dedxTrack.size()):
133  self.dedxData.acdCount = self.dedxData.acdCount + dedxTrack.getADCCount(nHit)
134  self.dedxData.dE = self.dedxData.dE + dedxTrack.getDE(nHit)
135  self.dedxData.path = self.dedxData.path + dedxTrack.getPath(nHit)
136  self.dedxData.distanceKLM = math.sqrt(
137  math.pow(
138  KLMClusters[0].getClusterPosition().Z() -
139  KLMClusters[1].getClusterPosition().Z(),
140  2))
141 
142  self.ADCCountOverNumberOfHitsInCDC.Fill(self.dedxData.acdCount / dedxTrack.size())
143  self.MomentumVsADCCountOverNumberOfHitsInCDC.Fill(
144  self.dedxData.momentumCDC, self.dedxData.acdCount / dedxTrack.size())
145  self.ADCCountOverNumberOfHitsInCDCVsMomentum.Fill(
146  self.dedxData.acdCount / dedxTrack.size(), self.dedxData.momentumCDC)
147 
148  self.rootfile.cd()
149  self.tree_DEDX.Fill()
150 
151  # We are using RecoTracks to finding overlaps.
152  RecoTracks = Belle2.PyStoreArray('RecoTracks')
153  nRecoTracks = RecoTracks.getEntries()
155  for track_index in range(nRecoTracks):
156  track = RecoTracks[track_index]
157 
158  if track.wasFitSuccessful():
159 
160  TrackFitResults = Belle2.PyStoreArray('TrackFitResults')
161  nTrackFitResults = TrackFitResults.getEntries()
162  if nTrackFitResults == 1:
163  self.trackData.momentum = TrackFitResults[0].getMomentum().Mag()
164  self.Momentum.Fill(TrackFitResults[0].getMomentum().Mag())
165 
166  if track.hasPXDHits() or track.hasSVDHits():
167 
168  if track.getNumberOfSVDHits() % 2 == 0:
169  totalNumberOfHits = track.getNumberOfPXDHits() + track.getNumberOfSVDHits() / 2
170  else:
171  totalNumberOfHits = track.getNumberOfPXDHits() + (track.getNumberOfSVDHits() - 1) / 2
172 
173  self.TotalNumberOfHits.Fill(totalNumberOfHits)
174  # print('Total number of hits:', totalNumberOfHits)
175 
176  self.Chi2.Fill(track.getTrackFitStatus().getChi2())
177  self.NDF.Fill(track.getTrackFitStatus().getNdf())
178  self.Chi2OverNDF.Fill(track.getTrackFitStatus().getChi2() / track.getTrackFitStatus().getNdf())
179 
180  self.trackData.chi2 = track.getTrackFitStatus().getChi2()
181  self.trackData.ndf = track.getTrackFitStatus().getNdf()
182  self.trackData.chiSquaredOverNdf = track.getTrackFitStatus().getChi2() / track.getTrackFitStatus().getNdf()
183  # print('Chi2/NDF:', self.trackData.chiSquaredOverNdf, 'Chi2:', self.trackData.chi2)
184  self.rootfile.cd()
185  self.tree_track.Fill()
186 
187  # Check overlaps in PXD ladders & Check track in RecoTracks
188  if track.hasPXDHits():
189 
190  # Print number of PXD hits
191  EventMetaData = Belle2.PyStoreObj('EventMetaData')
192  event = EventMetaData.getEvent()
193  nPxdHits = track.getNumberOfPXDHits()
194  # print('Event', event, 'has PXD', nPxdHits, 'hit(s):')
195 
196  # First loop over PXD Hits
197  for n in range(0, len(track.getPXDHitList())):
198  pxdHit = track.getPXDHitList()[n]
199  sensorID = Belle2.VxdID(pxdHit.getSensorID())
200  info = geoCache.get(sensorID)
201  layer = sensorID.getLayerNumber()
202  ladder = sensorID.getLadderNumber()
203  sensor = sensorID.getSensorNumber()
204  # print('Hit information: #hit:', n, 'sensor information:', layer, ladder, sensor)
205  self.HitsVsLayer.Fill(totalNumberOfHits, layer)
206  self.HitsVsSensor.Fill(totalNumberOfHits, sensor)
207  self.LayerVsSensor.Fill(layer, sensor)
208  self.PXDClusterSize.Fill(track.getPXDHitList()[n].getSize())
209 
210  # Check overlaps in SVD ladders
211  if track.hasSVDHits():
212 
213  # Print number of SVD hits
214  EventMetaData = Belle2.PyStoreObj('EventMetaData')
215  event = EventMetaData.getEvent()
216  nSvdHits = track.getNumberOfSVDHits()
217  # print('Event', event, 'has SVD', nSvdHits, 'hit(s):')
218 
219  # First loop over SVD Hits
220  measured = ROOT.TVector3(0, 0, 0)
221  expected = ROOT.TVector3(0, 0, 0)
222  for n in range(0, len(track.getSVDHitList())):
223  svdHit = track.getSVDHitList()[n]
224  sensorID = Belle2.VxdID(svdHit.getSensorID())
225  info = geoCache.get(sensorID)
226  layer = sensorID.getLayerNumber()
227  ladder = sensorID.getLadderNumber()
228  sensor = sensorID.getSensorNumber()
229 
230  if svdHit.isUCluster():
231  # print('Hit information: #hit:', n, 'sensor information:', layer, ladder, sensor, 'isU')
232  for l in range(0, len(track.getSVDHitList())):
233  svdHitA = track.getSVDHitList()[l]
234  sensorIDA = Belle2.VxdID(svdHitA.getSensorID())
235  if info == geoCache.get(sensorIDA):
236  if svdHitA.isUCluster() == 0:
237  # print('Hit information: #hit:', n, 'sensor information:', layer, ladder, sensor)
238  self.HitsVsLayer.Fill(totalNumberOfHits, layer)
239  self.HitsVsSensor.Fill(totalNumberOfHits, sensor)
240  self.LayerVsSensor.Fill(layer, sensor)
241  # else:
242  # print('Hit information: #hit:', n, 'sensor information:', layer, ladder, sensor, 'isNotU')
243  else:
244  print('Fit was not successful')
245 
246  def terminate(self):
247  """Close & write output files"""
248  self.rootfile.cd()
249 
250  labelHits = ('', 'One', 'Two', 'Three', 'Four', 'Five', 'Six')
251  labelLayers = ('', 'First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth')
252  labelSensors = ('', 'First', 'Second', 'Third', 'Fourth', 'Fifth')
253 
254  for i in range(1, 7):
255  self.TotalNumberOfHits.GetXaxis().SetBinLabel(i, labelHits[i])
256  self.TotalNumberOfHits.GetXaxis().SetLabelSize(0.05)
257  self.TotalNumberOfHits.GetYaxis().SetTitle("Number of tracks in VXD")
258  self.TotalNumberOfHits.GetXaxis().SetTitle("Number of hits in VXD")
259  self.TotalNumberOfHits.GetYaxis().CenterTitle()
260  self.TotalNumberOfHits.GetXaxis().CenterTitle()
261  self.TotalNumberOfHits.GetYaxis().SetTitleOffset(1.3)
262  self.TotalNumberOfHits.GetXaxis().SetTitleOffset(1.3)
263  self.TotalNumberOfHits.SetFillStyle(3365)
264  self.TotalNumberOfHits.SetFillColor(9)
265  self.TotalNumberOfHits.SetLineColor(9)
266  self.TotalNumberOfHits.Draw()
267  # self.TotalNumberOfHits.Write()
268 
269  for i in range(1, 7):
270  self.HitsVsLayer.GetXaxis().SetBinLabel(i, labelHits[i])
271  self.HitsVsLayer.GetYaxis().SetBinLabel(i, labelLayers[i])
272  self.HitsVsLayer.GetXaxis().SetLabelSize(0.05)
273  self.HitsVsLayer.GetYaxis().SetLabelSize(0.05)
274  self.HitsVsLayer.GetXaxis().SetTitle("Number hits in VXD")
275  self.HitsVsLayer.GetYaxis().SetTitle("Layer")
276  self.HitsVsLayer.GetYaxis().CenterTitle()
277  self.HitsVsLayer.GetXaxis().CenterTitle()
278  self.HitsVsLayer.GetYaxis().SetTitleOffset(1.6)
279  self.HitsVsLayer.GetXaxis().SetTitleOffset(1.3)
280  ROOT.gPad.SetMargin(0.11, 0.11, 0.1, 0.1)
281  self.HitsVsLayer.Draw()
282  # self.HitsVsLayer.Write()
283 
284  for i in range(1, 7):
285  self.HitsVsSensor.GetXaxis().SetBinLabel(i, labelHits[i])
286  for i in range(1, 6):
287  self.HitsVsSensor.GetYaxis().SetBinLabel(i, labelSensors[i])
288  self.HitsVsSensor.GetXaxis().SetLabelSize(0.05)
289  self.HitsVsSensor.GetYaxis().SetLabelSize(0.05)
290  self.HitsVsSensor.GetXaxis().SetTitle("Number hits in VXD")
291  self.HitsVsSensor.GetYaxis().SetTitle("Sensor")
292  self.HitsVsSensor.GetYaxis().CenterTitle()
293  self.HitsVsSensor.GetXaxis().CenterTitle()
294  self.HitsVsSensor.GetYaxis().SetTitleOffset(1.6)
295  self.HitsVsSensor.GetXaxis().SetTitleOffset(1.3)
296  ROOT.gPad.SetMargin(0.11, 0.11, 0.1, 0.1)
297  self.HitsVsSensor.Draw()
298  # self.HitsVsSensor.Write()
299 
300  for i in range(1, 7):
301  self.LayerVsSensor.GetXaxis().SetBinLabel(i, labelLayers[i])
302  for i in range(1, 6):
303  self.LayerVsSensor.GetYaxis().SetBinLabel(i, labelSensors[i])
304  self.LayerVsSensor.GetXaxis().SetLabelSize(0.05)
305  self.LayerVsSensor.GetYaxis().SetLabelSize(0.05)
306  self.LayerVsSensor.GetXaxis().SetTitle("Layer")
307  self.LayerVsSensor.GetYaxis().SetTitle("Sensor")
308  self.LayerVsSensor.GetYaxis().CenterTitle()
309  self.LayerVsSensor.GetXaxis().CenterTitle()
310  self.LayerVsSensor.GetYaxis().SetTitleOffset(1.6)
311  self.LayerVsSensor.GetXaxis().SetTitleOffset(1.3)
312  ROOT.gPad.SetMargin(0.11, 0.11, 0.1, 0.1)
313  self.LayerVsSensor.Draw()
314  # self.LayerVsSensor.Write()
315 
316  self.Chi2.GetXaxis().SetTitle("#Chi^{2}")
317  self.Chi2.GetYaxis().SetTitle("Number of tracks")
318  self.Chi2.GetYaxis().CenterTitle()
319  self.Chi2.GetXaxis().CenterTitle()
320  self.Chi2.GetYaxis().SetTitleOffset(1.3)
321  self.Chi2.GetXaxis().SetTitleOffset(1.3)
322  self.Chi2.SetFillStyle(3365)
323  self.Chi2.SetFillColor(9)
324  self.Chi2.SetLineColor(9)
325  self.Chi2.Draw()
326  # self.Chi2.Write()
327 
328  self.NDF.GetXaxis().SetTitle("Degrees of freedom")
329  self.NDF.GetYaxis().SetTitle("Number of tracks")
330  self.NDF.GetYaxis().CenterTitle()
331  self.NDF.GetXaxis().CenterTitle()
332  self.NDF.GetYaxis().SetTitleOffset(1.3)
333  self.NDF.GetXaxis().SetTitleOffset(1.3)
334  self.NDF.SetFillStyle(3365)
335  self.NDF.SetFillColor(9)
336  self.NDF.SetLineColor(9)
337  self.NDF.Draw()
338  # self.NDF.Write()
339 
340  self.Chi2OverNDF.SetTitle("#Chi^{2}/Degrees of freedom")
341  self.Chi2OverNDF.GetYaxis().SetTitle("Number of tracks")
342  self.Chi2OverNDF.GetYaxis().CenterTitle()
343  self.Chi2OverNDF.GetXaxis().CenterTitle()
344  self.Chi2OverNDF.GetYaxis().SetTitleOffset(1.3)
345  self.Chi2OverNDF.GetXaxis().SetTitleOffset(1.3)
346  self.Chi2OverNDF.SetFillStyle(3365)
347  self.Chi2OverNDF.SetFillColor(9)
348  self.Chi2OverNDF.SetLineColor(9)
349  self.Chi2OverNDF.Draw()
350  # self.Chi2OverNDF.Write()
351 
352  self.Momentum.GetXaxis().SetTitle("Momentum [GeVc^{-1}]")
353  self.Momentum.GetYaxis().SetTitle("Number of tracks")
354  self.Momentum.GetYaxis().CenterTitle()
355  self.Momentum.GetXaxis().CenterTitle()
356  self.Momentum.GetYaxis().SetTitleOffset(1.3)
357  self.Momentum.GetXaxis().SetTitleOffset(1.3)
358  self.Momentum.SetFillStyle(3365)
359  self.Momentum.SetFillColor(9)
360  self.Momentum.SetLineColor(9)
361  self.Momentum.Draw()
362  # self.Momentum.Write()
363 
364  self.ADCCountOverNumberOfHitsInCDC.GetXaxis().SetTitle("ADC Count [ADC] / number of hit")
365  self.ADCCountOverNumberOfHitsInCDC.GetYaxis().SetTitle("Number of tracks")
366  self.ADCCountOverNumberOfHitsInCDC.GetYaxis().CenterTitle()
367  self.ADCCountOverNumberOfHitsInCDC.GetXaxis().CenterTitle()
368  self.ADCCountOverNumberOfHitsInCDC.GetYaxis().SetTitleOffset(1.3)
369  self.ADCCountOverNumberOfHitsInCDC.GetXaxis().SetTitleOffset(1.3)
370  self.ADCCountOverNumberOfHitsInCDC.SetFillStyle(3365)
371  self.ADCCountOverNumberOfHitsInCDC.SetFillColor(9)
372  self.ADCCountOverNumberOfHitsInCDC.SetLineColor(9)
374  # self.ADCCountOverNumberOfHitsInCDC.Write()
375 
376  function = ROOT.TF1("function", "[0]+[1]*log(x)")
377  function.SetParameters(0.0, 0.0)
378  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetYaxis().SetTitle("ADC Count [ADC] / number of hit")
379  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetXaxis().SetTitle("Momentum [GeVc^{-1}]")
380  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetYaxis().CenterTitle()
381  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetXaxis().CenterTitle()
382  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetYaxis().SetTitleOffset(1.3)
383  self.MomentumVsADCCountOverNumberOfHitsInCDC.GetXaxis().SetTitleOffset(1.3)
384  self.MomentumVsADCCountOverNumberOfHitsInCDC.Fit(function)
386  # self.MomentumVsADCCountOverNumberOfHitsInCDC.Write()
387 
388  inverse_function = ROOT.TF1("inverse_function", "exp((-[0]+x)/[1])", 0, 115)
389  inverse_function.SetParameter(0, function.GetParameter(0))
390  inverse_function.SetParameter(1, function.GetParameter(1))
391  constant = ROOT.TF1("constant", "[0]", 115, 300)
392  constant.SetParameter(0, 20)
393  self.ADCCountOverNumberOfHitsInCDCVsMomentum.Fit(inverse_function, "R+")
394  self.ADCCountOverNumberOfHitsInCDCVsMomentum.Fit(constant, "R+")
395  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetXaxis().SetTitle("ADC Count [ADC] / number of hit")
396  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetYaxis().SetTitle("Momentum [GeVc^{-1}]")
397  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetYaxis().CenterTitle()
398  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetXaxis().CenterTitle()
399  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetYaxis().SetTitleOffset(1.3)
400  self.ADCCountOverNumberOfHitsInCDCVsMomentum.GetXaxis().SetTitleOffset(1.3)
402  # self.ADCCountOverNumberOfHitsInCDCVsMomentum.Write()
403 
404  print('Parameters of fitted function y = exp((-p0+x)/p1) + p2, where x ~ ADCCounts/NumberOfCDCHits, y ~ momentum')
405  print('p0 =', inverse_function.GetParameter(0), 'p1 =', inverse_function.GetParameter(1), 'p2 =', constant.GetParameter(0))
406 
407  self.PXDClusterSize.GetXaxis().SetTitle("Size of PXD Clusters")
408  self.PXDClusterSize.GetYaxis().SetTitle("Number of tracks")
409  self.PXDClusterSize.GetYaxis().CenterTitle()
410  self.PXDClusterSize.GetXaxis().CenterTitle()
411  self.PXDClusterSize.GetYaxis().SetTitleOffset(1.3)
412  self.PXDClusterSize.GetXaxis().SetTitleOffset(1.3)
413  self.PXDClusterSize.SetFillStyle(3365)
414  self.PXDClusterSize.SetFillColor(9)
415  self.PXDClusterSize.SetLineColor(9)
416  self.PXDClusterSize.Draw()
417 
418  self.rootfile.Write()
419  self.rootfile.Close()
420 
421 main = create_path()
422 
423 main.add_module('RootInput')
424 main.add_module('Gearbox')
425 main.add_module('Geometry')
426 
427 import reconstruction as reco
428 reco.add_cosmics_reconstruction(main, pruneTracks=False, merge_tracks=True)
429 main.add_module('DAFRecoFitter', pdgCodesToUseForFitting=[13])
430 main.add_module("CDCDedxPID")
431 
432 CosmicAnalysis = CosmicAnalysis()
433 main.add_module(CosmicAnalysis)
434 
435 progress = register_module('ProgressBar')
436 main.add_module(progress)
437 
438 process(main)
439 
440 # Print call statistics
441 print(statistics)
validatePhase2Cosmics.CosmicAnalysis.__init__
def __init__(self)
Definition: validatePhase2Cosmics.py:44
validatePhase2Cosmics.CosmicAnalysis.Chi2OverNDF
Chi2OverNDF
Histogram with track Chi2/NDF.
Definition: validatePhase2Cosmics.py:101
validatePhase2Cosmics.CosmicAnalysis.HitsVsLayer
HitsVsLayer
Histogram with number of hits vs.
Definition: validatePhase2Cosmics.py:89
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
validatePhase2Cosmics.CosmicAnalysis.Chi2
Chi2
Histogram with track Chi2.
Definition: validatePhase2Cosmics.py:97
validatePhase2Cosmics.CosmicAnalysis
Definition: validatePhase2Cosmics.py:40
validatePhase2Cosmics.CosmicAnalysis.PXDClusterSize
PXDClusterSize
Histogram with PXD cluster size.
Definition: validatePhase2Cosmics.py:95
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:69
validatePhase2Cosmics.CosmicAnalysis.ADCCountOverNumberOfHitsInCDCVsMomentum
ADCCountOverNumberOfHitsInCDCVsMomentum
Profile with ADC count vs.
Definition: validatePhase2Cosmics.py:107
validatePhase2Cosmics.CosmicAnalysis.tree_DEDX
tree_DEDX
Tree with dE/dx data.
Definition: validatePhase2Cosmics.py:54
validatePhase2Cosmics.CosmicAnalysis.terminate
def terminate(self)
Definition: validatePhase2Cosmics.py:246
validatePhase2Cosmics.CosmicAnalysis.MomentumVsADCCountOverNumberOfHitsInCDC
MomentumVsADCCountOverNumberOfHitsInCDC
Profile with ADC count vs.
Definition: validatePhase2Cosmics.py:110
validatePhase2Cosmics.CosmicAnalysis.TotalNumberOfHits
TotalNumberOfHits
Histogram with total number of hits on track.
Definition: validatePhase2Cosmics.py:87
Belle2::VXD::GeoCache::getInstance
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition: GeoCache.cc:215
validatePhase2Cosmics.CosmicAnalysis.LayerVsSensor
LayerVsSensor
Histogram with hitted layer vs.
Definition: validatePhase2Cosmics.py:93
validatePhase2Cosmics.CosmicAnalysis.NDF
NDF
Histogram with track NDF.
Definition: validatePhase2Cosmics.py:99
validatePhase2Cosmics.CosmicAnalysis.rootfile
rootfile
Input root file.
Definition: validatePhase2Cosmics.py:50
validatePhase2Cosmics.CosmicAnalysis.Momentum
Momentum
Histogram with track momentum.
Definition: validatePhase2Cosmics.py:103
validatePhase2Cosmics.CosmicAnalysis.HitsVsSensor
HitsVsSensor
Histogram with number of hits vs.
Definition: validatePhase2Cosmics.py:91
validatePhase2Cosmics.CosmicAnalysis.ADCCountOverNumberOfHitsInCDC
ADCCountOverNumberOfHitsInCDC
Histogram with ADC count vs.
Definition: validatePhase2Cosmics.py:105
validatePhase2Cosmics.CosmicAnalysis.dedxData
dedxData
struct with dE/dx data
Definition: validatePhase2Cosmics.py:78
validatePhase2Cosmics.CosmicAnalysis.event
def event(self)
Definition: validatePhase2Cosmics.py:116
validatePhase2Cosmics.CosmicAnalysis.trackData
trackData
struct with track data
Definition: validatePhase2Cosmics.py:69
Belle2::PyStoreArray
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:58
validatePhase2Cosmics.CosmicAnalysis.beginRun
def beginRun(self)
Definition: validatePhase2Cosmics.py:113
validatePhase2Cosmics.CosmicAnalysis.tree_track
tree_track
Tree with track data.
Definition: validatePhase2Cosmics.py:52