org.jscience.physics.nuclear.kinematics.nuclear
Class EnergyLoss

java.lang.Object
  extended by org.jscience.physics.nuclear.kinematics.nuclear.EnergyLoss
All Implemented Interfaces:
java.io.Serializable, DiffEquations

public class EnergyLoss
extends java.lang.Object
implements DiffEquations, java.io.Serializable

DOCUMENT ME!

See Also:
Serialized Form

Field Summary
protected  Absorber absorber
          The current absorber object to be used in calculations.
static double AMU_TO_KEV
          DOCUMENT ME!
protected static double[] atomDensity
          Atom density of elements, in atoms/cm^3
static double AVAGADRO
          10^-24 Avagodro's number, used for conversion
protected static double[][] coeffs
          The A-1 thru A-12 coefficients for the Ziegler Energy loss formulae.
static double E_TO_4
          DOCUMENT ME!
protected static java.util.Hashtable elementLookUp
          Table to look up proton number given elemental symbol.
static double FINE_STRUCTURE
          DOCUMENT ME!
protected  double[] fractions
          The fractional amount of a chemical element in an absorber.
protected static boolean[] gas
          Whether the room temperature phase is gaseous or not.
static int INCIDENCE
          DOCUMENT ME!
protected static double[] ionPotential
          Ionization potential for the various elements.
static double MEV_TO_AMU
          Conversion Factor from MeV/c^2 to amu
protected static java.lang.String[] name
          Names of the elements.
protected static double[] natDensity
          "Natural" density of elements, in g/cm^3.
protected static double[] natWeight
          "Natural" weights of elements, in amu.
static int RADIANS
          DOCUMENT ME!
protected static java.lang.String[] symbol
          The symbol of the element
protected  double thickness
          The thickness of the absorber in micrograms/cm^2.
protected  int[] Z
          The atomic numbers of the components of the absorber.
 
Constructor Summary
EnergyLoss(Absorber a)
          Create an energy loss calculator associated with the given absorber.
 
Method Summary
 double[] dydx(double energy, double[] x)
          For the DiffEquations interface.
 Absorber getAbsorber()
          Returns the absorber object used by this instance of EnergyLoss.
static double getDensity(int element)
          Returns density of element in its most common form in g/cm^3.
 double getElectronicStoppingPower(Nucleus projectile, double energy)
          Returns the electronic stopping power in keV per microgram/cm^2.
static int getElement(java.lang.String symbol)
          Lookup method for obtaining an atomic number from the element's symbol.
 double getEnergyLoss(Nucleus projectile, double energy)
          DOCUMENT ME!
 double getEnergyLoss(Nucleus projectile, double energy, double theta)
          Returns the total energy loss in keV.
 UncertainNumber getEnergyLossUnc(Nucleus projectile, double energy)
          Returns the total energy loss in keV.
 double getFractionError(Nucleus projectile, double energy)
          Returns the fractional error in energy loss.
static double getNaturalWeight(int element)
          DOCUMENT ME!
 double getNuclearStoppingPower(Nucleus projectile, double energy)
          Returns the nuclear stopping power in keV per microgram/cm^2.
 double getPlasticLightOutput(Nucleus projectile, double energy, double theta)
          Returns the light output produced in a plastic scintillator by an ion losing energy in it.
 UncertainNumber getRange(Nucleus projectile, double energy)
          Returns the range in milligrams/cm^2 in the absorber material specified in this instance of EnergyLoss.
 double getStoppingPower(Nucleus projectile, double energy)
          Returns the total stopping power in keV per microgram/cm^2.
 double getThinEnergyLoss(Nucleus projectile, double energy)
          DOCUMENT ME!
 double getThinEnergyLoss(Nucleus projectile, double energy, double theta)
          Returns the total energy loss in keV.
static void main(java.lang.String[] args)
          DOCUMENT ME!
 double[] NuSPwr(Nucleus projectile, double energy)
          Calculates nucluear stopping of ions of all Z.
 double reverseEnergyLoss(Nucleus projectile, double energy, double theta)
          Returns initial ion energy in MeV.
 void setAbsorber(Absorber a)
          Called whenever one wants to change the absorber in this object.
 void setProjectile(Nucleus p)
          DOCUMENT ME!
 double totalStopP(Nucleus projectile, double energy)
          DOCUMENT ME!
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MEV_TO_AMU

public static final double MEV_TO_AMU
Conversion Factor from MeV/c^2 to amu

See Also:
Constant Field Values

AMU_TO_KEV

public static final double AMU_TO_KEV
DOCUMENT ME!

See Also:
Constant Field Values

FINE_STRUCTURE

public static final double FINE_STRUCTURE
DOCUMENT ME!

See Also:
Constant Field Values

E_TO_4

public static final double E_TO_4
DOCUMENT ME!


AVAGADRO

public static final double AVAGADRO
10^-24 Avagodro's number, used for conversion

See Also:
Constant Field Values

coeffs

protected static double[][] coeffs
The A-1 thru A-12 coefficients for the Ziegler Energy loss formulae.


ionPotential

protected static double[] ionPotential
Ionization potential for the various elements.


gas

protected static boolean[] gas
Whether the room temperature phase is gaseous or not.


symbol

protected static java.lang.String[] symbol
The symbol of the element


name

protected static java.lang.String[] name
Names of the elements.


natWeight

protected static double[] natWeight
"Natural" weights of elements, in amu.


natDensity

protected static double[] natDensity
"Natural" density of elements, in g/cm^3.


atomDensity

protected static double[] atomDensity
Atom density of elements, in atoms/cm^3


elementLookUp

protected static java.util.Hashtable elementLookUp
Table to look up proton number given elemental symbol.


RADIANS

public static final int RADIANS
DOCUMENT ME!

See Also:
Constant Field Values

INCIDENCE

public static final int INCIDENCE
DOCUMENT ME!

See Also:
Constant Field Values

fractions

protected double[] fractions
The fractional amount of a chemical element in an absorber.


absorber

protected Absorber absorber
The current absorber object to be used in calculations.


Z

protected int[] Z
The atomic numbers of the components of the absorber.


thickness

protected double thickness
The thickness of the absorber in micrograms/cm^2.

Constructor Detail

EnergyLoss

public EnergyLoss(Absorber a)
Create an energy loss calculator associated with the given absorber.

Parameters:
a - material that energy losses will be calculated in
Method Detail

getElement

public static int getElement(java.lang.String symbol)
                      throws NuclearException
Lookup method for obtaining an atomic number from the element's symbol.

Parameters:
symbol - DOCUMENT ME!
Returns:
DOCUMENT ME!
Throws:
NuclearException - DOCUMENT ME!

getNaturalWeight

public static double getNaturalWeight(int element)
DOCUMENT ME!

Parameters:
element - DOCUMENT ME!
Returns:
DOCUMENT ME!

getDensity

public static double getDensity(int element)
Returns density of element in its most common form in g/cm^3.

Parameters:
element - DOCUMENT ME!
Returns:
DOCUMENT ME!

totalStopP

public double totalStopP(Nucleus projectile,
                         double energy)
                  throws NuclearException
DOCUMENT ME!

Parameters:
projectile - DOCUMENT ME!
energy - DOCUMENT ME!
Returns:
DOCUMENT ME!
Throws:
NuclearException - DOCUMENT ME!

NuSPwr

public double[] NuSPwr(Nucleus projectile,
                       double energy)
                throws NuclearException
Calculates nucluear stopping of ions of all Z.

Parameters:
projectile - nuclear species of projectile
energy - kinetic energy in MeV of projectile
Returns:
stopping powers in eV/(10^15 atom/cm^2) for each compnent of the absorber
Throws:
NuclearException - DOCUMENT ME!

setAbsorber

public void setAbsorber(Absorber a)
Called whenever one wants to change the absorber in this object. Also called by the constructor.

Parameters:
a - DOCUMENT ME!

getAbsorber

public Absorber getAbsorber()
Returns the absorber object used by this instance of EnergyLoss.

Returns:
the absorbing material specification

getStoppingPower

public double getStoppingPower(Nucleus projectile,
                               double energy)
                        throws NuclearException
Returns the total stopping power in keV per microgram/cm^2. Uses the absorber information already set in the current instance of EnergyLoss.

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!
Throws:
NuclearException - DOCUMENT ME!

setProjectile

public void setProjectile(Nucleus p)
DOCUMENT ME!

Parameters:
p - DOCUMENT ME!

dydx

public double[] dydx(double energy,
                     double[] x)
For the DiffEquations interface. Returns dx/dE in (ug/cm2)/MeV.

Specified by:
dydx in interface DiffEquations
Parameters:
energy - in MeV
x - one element which is thickness
Returns:
DOCUMENT ME!

getRange

public UncertainNumber getRange(Nucleus projectile,
                                double energy)
Returns the range in milligrams/cm^2 in the absorber material specified in this instance of EnergyLoss.

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!

getEnergyLoss

public double getEnergyLoss(Nucleus projectile,
                            double energy,
                            double theta)
Returns the total energy loss in keV. Uses the absorber information already set in the current instance of EnergyLoss. See p. 16 of v.3 of "Stopping and Ranges of Ions in Matter" by Ziegler

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
theta - angle of incidence (from normal in radians)
Returns:
DOCUMENT ME!

reverseEnergyLoss

public double reverseEnergyLoss(Nucleus projectile,
                                double energy,
                                double theta)
Returns initial ion energy in MeV.

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
theta - angle of incidence (from normal in radians)
Returns:
DOCUMENT ME!

getPlasticLightOutput

public double getPlasticLightOutput(Nucleus projectile,
                                    double energy,
                                    double theta)
Returns the light output produced in a plastic scintillator by an ion losing energy in it. The units are arbitrary, normalized to L.O.=30 for an 8.78 MeV alpha. The formula for this comes from NIM 138 (1976) 93-104, table 3, row I. The formula is implemented in the private method, getL. The formula is technically only good for 0.5 MeV/u to 15 MeV/u and assumes complete stopping, so if there is partial energy loss, we take the difference of the light output for the initial and final energies. The accuracy is +/- 20%.

Parameters:
projectile - DOCUMENT ME!
energy - DOCUMENT ME!
theta - DOCUMENT ME!
Returns:
DOCUMENT ME!

getEnergyLoss

public double getEnergyLoss(Nucleus projectile,
                            double energy)
DOCUMENT ME!

Parameters:
projectile - DOCUMENT ME!
energy - DOCUMENT ME!
Returns:
DOCUMENT ME!

getThinEnergyLoss

public double getThinEnergyLoss(Nucleus projectile,
                                double energy)
DOCUMENT ME!

Parameters:
projectile - DOCUMENT ME!
energy - DOCUMENT ME!
Returns:
DOCUMENT ME!

getThinEnergyLoss

public double getThinEnergyLoss(Nucleus projectile,
                                double energy,
                                double theta)
Returns the total energy loss in keV. Uses the absorber information already set in the current instance of EnergyLoss. See p. 16 of v.3 of "Stopping and Ranges of Ions in Matter" by Ziegler

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
theta - angle of incidence (from normal in radians)
Returns:
DOCUMENT ME!

getEnergyLossUnc

public UncertainNumber getEnergyLossUnc(Nucleus projectile,
                                        double energy)
Returns the total energy loss in keV. Uses the absorber information already set in the current instance of EnergyLoss. See p. 16 of v.3 of "Stopping and Ranges of Ions in Matter" by Ziegler

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!

getFractionError

public double getFractionError(Nucleus projectile,
                               double energy)
Returns the fractional error in energy loss. Uses the absorber information already set in the current instance of EnergyLoss. See p. 16 of v.3 of "Stopping and Ranges of Ions in Matter" by Ziegler

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!

getElectronicStoppingPower

public double getElectronicStoppingPower(Nucleus projectile,
                                         double energy)
                                  throws NuclearException
Returns the electronic stopping power in keV per microgram/cm^2. Uses the absorber information already set in the current instance of EnergyLoss. See p. 16 in Andersen & Ziegler, "The Stopping and Ranges of Ions in Matter", volume 3.

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!
Throws:
NuclearException - DOCUMENT ME!

getNuclearStoppingPower

public double getNuclearStoppingPower(Nucleus projectile,
                                      double energy)
Returns the nuclear stopping power in keV per microgram/cm^2. Uses the absorber information already set in the current instance of EnergyLoss.

Parameters:
projectile - the ion being stopped
energy - the ion kinetic energy in MeV
Returns:
DOCUMENT ME!

main

public static void main(java.lang.String[] args)
DOCUMENT ME!

Parameters:
args - DOCUMENT ME!