package hep.physics.vec; import java.io.Serializable; /** * Basic implementation of a Hep3Vector * @author Gary Bower (grb@slac.stanford.edu) * @version $Id: BasicHep3Vector.java 9146 2006-10-16 19:22:42Z tonyj $ */ public class BasicHep3Vector implements Hep3Vector, Serializable { static final long serialVersionUID = -52454965658870098L; private double x; private double y; private double z; // public BasicHep3Vector() { x = 0.; y = 0.; z = 0.; } public BasicHep3Vector(double dx, double dy, double dz) { x = dx; y = dy; z = dz; } /** * Create a BasicHep3Vector from a double array * @param d An array {x,y,z} */ public BasicHep3Vector(double[] d) { if (d.length != 3) throw new IllegalArgumentException("Illegal array length"); x = d[0]; y = d[1]; z = d[2]; } public BasicHep3Vector(float[] f) { if (f.length != 3) throw new IllegalArgumentException("Illegal array length"); x = f[0]; y = f[1]; z = f[2]; } public void setV(double dx, double dy, double dz) { x = dx; y = dy; z = dz; } public double x() { return x; } public double y() { return y; } public double z() { return z; } public double magnitude() { return Math.sqrt(x*x + y*y + z*z); } public double magnitudeSquared() { return x*x + y*y + z*z; } public double[] v() { return new double[] { x, y, z }; } public boolean equals(Object obj) { if (obj instanceof Hep3Vector) { Hep3Vector that = (Hep3Vector) obj; return x == that.x() && y == that.y() && z == that.z(); } else return false; } public String toString() { return VecOp.toString(this); } public int hashCode() { return (int) (Double.doubleToLongBits(x) + Double.doubleToLongBits(y) + Double.doubleToLongBits(z)); } }