lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.2 -r1.3
--- ConeReassignmentAlgorithm.java 28 Jul 2008 18:39:43 -0000 1.2
+++ ConeReassignmentAlgorithm.java 7 Sep 2008 07:35:40 -0000 1.3
@@ -9,22 +9,25 @@
public class ConeReassignmentAlgorithm implements ReassignClustersAlgorithm {
protected double m_limit;
- protected LocalHelixExtrapolator m_findCluster;
- public ConeReassignmentAlgorithm(double limit, LocalHelixExtrapolator findCluster) {
+ protected HelixExtrapolator m_findCluster;
+ public ConeReassignmentAlgorithm(double limit, HelixExtrapolator findCluster) {
m_limit = limit;
m_findCluster = findCluster;
}
public Double computeFigureOfMerit(Track tr, Cluster clus) {
- Hep3Vector interceptPoint = m_findCluster.performExtrapolation(tr);
- if (interceptPoint != null) {
- Hep3Vector tangent = m_findCluster.getTangent();
- Hep3Vector tangentUnit = VecOp.unit(tangent);
- Hep3Vector clusterPosition = new BasicHep3Vector(clus.getPosition());
- Hep3Vector displacement = VecOp.sub(clusterPosition, interceptPoint);
- Hep3Vector displacementUnit = VecOp.unit(displacement);
- double angle=Math.acos(VecOp.dot(tangentUnit, displacementUnit));
- if (angle < m_limit) {
- return new Double(angle);
+ HelixExtrapolationResult result = m_findCluster.performExtrapolation(tr);
+ if (result != null) {
+ Hep3Vector interceptPoint = result.getInterceptPoint();
+ if (interceptPoint != null) {
+ Hep3Vector tangent = result.getTangent();
+ Hep3Vector tangentUnit = VecOp.unit(tangent);
+ Hep3Vector clusterPosition = new BasicHep3Vector(clus.getPosition());
+ Hep3Vector displacement = VecOp.sub(clusterPosition, interceptPoint);
+ Hep3Vector displacementUnit = VecOp.unit(displacement);
+ double angle=Math.acos(VecOp.dot(tangentUnit, displacementUnit));
+ if (angle < m_limit) {
+ return new Double(angle);
+ }
}
}
return null;