4from BaseDetector
import BaseDetector
8 def __init__(self, name, intree, outtree=None) -> None:
9 super().
__init__(name, intree, outtree=outtree)
12 """Digitize strawtube MC hits.
14 The earliest hit per straw will be marked valid, all later ones invalid.
16 earliest_per_det_id = {}
17 for index, point
in enumerate(self.
intree.strawtubesPoint):
18 hit = ROOT.strawtubesHit(point, self.
intree.t0)
19 self.
det.push_back(hit)
21 detector_id = hit.GetDetectorID()
22 if detector_id
in earliest_per_det_id:
23 earliest = earliest_per_det_id[detector_id]
24 if self.
det[earliest].GetTDC() > hit.GetTDC():
26 self.
det[earliest].setInvalid()
27 earliest_per_det_id[detector_id] = index
29 self.
det[index].setInvalid()
31 earliest_per_det_id[detector_id] = index
38 stop = ROOT.TVector3()
39 start = ROOT.TVector3()
41 v_drift = global_variables.modules[
"strawtubes"].StrawVdrift()
42 global_variables.modules[
"strawtubes"].StrawEndPoints(1002001, start, stop)
44 for aDigi
in self.
det:
46 if not aDigi.isValid():
48 detID = aDigi.GetDetectorID()
49 global_variables.modules[
"strawtubes"].StrawEndPoints(detID, start, stop)
50 delt1 = (start[2] - z1) / u.speedOfLight
51 t0 += aDigi.GetDigi() - delt1
60 "dist": aDigi.GetDigi(),
66 t0 = t0 / n - 73.2 * u.ns
68 delt1 = (s[
"z"] - z1) / u.speedOfLight
69 s[
"dist"] = (s[
"dist"] - delt1 - t0) * v_drift
72 def smearHits(self, no_amb=None) -> list[dict[str, int]]:
76 stop = ROOT.TVector3()
77 start = ROOT.TVector3()
78 v_drift = global_variables.modules[
"strawtubes"].StrawVdrift()
79 global_variables.modules[
"strawtubes"].StrawEndPoints(1002001, start, stop)
80 for aDigi
in self.
det:
82 if not aDigi.isValid():
84 detID = aDigi.GetDetectorID()
85 global_variables.modules[
"strawtubes"].StrawEndPoints(detID, start, stop)
86 p = self.
intree.strawtubesPoint[key]
89 smear = (aDigi.GetDigi() - self.
intree.t0 - p.GetTime() - (stop[0] - p.GetX()) / u.speedOfLight) * v_drift
105 if abs(stop.y()) == abs(start.y()):
106 global_variables.h[
"disty"].Fill(smear)
107 elif abs(stop.y()) > abs(start.y()):
108 global_variables.h[
"distu"].Fill(smear)
109 elif abs(stop.y()) < abs(start.y()):
110 global_variables.h[
"distv"].Fill(smear)
list[dict[str, int]] smearHits(self, no_amb=None)
None __init__(self, name, intree, outtree=None)
list[dict[str, int]] withT0Estimate(self)