61 fAbsorberVolume =
nullptr;
101 SetAreaDensity(area_density);
125 fPressure = pressure;
140 #if ROOT_VERSION_CODE >= ROOT_VERSION(3,4,0)
179 ::Error(
"KVMaterial::ChangeRangeTable",
"No plugin %s defined for KVIonRangeTable", name);
202 if (sscanf(mat_type,
"nat%s",
type) != 1) {
203 if (sscanf(mat_type,
"%d%s", &iso_mass,
type) != 2) {
204 strcpy(
type, mat_type);
207 if (iso_mass)
SetMass(iso_mass);
211 "Called for material %s which is unknown in current range table %s. Energy loss & range calculations impossible.",
224 KVMaterial::~KVMaterial()
449 if (!
IsGas())
return;
474 if (!
IsGas())
return 0.0;
496 if (!
IsGas())
return;
574 cout <<
"KVMaterial: " <<
GetName() <<
" (" <<
GetType() <<
")" << endl;
576 cout <<
" Pressure " <<
GetPressure() <<
" torr" << endl;
579 cout <<
"-----------------------------------------------" << endl;
580 cout <<
" Z = " <<
GetZ() <<
" atomic mass = " <<
GetMass() << endl;
581 cout <<
" Density = " <<
GetDensity() <<
" g/cm**3" << endl;
582 cout <<
"-----------------------------------------------" << endl;
667 if (Z < 1)
return 0.;
686 if (Z < 1)
return 0.;
704 if (Z < 1)
return 0.;
722 if (Z < 1)
return 0.;
724 GetLinearDeltaEFromEResOfIon(
801 if (Z < 1)
return 0.;
821 if (Z < 1)
return 0.;
862 cout <<
"detectparticle in material " <<
GetType() <<
" of thickness "
886 #if ROOT_VERSION_CODE >= ROOT_VERSION(3,4,0)
900 ((
KVMaterial&) obj).SetPressure(GetPressure());
901 ((
KVMaterial&) obj).SetTemperature(GetTemperature());
902 ((
KVMaterial&) obj).SetThickness(GetThickness());
915 if (Z < 1)
return 0.;
930 if (Z < 1)
return 0.;
950 if (Z < 1)
return 0.;
986 if (strcmp(med_name,
"")) {
988 if (gmed)
return gmed;
989 else if (!strcmp(med_name,
"Vacuum")) {
1013 if (gmed)
return gmed;
1028 static Int_t numed = 1;
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
R__EXTERN TGeoManager * gGeoManager
Base class for KaliVeda framework.
const Char_t * GetType() const
virtual void SetType(const Char_t *str)
virtual void Copy(TObject &) const
Make a copy of this object.
Abstract base class for calculation of range & energy loss of charged particles in matter.
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 const Char_t * GetMaterialName(const Char_t *)
Return name of material of given type or name if it is in range tables.
virtual Double_t GetAtomicMass(const Char_t *)
Returns atomic mass of a material in the range tables.
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 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 GetEmaxValid(const Char_t *material, Int_t Z, Int_t A)
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 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 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.)
Description of physical materials used to construct detectors; interface to range tables.
Double_t GetZ() const
Returns atomic number of material.
virtual Double_t GetPressure() const
virtual void SetPressure(Double_t)
virtual void Copy(TObject &obj) const
Copy this to obj.
virtual void SetTemperature(Double_t)
Double_t GetEffectiveAreaDensity(TVector3 &norm, TVector3 &direction)
virtual void SetThickness(Double_t thick)
virtual Double_t GetThickness() const
Double_t GetDensity() const
Double_t fThick
area density of absorber in g/cm**2
Bool_t IsGas() const
Returns kTRUE for gaseous materials/detectors.
virtual TGeoMedium * GetGeoMedium(const Char_t *="")
static KVIonRangeTable * GetRangeTable()
virtual Double_t GetEnergyLoss() const
virtual void Print(Option_t *option="") const
Show information on this material.
Int_t fAmasr
isotopic mass of element
virtual Double_t GetEmaxValid(Int_t Z, Int_t A)
virtual Double_t GetIncidentEnergy(Int_t Z, Int_t A, Double_t delta_e=-1.0, enum SolType type=kEmax)
Double_t fELoss
total of energy lost by all particles traversing absorber
virtual Double_t GetEIncOfMaxDeltaE(Int_t Z, Int_t A)
Incident energy for which the DE(E) curve has a maximum.
virtual Double_t GetPunchThroughEnergy(Int_t Z, Int_t A)
virtual Double_t GetEResFromDeltaE(Int_t Z, Int_t A, Double_t dE=-1.0, enum SolType type=kEmax)
virtual Double_t GetMaxDeltaE(Int_t Z, Int_t A)
static KVIonRangeTable * ChangeRangeTable(const Char_t *name)
void SetAreaDensity(Double_t dens)
Double_t GetAreaDensity() const
Return area density of material in g/cm**2.
Double_t fTemp
gas temperature in degrees celsius
Double_t fPressure
gas pressure in torr
virtual Double_t GetTemperature() const
virtual Double_t GetIncidentEnergyFromERes(Int_t Z, Int_t A, Double_t Eres)
Get incident energy from residual energy.
virtual void SetMaterial(const Char_t *type)
virtual Double_t GetDeltaEFromERes(Int_t Z, Int_t A, Double_t Eres)
virtual Double_t GetELostByParticle(KVNucleus *, TVector3 *norm=0)
static KVIonRangeTable * fIonRangeTable
pointer to class used to calculate charged particle ranges & energy losses
virtual Double_t GetERes(Int_t Z, Int_t A, Double_t Einc)
virtual Double_t GetDeltaE(Int_t Z, Int_t A, Double_t Einc)
virtual void Clear(Option_t *opt="")
Reset absorber - set energy lost by particles to zero.
virtual Double_t GetRange(Int_t Z, Int_t A, Double_t Einc)
virtual void DetectParticle(KVNucleus *, TVector3 *norm=0)
Bool_t IsIsotopic() const
Double_t GetEffectiveThickness(TVector3 &norm, TVector3 &direction)
virtual Double_t GetParticleEIncFromERes(KVNucleus *, TVector3 *norm=0)
virtual Double_t GetLinearRange(Int_t Z, Int_t A, Double_t Einc)
virtual KVMaterial * GetActiveLayer() const
Double_t GetMass() const
Returns atomic mass of material. Will be isotopic mass if set.
Description of properties and kinematics of atomic nuclei.
Int_t GetZ() const
Return the number of proton / atomic number.
TVector3 * GetPInitial() const
TVector3 GetMomentum() const
void SetKE(Double_t ecin)
void SetE0(TVector3 *e=0)
virtual const char * GetValue(const char *name, const char *dflt) const
TGeoMedium * GetMedium(const char *medium) const
TGeoMaterial * GetMaterial(const char *matname) const
void SetPressure(Double_t pressure)
void SetTransparency(Char_t transparency=0)
void SetTemperature(Double_t temperature)
virtual const char * GetName() const
virtual void SetTitle(const char *title="")
virtual void SetName(const char *name)
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual void Error(const char *method, const char *msgfmt,...) const
void Form(const char *fmt,...)
Type GetType(const std::string &Name)
Double_t Max(Double_t a, Double_t b)