4 #include "KVIonRangeTableMaterial.h" 
    9 #include "KVElementDensity.h" 
   10 #include "KVNDTManager.h" 
   81    if (Z > 0 && density < 0) {
 
   84          Warning(
"KVIonRangeTableMaterial",
 
   85                  "No element found in density table with Z=%f, density unknown", Z);
 
  190    l->SetValue(
"Ar", 
n.GetAtomicMass());
 
  191    l->SetValue(
"Natoms", Natoms);
 
  192    l->SetValue(
"Weight", Natoms);
 
  193    l->SetValue(
"Ar*Weight", 
n.GetAtomicMass()*Natoms);
 
  222    l->SetValue(
"Ar", 
n.GetAtomicMass());
 
  223    l->SetValue(
"Natoms", Natoms);
 
  224    l->SetValue(
"Proportion", Proportion);
 
  225    l->SetValue(
"Weight", Proportion * Natoms);
 
  226    l->SetValue(
"Ar*Weight", 
n.GetAtomicMass()*Proportion * Natoms);
 
  281    printf(
"Material : %s (%s)   State : %s\n",
 
  291    printf(
"Material : %s (%s)   State : %s\n",
 
  293    printf(
"\tEffective Z=%f, A=%f  ", 
fZmat, 
fAmat);
 
  295    else printf(
" Density = %f g/cm**3", 
fDens);
 
  297    if (
IsCompound()) printf(
"\tCompound material:\n");
 
  298    else if (
IsMixture())  printf(
"\tMixed material:\n");
 
  304          printf(
"\t\tElement: %s   Ar=%f g.   Natoms=%d", 
n.GetSymbol(), 
n.GetAtomicMass(), nvl->
GetIntValue(
"Natoms"));
 
  333    printf(
" Element: Z=%d A=%d\n\n", Z, A);
 
  334    printf(
"\tENERGY (MeV)\t\tRANGE (g/cm**2)");
 
  335    if (!
IsGas() || (
IsGas() && 
T > 0 && P > 0)) printf(
"\t\tLIN. RANGE");
 
  354    else if (
IsMixture()) output << 
"MIXTURE";
 
  355    else output << 
"ELEMENT";
 
  363          output << 
n.GetZ() << 
" " << 
n.GetA() << 
" " << nvl->
GetIntValue(
"Natoms");
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h prop
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
R__EXTERN TGeoManager * gGeoManager
 
char * Form(const char *fmt,...)
 
Base class for KaliVeda framework.
 
virtual void Copy(TObject &) const
Make a copy of this object.
 
Atomic element with name, symbol and density.
 
Material for use in energy loss & range calculations.
 
virtual Double_t GetLinearEIncOfMaxDeltaEOfIon(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(Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetDeltaEOfIon(Int_t Z, Int_t A, Double_t E, Double_t e, Double_t isoAmat=0.)
 
void AddCompoundElement(Int_t Z, Int_t A, Int_t Natoms)
 
virtual Double_t GetLinearMaxDeltaEOfIon(Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual Double_t GetLinearEIncFromDeltaEOfIon(Int_t Z, Int_t A, Double_t DeltaE, Double_t e, enum KVIonRangeTable::SolType type=KVIonRangeTable::kEmax, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
TF1 * fDeltaE
function parameterising energy loss in material
 
virtual Double_t GetEResOfIon(Int_t Z, Int_t A, Double_t E, Double_t e, Double_t isoAmat=0.)
 
virtual Double_t GetLinearRangeOfIon(Int_t Z, Int_t A, Double_t E, Double_t isoAmat=0, Double_t T=-1., Double_t P=-1.)
 
Double_t fZmat
effective atomic number of material
 
TGeoMaterial * GetTGeoMaterial() const
 
const KVIonRangeTable * GetTable() const
 
virtual TF1 * GetEResFunction(Double_t e, Int_t Z, Int_t A, Double_t isoAmat=0)=0
 
const Char_t * GetSymbol() const
 
void Copy(TObject &) const
 
virtual Float_t GetEmaxValid(Int_t, Int_t) const
 
virtual TF1 * GetDeltaEFunction(Double_t e, Int_t Z, Int_t A, Double_t isoAmat=0)=0
 
void AddMixtureElement(Int_t Z, Int_t A, Int_t Natoms, Double_t Proportion)
 
Double_t fDens
density of material in g/cm**3
 
KVIonRangeTableMaterial()
Default constructor.
 
TString fState
state of material = "solid", "liquid", "gas", "unknown"
 
virtual Double_t GetEIncFromDeltaEOfIon(Int_t Z, Int_t A, Double_t DeltaE, Double_t e, enum KVIonRangeTable::SolType type=KVIonRangeTable::kEmax, Double_t isoAmat=0.)
 
virtual Double_t GetLinearDeltaEOfIon(Int_t Z, Int_t A, Double_t E, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
virtual TF1 * GetRangeFunction(Int_t Z, Int_t A, Double_t isoAmat=0)=0
 
virtual ~KVIonRangeTableMaterial()
Destructor.
 
Bool_t IsCompound() const
 
virtual void Initialize()
 
void ls(Option_t *="") const
 
void PrintComposition(std::ostream &) const
Print to stream the composition of this material, in a format compatible with the VEDALOSS parameter ...
 
Double_t fAmat
effective mass number of material
 
KVList * GetComposition() const
 
Double_t GetDensity() const
 
TF1 * fEres
function parameterising residual energy after crossing material
 
virtual Double_t GetEIncFromEResOfIon(Int_t Z, Int_t A, Double_t Eres, Double_t e, Double_t isoAmat=0.)
 
TF1 * fRange
function parameterising range of charged particles in material
 
TF1 * fStopping
function parameterising stopping power of charged particles in material
 
virtual Double_t GetLinearEResOfIon(Int_t Z, Int_t A, Double_t E, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
void Print(Option_t *="") const
 
virtual Double_t GetPunchThroughEnergy(Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0.)
 
KVList * fComposition
composition of compound/mixture
 
virtual Double_t GetLinearEIncFromEResOfIon(Int_t Z, Int_t A, Double_t Eres, Double_t e, Double_t isoAmat=0., Double_t T=-1., Double_t P=-1.)
 
void SetTemperatureAndPressure(Double_t T, Double_t P)
 
void PrintRangeTable(Int_t Z, Int_t A, Double_t isoAmat=0, Double_t units=KVUnits::cm, Double_t T=-1, Double_t P=-1)
 
virtual Double_t GetEIncOfMaxDeltaEOfIon(Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0.)
 
virtual Double_t GetMaxDeltaEOfIon(Int_t Z, Int_t A, Double_t e, Double_t isoAmat=0.)
 
Double_t fMoleWt
mass of one mole of substance in grammes
 
virtual Double_t GetRangeOfIon(Int_t Z, Int_t A, Double_t E, Double_t isoAmat=0.)
 
Abstract base class for calculation of range & energy loss of charged particles in matter.
 
Extended TList class which owns its objects by default.
 
KVNuclData * GetData(Int_t zz, Int_t aa, const Char_t *name) const
 
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
 
Int_t GetIntValue(const Char_t *name) const
 
Double_t GetDoubleValue(const Char_t *name) const
 
void SetValue(const Char_t *name, value_type value)
 
Double_t GetValue() const
 
Description of properties and kinematics of atomic nuclei.
 
virtual void Add(TObject *obj)
 
virtual Int_t GetEntries() const
 
virtual Double_t GetX(Double_t y, Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
 
virtual void GetRange(Double_t &xmin, Double_t &xmax) const
 
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
 
virtual Double_t GetMaximum(Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
 
virtual Double_t GetMaximumX(Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
 
TGeoElement * FindElement(const char *name) const
 
TGeoElementTable * GetElementTable()
 
void SetState(EGeoMaterialState state)
 
const char * GetName() const override
 
const char * GetTitle() const override
 
virtual void Warning(const char *method, const char *msgfmt,...) const
 
const char * Data() const
 
#define R0(v, w, x, y, z, i)