10 from ROOT
import Belle2
15 """A module to gather data on charge sharing in the SVD."""
18 """Initialize the module"""
20 super(SVDChargeSharing, self).
__init__()
22 self.
file = open(
'SVDChargeSharingData.txt',
'w')
25 """ Write legend for file columns """
27 self.
file.write(
'sensor_type layer ladder sensor truehit_index cluster_index ')
28 self.
file.write(
'truehit_u truehit_eta_u truehit_v truehit_eta_v charge_keV ')
29 self.
file.write(
'theta_u theta_v cluster_isU cluster_pos cluster_eta ')
30 self.
file.write(
'cluster_charge_ADU seed_charge_ADU cluster_size\n')
33 """Find clusters with a truehit and print some stats."""
36 nTruehits = truehits.getEntries()
38 nClusters = clusters.getEntries()
43 for cluster_index
in range(nClusters):
44 cluster = clusters[cluster_index]
46 truehit = cluster.getRelated(
'SVDTrueHits')
55 info = geoCache.get(sensorID)
56 layer = sensorID.getLayerNumber()
57 ladder = sensorID.getLadderNumber()
58 sensor = sensorID.getSensorNumber()
60 if sensor == 1
and layer != 3:
63 sensorType =
'barrel' if layer > 3
else 'layer3'
64 s +=
'{sID} {layer} {ladder} {sensor} {indexT:4d} {indexC:4d} '.format(
69 indexT=truehit.getArrayIndex(),
73 truehit_u = truehit.getU()
74 truehit_v = truehit.getV()
75 pitch_u = info.getUPitch()
76 truehit_eta_u = (truehit_u / pitch_u) % 1
77 pitch_v = info.getVPitch()
78 truehit_eta_v = (truehit_v / pitch_v) % 1
79 thetaU = math.atan2(truehit.getExitU() - truehit.getEntryU(),
81 thetaV = math.atan2(truehit.getExitV() - truehit.getEntryV(),
83 s +=
'{uTH:10.5f} {uTHeta:10.5f} {vTH:10.5f} {vTHeta:10.5f} {eTH:10.7f} '.format(
84 uTH=truehit_u, uTHeta=truehit_eta_u,
85 vTH=truehit_v, vTHeta=truehit_eta_v,
86 eTH=1.0e6 * truehit.getEnergyDep()
87 ) +
'{thetaU:6.3f} {thetaV:6.3f} '.format(
88 thetaU=thetaU, thetaV=thetaV
91 cluster_pitch = (pitch_u
if cluster.isUCluster()
else pitch_v)
92 cluster_eta = (cluster.getPosition() / cluster_pitch) % 1
93 s +=
'{isU} {uvC:10.5f} {uvCeta:10.5f} {eC:10.1f} '.format(
94 isU=cluster.isUCluster(),
95 uvC=cluster.getPosition(),
97 eC=cluster.getCharge()
98 ) +
'{eSeed:10.1f} {size:5d}'.format(
99 eSeed=cluster.getSeedCharge(),
100 size=cluster.getSize())
106 """ Close the output file."""