48#include "RConfigure.h"
69 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
"Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
70 "Ca",
"Sc",
"Ti",
"V ",
"Cr",
"Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
"Rb",
"Sr",
71 "Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
"In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
72 "Ce",
"Pr",
"Nd",
"Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
"Ta",
"W ",
"Re",
"Os",
73 "Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
"At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
74 "Cm",
"Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
"Mt",
"Ds"};
77 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
"ElecCapt",
"IsoTrans",
78 "I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
"2Alpha",
"Carbon12",
"Carbon14",
"Stable"};
80static const Int_t gDecayDeltaA[
gMaxDecay] = {0, 0, -1, -1, -4, -99, 0, 0, -99, -99, -2, -2, -8, -12, -14};
82static const Int_t gDecayDeltaZ[
gMaxDecay] = {2, 1, 0, -1, -2, -99, -1, 0, -99, -99, -2, 0, -4, -6, -6};
175 static constexpr Double_t k1 = 0.0083, k2 = 0.20206, k3 = 0.0020, k4 = 0.0369;
181 fCoulomb = (k1 * az4 + k2 + 1. / (1. + az2)) * az2 - (k3 * az4 + k4) * az4;
188 static constexpr Double_t Lrad_light[] = {5.31, 4.79, 4.74, 4.71};
189 static constexpr Double_t Lprad_light[] = {6.144, 5.621, 5.805, 5.924};
203 Lrad = Lrad_light[iz];
204 Lprad = Lprad_light[iz];
206 Lrad = log184 - logZ3;
207 Lprad = log1194 - 2 * logZ3;
217 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
233 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
251 for (ncurrent = 0; ncurrent <
fNisotopes; ncurrent++)
263 if ((
fZ != 0) && (isotope->
GetZ() !=
fZ)) {
264 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s", isotope->
GetName(),
342 Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,
name);
344 Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,
n,
name);
364 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
437 if (branchingRatio < 1E-20) {
440 Warning(
"AddDecay",
"Decay %s of %s has BR=0. Not added.", decayName.
Data(),
fName.Data());
468 return fDecays->GetEntriesFast();
494 Error(
"CheckDecays",
"Element table not present");
503 Int_t decayResult = 0;
512 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.Data());
520 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.Data(), br);
534 if (da == -99 || dz == -99)
555 population->
Add(
this);
556 while ((elem = next())) {
558 ratio.Normalize(factor);
561 population->
Add(elem);
571 if (z == 0 &&
a == 1) {
579 if (
a >= 1 &&
a <= 999)
585 fName.ReplaceAll(
" ",
"");
593 printf(
"\n%-12s ",
fName.Data());
596 printf(
"Z=%d; ",
fZ);
597 printf(
"Iso=%d; ",
fIso);
598 printf(
"Level=%g[MeV]; ",
fLevel);
599 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
603 printf(
"Hlife=INF\n");
605 printf(
"J/P=%s; ",
fTitle.Data());
607 printf(
"Htox=%g; ",
fTH_F);
608 printf(
"Itox=%g; ",
fTG_F);
612 printf(
"Decay modes:\n");
625 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
626 char name[20], jp[20];
627 sscanf(&
line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d",
name, &
a, &z, &iso, &level, &deltaM, &halfLife, jp,
628 &natAbun, &th_f, &tg_f, &th_s, &tg_s, &status, &ndecays);
630 new TGeoElementRN(
a, z, iso, level, deltaM, halfLife, jp, natAbun, th_f, tg_f, th_s, tg_s, status);
639 if (!strcmp(option,
"h")) {
641 out <<
"#========================================================================================================"
642 "============================"
644 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX "
645 "HTOX ITOX STAT NDCY"
647 out <<
"#========================================================================================================"
648 "============================"
651 out << std::setw(11) <<
fName.Data();
652 out << std::setw(5) << (
Int_t)
fA;
653 out << std::setw(5) <<
fZ;
654 out << std::setw(5) <<
fIso;
655 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
656 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
657 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
658 out << std::setw(13) <<
fTitle.Data();
659 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
660 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
661 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
662 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
663 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
664 out << std::setw(5) <<
fStatus;
667 ndecays =
fDecays->GetEntries();
668 out << std::setw(5) << ndecays;
749 if (1 << i & decay) {
762 return fParent->Decays()->IndexOf(
this);
783 sscanf(&
line[0],
"%s%d%d%lg%lg",
name, &decay, &diso, &branchingRatio, &qValue);
795 out << std::setw(50) << decayName.
Data();
796 out << std::setw(10) <<
fDecay;
797 out << std::setw(10) <<
fDiso;
798 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fBranchingRatio;
799 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fQvalue;
844 fBranch = new TObjArray(10);
845 for (Int_t i = 0; i < fLevel; i++)
846 fBranch->Add(iter.fBranch->At(i));
942 for (
Int_t i = 0; i < nd; i++)
956 printf(
"=== Chain with %g %%\n", 100 *
fRatio);
1078 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.", orig->
GetName(),
1106 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.", isotope->
GetName());
1125 AddElement(
"BE",
"BERYLLIUM", 4, 9, 9.01218);
1128 AddElement(
"N",
"NITROGEN", 7, 14, 14.00674);
1130 AddElement(
"F",
"FLUORINE", 9, 19, 18.9984032);
1132 AddElement(
"NA",
"SODIUM", 11, 23, 22.989770);
1133 AddElement(
"MG",
"MAGNESIUM", 12, 24, 24.3050);
1134 AddElement(
"AL",
"ALUMINIUM", 13, 27, 26.981538);
1135 AddElement(
"SI",
"SILICON", 14, 28, 28.0855);
1136 AddElement(
"P",
"PHOSPHORUS", 15, 31, 30.973761);
1138 AddElement(
"CL",
"CHLORINE", 17, 35, 35.4527);
1140 AddElement(
"K",
"POTASSIUM", 19, 39, 39.0983);
1142 AddElement(
"SC",
"SCANDIUM", 21, 45, 44.955910);
1143 AddElement(
"TI",
"TITANIUM", 22, 48, 47.867);
1144 AddElement(
"V",
"VANADIUM", 23, 51, 50.9415);
1145 AddElement(
"CR",
"CHROMIUM", 24, 52, 51.9961);
1146 AddElement(
"MN",
"MANGANESE", 25, 55, 54.938049);
1148 AddElement(
"CO",
"COBALT", 27, 59, 58.933200);
1153 AddElement(
"GE",
"GERMANIUM", 32, 73, 72.61);
1154 AddElement(
"AS",
"ARSENIC", 33, 75, 74.92160);
1158 AddElement(
"RB",
"RUBIDIUM", 37, 85, 85.4678);
1159 AddElement(
"SR",
"STRONTIUM", 38, 88, 87.62);
1160 AddElement(
"Y",
"YTTRIUM", 39, 89, 88.90585);
1161 AddElement(
"ZR",
"ZIRCONIUM", 40, 91, 91.224);
1162 AddElement(
"NB",
"NIOBIUM", 41, 93, 92.90638);
1163 AddElement(
"MO",
"MOLYBDENUM", 42, 96, 95.94);
1164 AddElement(
"TC",
"TECHNETIUM", 43, 98, 98.0);
1165 AddElement(
"RU",
"RUTHENIUM", 44, 101, 101.07);
1166 AddElement(
"RH",
"RHODIUM", 45, 103, 102.90550);
1167 AddElement(
"PD",
"PALLADIUM", 46, 106, 106.42);
1168 AddElement(
"AG",
"SILVER", 47, 108, 107.8682);
1169 AddElement(
"CD",
"CADMIUM", 48, 112, 112.411);
1170 AddElement(
"IN",
"INDIUM", 49, 115, 114.818);
1172 AddElement(
"SB",
"ANTIMONY", 51, 122, 121.760);
1173 AddElement(
"TE",
"TELLURIUM", 52, 128, 127.60);
1174 AddElement(
"I",
"IODINE", 53, 127, 126.90447);
1176 AddElement(
"CS",
"CESIUM", 55, 133, 132.90545);
1177 AddElement(
"BA",
"BARIUM", 56, 137, 137.327);
1178 AddElement(
"LA",
"LANTHANUM", 57, 139, 138.9055);
1179 AddElement(
"CE",
"CERIUM", 58, 140, 140.116);
1180 AddElement(
"PR",
"PRASEODYMIUM", 59, 141, 140.90765);
1181 AddElement(
"ND",
"NEODYMIUM", 60, 144, 144.24);
1182 AddElement(
"PM",
"PROMETHIUM", 61, 145, 145.0);
1183 AddElement(
"SM",
"SAMARIUM", 62, 150, 150.36);
1184 AddElement(
"EU",
"EUROPIUM", 63, 152, 151.964);
1185 AddElement(
"GD",
"GADOLINIUM", 64, 157, 157.25);
1186 AddElement(
"TB",
"TERBIUM", 65, 159, 158.92534);
1187 AddElement(
"DY",
"DYSPROSIUM", 66, 162, 162.50);
1188 AddElement(
"HO",
"HOLMIUM", 67, 165, 164.93032);
1190 AddElement(
"TM",
"THULIUM", 69, 169, 168.93421);
1191 AddElement(
"YB",
"YTTERBIUM", 70, 173, 173.04);
1192 AddElement(
"LU",
"LUTETIUM", 71, 175, 174.967);
1193 AddElement(
"HF",
"HAFNIUM", 72, 178, 178.49);
1194 AddElement(
"TA",
"TANTALUM", 73, 181, 180.9479);
1195 AddElement(
"W",
"TUNGSTEN", 74, 184, 183.84);
1196 AddElement(
"RE",
"RHENIUM", 75, 186, 186.207);
1198 AddElement(
"IR",
"IRIDIUM", 77, 192, 192.217);
1199 AddElement(
"PT",
"PLATINUM", 78, 195, 195.078);
1200 AddElement(
"AU",
"GOLD", 79, 197, 196.96655);
1201 AddElement(
"HG",
"MERCURY", 80, 200, 200.59);
1202 AddElement(
"TL",
"THALLIUM", 81, 204, 204.3833);
1204 AddElement(
"BI",
"BISMUTH", 83, 209, 208.98038);
1205 AddElement(
"PO",
"POLONIUM", 84, 209, 209.0);
1206 AddElement(
"AT",
"ASTATINE", 85, 210, 210.0);
1208 AddElement(
"FR",
"FRANCIUM", 87, 223, 223.0);
1210 AddElement(
"AC",
"ACTINIUM", 89, 227, 227.0);
1211 AddElement(
"TH",
"THORIUM", 90, 232, 232.0381);
1212 AddElement(
"PA",
"PROTACTINIUM", 91, 231, 231.03588);
1213 AddElement(
"U",
"URANIUM", 92, 238, 238.0289);
1214 AddElement(
"NP",
"NEPTUNIUM", 93, 237, 237.0);
1215 AddElement(
"PU",
"PLUTONIUM", 94, 244, 244.0);
1216 AddElement(
"AM",
"AMERICIUM", 95, 243, 243.0);
1218 AddElement(
"BK",
"BERKELIUM", 97, 247, 247.0);
1219 AddElement(
"CF",
"CALIFORNIUM", 98, 251, 251.0);
1220 AddElement(
"ES",
"EINSTEINIUM", 99, 252, 252.0);
1221 AddElement(
"FM",
"FERMIUM", 100, 257, 257.0);
1222 AddElement(
"MD",
"MENDELEVIUM", 101, 258, 258.0);
1223 AddElement(
"NO",
"NOBELIUM", 102, 259, 259.0);
1224 AddElement(
"LR",
"LAWRENCIUM", 103, 262, 262.0);
1225 AddElement(
"RF",
"RUTHERFORDIUM", 104, 261, 261.0);
1226 AddElement(
"DB",
"DUBNIUM", 105, 262, 262.0);
1227 AddElement(
"SG",
"SEABORGIUM", 106, 263, 263.0);
1228 AddElement(
"BH",
"BOHRIUM", 107, 262, 262.0);
1229 AddElement(
"HS",
"HASSIUM", 108, 265, 265.0);
1230 AddElement(
"MT",
"MEITNERIUM", 109, 266, 266.0);
1231 AddElement(
"UUN",
"UNUNNILIUM", 110, 269, 269.0);
1232 AddElement(
"UUU",
"UNUNUNIUM", 111, 272, 272.0);
1233 AddElement(
"UUB",
"UNUNBIUM", 112, 277, 277.0);
1246 TString rnf =
"RadioNuclides.txt";
1248 FILE *fp = fopen(rnf,
"r");
1250 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1256 while (fgets(&
line[0], 140, fp)) {
1260 for (i = 0; i < ndecays; i++) {
1261 if (!fgets(&
line[0], 140, fp)) {
1262 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1303 sname =
"RadioNuclides.txt";
1305 out.open(sname.
Data(), std::ios::out);
1307 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1370 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1398 if (opt ==
"" || opt ==
"D") {
1400 printf(
"================\nDefault elements\n================\n");
1401 for (
Int_t iel = 0; iel < induser; ++iel)
1402 fList->At(iel)->Print();
1405 if (opt ==
"" || opt ==
"I") {
1407 printf(
"================\nIsotopes\n================\n");
1412 if (opt ==
"" || opt ==
"R") {
1414 printf(
"================\nRadio-nuclides\n================\n");
1419 if (opt ==
"" || opt ==
"U") {
1421 printf(
"================\nUser elements\n================\n");
1423 fList->At(iel)->Print();
1480 fCsize = chain->GetEntriesFast() + 1;
1529 TAttLine::operator=(other);
1530 TAttFill::operator=(other);
1531 TAttMarker::operator=(other);
1558 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1567 for (i = 0; i <
fNcoeff; i++) {
1575 for (j = 0; j < other.
fNcoeff; j++) {
1576 for (i = 0; i <
fNcoeff; i++) {
1609 gGeoManager->GetGeomPainter()->DrawBatemanSol(
this, option);
1631 if (elem !=
fElem) {
1632 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->GetName());
1650 for (i = 0; i <
n; i++) {
1673 for (i = 0; i < order - 1; i++) {
1674 for (j = i + 1; j < order; j++) {
1675 if (lambda[j] == lambda[i])
1676 lambda[j] += 0.001 * lambda[j];
1681 for (j = 0; j <
n; j++)
1682 plambdabr *= lambda[j] * br[j];
1683 for (i = 0; i < order; i++) {
1685 for (j = 0; j <
n + 1; j++) {
1688 pdlambda *= lambda[j] - lambda[i];
1690 if (pdlambda == 0.) {
1691 Error(
"FindSolution",
"pdlambda=0 !!!");
1696 ain = plambdabr / pdlambda;
1698 fCoeff[i].lambda = lambda[i];
1728 printf(
"%s\n", formula.
Data());
int Int_t
Signed integer 4 bytes (int).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
static void indent(ostringstream &buf, int indent_level)
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
externTGeoManager * gGeoManager
Class representing the Bateman solution for a decay branch.
Double_t Concentration(Double_t time) const
Find concentration of the element at a given time.
~TGeoBatemanSol() override
Destructor.
void FindSolution(const TObjArray *array)
Find the solution for the Bateman equations corresponding to the decay chain described by an array en...
void Draw(Option_t *option="") override
Draw the solution of Bateman equation versus time.
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.
void Print(Option_t *option="") const override
Print concentration evolution.
decay channel utility class.
void SetParent(TGeoElementRN *parent)
TGeoElementRN * Daughter() const
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive for decays.
static TGeoDecayChannel * ReadDecay(const char *record)
Create element from line record.
TGeoElementRN * Parent() const
void Print(Option_t *opt=" ") const override
Prints decay info.
const char * GetName() const override
Returns name of decay.
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.
iterator for decay chains.
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.
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.
TGeoElementRN(const TGeoElementRN &elem)=delete
void AddDecay(Int_t decay, Int_t diso, Double_t branchingRatio, Double_t qValue)
Adds a decay mode for this element.
Double_t GetSpecificActivity() const override
Get the activity in Bq of a gram of material made from this element.
void Print(Option_t *option="") const override
Print info about the element;.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save primitive for RN elements.
Double_t HalfLife() const
Int_t DecayResult(TGeoDecayChannel *dc) const
Returns ENDF code of decay result.
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.
~TGeoElementRN() override
Destructor.
static Int_t ENDF(Int_t a, Int_t z, Int_t iso)
void ResetRatio()
Clears the existing ratio.
Int_t ENDFCode() const override
TGeoElementTable & operator=(const TGeoElementTable &)
assignment operator
Bool_t HasRNElements() const
void ExportElementsRN(const char *filename="")
Export radionuclides in a file.
void AddIsotope(TGeoIsotope *isotope)
Add isotope to the table.
ElementRNMap_t fElementsRN
! map of RN elements with ENDF key
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retrieve a radionuclide by ENDF code.
~TGeoElementTable() override
destructor
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 Print(Option_t *option="") const override
Print table of elements.
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.
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(const TGeoElementTable &)
copy constructor
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.
void Print(Option_t *option="") const override
Print this isotope.
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.
TGeoElement(const TGeoElement &other)=delete
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).
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.
~TGeoElement() override
destructor
an isotope defined by the atomic number, number of nucleons and atomic weight (g/mole)
TGeoIsotope()
Dummy I/O constructor.
static TGeoIsotope * FindIsotope(const char *name)
Find existing isotope by name.
void Print(Option_t *option="") const override
Print this isotope.
static EDefaultUnits GetDefaultUnits()
static void SetDefaultUnits(EDefaultUnits new_value)
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const override
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
void Add(TObject *obj) override
TObject & operator=(const TObject &rhs) noexcept
TObject assignment operator.
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.
TObject()
TObject constructor.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
const char * Data() const
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.
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.