package hep.physics.particle;
import hep.physics.particle.properties.ParticleType;
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.HepLorentzVector;
import java.util.List;
/**
* Description of a particle equivalent to HEPevt description
*/
public interface Particle
{
/**
* Energy
*/
double getEnergy();
/**
* Mass
*/
double getMass();
/**
* Particle Type
*/
ParticleType getType();
/**
* Convenience method for getting particles PDGID
*/
int getPDGID();
/**
* Momentum
*/
Hep3Vector getMomentum();
/**
* Point of origin
*/
Hep3Vector getOrigin();
double getOriginX();
double getOriginY();
double getOriginZ();
/**
* X component of momentum
*/
double getPX();
/**
* Y component of momentum
*/
double getPY();
/**
* Z component of momentum
*/
double getPZ();
/**
* Production time
*/
double getProductionTime();
/**
* Status code, one of FINALSTATE, INTERMEDIATE or DOCUMENTATION
*/
int getGeneratorStatus();
/**
* Returns a list of the decay products of this particle
*/
List getDaughters();
/**
* Returns a list of the parent(s) of this particle
*/
List getParents();
/**
* Returns the particle's charge
*/
double getCharge();
/**
* Return this particles momentum and energy as a 4-vector
*/
HepLorentzVector asFourVector();
final static int FINAL_STATE = 1;
final static int INTERMEDIATE = 2;
final static int DOCUMENTATION = 3;
}