package hep.physics.vec; 

import java.io.Serializable;
import org.apache.commons.math3.util.FastMath;

/**
 * BasicImplementation of a HepLorentzVector (4-vector)
 * @author Gary Bower (grb@slac.stanford.edu)
 * @version $Id: BasicHepLorentzVector.java 9146 2006-10-16 19:22:42Z tonyj $
 */

public class BasicHepLorentzVector implements HepLorentzVector, Serializable
{
   static final long serialVersionUID = -6544699016896436061L;
   private double t;
   private Hep3Vector v;
   private boolean vIsOwned = false;
   //
   public BasicHepLorentzVector()
   {
      this.t = 0.;
      this.v = new BasicHep3Vector();
      vIsOwned = true;
   }
   public BasicHepLorentzVector(double t, double x, double y, double z)
   {
      this.t = t;
      this.v = new BasicHep3Vector(x, y, z);
      vIsOwned = true;
   }
   public BasicHepLorentzVector(double t, double[] x)
   {
      this.t = t;
      this.v = new BasicHep3Vector(x);
      vIsOwned = true;
   }
   public BasicHepLorentzVector(double t, float[] x)
   {
      this.t = t;
      this.v = new BasicHep3Vector(x);
      vIsOwned = true;
   }
   public BasicHepLorentzVector(double t, Hep3Vector v)
   {
      this.t = t;
      this.v = v;
      vIsOwned = false;
   }
   public void setV3(double t, double x, double y, double z)
   {
      this.t = t;
      if (vIsOwned) ((BasicHep3Vector) v).setV(x, y, z);
      else
      {
         this.v = new BasicHep3Vector(x,y,z);
         vIsOwned = true;
      }
   }
   public void setV3(double t, Hep3Vector v)
   {
      this.t = t;
      this.v = v;
      vIsOwned = false;
   }
   public void setT(double t)
   {
      this.t = t;
   }
   public double t()
   {
      return t;
   }
   public Hep3Vector v3()
   {
      return v;
   }
   public double magnitude()
   {
      return FastMath.sqrt(VecOp.dot(this,this));
   }
   public double magnitudeSquared()
   {
      return VecOp.dot(this,this);
   }

   public boolean equals(Object obj)
   {
      if (obj instanceof HepLorentzVector)
      {
         HepLorentzVector that = (HepLorentzVector) obj;
         return v.equals(that.v3()) && that.t()==t;
      }
      else return false;
   }

   public int hashCode()
   {
      return v.hashCode() + (int) Double.doubleToRawLongBits(t);
   }

   public String toString()
   {
      return VecOp.toString(this);
   }
}

 

Ads help maintain this website.