85 ''' event processing: fill ntuple and histograms '''
89 for timeZero
in timeZeros:
90 extHit = timeZero.getRelated(
'ExtHits')
92 B2WARNING(
'no related extHits')
95 for barhit
in mcParticles[0].getRelationsWith(
'TOPBarHits'):
96 if barhit.getModuleID() == extHit.getCopyID():
99 B2WARNING(
'no corresponding TOPBarHit')
102 moduleID = timeZero.getModuleID()
103 if extHit.getCopyID() != moduleID:
104 B2ERROR(
'moduleID in extHit differs: ' + str(extHit.getCopyID()) +
106 if barHit.getModuleID() != moduleID:
107 B2ERROR(
'moduleID in barHit differs: ' + str(barHit.getModuleID()) +
110 self.data.slot = moduleID
111 self.data.nfot = timeZero.getNumPhotons()
112 self.data.pdg = barHit.getPDG()
113 pos = barHit.getLocalPosition()
114 self.data.x = pos.x()
115 self.data.y = pos.y()
116 self.data.z = pos.z()
117 self.data.t = barHit.getTime()
118 phiBar = math.pi / 2 - math.pi / 8 * (moduleID - 0.5)
119 mom = barHit.getMomentum()
121 self.data.p = mom.Mag()
122 self.data.theta = math.degrees(mom.Theta())
123 self.data.phi = math.degrees(mom.Phi())
124 dr = extHit.getPosition() - barHit.getPosition()
126 self.data.dx = dr.x()
127 self.data.dy = dr.y()
128 self.data.dz = dr.z()
129 self.data.dt = extHit.getTOF() - self.data.t
130 momExt = extHit.getMomentum()
131 momExt.RotateZ(phiBar)
132 self.data.dp = momExt.Mag() - self.data.p
133 self.data.dtheta = math.degrees(momExt.Theta()) - self.data.theta
134 self.data.dphi = math.degrees(momExt.Phi()) - self.data.phi
135 self.data.t0 = timeZero.getTime()
136 self.data.t0err = timeZero.getError()
137 self.data.timeShift = timeShift
138 self.data.dt0 = self.data.dt + self.data.t0 - self.data.timeShift
141 self.reso.Fill(self.data.dt0)
142 self.pull.Fill(self.data.dt0/self.data.t0err)
143 if timeZero.getChi2().GetEntries() > 0:
144 timeZero.getChi2().Write()
145 timeZero.getPDF().Write()
146 timeZero.getHits().Write()