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};
176 static constexpr Double_t k1 = 0.0083, k2 = 0.20206, k3 = 0.0020, k4 = 0.0369;
182 fCoulomb = (k1 * az4 + k2 + 1. / (1. + az2)) * az2 - (k3 * az4 + k4) * az4;
189 static constexpr Double_t Lrad_light[] = {5.31, 4.79, 4.74, 4.71};
190 static constexpr Double_t Lprad_light[] = {6.144, 5.621, 5.805, 5.924};
204 Lrad = Lrad_light[iz];
205 Lprad = Lprad_light[iz];
207 Lrad = log184 - logZ3;
208 Lprad = log1194 - 2 * logZ3;
218 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
234 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
252 for (ncurrent = 0; ncurrent <
fNisotopes; ncurrent++)
264 if ((
fZ != 0) && (isotope->
GetZ() !=
fZ)) {
265 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s", isotope->
GetName(),
344 Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,
name);
346 Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,
n,
name);
366 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
440 if (branchingRatio < 1E-20) {
497 Error(
"CheckDecays",
"Element table not present");
506 Int_t decayResult = 0;
515 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
523 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
537 if (da == -99 || dz == -99)
558 population->
Add(
this);
559 while ((elem = next())) {
561 ratio.Normalize(factor);
564 population->
Add(elem);
574 if (z == 0 &&
a == 1) {
582 if (
a >= 1 &&
a <= 999)
599 printf(
"Z=%d; ",
fZ);
600 printf(
"Iso=%d; ",
fIso);
601 printf(
"Level=%g[MeV]; ",
fLevel);
602 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
606 printf(
"Hlife=INF\n");
610 printf(
"Htox=%g; ",
fTH_F);
611 printf(
"Itox=%g; ",
fTG_F);
615 printf(
"Decay modes:\n");
628 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
629 char name[20], jp[20];
630 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,
631 &natAbun, &th_f, &tg_f, &th_s, &tg_s, &status, &ndecays);
633 new TGeoElementRN(
a, z, iso, level, deltaM, halfLife, jp, natAbun, th_f, tg_f, th_s, tg_s, status);
642 if (!strcmp(
option,
"h")) {
644 out <<
"#========================================================================================================"
645 "============================"
647 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX "
648 "HTOX ITOX STAT NDCY"
650 out <<
"#========================================================================================================"
651 "============================"
655 out << std::setw(5) << (
Int_t)
fA;
656 out << std::setw(5) <<
fZ;
657 out << std::setw(5) <<
fIso;
658 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
659 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
660 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
662 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
663 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
664 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
665 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
666 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
667 out << std::setw(5) <<
fStatus;
671 out << std::setw(5) << ndecays;
753 if (1 << i & decay) {
787 sscanf(&
line[0],
"%s%d%d%lg%lg",
name, &decay, &diso, &branchingRatio, &qValue);
799 out << std::setw(50) << decayName.
Data();
800 out << std::setw(10) <<
fDecay;
801 out << std::setw(10) <<
fDiso;
802 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fBranchingRatio;
803 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fQvalue;
832 : fTop(top), fElem(top), fBranch(nullptr), fLevel(0), fLimitRatio(limit), fRatio(1.)
845 fLimitRatio(iter.fLimitRatio),
947 for (
Int_t i = 0; i < nd; i++)
961 printf(
"=== Chain with %g %%\n", 100 *
fRatio);
1010 fNelements(get.fNelements),
1011 fNelementsRN(get.fNelementsRN),
1012 fNisotopes(get.fNisotopes),
1014 fListRN(get.fListRN),
1084 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.", orig->
GetName(),
1112 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.", isotope->
GetName());
1131 AddElement(
"BE",
"BERYLLIUM", 4, 9, 9.01218);
1134 AddElement(
"N",
"NITROGEN", 7, 14, 14.00674);
1136 AddElement(
"F",
"FLUORINE", 9, 19, 18.9984032);
1138 AddElement(
"NA",
"SODIUM", 11, 23, 22.989770);
1139 AddElement(
"MG",
"MAGNESIUM", 12, 24, 24.3050);
1140 AddElement(
"AL",
"ALUMINIUM", 13, 27, 26.981538);
1141 AddElement(
"SI",
"SILICON", 14, 28, 28.0855);
1142 AddElement(
"P",
"PHOSPHORUS", 15, 31, 30.973761);
1144 AddElement(
"CL",
"CHLORINE", 17, 35, 35.4527);
1146 AddElement(
"K",
"POTASSIUM", 19, 39, 39.0983);
1148 AddElement(
"SC",
"SCANDIUM", 21, 45, 44.955910);
1149 AddElement(
"TI",
"TITANIUM", 22, 48, 47.867);
1150 AddElement(
"V",
"VANADIUM", 23, 51, 50.9415);
1151 AddElement(
"CR",
"CHROMIUM", 24, 52, 51.9961);
1152 AddElement(
"MN",
"MANGANESE", 25, 55, 54.938049);
1154 AddElement(
"CO",
"COBALT", 27, 59, 58.933200);
1159 AddElement(
"GE",
"GERMANIUM", 32, 73, 72.61);
1160 AddElement(
"AS",
"ARSENIC", 33, 75, 74.92160);
1164 AddElement(
"RB",
"RUBIDIUM", 37, 85, 85.4678);
1165 AddElement(
"SR",
"STRONTIUM", 38, 88, 87.62);
1166 AddElement(
"Y",
"YTTRIUM", 39, 89, 88.90585);
1167 AddElement(
"ZR",
"ZIRCONIUM", 40, 91, 91.224);
1168 AddElement(
"NB",
"NIOBIUM", 41, 93, 92.90638);
1169 AddElement(
"MO",
"MOLYBDENUM", 42, 96, 95.94);
1170 AddElement(
"TC",
"TECHNETIUM", 43, 98, 98.0);
1171 AddElement(
"RU",
"RUTHENIUM", 44, 101, 101.07);
1172 AddElement(
"RH",
"RHODIUM", 45, 103, 102.90550);
1173 AddElement(
"PD",
"PALLADIUM", 46, 106, 106.42);
1174 AddElement(
"AG",
"SILVER", 47, 108, 107.8682);
1175 AddElement(
"CD",
"CADMIUM", 48, 112, 112.411);
1176 AddElement(
"IN",
"INDIUM", 49, 115, 114.818);
1178 AddElement(
"SB",
"ANTIMONY", 51, 122, 121.760);
1179 AddElement(
"TE",
"TELLURIUM", 52, 128, 127.60);
1180 AddElement(
"I",
"IODINE", 53, 127, 126.90447);
1182 AddElement(
"CS",
"CESIUM", 55, 133, 132.90545);
1183 AddElement(
"BA",
"BARIUM", 56, 137, 137.327);
1184 AddElement(
"LA",
"LANTHANUM", 57, 139, 138.9055);
1185 AddElement(
"CE",
"CERIUM", 58, 140, 140.116);
1186 AddElement(
"PR",
"PRASEODYMIUM", 59, 141, 140.90765);
1187 AddElement(
"ND",
"NEODYMIUM", 60, 144, 144.24);
1188 AddElement(
"PM",
"PROMETHIUM", 61, 145, 145.0);
1189 AddElement(
"SM",
"SAMARIUM", 62, 150, 150.36);
1190 AddElement(
"EU",
"EUROPIUM", 63, 152, 151.964);
1191 AddElement(
"GD",
"GADOLINIUM", 64, 157, 157.25);
1192 AddElement(
"TB",
"TERBIUM", 65, 159, 158.92534);
1193 AddElement(
"DY",
"DYSPROSIUM", 66, 162, 162.50);
1194 AddElement(
"HO",
"HOLMIUM", 67, 165, 164.93032);
1196 AddElement(
"TM",
"THULIUM", 69, 169, 168.93421);
1197 AddElement(
"YB",
"YTTERBIUM", 70, 173, 173.04);
1198 AddElement(
"LU",
"LUTETIUM", 71, 175, 174.967);
1199 AddElement(
"HF",
"HAFNIUM", 72, 178, 178.49);
1200 AddElement(
"TA",
"TANTALUM", 73, 181, 180.9479);
1201 AddElement(
"W",
"TUNGSTEN", 74, 184, 183.84);
1202 AddElement(
"RE",
"RHENIUM", 75, 186, 186.207);
1204 AddElement(
"IR",
"IRIDIUM", 77, 192, 192.217);
1205 AddElement(
"PT",
"PLATINUM", 78, 195, 195.078);
1206 AddElement(
"AU",
"GOLD", 79, 197, 196.96655);
1207 AddElement(
"HG",
"MERCURY", 80, 200, 200.59);
1208 AddElement(
"TL",
"THALLIUM", 81, 204, 204.3833);
1210 AddElement(
"BI",
"BISMUTH", 83, 209, 208.98038);
1211 AddElement(
"PO",
"POLONIUM", 84, 209, 209.0);
1212 AddElement(
"AT",
"ASTATINE", 85, 210, 210.0);
1214 AddElement(
"FR",
"FRANCIUM", 87, 223, 223.0);
1216 AddElement(
"AC",
"ACTINIUM", 89, 227, 227.0);
1217 AddElement(
"TH",
"THORIUM", 90, 232, 232.0381);
1218 AddElement(
"PA",
"PROTACTINIUM", 91, 231, 231.03588);
1219 AddElement(
"U",
"URANIUM", 92, 238, 238.0289);
1220 AddElement(
"NP",
"NEPTUNIUM", 93, 237, 237.0);
1221 AddElement(
"PU",
"PLUTONIUM", 94, 244, 244.0);
1222 AddElement(
"AM",
"AMERICIUM", 95, 243, 243.0);
1224 AddElement(
"BK",
"BERKELIUM", 97, 247, 247.0);
1225 AddElement(
"CF",
"CALIFORNIUM", 98, 251, 251.0);
1226 AddElement(
"ES",
"EINSTEINIUM", 99, 252, 252.0);
1227 AddElement(
"FM",
"FERMIUM", 100, 257, 257.0);
1228 AddElement(
"MD",
"MENDELEVIUM", 101, 258, 258.0);
1229 AddElement(
"NO",
"NOBELIUM", 102, 259, 259.0);
1230 AddElement(
"LR",
"LAWRENCIUM", 103, 262, 262.0);
1231 AddElement(
"RF",
"RUTHERFORDIUM", 104, 261, 261.0);
1232 AddElement(
"DB",
"DUBNIUM", 105, 262, 262.0);
1233 AddElement(
"SG",
"SEABORGIUM", 106, 263, 263.0);
1234 AddElement(
"BH",
"BOHRIUM", 107, 262, 262.0);
1235 AddElement(
"HS",
"HASSIUM", 108, 265, 265.0);
1236 AddElement(
"MT",
"MEITNERIUM", 109, 266, 266.0);
1237 AddElement(
"UUN",
"UNUNNILIUM", 110, 269, 269.0);
1238 AddElement(
"UUU",
"UNUNUNIUM", 111, 272, 272.0);
1239 AddElement(
"UUB",
"UNUNBIUM", 112, 277, 277.0);
1252 TString rnf =
"RadioNuclides.txt";
1254 FILE *fp = fopen(rnf,
"r");
1256 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1262 while (fgets(&
line[0], 140, fp)) {
1266 for (i = 0; i < ndecays; i++) {
1267 if (!fgets(&
line[0], 140, fp)) {
1268 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1309 sname =
"RadioNuclides.txt";
1311 out.open(sname.
Data(), std::ios::out);
1313 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1376 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1404 if (opt ==
"" || opt ==
"D") {
1406 printf(
"================\nDefault elements\n================\n");
1407 for (
Int_t iel = 0; iel < induser; ++iel)
1411 if (opt ==
"" || opt ==
"I") {
1413 printf(
"================\nIsotopes\n================\n");
1418 if (opt ==
"" || opt ==
"R") {
1420 printf(
"================\nRadio-nuclides\n================\n");
1425 if (opt ==
"" || opt ==
"U") {
1427 printf(
"================\nUser elements\n================\n");
1502 fElemTop(other.fElemTop),
1503 fCsize(other.fCsize),
1504 fNcoeff(other.fNcoeff),
1505 fFactor(other.fFactor),
1536 TAttLine::operator=(other);
1537 TAttFill::operator=(other);
1538 TAttMarker::operator=(other);
1565 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1574 for (i = 0; i <
fNcoeff; i++) {
1582 for (j = 0; j < other.
fNcoeff; j++) {
1583 for (i = 0; i <
fNcoeff; i++) {
1638 if (elem !=
fElem) {
1639 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1657 for (i = 0; i <
n; i++) {
1680 for (i = 0; i < order - 1; i++) {
1681 for (j = i + 1; j < order; j++) {
1682 if (lambda[j] == lambda[i])
1683 lambda[j] += 0.001 * lambda[j];
1688 for (j = 0; j <
n; j++)
1689 plambdabr *= lambda[j] * br[j];
1690 for (i = 0; i < order; i++) {
1692 for (j = 0; j <
n + 1; j++) {
1695 pdlambda *= lambda[j] - lambda[i];
1697 if (pdlambda == 0.) {
1698 Error(
"FindSolution",
"pdlambda=0 !!!");
1703 ain = plambdabr / pdlambda;
1735 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() 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.
A decay channel for a radionuclide.
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 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.
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.
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.
~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
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()
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.
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
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()
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.