KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVIonRangeTableMaterial.cpp
1//Created by KVClassFactory on Fri Sep 28 11:34:14 2012
2//Author: John Frankland,,,
3
4#include "KVIonRangeTableMaterial.h"
5#include "TF1.h"
6#include "KVNucleus.h"
7#include "TGeoManager.h"
8#include "TGeoMaterial.h"
9#include "KVElementDensity.h"
10#include "KVNDTManager.h"
11
12using namespace std;
13
15
16
17
19
21 : KVBase(),
22 fTable(0),
23 fState("unknown"),
24 fComposition(0),
25 fCompound(kFALSE),
26 fMixture(kFALSE),
27 fDens(0.),
28 fZmat(0),
29 fAmat(0),
30 fMoleWt(0),
31 fDeltaE(0),
32 fEres(0),
33 fRange(0),
34 fStopping(0)
35{
36 // Default constructor
37}
38
39
40
52
54 const Char_t* state, Double_t density, Double_t Z, Double_t A)
55 : KVBase(name, symbol),
56 fTable(tab),
57 fState(state),
58 fComposition(0),
59 fCompound(kFALSE),
60 fMixture(kFALSE),
61 fDens(density),
62 fZmat(Z),
63 fAmat(A),
64 fMoleWt(0),
65 fDeltaE(0),
66 fEres(0),
67 fRange(0),
68 fStopping(0)
69{
70 // Create new material with given (long) name and symbol
71 // symbol convention: for elements, use element symbol. for compounds, use chemical formula.
72 // e.g. silicon: name="Silicon" symbol="Si"
73 // C4H10: name="Isobutane", symbol="C4H10"
74 // state="solid", "liquid", "gas"
75 //
76 // Density [g/cm**3] must be given for solid compounds/mixtures.
77 // Densities of atomic elements are known (gNDTManager->GetValue(z, a, "ElementDensity")), they
78 // will be used automatically, unless a different value is given here.
79 // Densities of gases are calculated from the molar weight, temperature and pressure.
80
81 if (Z > 0 && density < 0) {
82 KVElementDensity* ed = (KVElementDensity*)gNDTManager->GetData(Z, A, "ElementDensity");
83 if (!ed) {
84 Warning("KVIonRangeTableMaterial",
85 "No element found in density table with Z=%f, density unknown", Z);
86 }
87 else
88 fDens = ed->GetValue();
89 }
90}
91
92
93
94
101
103 fTable(0),
104 fState("unknown"),
105 fComposition(0),
106 fCompound(kFALSE),
107 fMixture(kFALSE),
108 fDens(0.),
109 fZmat(0),
110 fAmat(0),
111 fMoleWt(0),
112 fDeltaE(0),
113 fEres(0),
114 fRange(0),
115 fStopping(0)
116{
117 // Copy constructor
118 // This ctor is used to make a copy of an existing object (for example
119 // when a method returns an object), and it is always a good idea to
120 // implement it.
121 // If your class allocates memory in its constructor(s) then it is ESSENTIAL :-)
122
123 obj.Copy(*this);
124}
125
126
127
130
140
141
142
143
151
153{
154 // This method copies the current state of 'this' object into 'obj'
155 // You should add here any member variables, for example:
156 // (supposing a member variable KVIonRangeTableMaterial::fToto)
157 // CastedObj.fToto = fToto;
158 // or
159 // CastedObj.SetToto( GetToto() );
160
161 KVBase::Copy(obj);
162 //KVIonRangeTableMaterial& CastedObj = (KVIonRangeTableMaterial&)obj;
163}
164
165
166
172
174{
175 // Add an element to a compound material
176 // Example: to define C3F8 gas:
177 // toto.AddCompoundElement(6,12,3);
178 // toto.AddCompoundElement(9,19,8);
179
181 KVNucleus n(Z, A);
182 Int_t nel = 0;
183 if (!fComposition) {
184 fComposition = new KVList;
185 }
186 else nel = fComposition->GetEntries();
187 KVNameValueList* l = new KVNameValueList(Form("Compound element %d", nel + 1));
188 l->SetValue("Z", Z);
189 l->SetValue("A", A);
190 l->SetValue("Ar", n.GetAtomicMass());
191 l->SetValue("Natoms", Natoms);
192 l->SetValue("Weight", Natoms);
193 l->SetValue("Ar*Weight", n.GetAtomicMass()*Natoms);
195}
196
197
198
205
207{
208 // Add an element to a mixed material
209 // Example: to define air, assuming 78% nitrogen (N2) and 21% oxygen (O2) and 1% argon (Ar):
210 // toto.AddMixtureElement(7,14, 2, 0.78);
211 // toto.AddMixtureElement(8,16, 2, 0.21);
212 // toto.AddMixtureElement(18, 40, 2, 0.01);
213
214 fMixture = kTRUE;
215 KVNucleus n(Z, A);
216 Int_t nel = 0;
217 if (!fComposition) fComposition = new KVList;
218 else nel = fComposition->GetEntries();
219 KVNameValueList* l = new KVNameValueList(Form("Mixture element %d", nel + 1));
220 l->SetValue("Z", Z);
221 l->SetValue("A", A);
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);
228}
229
230
231
236
238{
239 // Correctly initialize material ready for use
240 // For compound or mixed materials, calculate normalised weights of components,
241 // effective Z and A, and molar weight of substance
242
243 fMoleWt = 0.;
244 if (IsCompound() || IsMixture()) {
245 // mixture or compound
246 // calculate molar weight and effective Z & A
247 fZmat = fAmat = 0;
248 TIter next(fComposition);
249 KVNameValueList* nvl;
250 Double_t totW = 0;
251 while ((nvl = (KVNameValueList*)next())) {
252 Double_t arw = nvl->GetDoubleValue("Ar*Weight");
253 Double_t poid = nvl->GetDoubleValue("Weight");
254 fMoleWt += arw;
255 totW += poid;
256 fZmat += poid * nvl->GetIntValue("Z");
257 fAmat += poid * nvl->GetIntValue("A");
258 }
259 fZmat /= totW;
260 fAmat /= totW;
261 next.Reset();
262 while ((nvl = (KVNameValueList*)next())) {
263 Double_t prop = nvl->GetDoubleValue("Weight");
264 nvl->SetValue("NormWeight", prop / totW);
265 }
266 }
267 else {
268 // isotopically-pure elemental material
269 // get mass of 1 mole of element
271 fMoleWt = n.GetAtomicMass();
272 }
273}
274
275
276
278
280{
281 printf("Material : %s (%s) State : %s\n",
282 GetName(), GetSymbol(), fState.Data());
283}
284
285
286
288
290{
291 printf("Material : %s (%s) State : %s\n",
292 GetName(), GetSymbol(), fState.Data());
293 printf("\tEffective Z=%f, A=%f ", fZmat, fAmat);
294 if (IsGas()) printf(" Molar Weight = %f g.", fMoleWt);
295 else printf(" Density = %f g/cm**3", fDens);
296 printf("\n");
297 if (IsCompound()) printf("\tCompound material:\n");
298 else if (IsMixture()) printf("\tMixed material:\n");
299 if (IsCompound() || IsMixture()) {
300 TIter next(fComposition);
301 KVNameValueList* nvl;
302 while ((nvl = (KVNameValueList*)next())) {
303 KVNucleus n(nvl->GetIntValue("Z"), nvl->GetIntValue("A"));
304 printf("\t\tElement: %s Ar=%f g. Natoms=%d", n.GetSymbol(), n.GetAtomicMass(), nvl->GetIntValue("Natoms"));
305 if (IsMixture()) printf(" Proportion=%f", nvl->GetDoubleValue("Proportion"));
306 printf("\n");
307 }
308 }
309 printf("\n\n");
310}
311
312
313
314
321
323{
324 // Print range of element (in g/cm**2) as a function of incident energy (in MeV).
325 // For solid elements, print also the linear range (in cm). To change the default units,
326 // set optional argument units (e.g. to have linear range in microns, call with units = KVUnits::um).
327 // For gaseous elements, give the temperature (in degrees) and the pressure (in torr)
328 // in order to print the range in terms of length units.
329
330 GetRangeFunction(Z, A, isoAmat);
331 printf(" **** %s Range Table ****\n\n", GetTable()->GetName());
332 ls();
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");
337 printf("\n\n");
338 for (Double_t e = 0.1; (e <= 1.e+4 && e <= GetEmaxValid(Z, A)); e *= 10) {
339 printf("\t%10.5g\t\t%10.5g", e, fRange->Eval(e));
340 if (!IsGas() || (IsGas() && T > 0 && P > 0)) printf("\t\t\t%10.5g", fRange->Eval(e) / GetDensity() / units);
341 printf("\n");
342 }
343}
344
345
346
349
351{
352 // Print to stream the composition of this material, in a format compatible with the VEDALOSS parameter file.
353 if (IsCompound()) output << "COMPOUND";
354 else if (IsMixture()) output << "MIXTURE";
355 else output << "ELEMENT";
356 output << endl;
357 if (IsCompound() || IsMixture()) {
358 output << fComposition->GetEntries() << endl;
359 TIter next(fComposition);
360 KVNameValueList* nvl;
361 while ((nvl = (KVNameValueList*)next())) {
362 KVNucleus n(nvl->GetIntValue("Z"), nvl->GetIntValue("A"));
363 output << n.GetZ() << " " << n.GetA() << " " << nvl->GetIntValue("Natoms");
364 if (IsMixture()) output << " " << nvl->GetDoubleValue("Proportion");
365 output << endl;
366 }
367 }
368}
369
370
371
375
377{
378 // Returns range (in g/cm**2) of ion (Z,A) with energy E (MeV) in material.
379 // Give Amat to change default (isotopic) mass of material,
380
381 TF1* f = GetRangeFunction(Z, A, isoAmat);
382 return f->Eval(E);
383}
384
385
386
391
393{
394 // Returns range (in cm) of ion (Z,A) with energy E (MeV) in material.
395 // Give Amat to change default (isotopic) mass of material,
396 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
397
399 if (fDens > 0) return GetRangeOfIon(Z, A, E, isoAmat) / GetDensity();
400 else return 0.;
401}
402
403
404
408
410{
411 // Returns energy lost (in MeV) by ion (Z,A) with energy E (MeV) after thickness e (in g/cm**2).
412 // Give Amat to change default (isotopic) mass of material,
413
414 TF1* f = GetDeltaEFunction(e, Z, A, isoAmat);
415 return f->Eval(E);
416}
417
418
419
424
426 Double_t isoAmat, Double_t T, Double_t P)
427{
428 // Returns energy lost (in MeV) by ion (Z,A) with energy E (MeV) after thickness e (in cm).
429 // Give Amat to change default (isotopic) mass of material,
430 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
431
433 e *= GetDensity();
434 return GetDeltaEOfIon(Z, A, E, e, isoAmat);
435}
436
437
438
442
444 Double_t isoAmat)
445{
446 // Returns energy lost (in MeV) by ion (Z,A) with energy E (MeV) after thickness e (in g/cm**2).
447 // Give Amat to change default (isotopic) mass of material,
448
449 TF1* f = GetEResFunction(e, Z, A, isoAmat);
450 return f->Eval(E);
451}
452
453
454
459
461 Double_t isoAmat, Double_t T, Double_t P)
462{
463 // Returns energy lost (in MeV) by ion (Z,A) with energy E (MeV) after thickness e (in cm).
464 // Give Amat to change default (isotopic) mass of material,
465 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
466
468 e *= GetDensity();
469 return GetEResOfIon(Z, A, E, e, isoAmat);
470}
471
472
473
477
479{
480 // Calculates incident energy (in MeV) of an ion (Z,A) with residual energy Eres (MeV) after thickness e (in g/cm**2).
481 // Give Amat to change default (isotopic) mass of material,
482 GetRangeFunction(Z, A, isoAmat);
483 Double_t R0 = fRange->Eval(Eres) + e;
484 return fRange->GetX(R0);
485}
486
487
488
493
495 Double_t isoAmat, Double_t T, Double_t P)
496{
497 // Calculates incident energy (in MeV) of an ion (Z,A) with residual energy Eres (MeV) after thickness e (in cm).
498 // Give Amat to change default (isotopic) mass of material,
499 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
500
502 e *= GetDensity();
503 return GetEIncFromEResOfIon(Z, A, Eres, e, isoAmat);
504}
505
506
507
511
513{
514 // Calculates incident energy (in MeV) of an ion (Z,A) from energy loss DeltaE (MeV) in thickness e (in g/cm**2).
515 // Give Amat to change default (isotopic) mass of material,
516 GetDeltaEFunction(e, Z, A, isoAmat);
517 Double_t e1, e2;
518 fDeltaE->GetRange(e1, e2);
519 switch (type) {
521 e2 = GetEIncOfMaxDeltaEOfIon(Z, A, e, isoAmat);
522 break;
524 e1 = GetEIncOfMaxDeltaEOfIon(Z, A, e, isoAmat);
525 break;
526 }
527 return fDeltaE->GetX(DeltaE, e1, e2);
528}
529
530
531
536
538 Double_t isoAmat, Double_t T, Double_t P)
539{
540 // Calculates incident energy (in MeV) of an ion (Z,A) from energy loss DeltaE (MeV) in thickness e (in cm).
541 // Give Amat to change default (isotopic) mass of material,
542 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
543
545 e *= GetDensity();
546 return GetEIncFromDeltaEOfIon(Z, A, deltaE, e, type, isoAmat);
547}
548
549
550
556
558{
559 // Calculate incident energy (in MeV) for ion (Z,A) for which the range is equal to the
560 // given thickness e (in g/cm**2). At this energy the residual energy of the ion is (just) zero,
561 // for all energies above this energy the residual energy is > 0.
562 // Give Amat to change default (isotopic) mass of material.
563
564 return GetRangeFunction(Z, A, isoAmat)->GetX(e);
565}
566
567
568
575
577{
578 // Calculate incident energy (in MeV) for ion (Z,A) for which the range is equal to the
579 // given thickness e (in cm). At this energy the residual energy of the ion is (just) zero,
580 // for all energies above this energy the residual energy is > 0.
581 // Give Amat to change default (isotopic) mass of material.
582 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
583
585 e *= GetDensity();
586 return GetPunchThroughEnergy(Z, A, e, isoAmat);
587}
588
589
590
594
596{
597 // Calculate maximum energy loss (in MeV) of ion (Z,A) in given thickness e (in g/cm**2).
598 // Give Amat to change default (isotopic) mass of material.
599
600 return GetDeltaEFunction(e, Z, A, isoAmat)->GetMaximum();
601}
602
603
604
609
611{
612 // Calculate incident energy (in MeV) corresponding to maximum energy loss of ion (Z,A)
613 // in given thickness e (in g/cm**2).
614 // Give Amat to change default (isotopic) mass of material.
615
616 return GetDeltaEFunction(e, Z, A, isoAmat)->GetMaximumX();
617}
618
619
620
625
627{
628 // Calculate maximum energy loss (in MeV) of ion (Z,A) in given thickness e (in cm).
629 // Give Amat to change default (isotopic) mass of material.
630 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
631
633 e *= GetDensity();
634 return GetMaxDeltaEOfIon(Z, A, e, isoAmat);
635}
636
637
638
644
646{
647 // Calculate incident energy (in MeV) corresponding to maximum energy loss of ion (Z,A)
648 // in given thickness e (in cm).
649 // Give Amat to change default (isotopic) mass of material.
650 // give temperature (degrees C) & pressure (torr) (T,P) for gaseous materials.
651
653 e *= GetDensity();
654 return GetEIncOfMaxDeltaEOfIon(Z, A, e, isoAmat);
655}
656
657
658
663
665{
666 // Create and return pointer to a TGeoMaterial or TGeoMixture (for compound materials)
667 // with the properties of this material.
668 // gGeoManager must exist.
669
670 TGeoMaterial* gmat = 0x0;
671 if (!gGeoManager) return gmat;
672 if (IsCompound()) {
673 gmat = new TGeoMixture(GetTitle(), GetComposition()->GetEntries(), GetDensity());
674 TIter next(GetComposition());
675 KVNameValueList* nvl;
676 while ((nvl = (KVNameValueList*)next())) {
677 KVNucleus n(nvl->GetIntValue("Z"), nvl->GetIntValue("A"));
678 TGeoElement* gel = gGeoManager->GetElementTable()->FindElement(n.GetSymbol("EL"));
679 float poids = nvl->GetDoubleValue("NormWeight");
680 ((TGeoMixture*)gmat)->AddElement(gel, poids);
681 }
682 }
683 else {
684 gmat = new TGeoMaterial(GetTitle(), GetMass(), GetZ(), GetDensity());
685 }
686 // set state of material
689 return gmat;
690}
691
692
int Int_t
#define SafeDelete(p)
#define f(i)
#define e(i)
char Char_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
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
char name[80]
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Base class for KaliVeda framework.
Definition KVBase.h:142
virtual void Copy(TObject &) const
Make a copy of this object.
Definition KVBase.cpp:394
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
virtual TF1 * GetEResFunction(Double_t e, Int_t Z, Int_t A, Double_t isoAmat=0)=0
const KVIonRangeTable * GetTable() const
virtual Float_t GetEmaxValid(Int_t, Int_t) const
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 ~KVIonRangeTableMaterial()
Destructor.
virtual TF1 * GetRangeFunction(Int_t Z, Int_t A, Double_t isoAmat=0)=0
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
const Char_t * GetSymbol() 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 TF1 * GetDeltaEFunction(Double_t e, Int_t Z, Int_t A, Double_t isoAmat=0)=0
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.
Definition KVList.h:28
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.
Definition KVNucleus.h:126
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)
void Reset()
const char * GetName() const override
const char * GetTitle() const override
virtual void Warning(const char *method, const char *msgfmt,...) const
const char * Data() const
const Int_t n
double T(double x)
constexpr Double_t E()
#define R0(v, w, x, y, z, i)
TLine l
ClassImp(TPyArg)