dwvisser.nuclear
Class EnergyLoss

java.lang.Object
  |
  +--dwvisser.nuclear.EnergyLoss
All Implemented Interfaces:
DiffEquations, java.io.Serializable

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

See Also:
Serialized Form

Field Summary
protected  Absorber absorber
          The current absorber object to be used in calculations.
static double AMU_TO_KEV
           
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
           
protected static java.util.Hashtable elementLookUp
          Table to look up proton number given elemental symbol.
static double FINE_STRUCTURE
           
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
           
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
           
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)
           
 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)
           
 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)
           
 double getThinEnergyLoss(Nucleus projectile, double energy, double theta)
          Returns the total energy loss in keV.
static void main(java.lang.String[] args)
           
 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)
           
 double totalStopP(Nucleus projectile, double energy)
           
 
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
See Also:
Constant Field Values

FINE_STRUCTURE

public static final double FINE_STRUCTURE
See Also:
Constant Field Values

E_TO_4

public static final double E_TO_4

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.


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.


RADIANS

public static final int RADIANS
See Also:
Constant Field Values

INCIDENCE

public static final int INCIDENCE
See Also:
Constant Field Values
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.

NuclearException

getNaturalWeight

public static double getNaturalWeight(int element)

getDensity

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


totalStopP

public double totalStopP(Nucleus projectile,
                         double energy)
                  throws NuclearException
NuclearException

NuSPwr

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

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

setAbsorber

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


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
NuclearException

setProjectile

public void setProjectile(Nucleus p)

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:
the derivatives dy[i]/dx

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

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)

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)

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%.


getEnergyLoss

public double getEnergyLoss(Nucleus projectile,
                            double energy)

getThinEnergyLoss

public double getThinEnergyLoss(Nucleus projectile,
                                double energy)

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)

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

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

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
NuclearException

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

main

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