10 from ROOT
import Belle2
11 from ROOT
import gROOT, AddressOf
14 gROOT.ProcessLine(
'struct EventDataSimHit {\
29 float simhit_PosOutX;\
30 float simhit_PosOutY;\
31 float simhit_PosOutZ;\
33 float simhit_EnergyDep;\
34 float simhit_GlobalTime;\
38 from ROOT
import EventDataSimHit
44 A simple module to check the simulation of PXDTrueHits with Geant4 steps.
45 This module writes its output to a ROOT tree.
46 Primary goal is supporting of validation plots
50 """Initialize the module"""
52 super(PXDValidationTTreeSimHit, self).
__init__()
54 self.
file = ROOT.TFile(
'PXDValidationTTreeSimHitOutput.root',
57 self.
tree = ROOT.TTree(
'tree',
'Event data of PXD simulation')
59 self.
data = EventDataSimHit()
61 for key
in EventDataSimHit.__dict__:
64 if isinstance(self.
data.__getattribute__(key), int):
66 self.
tree.Branch(key, AddressOf(self.
data, key), key + formstring)
72 """Find simhits with a truehit and save needed information."""
77 for truehit
in pxd_truehits:
78 pxd_simhits = truehit.getRelationsTo(
'PXDSimHits')
79 for simhit
in pxd_simhits:
83 'EventMetaData').obj().getExperiment()
85 'EventMetaData').obj().
getRun()
87 'EventMetaData').obj().getEvent()
89 vxd_id = simhit.getSensorID()
90 self.data.vxd_id = vxd_id.getID()
91 self.data.layer = vxd_id.getLayerNumber()
92 self.data.ladder = vxd_id.getLadderNumber()
93 self.data.sensor = vxd_id.getSensorNumber()
95 VPitch = sensor_info.getVPitch(simhit.getPosIn().Y())
96 self.data.pixel_type = (vxd_id.getLayerNumber() - 1) * 2
97 if vxd_id.getLayerNumber() == 1:
99 self.data.pixel_type += 1
100 if vxd_id.getLayerNumber() == 2:
102 self.data.pixel_type += 1
104 self.data.simhit_index = simhit.getArrayIndex()
105 self.data.truehit_index = truehit.getArrayIndex()
107 self.data.simhit_PDGcode = simhit.getPDGcode()
108 self.data.simhit_PosInX = simhit.getPosIn().X()
109 self.data.simhit_PosInY = simhit.getPosIn().Y()
110 self.data.simhit_PosInZ = simhit.getPosIn().Z()
111 self.data.simhit_PosOutX = simhit.getPosOut().X()
112 self.data.simhit_PosOutY = simhit.getPosOut().Y()
113 self.data.simhit_PosOutZ = simhit.getPosOut().Z()
114 self.data.simhit_Length = (simhit.getPosOut() - simhit.getPosIn()).Mag()
115 self.data.simhit_EnergyDep = simhit.getElectrons()
116 self.data.simhit_GlobalTime = simhit.getGlobalTime()
122 """ Close the output file."""