47#include "RConfigure.h"
68 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
69 "Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
"Ca",
"Sc",
"Ti",
"V ",
"Cr",
70 "Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
71 "Rb",
"Sr",
"Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
72 "In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
"Ce",
"Pr",
"Nd",
73 "Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
74 "Ta",
"W ",
"Re",
"Os",
"Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
75 "At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
"Cm",
76 "Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
80 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
81 "ElecCapt",
"IsoTrans",
"I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
82 "2Alpha",
"Carbon12",
"Carbon14",
"Stable" };
87 -2, -2, -8, -12, -14 };
190 static constexpr Double_t k1 = 0.0083 , k2 = 0.20206 ,k3 = 0.0020 , k4 = 0.0369;
196 fCoulomb = (k1*az4 + k2 + 1./(1.+az2))*az2 - (k3*az4 + k4)*az4;
203 static constexpr Double_t Lrad_light[] = {5.31 , 4.79 , 4.74 , 4.71} ;
204 static constexpr Double_t Lprad_light[] = {6.144 , 5.621 , 5.805 , 5.924} ;
216 if (iz <= 3) { Lrad = Lrad_light[iz] ; Lprad = Lprad_light[iz] ; }
217 else { Lrad = log184 - logZ3 ; Lprad = log1194 - 2*logZ3;}
226 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
242 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
260 for (ncurrent=0; ncurrent<
fNisotopes; ncurrent++)
271 if ((
fZ!=0) && (isotope->
GetZ()!=
fZ)) {
272 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s",
358 if (z<1)
Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,
name);
359 if (
n<z)
Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,
n,
name);
369 if (!elTable)
return 0;
378 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
450 if (branchingRatio<1E-20) {
503 Error(
"CheckDecays",
"Element table not present");
512 Int_t decayResult = 0;
521 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
529 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
543 if (da == -99 || dz == -99)
return 0;
563 while ((elem=next())) {
582 else fName =
"?? -?? -";
598 printf(
"Iso=%d; ",
fIso);
599 printf(
"Level=%g[MeV]; ",
fLevel);
600 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
602 else printf(
"Hlife=INF\n");
606 printf(
"Htox=%g; ",
fTH_F);
607 printf(
"Itox=%g; ",
fTG_F);
610 printf(
"Decay modes:\n");
622 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
623 char name[20],jp[20];
624 sscanf(&
line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d",
name,&
a,&z,&iso,&level,&deltaM,
625 &halfLife,jp,&natAbun,&th_f,&tg_f,&th_s,&tg_s,&status,&ndecays);
627 jp,natAbun,th_f,tg_f,th_s,tg_s,status);
636 if (!strcmp(
option,
"h")) {
638 out <<
"#====================================================================================================================================" << std::endl;
639 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX HTOX ITOX STAT NDCY" << std::endl;
640 out <<
"#====================================================================================================================================" << std::endl;
643 out << std::setw(5) << (
Int_t)
fA;
644 out << std::setw(5) <<
fZ;
645 out << std::setw(5) <<
fIso;
646 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
647 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
648 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
650 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
651 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
652 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
653 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
654 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
655 out << std::setw(5) <<
fStatus;
658 out << std::setw(5) << ndecays;
768 sscanf(&
line[0],
"%s%d%d%lg%lg",
name,&decay,&diso,&branchingRatio,&qValue);
780 out << std::setw(50) << decayName.
Data();
781 out << std::setw(10) <<
fDecay;
782 out << std::setw(10) <<
fDiso;
783 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fBranchingRatio;
784 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fQvalue;
813 : fTop(top), fElem(top), fBranch(0), fLevel(0), fLimitRatio(limit), fRatio(1.)
826 fLimitRatio(iter.fLimitRatio),
848 if (&iter ==
this)
return *
this;
899 if (!
fElem)
return nullptr;
901 if (!dc->
Daughter())
return nullptr;
916 if (!
fElem)
return nullptr;
931 printf(
"=== Chain with %g %%\n", 100*
fRatio);
979 fNelements(get.fNelements),
980 fNelementsRN(get.fNelementsRN),
981 fNisotopes(get.fNisotopes),
983 fListRN(get.fListRN),
1050 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.",
1076 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.",isotope->
GetName());
1093 AddElement(
"BE" ,
"BERYLLIUM" ,4, 9, 9.01218);
1096 AddElement(
"N" ,
"NITROGEN" ,7, 14, 14.00674);
1098 AddElement(
"F" ,
"FLUORINE" ,9, 19, 18.9984032);
1100 AddElement(
"NA" ,
"SODIUM" ,11, 23, 22.989770);
1101 AddElement(
"MG" ,
"MAGNESIUM" ,12, 24, 24.3050);
1102 AddElement(
"AL" ,
"ALUMINIUM" ,13, 27, 26.981538);
1103 AddElement(
"SI" ,
"SILICON" ,14, 28, 28.0855);
1104 AddElement(
"P" ,
"PHOSPHORUS" ,15, 31, 30.973761);
1106 AddElement(
"CL" ,
"CHLORINE" ,17, 35, 35.4527);
1108 AddElement(
"K" ,
"POTASSIUM" ,19, 39, 39.0983);
1110 AddElement(
"SC" ,
"SCANDIUM" ,21, 45, 44.955910);
1111 AddElement(
"TI" ,
"TITANIUM" ,22, 48, 47.867);
1112 AddElement(
"V" ,
"VANADIUM" ,23, 51, 50.9415);
1113 AddElement(
"CR" ,
"CHROMIUM" ,24, 52, 51.9961);
1114 AddElement(
"MN" ,
"MANGANESE" ,25, 55, 54.938049);
1116 AddElement(
"CO" ,
"COBALT" ,27, 59, 58.933200);
1121 AddElement(
"GE" ,
"GERMANIUM" ,32, 73, 72.61);
1122 AddElement(
"AS" ,
"ARSENIC" ,33, 75, 74.92160);
1126 AddElement(
"RB" ,
"RUBIDIUM" ,37, 85, 85.4678);
1127 AddElement(
"SR" ,
"STRONTIUM" ,38, 88, 87.62);
1128 AddElement(
"Y" ,
"YTTRIUM" ,39, 89, 88.90585);
1129 AddElement(
"ZR" ,
"ZIRCONIUM" ,40, 91, 91.224);
1130 AddElement(
"NB" ,
"NIOBIUM" ,41, 93, 92.90638);
1131 AddElement(
"MO" ,
"MOLYBDENUM" ,42, 96, 95.94);
1132 AddElement(
"TC" ,
"TECHNETIUM" ,43, 98, 98.0);
1133 AddElement(
"RU" ,
"RUTHENIUM" ,44, 101, 101.07);
1134 AddElement(
"RH" ,
"RHODIUM" ,45, 103, 102.90550);
1135 AddElement(
"PD" ,
"PALLADIUM" ,46, 106, 106.42);
1136 AddElement(
"AG" ,
"SILVER" ,47, 108, 107.8682);
1137 AddElement(
"CD" ,
"CADMIUM" ,48, 112, 112.411);
1138 AddElement(
"IN" ,
"INDIUM" ,49, 115, 114.818);
1140 AddElement(
"SB" ,
"ANTIMONY" ,51, 122, 121.760);
1141 AddElement(
"TE" ,
"TELLURIUM" ,52, 128, 127.60);
1142 AddElement(
"I" ,
"IODINE" ,53, 127, 126.90447);
1144 AddElement(
"CS" ,
"CESIUM" ,55, 133, 132.90545);
1145 AddElement(
"BA" ,
"BARIUM" ,56, 137, 137.327);
1146 AddElement(
"LA" ,
"LANTHANUM" ,57, 139, 138.9055);
1147 AddElement(
"CE" ,
"CERIUM" ,58, 140, 140.116);
1148 AddElement(
"PR" ,
"PRASEODYMIUM" ,59, 141, 140.90765);
1149 AddElement(
"ND" ,
"NEODYMIUM" ,60, 144, 144.24);
1150 AddElement(
"PM" ,
"PROMETHIUM" ,61, 145, 145.0);
1151 AddElement(
"SM" ,
"SAMARIUM" ,62, 150, 150.36);
1152 AddElement(
"EU" ,
"EUROPIUM" ,63, 152, 151.964);
1153 AddElement(
"GD" ,
"GADOLINIUM" ,64, 157, 157.25);
1154 AddElement(
"TB" ,
"TERBIUM" ,65, 159, 158.92534);
1155 AddElement(
"DY" ,
"DYSPROSIUM" ,66, 162, 162.50);
1156 AddElement(
"HO" ,
"HOLMIUM" ,67, 165, 164.93032);
1158 AddElement(
"TM" ,
"THULIUM" ,69, 169, 168.93421);
1159 AddElement(
"YB" ,
"YTTERBIUM" ,70, 173, 173.04);
1160 AddElement(
"LU" ,
"LUTETIUM" ,71, 175, 174.967);
1161 AddElement(
"HF" ,
"HAFNIUM" ,72, 178, 178.49);
1162 AddElement(
"TA" ,
"TANTALUM" ,73, 181, 180.9479);
1163 AddElement(
"W" ,
"TUNGSTEN" ,74, 184, 183.84);
1164 AddElement(
"RE" ,
"RHENIUM" ,75, 186, 186.207);
1166 AddElement(
"IR" ,
"IRIDIUM" ,77, 192, 192.217);
1167 AddElement(
"PT" ,
"PLATINUM" ,78, 195, 195.078);
1168 AddElement(
"AU" ,
"GOLD" ,79, 197, 196.96655);
1169 AddElement(
"HG" ,
"MERCURY" ,80, 200, 200.59);
1170 AddElement(
"TL" ,
"THALLIUM" ,81, 204, 204.3833);
1172 AddElement(
"BI" ,
"BISMUTH" ,83, 209, 208.98038);
1173 AddElement(
"PO" ,
"POLONIUM" ,84, 209, 209.0);
1174 AddElement(
"AT" ,
"ASTATINE" ,85, 210, 210.0);
1176 AddElement(
"FR" ,
"FRANCIUM" ,87, 223, 223.0);
1178 AddElement(
"AC" ,
"ACTINIUM" ,89, 227, 227.0);
1179 AddElement(
"TH" ,
"THORIUM" ,90, 232, 232.0381);
1180 AddElement(
"PA" ,
"PROTACTINIUM" ,91, 231, 231.03588);
1181 AddElement(
"U" ,
"URANIUM" ,92, 238, 238.0289);
1182 AddElement(
"NP" ,
"NEPTUNIUM" ,93, 237, 237.0);
1183 AddElement(
"PU" ,
"PLUTONIUM" ,94, 244, 244.0);
1184 AddElement(
"AM" ,
"AMERICIUM" ,95, 243, 243.0);
1186 AddElement(
"BK" ,
"BERKELIUM" ,97, 247, 247.0);
1187 AddElement(
"CF" ,
"CALIFORNIUM",98, 251, 251.0);
1188 AddElement(
"ES" ,
"EINSTEINIUM",99, 252, 252.0);
1189 AddElement(
"FM" ,
"FERMIUM" ,100, 257, 257.0);
1190 AddElement(
"MD" ,
"MENDELEVIUM",101, 258, 258.0);
1191 AddElement(
"NO" ,
"NOBELIUM" ,102, 259, 259.0);
1192 AddElement(
"LR" ,
"LAWRENCIUM" ,103, 262, 262.0);
1193 AddElement(
"RF" ,
"RUTHERFORDIUM",104, 261, 261.0);
1194 AddElement(
"DB" ,
"DUBNIUM" ,105, 262, 262.0);
1195 AddElement(
"SG" ,
"SEABORGIUM" ,106, 263, 263.0);
1196 AddElement(
"BH" ,
"BOHRIUM" ,107, 262, 262.0);
1197 AddElement(
"HS" ,
"HASSIUM" ,108, 265, 265.0);
1198 AddElement(
"MT" ,
"MEITNERIUM" ,109, 266, 266.0);
1199 AddElement(
"UUN" ,
"UNUNNILIUM" ,110, 269, 269.0);
1200 AddElement(
"UUU" ,
"UNUNUNIUM" ,111, 272, 272.0);
1201 AddElement(
"UUB" ,
"UNUNBIUM" ,112, 277, 277.0);
1213 TString rnf =
"RadioNuclides.txt";
1215 FILE *fp = fopen(rnf,
"r");
1217 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1223 while (fgets(&
line[0],140,fp)) {
1224 if (
line[0]==
'#')
continue;
1226 for (i=0; i<ndecays; i++) {
1227 if (!fgets(&
line[0],140,fp)) {
1228 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1265 if (!sname.
Length()) sname =
"RadioNuclides.txt";
1267 out.open(sname.
Data(), std::ios::out);
1269 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1292 if (elem)
return elem;
1297 if (elem)
return elem;
1301 if (s == elem->
GetTitle())
return elem;
1325 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1352 if (opt==
"" || opt==
"D") {
1353 if (induser) printf(
"================\nDefault elements\n================\n");
1357 if (opt==
"" || opt==
"I") {
1359 printf(
"================\nIsotopes\n================\n");
1364 if (opt==
"" || opt==
"R") {
1366 printf(
"================\nRadio-nuclides\n================\n");
1371 if (opt==
"" || opt==
"U") {
1372 if (
fNelements>induser) printf(
"================\nUser elements\n================\n");
1397 if (t12 == 0.) t12 = 1.e-30;
1433 fElemTop(other.fElemTop),
1434 fCsize(other.fCsize),
1435 fNcoeff(other.fNcoeff),
1436 fFactor(other.fFactor),
1463 if (
this == &other)
return *
this;
1465 TAttLine::operator=(other);
1466 TAttFill::operator=(other);
1467 TAttMarker::operator=(other);
1493 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1510 for (j=0; j<other.
fNcoeff; j++) {
1564 if (elem !=
fElem) {
1565 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1583 for (i=0; i<
n; i++) {
1588 if (halflife==0.) halflife = 1.e-30;
1589 if (elem->
Stable()) lambda[i] = 0.;
1594 if (halflife==0.) halflife = 1.e-30;
1595 if (elem->
Stable()) lambda[
n] = 0.;
1600 for (i=0; i<order-1; i++) {
1601 for (j=i+1; j<order; j++) {
1602 if (lambda[j] == lambda[i]) lambda[j] += 0.001*lambda[j];
1607 for (j=0; j<
n; j++) plambdabr *= lambda[j]*br[j];
1608 for (i=0; i<order; i++) {
1610 for (j=0; j<
n+1; j++) {
1611 if (j == i)
continue;
1612 pdlambda *= lambda[j] - lambda[i];
1614 if (pdlambda == 0.) {
1615 Error(
"FindSolution",
"pdlambda=0 !!!");
1620 ain = plambdabr/pdlambda;
1649 printf(
"%s\n", formula.
Data());
static void indent(ostringstream &buf, int indent_level)
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 filename
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 result
static const char gLevName[gMaxLevel]
static const Int_t gDecayDeltaZ[gMaxDecay]
static const Int_t gMaxDecay
static const char * gDecayName[gMaxDecay+1]
static const Int_t gDecayDeltaA[gMaxDecay]
static const char gElName[gMaxElem][3]
static const Int_t gMaxLevel
static const Int_t gMaxElem
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TSystem * gSystem
Fill Area Attributes class.
void Print(Option_t *option="") const override
Default print for collections, calls Print(option, 1).
Double_t Concentration(Double_t time) const
Find concentration of the element at a given time.
~TGeoBatemanSol()
Destructor.
virtual void Draw(Option_t *option="")
Draw the solution of Bateman equation versus time.
void FindSolution(const TObjArray *array)
Find the solution for the Bateman equations corresponding to the decay chain described by an array en...
virtual void Print(Option_t *option="") const
Print concentration evolution.
TGeoBatemanSol & operator=(const TGeoBatemanSol &other)
Assignment.
void Normalize(Double_t factor)
Normalize all coefficients with a given factor.
TGeoElementRN * GetElement() const
TGeoBatemanSol & operator+=(const TGeoBatemanSol &other)
Addition of other solution.
A decay channel for a radionuclide.
void SetParent(TGeoElementRN *parent)
virtual const char * GetName() const
Returns name of decay.
TGeoElementRN * Daughter() const
virtual void Print(Option_t *opt=" ") const
Prints decay info.
static TGeoDecayChannel * ReadDecay(const char *record)
Create element from line record.
TGeoElementRN * Parent() const
TGeoElementRN * fDaughter
Double_t BranchingRatio() const
void SetDaughter(TGeoElementRN *daughter)
TGeoDecayChannel & operator=(const TGeoDecayChannel &dc)
Assignment.
static void DecayName(UInt_t decay, TString &name)
Returns decay name.
virtual void DecayShift(Int_t &dA, Int_t &dZ, Int_t &dI) const
Returns variation in A, Z and Iso after decay.
Int_t GetIndex() const
Get index of this channel in the list of decays of the parent nuclide.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for decays.
Iterator for decay branches.
virtual void Print(Option_t *option="") const
Print info about the current decay branch.
TObjArray * GetBranch() const
const TGeoElementRN * fElem
TGeoElementRN * Next()
Return next element.
TGeoElemIter & operator=(const TGeoElemIter &iter)
Assignment.
virtual ~TGeoElemIter()
Destructor.
TGeoElementRN * operator()()
() operator.
const TGeoElementRN * fTop
TGeoElementRN * Up()
Go upwards from the current location until the next branching, then down.
TGeoElementRN * Down(Int_t ibranch)
Go downwards from current level via ibranch as low in the tree as possible.
Class representing a radionuclidevoid TGeoManager::SetDefaultRootUnits() { if ( fgDefaultUnits == kRo...
void AddRatio(TGeoBatemanSol &ratio)
Adds a proportion ratio to the existing one.
void FillPopulation(TObjArray *population, Double_t precision=0.001, Double_t factor=1.)
Fills the input array with the set of RN elements resulting from the decay of this one.
void AddDecay(Int_t decay, Int_t diso, Double_t branchingRatio, Double_t qValue)
Adds a decay mode for this element.
virtual Int_t ENDFCode() const
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for RN elements.
Double_t HalfLife() const
virtual Double_t GetSpecificActivity() const
Get the activity in Bq of a gram of material made from this element.
Int_t DecayResult(TGeoDecayChannel *dc) const
Returns ENDF code of decay result.
TObjArray * Decays() const
Int_t GetNdecays() const
Get number of decay channels of this element.
void MakeName(Int_t a, Int_t z, Int_t iso)
Generate a default name for the element.
TGeoElementRN()
Default constructor.
Bool_t CheckDecays() const
Check if all decay chain of the element is OK.
static TGeoElementRN * ReadElementRN(const char *record, Int_t &ndecays)
Create element from line record.
virtual ~TGeoElementRN()
Destructor.
static Int_t ENDF(Int_t a, Int_t z, Int_t iso)
void ResetRatio()
Clears the existing ratio.
virtual void Print(Option_t *option="") const
Print info about the element;.
TGeoElementTable & operator=(const TGeoElementTable &)
assignment operator
Bool_t HasRNElements() const
void ExportElementsRN(const char *filename="")
Export radionuclides in a file.
virtual ~TGeoElementTable()
destructor
void AddIsotope(TGeoIsotope *isotope)
Add isotope to the table.
ElementRNMap_t fElementsRN
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retrieve a radionuclide by ENDF code.
void AddElementRN(TGeoElementRN *elem)
Add a radionuclide to the table and map it.
Bool_t HasDefaultElements() const
Bool_t CheckTable() const
Checks status of element table.
void ImportElementsRN()
Creates the list of radionuclides.
void AddElement(const char *name, const char *title, Int_t z, Double_t a)
Add an element to the table. Obsolete.
virtual void Print(Option_t *option="") const
Print table of elements.
TGeoIsotope * FindIsotope(const char *name) const
Find existing isotope by name. Not optimized for a big number of isotopes.
void BuildDefaultElements()
Creates the default element table.
TGeoElementTable()
default constructor
TGeoElement * FindElement(const char *name) const
Search an element by symbol or full name Exact matching.
Base class for chemical elements.
TGeoElement()
Default constructor.
void SetDefined(Bool_t flag=kTRUE)
void ComputeDerivedQuantities()
Calculate properties for an atomic number.
Double_t Neff() const
Returns effective number of nucleons.
void ComputeCoulombFactor()
Compute Coulomb correction factor (Phys Rev. D50 3-1 (1994) page 1254)
void AddIsotope(TGeoIsotope *isotope, Double_t relativeAbundance)
Add an isotope for this element. All isotopes have to be isotopes of the same element.
virtual void Print(Option_t *option="") const
Print this isotope.
static TGeoElementTable * GetElementTable()
Returns pointer to the table.
void ComputeLradTsaiFactor()
Compute Tsai's Expression for the Radiation Length (Phys Rev. D50 3-1 (1994) page 1254)
virtual ~TGeoElement()
destructor
Bool_t HasIsotopes() const
Double_t GetRelativeAbundance(Int_t i) const
Return relative abundance of i-th isotope in this element.
void SetUsed(Bool_t flag=kTRUE)
TGeoIsotope * GetIsotope(Int_t i) const
Return i-th isotope in the element.
TGeoIsotope()
Dummy I/O constructor.
virtual void Print(Option_t *option="") const
Print this isotope.
static TGeoIsotope * FindIsotope(const char *name)
Find existing isotope by name.
static EDefaultUnits GetDefaultUnits()
TGeoElementTable * GetElementTable()
Returns material table. Creates it if not existing.
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
static void SetDefaultUnits(EDefaultUnits new_value)
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
Int_t GetEntriesFast() const
Int_t IndexOf(const TObject *obj) const override
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
TObject * RemoveAt(Int_t idx) override
Remove object at index idx.
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
void Add(TObject *obj) override
Mother of all ROOT objects.
TObject & operator=(const TObject &rhs)
TObject assignment operator.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void ToUpper()
Change string to upper case.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
static constexpr double alpha_rcl2
static constexpr double fine_structure_const
static constexpr double fine_structure_const
static constexpr double alpha_rcl2
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
constexpr Double_t Na()
Avogadro constant (Avogadro's Number) in .
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.