KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVIonRangeTable.h
1
3
4#ifndef KVIONRANGETABLE_H
5#define KVIONRANGETABLE_H
6
7#include "KVBase.h"
8#include "KVUnits.h"
9
16class TGeoMaterial;
18class TGeoManager;
19class TVector3;
20
21class KVIonRangeTable : public KVBase {
22
23protected:
25 virtual KVIonRangeTableMaterial* GetMaterialWithNameOrType(const Char_t* material) const = 0;
26
27public:
28 enum SolType {
30 kEmin
31 };
32
33 KVIonRangeTable(const Char_t* name = "", const Char_t* title = "");
34 virtual ~KVIonRangeTable();
35
36 static KVIonRangeTable* GetRangeTable(const Char_t* name);
37
39 {
49
50 IGNORE_UNUSED(z);
51 IGNORE_UNUSED(a);
52 return nullptr;
53 }
55 const Char_t* name, const Char_t* symbol,
56 Int_t nelem, Int_t* z, Int_t* a, Int_t* natoms, Double_t density = -1.0) const
57 {
67
68 IGNORE_UNUSED(name);
69 IGNORE_UNUSED(symbol);
70 IGNORE_UNUSED(nelem);
71 IGNORE_UNUSED(z);
72 IGNORE_UNUSED(a);
73 IGNORE_UNUSED(natoms);
74 IGNORE_UNUSED(density);
75 return nullptr;
76 }
78 const Char_t* name, const Char_t* symbol,
79 Int_t nelem, Int_t* z, Int_t* a, Int_t* natoms, Double_t* proportion,
80 Double_t density = -1.0) const
81 {
92
93 IGNORE_UNUSED(name);
94 IGNORE_UNUSED(symbol);
95 IGNORE_UNUSED(nelem);
96 IGNORE_UNUSED(z);
97 IGNORE_UNUSED(a);
98 IGNORE_UNUSED(natoms);
99 IGNORE_UNUSED(proportion);
100 IGNORE_UNUSED(density);
101 return nullptr;
102 }
103
107
109 virtual TGeoMaterial* GetTGeoMaterial(const Char_t* material);
110
113 virtual Double_t GetEmaxValid(const Char_t* material, Int_t Z, Int_t A);
114
116 virtual Double_t GetDensity(const Char_t*);
117
120 virtual void SetTemperatureAndPressure(const Char_t*, Double_t temperature, Double_t pressure);
121
123 virtual Double_t GetZ(const Char_t*);
124
126 virtual Double_t GetAtomicMass(const Char_t*);
127
129 KVIonRangeTableMaterial* GetMaterial(const Char_t* material) const;
131
133 virtual Bool_t IsMaterialKnown(const Char_t*);
134
136
138 virtual Bool_t IsMaterialGas(const Char_t*);
139
141 virtual const Char_t* GetMaterialName(const Char_t*);
142
146 virtual Double_t GetRangeOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E,
147 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
148
152 virtual Double_t GetLinearRangeOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E,
153 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
154
158 virtual Double_t GetDeltaEOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t r,
159 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
160
164 virtual Double_t GetLinearDeltaEOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t d,
165 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
166
167 virtual Double_t GetEResOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t r,
168 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
169 virtual Double_t GetLinearEResOfIon(const Char_t* mat, Int_t Z, Int_t A, Double_t E, Double_t d,
170 Double_t Amat = 0., Double_t T = -1., Double_t P = -1.);
171
172 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.);
173 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.);
174
175 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.);
176 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.);
177
178 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.);
179 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.);
180
181 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.);
182 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.);
183
184 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.);
185 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.);
186 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.);
187 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.);
188
189 virtual void Print(Option_t* = "") const;
190
191 virtual Bool_t CheckIon(Int_t, Int_t) const
192 {
193 AbstractMethod("CheckIon");
194 return kTRUE;
195 }
196 virtual Bool_t ReadMaterials(const Char_t*) const = 0;
197
198 ClassDef(KVIonRangeTable, 1) //Abstract base class for calculation of range & energy loss of charged particles in matter
199};
200
201#endif
int Int_t
bool Bool_t
char Char_t
double Double_t
constexpr Bool_t kTRUE
const char Option_t
#define ClassDef(name, id)
char name[80]
Base class for KaliVeda framework.
Definition KVBase.h:142
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.)
virtual KVIonRangeTableMaterial * AddElementalMaterial(Int_t z, Int_t a=0) const
virtual Bool_t CheckIon(Int_t, Int_t) const
virtual const Char_t * GetMaterialName(const Char_t *)
Return name of material of given type or name if it is in range tables.
virtual TObjArray * GetListOfMaterials()=0
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.
virtual KVIonRangeTableMaterial * AddCompoundMaterial(const Char_t *name, const Char_t *symbol, Int_t nelem, Int_t *z, Int_t *a, Int_t *natoms, Double_t density=-1.0) const
virtual KVIonRangeTableMaterial * GetMaterialWithNameOrType(const Char_t *material) const =0
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 void Print(Option_t *="") 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 KVIonRangeTableMaterial * GetMaterialWithPointer(TGeoMaterial *) const
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 KVIonRangeTableMaterial * AddMixedMaterial(const Char_t *name, const Char_t *symbol, Int_t nelem, Int_t *z, Int_t *a, Int_t *natoms, Double_t *proportion, Double_t density=-1.0) const
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 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 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.)
void AbstractMethod(const char *method) const
TArc a