|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectgov.nist.microanalysis.NISTMonte.MonteCarloSS
public final class MonteCarloSS
MonteCarloSS is the core class in NISTMonte - a full-featured (albeit somewhat slow) Monte Carlo for quantitative electron probe modeling and other uses. MonteCarloSS implements a electron transport model using the randomized scattering (IRandomizedScatter) and the continuous slowing down approximation.
NISTMonte makes clear distinctions between algorithms. MonteCarloSS does not know anything about x-rays (that is handled by XRayEventListener and BremsstrahlungEventListener) or electron detectors (that is handled by AnnularDetector, BackscatterDetector, ...). All MonteCarloSS knows how to do is to track electrons. MonteCarloSS ties to the x-ray models and the detectors through events via the addActionListener(...) method. All classes that are interested in events should implement the ActionListener abstract class. The events are identified by an integer index - ScatterEvent, NonScatterEvent, BackscatterEvent, TrajectoryStartEvent, TrajectoryEndEvent, LastTrajectoryEvent, FirstTrajectoryEvent, or ExitMaterialEvent.
Physical models can be changed by using setBetheElectronEnergyLoss, setScatteringAlgorithm or setGasScatteringAlgorithm.
Notes:Copyright: Pursuant to title 17 Section 105 of the United States Code this software is not subject to copyright protection and is in the public domain
Company: National Institute of Standards and Technology
| Nested Class Summary | |
|---|---|
static class |
MonteCarloSS.Electron
This class handles the geometric considerations tracking an electron through Monte Carlo steps. |
static interface |
MonteCarloSS.ElectronGun
This interface allows the user to modify the properties of the electron gun. |
class |
MonteCarloSS.GaussianBeam
|
class |
MonteCarloSS.Region
A Region represents a homogeneous volume of sample. |
static interface |
MonteCarloSS.Shape
An interface defining sufficient a sufficiently rich set of methods to implement a three dimensional volume. |
| Field Summary | |
|---|---|
static int |
BackscatterEvent
BackscatterEvent - The ID of the ActionEvent that is fired when an electron trajectory strikes the walls of the chamber (forwardscatter or backscatter). |
static int |
BeamEnergyChanged
Fired when the setBeamEnergy(...) method is invoked. |
protected static double |
ChamberRadius
|
static int |
EndSecondaryEvent
EndSecondaryEvent fired when a secondary electron finishes its trajectory. |
static int |
ExitMaterialEvent
ExitMaterialEvent - Fired when an electron makes a transition from one material to another. |
static int |
FirstTrajectoryEvent
FirstTrajectoryEvent - Fired before the first trajectory starts in runMultipleTrajectories. |
static int |
LastTrajectoryEvent
LastTrajectoryEvent - Fired after the last trajectory completes in runMultipleTrajectories |
static int |
NonScatterEvent
NonScatterEvent - Fired whenever an electron trajectory segment ends because it is passing between one material and another. |
static int |
ScatterEvent
ScatterEvent - Fired whenever an electron scatters off an atom. |
static int |
StartSecondaryEvent
StartSecondaryEvent fired immediately before the current Electron is replaced by a secondary electron. |
static int |
TrajectoryEndEvent
TrajectoryEndEvent - Fired after an electron ends its trajectory. |
static int |
TrajectoryStartEvent
TrajectoryStartEvent - Fired before an electron starts its trajectory. |
static int |
XAxis
XAxis - XAxis, YAxis and ZAxis enuerate the coordinate axes. |
static int |
YAxis
YAxis - XAxis, YAxis and ZAxis enuerate the coordinate axes. |
static int |
ZAxis
ZAxis - XAxis, YAxis and ZAxis enuerate the coordinate axes. |
| Constructor Summary | |
|---|---|
MonteCarloSS()
MonteCarloSS - The constructor for the MonteCarloSS class. |
|
| Method Summary | |
|---|---|
void |
addActionListener(java.awt.event.ActionListener sel)
addActionListener - Register a class that implements the ActionListener abstract class. |
MonteCarloSS.Region |
addSubRegion(MonteCarloSS.Region parent,
Material mat,
MonteCarloSS.Shape shape)
addSubRegion - A method to simplify creating new sub-Regions and adding them to a parent Region. |
boolean |
allElectronsComplete()
Have all the electron trajectories resulting from the most recent incident electron completed there trajectories? If one trajectory has finished and another Electron exists on the Electron stack, this method will remove an Electron from the stack and reinitiate tracking it. |
double[] |
computeDetectorPosition(double elevation,
double theta)
computeDetectorPosition - Computes the coordinates of a detector placed at the specified elevation angle at an azimuthal angle of 0. |
void |
estimateTrajectoryVolume(double[] c0,
double[] c1)
estimateTrajectoryVolume - Estimate the volume that will be occupied by electron paths by running the simulation a number of times and looking for the largest extent. |
java.util.Set |
getAtomicShellSet()
getAtomicShellSet - Get a list of the atomic shells that may be ionized by a beam of the current initial beam energy. |
double |
getBeamEnergy()
getBeamEnergy - Returns the incident electron beam energy (in Joules) |
BetheElectronEnergyLoss |
getBetheElectronEnergyLoss()
getBetheElectronEnergyLoss - Returns the algorithm used to compute the continuous energy loss approximation. |
MonteCarloSS.Region |
getChamber()
getChamber - An accessor to facilitate adding the sub-Regions that represent the sample. |
MonteCarloSS.Electron |
getElectron()
getElectron - Get the current active electron. |
int |
getElectronGeneration()
Returns the generation of Electron that is currently being tracked. |
java.lang.Class |
getGasScatteringAlgorithm()
getGasScatteringAlgorithm - Returns the class of the algorithm to use to compute the electron scattering cross section for Materials derived from Gas. |
java.util.Map |
getMaterialMap(double[] startPt,
double[] endPt)
getMaterialMap - Creates a map containing a list of the materials through which an x-ray (or any ray) will pass on its way from startPt to endPt. |
double |
getMinEnergy()
getMinEnergy - Returns the energy below which the trajectory of eletrons is not tracked. |
java.lang.Class |
getScatteringAlgorithm()
getScatteringAlgorithm - Returns the Class of the algorithm to use to compute the electron scattering cross section. |
void |
initializeTrajectory()
initializeTrajectory - Initialize all member variable to start a new electron trajectory. |
protected double |
randomizedStepLength(Material mat,
double eK)
randomizedStepLength - Computes the mean free path for an electron of the specified energy in the specified material. |
protected double |
randomizedStepLength2(Material mat,
double eK)
randomizedStepLength2 - Computes the mean free path for an electron of the specified energy in the specified material. |
void |
removeActionListener(java.awt.event.ActionListener sel)
removeActionListener - Remove an event handler that was registered using addActionListener |
void |
runMultipleTrajectories(int n)
runMultipleTrajectories - Run n complete trajectories. |
void |
runTrajectory()
runTrajectory - Run a single trajectory starting the electron at the gun position and tracking it through steps until trajectoryComplete returns true. |
void |
setBeamEnergy(double beamEnergy)
setBeamEnergy - Set the incident electron beam energy (in Joules) |
void |
setBetheElectronEnergyLoss(BetheElectronEnergyLoss beel)
setBetheElectronEnergyLoss - Specify the algorithm to use for the continuous energy loss approximation. |
void |
setElectronGun(MonteCarloSS.ElectronGun gun)
setElectronGun - Specify a class that implements the ElectronGun interface. |
void |
setGasScatteringAlgorithm(java.lang.Class scAlg)
setScatteringAlgorithm - Specify the class of the algorithm to use to compute the electron scattering cross section for Materials derived from Gas. |
void |
setMinEnergy(double minEnergy)
setMinEnergy - Sets the energy below which electrons are no longer tracked. |
void |
setScatteringAlgorithm(java.lang.Class scAlg)
setScatteringAlgorithm - Specify the class of the algorithm to use to compute the electron scattering cross section. |
void |
takeStep()
takeStep - Take a single step corresponding to zero or one scattering events. |
void |
trackSecondaryElectron(MonteCarloSS.Electron newElectron)
This method takes the current Electron and stores it on a stack, the argument Electron becomes the active Electron and will be tracked until either it meets the end of trajectory criteria or it is replaced by another call to trackSecondaryElectron. |
boolean |
trajectoryComplete()
trajectoryComplete - Has the active Electron (either primary or secondary) either struck a chamber wall or lost sufficient energy to be no longer worth tracking. |
void |
updateMaterial(Material oldMat,
Material newMat)
updateMaterial - Recurse through the sample replacing all references to oldMat with references to newMat. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int ScatterEvent
public static final int NonScatterEvent
public static final int BackscatterEvent
public static final int ExitMaterialEvent
public static final int TrajectoryStartEvent
public static final int TrajectoryEndEvent
public static final int LastTrajectoryEvent
public static final int FirstTrajectoryEvent
public static final int StartSecondaryEvent
public static final int EndSecondaryEvent
public static final int BeamEnergyChanged
public static final int XAxis
public static final int YAxis
public static final int ZAxis
protected static final double ChamberRadius
| Constructor Detail |
|---|
public MonteCarloSS()
| Method Detail |
|---|
protected double randomizedStepLength(Material mat,
double eK)
mat - Material - The materialeK - double - The electron energy (in Joules)
protected double randomizedStepLength2(Material mat,
double eK)
mat - Material - The materialeK - double - The electron energy (in Joules)
public MonteCarloSS.Region addSubRegion(MonteCarloSS.Region parent,
Material mat,
MonteCarloSS.Shape shape)
parent - Region - A non-null parent regionmat - Material - The material from which the sub-region will be
constructed.shape - Shape - The shape of the sub-region
public java.util.Map getMaterialMap(double[] startPt,
double[] endPt)
startPt - double[] - The start of the x-ray trajectory (usually the
electron scattering point)endPt - double[] - The end of the x-ray trajectory (usually the
detector)
public MonteCarloSS.Region getChamber()
public void initializeTrajectory()
public void takeStep()
public void trackSecondaryElectron(MonteCarloSS.Electron newElectron)
trackSecondaryElectron have
completed their trajectories.
newElectron - public int getElectronGeneration()
public void addActionListener(java.awt.event.ActionListener sel)
sel - ActionListenerpublic void removeActionListener(java.awt.event.ActionListener sel)
sel - ActionEventpublic boolean trajectoryComplete()
public boolean allElectronsComplete()
public void runTrajectory()
trackSecondaryElectronthen all of these electrons will be
tracked to completion before runTrajectory will return.
public void runMultipleTrajectories(int n)
n - intpublic double getBeamEnergy()
public void setElectronGun(MonteCarloSS.ElectronGun gun)
gun - ElectronGunpublic void setBeamEnergy(double beamEnergy)
beamEnergy - double
public double[] computeDetectorPosition(double elevation,
double theta)
elevation - doubletheta - double
public MonteCarloSS.Electron getElectron()
public double getMinEnergy()
public void setMinEnergy(double minEnergy)
minEnergy - double
public java.util.Set getAtomicShellSet()
throws EPQException
EPQException
public void estimateTrajectoryVolume(double[] c0,
double[] c1)
c0 - double[]c1 - double[]public void setBetheElectronEnergyLoss(BetheElectronEnergyLoss beel)
beel - public BetheElectronEnergyLoss getBetheElectronEnergyLoss()
public void setScatteringAlgorithm(java.lang.Class scAlg)
scAlg - public java.lang.Class getScatteringAlgorithm()
public void setGasScatteringAlgorithm(java.lang.Class scAlg)
scAlg - public java.lang.Class getGasScatteringAlgorithm()
public void updateMaterial(Material oldMat,
Material newMat)
oldMat - newMat -
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||