spis.Surf.InteractModel
Class ProtonRangeFunction1

java.lang.Object
  extended byspis.Surf.InteractModel.FunctionOfParticle
      extended byspis.Surf.InteractModel.FunctionOfParticleE
          extended byspis.Surf.InteractModel.RangeFunction
              extended byspis.Surf.InteractModel.ProtonRangeFunction1
All Implemented Interfaces:
ScalFunctionOf4Scal, ScalFunctionOfScal

public class ProtonRangeFunction1
extends RangeFunction

Class Name : ProtonRangeFunction1
Project ref : SPIS project
File name : ProtonRangeFunction1.java
File type : class
Copyright : ONERA, 2 Av. E. Belin, 31055 Toulouse cedex, France http://www.onecert.fr
Status : under development
Creation : 22 oct. 2004
Modification :

Description : implements the proton range function defined by:
R(E) = 1/c (2E^(1/2) + 2/3 E^(3/2)/Emax)
derived from NASCAP manual Eq 3.14: -dE/dx = cE^1/2 / (1+E/Emax)
where Emax and c material-dependent parameters are passed to the constructor (Emax is a NASCAP parameter, c is determined in SEEPYieldFunction1 so as to get the right SEE yield at 1 keV).

Version:
0.1
Author:
JF Roussel
See Also:


Summary of units policy for this Function:
everything is SPIS units (eV, m...).

Versions and anomalies correction :
Version numberAuthor (name, e-mail) Corrections/Modifications
0.1 JF Roussel, roussel@onecert.frCreation



Field Summary
private  ParameterSet[] cParams
          c parameters
private  ParameterSet[] EmaxParams
          Emax parameters
 
Fields inherited from class spis.Surf.InteractModel.FunctionOfParticle
defaultParamsId, materialRange, modelId, particleId, partTable
 
Constructor Summary
ProtonRangeFunction1(ParameterSet[] EmaxParams, ParameterSet[] cParams, int modelId, int particleId, PartTable partTable)
          Default constructor.
 
Method Summary
protected  float compute(float E, int parmeterSetsId)
          Returns the range as a function of energy.
 float computeDeriv(float E)
          returns dR/dE as a function of energy
 float computeDeriv(float E, float matModId, float matId, float partId)
          returns dR/dE as a function of energy, depending on material Id (it is used for approximata dose profile computation close to the surface, in particular for secondary emission)
private  float computeDeriv(float E, int parmeterSetsId)
           
 float computeSecondDeriv(float E)
          returns d2R/dE2 as a function of energy
 float computeSecondDeriv(float E, float matModId, float matId, float partId)
          returns d2R/dE2 as a function of energy, depending on material Id (it may be used for approximata dose profile computation close to the surface, in particular for secondary emission)
private  float computeSecondDeriv(float E, int parmeterSetsId)
           
 
Methods inherited from class spis.Surf.InteractModel.FunctionOfParticleE
compute, compute, compute, compute
 
Methods inherited from class spis.Surf.InteractModel.FunctionOfParticle
getDefaultParamsId, getMaterialRange, getModelId, getParticleId, getPartTable, selectParamSet, setDefaultParams, setDefaultParamsId, setMaterialRange, setModelId, setParticleId, setPartTable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cParams

private ParameterSet[] cParams
c parameters


EmaxParams

private ParameterSet[] EmaxParams
Emax parameters

Constructor Detail

ProtonRangeFunction1

public ProtonRangeFunction1(ParameterSet[] EmaxParams,
                            ParameterSet[] cParams,
                            int modelId,
                            int particleId,
                            PartTable partTable)
Default constructor.

Parameters:
EmaxParams - Emax parameters (one per material)
cParams - c parameters [m-1.eV1/2] (one per material)
partTable - particle table the particle Id refers to
Method Detail

compute

protected float compute(float E,
                        int parmeterSetsId)
Description copied from class: RangeFunction
Returns the range as a function of energy. May not always be needed, since material-indexed function should be used in principle (may even be forbidden => throws exception).

Specified by:
compute in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV)
parmeterSetsId - selected parameter set Id
Returns:
range [m]
See Also:
FunctionOfParticleE.compute(float, float, float, float)

computeDeriv

public float computeDeriv(float E,
                          float matModId,
                          float matId,
                          float partId)
Description copied from class: RangeFunction
returns dR/dE as a function of energy, depending on material Id (it is used for approximata dose profile computation close to the surface, in particular for secondary emission)

Specified by:
computeDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV as often)
matModId -
matId -
partId -
Returns:
d(range)/dE [m.eV-1]
See Also:
RangeFunction.computeDeriv(float, float, float, float)

computeDeriv

public float computeDeriv(float E)
Description copied from class: RangeFunction
returns dR/dE as a function of energy

Specified by:
computeDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV)
Returns:
d(range)/dE [m.eV-1]
See Also:
RangeFunction.computeDeriv(float)

computeDeriv

private float computeDeriv(float E,
                           int parmeterSetsId)
Parameters:
E - particle energy [eV] (and not keV)
parmeterSetsId - selected parameter set Id
Returns:
d(range)/dE [m.eV-1]

computeSecondDeriv

public float computeSecondDeriv(float E,
                                float matModId,
                                float matId,
                                float partId)
Description copied from class: RangeFunction
returns d2R/dE2 as a function of energy, depending on material Id (it may be used for approximata dose profile computation close to the surface, in particular for secondary emission)

Specified by:
computeSecondDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV)
matModId -
matId -
partId -
Returns:
d2(range)/dE2 [m.eV-2]
See Also:
RangeFunction.computeSecondDeriv(float, float, float, float)

computeSecondDeriv

public float computeSecondDeriv(float E)
Description copied from class: RangeFunction
returns d2R/dE2 as a function of energy

Specified by:
computeSecondDeriv in class RangeFunction
Parameters:
E - particle energy [eV] (and not keV)
Returns:
d2(range)/dE2 [m.eV-2]
See Also:
RangeFunction.computeSecondDeriv(float)

computeSecondDeriv

private float computeSecondDeriv(float E,
                                 int parmeterSetsId)
Parameters:
E - particle energy [eV] (and not keV)
parmeterSetsId - selected parameter set Id
Returns:
d2(range)/dE2 [m.eV-2]