6 <contact>G. Caria, gcaria@student.unimelb.edu.au</contact>
8 This module is used for the SVD validation.
9 It gets information about truehits and clusters, saving
10 in a ttree in a ROOT file.
21 from ROOT
import Belle2
22 from ROOT
import gROOT, AddressOf
23 from ROOT
import PyConfig
24 from ROOT
import TVector3
27 gROOT.ProcessLine(
'struct EventDataSimhit {\
38 from ROOT
import EventDataSimhit
42 '''class to create sim hit ttree'''
45 """Initialize the module"""
47 super(SVDValidationTTreeSimhit, self).
__init__()
48 self.
file = ROOT.TFile(
'../SVDValidationTTreeSimhit.root',
'recreate')
49 '''Output ROOT file'''
50 self.
tree = ROOT.TTree(
'tree',
'Event data of SVD validation events')
51 '''TTrees for output data'''
52 self.
data = EventDataSimhit()
53 '''Instance of the EventDataSimhit class'''
56 for key
in EventDataSimhit.__dict__:
59 if isinstance(self.
data.__getattribute__(key), int):
61 self.
tree.Branch(key, AddressOf(self.
data, key), key + formstring)
64 """Find simhits with a truehit and save needed information"""
69 for truehit
in svd_truehits:
70 simhits = truehit.getRelationsTo(
'SVDSimHits')
71 for simhit
in simhits:
73 sensorID = simhit.getSensorID()
74 self.
data.sensor_id = int(sensorID)
75 sensorNum = sensorID.getSensorNumber()
76 self.
data.sensor = sensorNum
77 layerNum = sensorID.getLayerNumber()
78 self.
data.layer = layerNum
79 ladderNum = sensorID.getLadderNumber()
80 self.
data.ladder = ladderNum
88 self.
data.sensor_type = sensorType
91 particle = simhit.getRelatedFrom(
'MCParticles')
92 if not particle.hasStatus(Belle2.MCParticle.c_PrimaryParticle):
95 length = (simhit.getPosOut() - simhit.getPosIn()).Mag()
98 energy = simhit.getElectrons() * Belle2.Const.ehEnergy
99 self.
data.simhit_length = length
100 self.
data.simhit_energy = energy
101 self.
data.simhit_dEdx = energy / length
103 if self.
data.simhit_dEdx > 0.015:
110 """Close the output file. """