KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVedaLoss Class Reference

Detailed Description

C++ implementation of VEDALOSS stopping power calculation.

Description

Based on the original Fortran code VEDALOSS written by Roland Dayras (CEA/SPhN Saclay) and Enrico de Filippo (INFN LNS Catania), KVedaLoss provides range tables for the stopping of charged ions in a large variety of pre-defined solid and gaseous media. It can be used to calculated energy losses, residual energies, ranges, and the corresponding inverse calculations.

The code interpolates the range tables of Northcliffe and Schilling (NCS) with those of Hubert, Bimbot and Gauvin (HBG) in order to calculate ranges based on data valid in the energy range \(0.1\leq E/A\leq 250\) MeV/nucleon. For \(E/A<2.5\) MeV/nucleon ranges are taken from NCS (which include the contribution from nuclear stopping), while at higher energies ranges are taken from HBG. It should be noted that the ranges of HBG were calculated from 2.5 MeV/nucleon upwards taking the NCS range at 2.5 MeV/nucleon as starting point.

Method

For each material, the interpolated range for each ion from \(Z=1\) to \(Z=100\) is parametrised as

\[ \log R = \sum_{i=0}^{5}a_{i}\left(\log\epsilon\right)^{i} \]

where \(R\) is the range [ \(g/cm^{2}\)] of the ion and \(\epsilon\) its incident energy [MeV/nucleon]. The six parameters \(a_{i}\) for each atomic number \(Z\) (for a reference isotope mass number \(A\)) were found by fitting the range data taken from NS and HBG. Such fits can be realized using the KVedaLossRangeFitter class.

See here for comparisons of the fitted ranges with the original values from NCS and HBG.

Adding new absorber definitions

KVedaLoss provides methods to add new absorber definitions using interpolations of the NCS and HBG range tables provided by KVRangeYanez. See below for methods to add new absorbers composed of single elements, compounds, or mixtures.

For full explanations and examples of how to use this facility, see Energy Loss & Range Calculations

Energy limits

Normally all range, \(dE\), \(E_{res}\) functions are limited to range \(0\leq E\leq E_{max}\), where \(E_{max}\) is nominal maximum energy for which range tables are valid (usually 400MeV/u for \(Z<3\), 250MeV/u for \(Z>3\)).

If higher energies are required, call static method KVedaLoss::SetIgnoreEnergyLimits() BEFORE ANY MATERIALS ARE CREATED in order to recalculate the \(E_{max}\) limits in such a way that:

  • range function is always monotonically increasing function of \(E_{inc}\);
  • stopping power is concave (i.e. no minimum of stopping power followed by an increase)

Then, at the most, the new limit will be 1 GeV/nucleon, or at the least, it will remain at the nominal (400 or 250 MeV/nucleon) level.

Definition at line 63 of file KVedaLoss.h.

#include <KVedaLoss.h>

Inheritance diagram for KVedaLoss:

Public Member Functions

 KVedaLoss ()
 Default constructor.
 
virtual ~KVedaLoss ()
 Destructor.
 
KVIonRangeTableMaterialAddCompoundMaterial (const Char_t *, const Char_t *, Int_t, Int_t *, Int_t *, Int_t *, Double_t=-1.0) const
 
KVIonRangeTableMaterialAddElementalMaterial (Int_t Z, Int_t A=0) const
 
KVIonRangeTableMaterialAddMixedMaterial (const Char_t *, const Char_t *, Int_t, Int_t *, Int_t *, Int_t *, Double_t *, Double_t=-1.0) const
 
Bool_t AddRANGEMaterial (const Char_t *name) const
 If the given material is defined in the RANGE tables, import it into VEDALOSS.
 
Bool_t CheckIon (Int_t Z, Int_t A) const
 
TObjArrayGetListOfMaterials ()
 
void Print (Option_t *="") const
 
Bool_t ReadMaterials (const Char_t *path) const
 Read and add range tables for materials in file.
 
- Public Member Functions inherited from KVIonRangeTable
 KVIonRangeTable (const Char_t *name="", const Char_t *title="")
 Default constructor.
 
virtual ~KVIonRangeTable ()
 Destructor.
 
virtual Double_t GetAtomicMass (const Char_t *)
 Returns atomic mass of a material in the range tables.
 
virtual Double_t GetDeltaEFromEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t ERes, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t r, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetDensity (const Char_t *)
 Returns density (g/cm**3) of a material in the range tables.
 
virtual Double_t GetEIncFromDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t DeltaE, Double_t e, enum SolType type=kEmax, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetEIncFromEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t Eres, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetEIncOfMaxDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetEmaxValid (const Char_t *material, Int_t Z, Int_t A)
 
virtual Double_t GetEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t r, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearDeltaEFromEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t ERes, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t d, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearEIncFromDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t DeltaE, Double_t e, enum SolType type=kEmax, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearEIncFromEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t Eres, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearEIncOfMaxDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearEResOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t d, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearMaxDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearPunchThroughEnergy (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearRangeOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
KVIonRangeTableMaterialGetMaterial (const Char_t *material) const
 Returns pointer to material of given name or type.
 
KVIonRangeTableMaterialGetMaterial (TGeoMaterial *) const
 
virtual const Char_tGetMaterialName (const Char_t *)
 Return name of material of given type or name if it is in range tables.
 
virtual Double_t GetMaxDeltaEOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetPunchThroughEnergy (const Char_t *mat, Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetRangeOfIon (const Char_t *mat, Int_t Z, Int_t A, Double_t E, Double_t Amat=0., Double_t T=-1., Double_t P=-1.)
 
virtual TGeoMaterialGetTGeoMaterial (const Char_t *material)
 Create and return pointer to TGeoMaterial/Mixture corresponding to material.
 
virtual Double_t GetZ (const Char_t *)
 Returns atomic number of a material in the range tables.
 
virtual Bool_t IsMaterialGas (const Char_t *)
 Return kTRUE if material is gaseous.
 
virtual Bool_t IsMaterialKnown (const Char_t *)
 Return kTRUE if material is in range tables.
 
virtual Bool_t IsMaterialKnown (TGeoMaterial *)
 Returns kTRUE if material corresponding to TGeoMaterial name or type is in range table.
 
virtual void SetTemperatureAndPressure (const Char_t *, Double_t temperature, Double_t pressure)
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor.
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type.
 
 KVBase (const KVBase &)
 copy ctor
 
virtual ~KVBase ()
 
virtual void Clear (Option_t *opt="")
 Clear object properties : name, type/title, number, label.
 
virtual void Copy (TObject &) const
 Make a copy of this object.
 
const Char_tGetLabel () const
 
UInt_t GetNumber () const
 
UInt_t GetNumberOfObjects () const
 
virtual TObjectGetObject () const
 
virtual const Char_tGetType () const
 
Bool_t HasLabel () const
 
virtual Bool_t IsCalled (const Char_t *name) const
 
Bool_t IsLabelled (const Char_t *l) const
 
virtual Bool_t IsType (const Char_t *typ) const
 
virtual void List ()
 
KVBaseoperator= (const KVBase &)
 copy assignment operator
 
Double_t ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 
void Clear (Option_t *option="") override
 
TObjectClone (const char *newname="") const override
 
Int_t Compare (const TObject *obj) const override
 
void Copy (TObject &named) const override
 
virtual void FillBuffer (char *&buffer)
 
const char * GetName () const override
 
const char * GetTitle () const override
 
ULong_t Hash () const override
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 
TNamedoperator= (const TNamed &rhs)
 
void Print (Option_t *option="") const override
 
virtual void SetName (const char *name)
 
virtual void SetNameTitle (const char *name, const char *title)
 
virtual void SetTitle (const char *title="")
 
virtual Int_t Sizeof () const
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 
 TObject (const TObject &object)
 
virtual ~TObject ()
 
void AbstractMethod (const char *method) const
 
virtual void AppendPad (Option_t *option="")
 
virtual void Browse (TBrowser *b)
 
ULong_t CheckedHash ()
 
virtual const char * ClassName () const
 
virtual void Delete (Option_t *option="")
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 
virtual void Draw (Option_t *option="")
 
virtual void DrawClass () const
 
virtual TObjectDrawClone (Option_t *option="") const
 
virtual void Dump () const
 
virtual void Error (const char *method, const char *msgfmt,...) const
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 
virtual TObjectFindObject (const char *name) const
 
virtual TObjectFindObject (const TObject *obj) const
 
virtual Option_tGetDrawOption () const
 
virtual const char * GetIconName () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 
virtual Bool_t HandleTimer (TTimer *timer)
 
Bool_t HasInconsistentHash () const
 
virtual void Info (const char *method, const char *msgfmt,...) const
 
virtual Bool_t InheritsFrom (const char *classname) const
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 
virtual void Inspect () const
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 
virtual Bool_t IsEqual (const TObject *obj) const
 
virtual Bool_t IsFolder () const
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 
virtual Bool_t Notify ()
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *vp)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, void *vp)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 
virtual void Paint (Option_t *option="")
 
virtual void Pop ()
 
virtual Int_t Read (const char *name)
 
virtual void RecursiveRemove (TObject *obj)
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 
virtual void SetDrawOption (Option_t *option="")
 
virtual void SetUniqueID (UInt_t uid)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 

Static Public Member Functions

static Bool_t IsUseNewRangeInversion ()
 
static void SetIgnoreEnergyLimits (Bool_t yes=kTRUE)
 
static void SetUseNewRangeInversion (Bool_t yes=kTRUE)
 
- Static Public Member Functions inherited from KVIonRangeTable
static KVIonRangeTableGetRangeTable (const Char_t *name)
 Generates an instance of the KVIonRangeTable plugin class corresponding to given name.
 
- Static Public Member Functions inherited from KVBase
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values.
 
static void BackupFileWithDate (const Char_t *path)
 
static void CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
 
static void Deprecated (const char *method, const char *advice)
 
static Bool_t FindClassSourceFiles (const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_tFindFile (const Char_t *search, TString &wfil)
 
static const Char_tGetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetDATABASEFilePath ()
 
static const Char_tGetDATADIRFilePath (const Char_t *namefile="")
 
static Bool_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval)
 
static const Char_tGetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval)
 
static Double_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval)
 
static const Char_tGetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.)
 
static const Char_tGetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetKVBuildDate ()
 Returns KaliVeda build date.
 
static const Char_tGetKVBuildDir ()
 Returns top-level directory used for build.
 
static const Char_tGetKVBuildTime ()
 Returns KaliVeda build time.
 
static const Char_tGetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...)
 
static const Char_tGetKVBuildUser ()
 Returns username of person who performed build.
 
static const Char_tGetKVSourceDir ()
 Returns top-level directory of source tree used for build.
 
static const Char_tGetKVVersion ()
 Returns KaliVeda version string.
 
static const Char_tGetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetListOfPlugins (const Char_t *base)
 
static const Char_tGetListOfPluginURIs (const Char_t *base)
 
static const Char_tGetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_tGetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_tgitBranch ()
 Returns git branch of sources.
 
static const Char_tgitCommit ()
 Returns last git commit of sources.
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandlerLoadPlugin (const Char_t *base, const Char_t *uri="0")
 
static Bool_t OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="")
 
static void OpenTempFile (TString &base, std::ofstream &fp)
 
static void PrintSplashScreen ()
 Prints welcome message and infos on version etc.
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
 
static const Char_tWorkingDirectory ()
 
- Static Public Member Functions inherited from TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 
static Bool_t GetObjectStat ()
 
static void SetDtorOnly (void *obj)
 
static void SetObjectStat (Bool_t stat)
 

Private Member Functions

void AddMaterial (KVIonRangeTableMaterial *) const
 
Bool_t CheckMaterialsList () const
 
KVIonRangeTableMaterialGetMaterialWithNameOrType (const Char_t *material) const
 Returns pointer to material of given name or type.
 
Bool_t init_materials () const
 

Private Attributes

TString fLocalMaterialsDirectory
 

Static Private Attributes

static Bool_t fgNewRangeInversion = kTRUE
 static flag for using new KVedaLossInverseRangeFunction
 
static KVHashListfMaterials = 0x0
 static list of all known materials
 

Additional Inherited Members

- Public Types inherited from KVIonRangeTable
enum  SolType { kEmax , kEmin }
 
- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
- Public Types inherited from TObject
enum  EDeprecatedStatusBits
 
enum  EStatusBits
 
- Public Attributes inherited from TObject
 kBitMask
 
 kCanDelete
 
 kCannotPick
 
 kHasUUID
 
 kInconsistent
 
 kInvalidObject
 
 kIsOnHeap
 
 kIsReferenced
 
 kMustCleanup
 
 kNoContextMenu
 
 kNotDeleted
 
 kObjInCanvas
 
 kOverwrite
 
 kSingleKey
 
 kWriteDelete
 
 kZombie
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 
void MakeZombie ()
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

Constructor & Destructor Documentation

◆ KVedaLoss()

KVedaLoss::KVedaLoss ( )

Default constructor.

Definition at line 69 of file KVedaLoss.cpp.

◆ ~KVedaLoss()

KVedaLoss::~KVedaLoss ( )
virtual

Destructor.

Definition at line 86 of file KVedaLoss.cpp.

Member Function Documentation

◆ AddCompoundMaterial()

KVIonRangeTableMaterial * KVedaLoss::AddCompoundMaterial ( const Char_t name,
const Char_t symbol,
Int_t  nel,
Int_t Z,
Int_t A,
Int_t nat,
Double_t  dens = -1.0 
) const
virtual

Use the RANGE tables (see KVRangeYanez) to add a compound material with a simple formula composed of different elements

Parameters
[in]namename for the new compound (no spaces)
[in]symbolchemical symbol for compound
[in]nelemnumber of elements in compound
[in]z[nelem]atomic numbers of elements
[in]a[nelem]mass numbers of elements
[in]natoms[nelem]number of atoms of each element
[in]densityin \(g/cm^{3}\), only required if compound is a solid

Reimplemented from KVIonRangeTable.

Definition at line 252 of file KVedaLoss.cpp.

◆ AddElementalMaterial()

KVIonRangeTableMaterial * KVedaLoss::AddElementalMaterial ( Int_t  Z,
Int_t  A = 0 
) const
virtual

Use the RANGE tables (see KVRangeYanez) to generate a new material composed of a single chemical element.

Parameters
[in]Zatomic number of element \(Z\)
[in]A[optional] mass number of isotope \(A\)

If the isotope A is not specified, we create a material containing the naturally occuring isotopes of the given element, weighted according to their natural abundances.

If the element name is "X", this material will be called "natX", for "naturally-occuring X".

Reimplemented from KVIonRangeTable.

Definition at line 204 of file KVedaLoss.cpp.

◆ AddMaterial()

void KVedaLoss::AddMaterial ( KVIonRangeTableMaterial mat) const
private

Add a material (taken from a different range table) to VEDALOSS This means fitting the ranges for Z=1-100 and writing the parameters in a file which will be stored in

/VEDALOSS/[name].dat

which will be read at each initialisation to include the new material

Definition at line 330 of file KVedaLoss.cpp.

◆ AddMixedMaterial()

KVIonRangeTableMaterial * KVedaLoss::AddMixedMaterial ( const Char_t name,
const Char_t symbol,
Int_t  nel,
Int_t Z,
Int_t A,
Int_t nat,
Double_t prop,
Double_t  dens = -1.0 
) const
virtual

Use the RANGE tables (see KVRangeYanez) to add a material which is a mixture of either elements or compounds:

Parameters
[in]namename for the new mixture (no spaces)
[in]symbolchemical symbol for mixture
[in]nelnumber of elements in mixture
[in]z[nel]atomic numbers of elements
[in]a[nel]mass numbers of elements
[in]nat[nel]number of atoms of each element
[in]prop[nel]proportion by mass in mixture of element
[in]densityin \(g/cm^{3}\), if mixture is a solid

Reimplemented from KVIonRangeTable.

Definition at line 284 of file KVedaLoss.cpp.

◆ AddRANGEMaterial()

Bool_t KVedaLoss::AddRANGEMaterial ( const Char_t name) const

If the given material is defined in the RANGE tables, import it into VEDALOSS.

Definition at line 227 of file KVedaLoss.cpp.

◆ CheckIon()

Bool_t KVedaLoss::CheckIon ( Int_t  Z,
Int_t  A 
) const
virtual

Reimplemented from KVIonRangeTable.

Definition at line 59 of file KVedaLoss.cpp.

◆ CheckMaterialsList()

Bool_t KVedaLoss::CheckMaterialsList ( ) const
inlineprivate

Definition at line 68 of file KVedaLoss.h.

◆ GetListOfMaterials()

TObjArray * KVedaLoss::GetListOfMaterials ( )
virtual

Create and fill a list of all materials for which range tables exist. Each entry is a TNamed with the name and type (title) of the material. User's responsibility to delete list after use (it owns its objects).

Implements KVIonRangeTable.

Definition at line 372 of file KVedaLoss.cpp.

◆ GetMaterialWithNameOrType()

KVIonRangeTableMaterial * KVedaLoss::GetMaterialWithNameOrType ( const Char_t material) const
privatevirtual

Returns pointer to material of given name or type.

Implements KVIonRangeTable.

Definition at line 309 of file KVedaLoss.cpp.

◆ init_materials()

Bool_t KVedaLoss::init_materials ( ) const
private

PRIVATE method - called to initialize fMaterials list of all known materials properties

Any files in /vedaloss.dat will also be read, these contain materials added by the user(s)

Definition at line 99 of file KVedaLoss.cpp.

◆ IsUseNewRangeInversion()

static Bool_t KVedaLoss::IsUseNewRangeInversion ( )
inlinestatic

Definition at line 92 of file KVedaLoss.h.

◆ Print()

void KVedaLoss::Print ( Option_t = "") const
virtual

Reimplemented from KVIonRangeTable.

Definition at line 358 of file KVedaLoss.cpp.

◆ ReadMaterials()

Bool_t KVedaLoss::ReadMaterials ( const Char_t path) const
virtual

Read and add range tables for materials in file.

Implements KVIonRangeTable.

Definition at line 136 of file KVedaLoss.cpp.

◆ SetIgnoreEnergyLimits()

void KVedaLoss::SetIgnoreEnergyLimits ( Bool_t  yes = kTRUE)
static

Call this static method with yes=kTRUE in order to recalculate the nominal limits on incident ion energies for which the range tables are valid.

Normally all range, \(dE\), \(E_{res}\) functions are limited to range \(0\leq E\leq E_{max}\), where \(E_{max}\) is nominal maximum energy for which range tables are valid (usually 400MeV/u for \(Z<3\), 250MeV/u for \(Z>3\)).

If higher energies are required, call static method KVedaLoss::SetIgnoreEnergyLimits() BEFORE ANY MATERIALS ARE CREATED in order to recalculate the \(E_{max}\) limits in such a way that:

  • range function is always monotonically increasing function of \(E_{inc}\);
  • stopping power is concave (i.e. no minimum of stopping power followed by an increase)

Then, at the most, the new limit will be 1 GeV/nucleon, or at the least, it will remain at the nominal (400 or 250 MeV/nucleon) level.

Definition at line 36 of file KVedaLoss.cpp.

◆ SetUseNewRangeInversion()

static void KVedaLoss::SetUseNewRangeInversion ( Bool_t  yes = kTRUE)
inlinestatic

Definition at line 88 of file KVedaLoss.h.

Member Data Documentation

◆ fgNewRangeInversion

Bool_t KVedaLoss::fgNewRangeInversion = kTRUE
staticprivate

static flag for using new KVedaLossInverseRangeFunction

Definition at line 74 of file KVedaLoss.h.

◆ fLocalMaterialsDirectory

TString KVedaLoss::fLocalMaterialsDirectory
private

Definition at line 65 of file KVedaLoss.h.

◆ fMaterials

KVHashList * KVedaLoss::fMaterials = 0x0
staticprivate

static list of all known materials

Definition at line 64 of file KVedaLoss.h.