98 """Fill the residual and pull histograms"""
103 for truehit
in truehits:
106 clusters = truehit.getRelationsFrom(
"PXDClusters")
109 for j, cls
in enumerate(clusters):
112 if clusters.weight(j) < 100:
115 mom = truehit.getMomentum()
118 thetaU = math.atan(tu) * 180 / math.pi
119 thetaV = math.atan(tv) * 180 / math.pi
122 for mcp
in truehit.getRelationsFrom(
"MCParticles"):
123 if not mcp.hasStatus(1):
128 clusterkind = cls.getKind()
133 if clusterkind <= 3
and mom.Mag() > 0.02:
138 self.hist_map_momentum[clusterkind].Fill(mom.Mag())
139 self.hist_map_theta_u[clusterkind].Fill(thetaU)
140 self.hist_map_theta_v[clusterkind].Fill(thetaV)
141 self.hist_map_clustercharge[clusterkind].Fill(cls.getCharge())
144 self.hist_map_momentum[4].Fill(mom.Mag())
145 self.hist_map_theta_u[4].Fill(thetaU)
146 self.hist_map_theta_v[4].Fill(thetaV)
147 self.hist_map_clustercharge[4].Fill(cls.getCharge())
151 pull_u = (truehit.getU() - cls.getU()) / cls.getUSigma()
152 pull_v = (truehit.getV() - cls.getV()) / cls.getVSigma()
154 self.hist_map_residual_u[(clusterkind, mode)].Fill(truehit.getU() - cls.getU())
155 self.hist_map_residual_v[(clusterkind, mode)].Fill(truehit.getV() - cls.getV())
156 self.hist_map_residual_pull_u[(clusterkind, mode)].Fill(pull_u)
157 self.hist_map_residual_pull_v[(clusterkind, mode)].Fill(pull_v)
159 if thetaV >= self.binlimits[0][0]
and thetaV < self.binlimits[0][1]:
160 self.hist_map_residual_v_special[(clusterkind, mode, 0)].Fill(truehit.getV() - cls.getV())
161 elif thetaV >= self.binlimits[1][0]
and thetaV < self.binlimits[1][1]:
162 self.hist_map_residual_v_special[(clusterkind, mode, 1)].Fill(truehit.getV() - cls.getV())
164 self.hist_map_residual_v_special[(clusterkind, mode, 2)].Fill(truehit.getV() - cls.getV())
166 shape_likelyhood = PositionEstimator.getShapeLikelyhood(cls, tu, tv)
167 if shape_likelyhood > 0:
168 self.nfound_shapes += 1
170 offset = PositionEstimator.getClusterOffset(cls, tu, tv)
173 self.nfound_offset += 1
177 shiftU = sensor_info.getUCellPosition(cls.getUStart())
178 shiftV = sensor_info.getVCellPosition(cls.getVStart())
182 pull_u = (truehit.getU() - shiftU - offset.getU()) / (math.sqrt(offset.getUSigma2()))
183 pull_v = (truehit.getV() - shiftV - offset.getV()) / (math.sqrt(offset.getVSigma2()))
185 self.hist_map_residual_u[(clusterkind, mode)].Fill(truehit.getU() - shiftU - offset.getU())
186 self.hist_map_residual_v[(clusterkind, mode)].Fill(truehit.getV() - shiftV - offset.getV())
187 self.hist_map_residual_pull_u[(clusterkind, mode)].Fill(pull_u)
188 self.hist_map_residual_pull_v[(clusterkind, mode)].Fill(pull_v)
190 if thetaV >= self.binlimits[0][0]
and thetaV < self.binlimits[0][1]:
191 self.hist_map_residual_v_special[(clusterkind, mode, 0)].Fill(
192 truehit.getV() - shiftV - offset.getV())
193 elif thetaV >= self.binlimits[1][0]
and thetaV < self.binlimits[1][1]:
194 self.hist_map_residual_v_special[(clusterkind, mode, 1)].Fill(
195 truehit.getV() - shiftV - offset.getV())
197 self.hist_map_residual_v_special[(clusterkind, mode, 2)].Fill(
198 truehit.getV() - shiftV - offset.getV())
202 self.hist_map_residual_u[(clusterkind, mode)].Fill(truehit.getU() - shiftU - offset.getU())
203 self.hist_map_residual_v[(clusterkind, mode)].Fill(truehit.getV() - shiftV - offset.getV())
204 self.hist_map_residual_pull_u[(clusterkind, mode)].Fill(pull_u)
205 self.hist_map_residual_pull_v[(clusterkind, mode)].Fill(pull_v)
207 if thetaV >= self.binlimits[0][0]
and thetaV < self.binlimits[0][1]:
208 self.hist_map_residual_v_special[(clusterkind, mode, 0)].Fill(
209 truehit.getV() - shiftV - offset.getV())
210 elif thetaV >= self.binlimits[1][0]
and thetaV < self.binlimits[1][1]:
211 self.hist_map_residual_v_special[(clusterkind, mode, 1)].Fill(
212 truehit.getV() - shiftV - offset.getV())
214 self.hist_map_residual_v_special[(clusterkind, mode, 2)].Fill(
215 truehit.getV() - shiftV - offset.getV())
221 pull_u = (truehit.getU() - cls.getU()) / cls.getUSigma()
222 pull_v = (truehit.getV() - cls.getV()) / cls.getVSigma()
224 self.hist_map_residual_u[(clusterkind, mode)].Fill(truehit.getU() - cls.getU())
225 self.hist_map_residual_v[(clusterkind, mode)].Fill(truehit.getV() - cls.getV())
226 self.hist_map_residual_pull_u[(clusterkind, mode)].Fill(pull_u)
227 self.hist_map_residual_pull_v[(clusterkind, mode)].Fill(pull_v)
229 if thetaV >= self.binlimits[0][0]
and thetaV < self.binlimits[0][1]:
230 self.hist_map_residual_v_special[(clusterkind, mode, 0)].Fill(truehit.getV() - cls.getV())
231 elif thetaV >= self.binlimits[1][0]
and thetaV < self.binlimits[1][1]:
232 self.hist_map_residual_v_special[(clusterkind, mode, 1)].Fill(truehit.getV() - cls.getV())
234 self.hist_map_residual_v_special[(clusterkind, mode, 2)].Fill(truehit.getV() - cls.getV())