4 #ifndef KVIONRANGETABLE_H
5 #define KVIONRANGETABLE_H
70 const Char_t* name,
const Char_t* symbol,
71 const std::vector<CompoundFormulaElement>& elements, Double_t density = -1.0)
const
89 IGNORE_UNUSED(symbol);
90 IGNORE_UNUSED(elements);
91 IGNORE_UNUSED(density);
102 const Char_t* name,
const Char_t* symbol,
103 const std::vector<MixtureFormulaElement>& elements,
104 Double_t density = -1.0)
const
120 IGNORE_UNUSED(symbol);
121 IGNORE_UNUSED(elements);
122 IGNORE_UNUSED(density);
135 virtual Double_t
GetEmaxValid(
const Char_t* material, Int_t Z, Int_t A);
141 virtual void SetDensity(
const Char_t*, Double_t);
148 virtual Double_t
GetZ(
const Char_t*);
174 virtual Double_t
GetRangeOfIon(
const Char_t* mat, Int_t Z, Int_t A, Double_t E,
175 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
181 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
186 virtual Double_t
GetDeltaEOfIon(
const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t r,
187 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
192 virtual Double_t
GetLinearDeltaEOfIon(
const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t d,
193 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
195 virtual Double_t
GetEResOfIon(
const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t r,
196 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
197 virtual Double_t
GetLinearEResOfIon(
const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t d,
198 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
200 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.);
201 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.);
203 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.);
204 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.);
206 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.);
207 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.);
209 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.);
210 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.);
212 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.);
213 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.);
214 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.);
215 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.);
217 void Print(Option_t* =
"")
const override;
221 AbstractMethod(
"CheckIon");
Base class for KaliVeda framework.
Material for use in energy loss & range calculations.
Abstract base class for calculation of range & energy loss of charged particles in matter.
KVIonRangeTableMaterial * GetMaterial(const Char_t *material) const
Returns pointer to material of given name or type.
virtual Bool_t IsMaterialGas(const Char_t *)
Return kTRUE if material is gaseous.
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 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.)
void Print(Option_t *="") const override
std::string get_element_name(int z) const
virtual KVIonRangeTableMaterial * AddCompoundMaterial(const Char_t *name, const Char_t *symbol, const std::vector< CompoundFormulaElement > &elements, Double_t density=-1.0) const
virtual Bool_t CheckIon(Int_t, Int_t) const
const Char_t * GetMaterialName(const Char_t *)
Return name of material of given type or name if it is in range tables.
virtual KVIonRangeTableMaterial * AddMixedMaterial(const Char_t *name, const Char_t *symbol, const std::vector< MixtureFormulaElement > &elements, Double_t density=-1.0) const
virtual Bool_t ReadMaterials(const Char_t *) const =0
virtual Double_t GetAtomicMass(const Char_t *)
Returns atomic mass of a material in the range tables.
const Char_t * GetMaterialType(const Char_t *)
Return type of material of given type or name if it is in range tables.
std::string get_element_symbol(int z) const
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.)
std::optional< double > get_element_density(int z) const
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 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.)
static KVIonRangeTable * GetRangeTable(const Char_t *name)
Generates an instance of the KVIonRangeTable plugin class corresponding to given name.
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 TObjArray * GetListOfMaterials()=0
KVIonRangeTable(const Char_t *name="", const Char_t *title="")
Default constructor.
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 TGeoMaterial * GetTGeoMaterial(const Char_t *material)
Create and return pointer to TGeoMaterial/Mixture corresponding to material.
virtual KVIonRangeTableMaterial * AddElementalMaterial(Int_t z, Int_t a=0) const
virtual Double_t GetZ(const Char_t *)
Returns atomic number of a material in the range tables.
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 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 void SetDensity(const Char_t *, Double_t)
Changes the density (g/cm**3) of a material in the range tables.
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 GetEmaxValid(const Char_t *material, Int_t Z, Int_t A)
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 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 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 Bool_t IsMaterialKnown(const Char_t *)
Return kTRUE if material is in range tables.
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 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 ~KVIonRangeTable()
Destructor.
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 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 void SetTemperatureAndPressure(const Char_t *, Double_t temperature, Double_t pressure)
virtual Double_t GetDensity(const Char_t *)
Returns density (g/cm**3) of a material in the range tables.
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.)