37 #include "RConfigure.h" 56 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
57 "Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
"Ca",
"Sc",
"Ti",
"V ",
"Cr",
58 "Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
59 "Rb",
"Sr",
"Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
60 "In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
"Ce",
"Pr",
"Nd",
61 "Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
62 "Ta",
"W ",
"Re",
"Os",
"Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
63 "At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
"Cm",
64 "Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
68 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
69 "ElecCapt",
"IsoTrans",
"I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
70 "2Alpha",
"Carbon12",
"Carbon14",
"Stable" };
75 -2, -2, -8, -12, -14 };
163 static const Double_t k1 = 0.0083 , k2 = 0.20206 ,k3 = 0.0020 , k4 = 0.0369 ;
168 fCoulomb = (k1*az4 + k2 + 1./(1.+az2))*az2 - (k3*az4 + k4)*az4;
175 static const Double_t Lrad_light[] = {5.31 , 4.79 , 4.74 , 4.71} ;
176 static const Double_t Lprad_light[] = {6.144 , 5.621 , 5.805 , 5.924} ;
184 if (iz <= 3) { Lrad = Lrad_light[iz] ; Lprad = Lprad_light[iz] ; }
185 else { Lrad = log184 - logZ3 ; Lprad = log1194 - 2*logZ3;}
194 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
210 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
222 Fatal(
"AddIsotope",
"Cannot add isotopes to normal elements. Use constructor with number of isotopes.");
227 for (ncurrent=0; ncurrent<
fNisotopes; ncurrent++)
229 if (ncurrent==fNisotopes) {
230 Error(
"AddIsotope",
"All %d isotopes of element %s already defined", fNisotopes,
GetName());
234 if ((
fZ!=0) && (isotope->
GetZ()!=
fZ)) {
235 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s",
243 if (ncurrent==fNisotopes-1) {
321 if (z<1)
Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,name);
322 if (n<z)
Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,n,name);
332 if (!elTable)
return 0;
341 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
413 if (branchingRatio<1
E-20) {
466 Error(
"CheckDecays",
"Element table not present");
475 Int_t decayResult = 0;
484 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
492 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
506 if (da == -99 || dz == -99)
return 0;
526 while ((elem=next())) {
545 else fName =
"?? -?? -";
561 printf(
"Iso=%d; ",
fIso);
562 printf(
"Level=%g[MeV]; ",
fLevel);
563 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
565 else printf(
"Hlife=INF\n");
569 printf(
"Htox=%g; ",
fTH_F);
570 printf(
"Itox=%g; ",
fTG_F);
573 printf(
"Decay modes:\n");
585 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
586 char name[20],jp[20];
587 sscanf(&line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d", name,&a,&z,&iso,&level,&deltaM,
588 &halfLife,jp,&natAbun,&th_f,&tg_f,&th_s,&tg_s,&status,&ndecays);
590 jp,natAbun,th_f,tg_f,th_s,tg_s,status);
599 if (!strcmp(option,
"h")) {
601 out <<
"#====================================================================================================================================" << std::endl;
602 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX HTOX ITOX STAT NDCY" << std::endl;
603 out <<
"#====================================================================================================================================" << std::endl;
606 out << std::setw(5) << (
Int_t)
fA;
607 out << std::setw(5) <<
fZ;
608 out << std::setw(5) <<
fIso;
609 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
610 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
611 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
613 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
614 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
615 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
616 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
617 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
618 out << std::setw(5) <<
fStatus;
621 out << std::setw(5) << ndecays;
680 if (name.
Length()) name +=
"+";
699 if (name.
Length()) name +=
"+";
710 return fParent->Decays()->IndexOf(
this);
719 DecayName(fDecay, name);
720 printf(
"%-20s Diso: %3d BR: %9.3f%% Qval: %g\n", name.
Data(),fDiso,fBranchingRatio,fQvalue);
731 sscanf(&line[0],
"%s%d%d%lg%lg", name,&decay,&diso,&branchingRatio,&qValue);
742 DecayName(fDecay, decayName);
743 out << std::setw(50) << decayName.
Data();
744 out << std::setw(10) << fDecay;
745 out << std::setw(10) << fDiso;
746 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) << fBranchingRatio;
747 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) << fQvalue;
776 : fTop(top), fElem(top), fBranch(0),
fLevel(0), fLimitRatio(limit),
fRatio(1.)
811 if (&iter ==
this)
return *
this;
878 if (!
fElem)
return NULL;
893 printf(
"=== Chain with %g %%\n", 100*
fRatio);
901 printf(
"%s%s\n", indent.Data(), elem->
GetName());
932 BuildDefaultElements();
941 fNelements(get.fNelements),
942 fNelementsRN(get.fNelementsRN),
943 fNisotopes(get.fNisotopes),
945 fListRN(get.fListRN),
1012 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.",
1038 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.",isotope->
GetName());
1055 AddElement(
"BE" ,
"BERYLLIUM" ,4, 9, 9.01218);
1058 AddElement(
"N" ,
"NITROGEN" ,7, 14, 14.00674);
1060 AddElement(
"F" ,
"FLUORINE" ,9, 19, 18.9984032);
1062 AddElement(
"NA" ,
"SODIUM" ,11, 23, 22.989770);
1063 AddElement(
"MG" ,
"MAGNESIUM" ,12, 24, 24.3050);
1064 AddElement(
"AL" ,
"ALUMINIUM" ,13, 27, 26.981538);
1065 AddElement(
"SI" ,
"SILICON" ,14, 28, 28.0855);
1066 AddElement(
"P" ,
"PHOSPHORUS" ,15, 31, 30.973761);
1068 AddElement(
"CL" ,
"CHLORINE" ,17, 35, 35.4527);
1070 AddElement(
"K" ,
"POTASSIUM" ,19, 39, 39.0983);
1072 AddElement(
"SC" ,
"SCANDIUM" ,21, 45, 44.955910);
1073 AddElement(
"TI" ,
"TITANIUM" ,22, 48, 47.867);
1074 AddElement(
"V" ,
"VANADIUM" ,23, 51, 50.9415);
1075 AddElement(
"CR" ,
"CHROMIUM" ,24, 52, 51.9961);
1076 AddElement(
"MN" ,
"MANGANESE" ,25, 55, 54.938049);
1078 AddElement(
"CO" ,
"COBALT" ,27, 59, 58.933200);
1083 AddElement(
"GE" ,
"GERMANIUM" ,32, 73, 72.61);
1084 AddElement(
"AS" ,
"ARSENIC" ,33, 75, 74.92160);
1088 AddElement(
"RB" ,
"RUBIDIUM" ,37, 85, 85.4678);
1089 AddElement(
"SR" ,
"STRONTIUM" ,38, 88, 87.62);
1090 AddElement(
"Y" ,
"YTTRIUM" ,39, 89, 88.90585);
1091 AddElement(
"ZR" ,
"ZIRCONIUM" ,40, 91, 91.224);
1092 AddElement(
"NB" ,
"NIOBIUM" ,41, 93, 92.90638);
1093 AddElement(
"MO" ,
"MOLYBDENUM" ,42, 96, 95.94);
1094 AddElement(
"TC" ,
"TECHNETIUM" ,43, 98, 98.0);
1095 AddElement(
"RU" ,
"RUTHENIUM" ,44, 101, 101.07);
1096 AddElement(
"RH" ,
"RHODIUM" ,45, 103, 102.90550);
1097 AddElement(
"PD" ,
"PALLADIUM" ,46, 106, 106.42);
1098 AddElement(
"AG" ,
"SILVER" ,47, 108, 107.8682);
1099 AddElement(
"CD" ,
"CADMIUM" ,48, 112, 112.411);
1100 AddElement(
"IN" ,
"INDIUM" ,49, 115, 114.818);
1102 AddElement(
"SB" ,
"ANTIMONY" ,51, 122, 121.760);
1103 AddElement(
"TE" ,
"TELLURIUM" ,52, 128, 127.60);
1104 AddElement(
"I" ,
"IODINE" ,53, 127, 126.90447);
1106 AddElement(
"CS" ,
"CESIUM" ,55, 133, 132.90545);
1107 AddElement(
"BA" ,
"BARIUM" ,56, 137, 137.327);
1108 AddElement(
"LA" ,
"LANTHANUM" ,57, 139, 138.9055);
1109 AddElement(
"CE" ,
"CERIUM" ,58, 140, 140.116);
1110 AddElement(
"PR" ,
"PRASEODYMIUM" ,59, 141, 140.90765);
1111 AddElement(
"ND" ,
"NEODYMIUM" ,60, 144, 144.24);
1112 AddElement(
"PM" ,
"PROMETHIUM" ,61, 145, 145.0);
1113 AddElement(
"SM" ,
"SAMARIUM" ,62, 150, 150.36);
1114 AddElement(
"EU" ,
"EUROPIUM" ,63, 152, 151.964);
1115 AddElement(
"GD" ,
"GADOLINIUM" ,64, 157, 157.25);
1116 AddElement(
"TB" ,
"TERBIUM" ,65, 159, 158.92534);
1117 AddElement(
"DY" ,
"DYSPROSIUM" ,66, 162, 162.50);
1118 AddElement(
"HO" ,
"HOLMIUM" ,67, 165, 164.93032);
1120 AddElement(
"TM" ,
"THULIUM" ,69, 169, 168.93421);
1121 AddElement(
"YB" ,
"YTTERBIUM" ,70, 173, 173.04);
1122 AddElement(
"LU" ,
"LUTETIUM" ,71, 175, 174.967);
1123 AddElement(
"HF" ,
"HAFNIUM" ,72, 178, 178.49);
1124 AddElement(
"TA" ,
"TANTALUM" ,73, 181, 180.9479);
1125 AddElement(
"W" ,
"TUNGSTEN" ,74, 184, 183.84);
1126 AddElement(
"RE" ,
"RHENIUM" ,75, 186, 186.207);
1128 AddElement(
"IR" ,
"IRIDIUM" ,77, 192, 192.217);
1129 AddElement(
"PT" ,
"PLATINUM" ,78, 195, 195.078);
1130 AddElement(
"AU" ,
"GOLD" ,79, 197, 196.96655);
1131 AddElement(
"HG" ,
"MERCURY" ,80, 200, 200.59);
1132 AddElement(
"TL" ,
"THALLIUM" ,81, 204, 204.3833);
1134 AddElement(
"BI" ,
"BISMUTH" ,83, 209, 208.98038);
1135 AddElement(
"PO" ,
"POLONIUM" ,84, 209, 209.0);
1136 AddElement(
"AT" ,
"ASTATINE" ,85, 210, 210.0);
1138 AddElement(
"FR" ,
"FRANCIUM" ,87, 223, 223.0);
1140 AddElement(
"AC" ,
"ACTINIUM" ,89, 227, 227.0);
1141 AddElement(
"TH" ,
"THORIUM" ,90, 232, 232.0381);
1142 AddElement(
"PA" ,
"PROTACTINIUM" ,91, 231, 231.03588);
1143 AddElement(
"U" ,
"URANIUM" ,92, 238, 238.0289);
1144 AddElement(
"NP" ,
"NEPTUNIUM" ,93, 237, 237.0);
1145 AddElement(
"PU" ,
"PLUTONIUM" ,94, 244, 244.0);
1146 AddElement(
"AM" ,
"AMERICIUM" ,95, 243, 243.0);
1148 AddElement(
"BK" ,
"BERKELIUM" ,97, 247, 247.0);
1149 AddElement(
"CF" ,
"CALIFORNIUM",98, 251, 251.0);
1150 AddElement(
"ES" ,
"EINSTEINIUM",99, 252, 252.0);
1151 AddElement(
"FM" ,
"FERMIUM" ,100, 257, 257.0);
1152 AddElement(
"MD" ,
"MENDELEVIUM",101, 258, 258.0);
1153 AddElement(
"NO" ,
"NOBELIUM" ,102, 259, 259.0);
1154 AddElement(
"LR" ,
"LAWRENCIUM" ,103, 262, 262.0);
1155 AddElement(
"RF" ,
"RUTHERFORDIUM",104, 261, 261.0);
1156 AddElement(
"DB" ,
"DUBNIUM" ,105, 262, 262.0);
1157 AddElement(
"SG" ,
"SEABORGIUM" ,106, 263, 263.0);
1158 AddElement(
"BH" ,
"BOHRIUM" ,107, 262, 262.0);
1159 AddElement(
"HS" ,
"HASSIUM" ,108, 265, 265.0);
1160 AddElement(
"MT" ,
"MEITNERIUM" ,109, 266, 266.0);
1161 AddElement(
"UUN" ,
"UNUNNILIUM" ,110, 269, 269.0);
1162 AddElement(
"UUU" ,
"UNUNUNIUM" ,111, 272, 272.0);
1163 AddElement(
"UUB" ,
"UNUNBIUM" ,112, 277, 277.0);
1175 TString rnf =
"RadioNuclides.txt";
1177 FILE *fp = fopen(rnf,
"r");
1179 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1185 while (fgets(&line[0],140,fp)) {
1186 if (line[0]==
'#')
continue;
1188 for (i=0; i<ndecays; i++) {
1189 if (!fgets(&line[0],140,fp)) {
1190 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1227 if (!sname.
Length()) sname =
"RadioNuclides.txt";
1229 out.open(sname.
Data(), std::ios::out);
1231 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1254 if (elem)
return elem;
1259 if (elem)
return elem;
1263 if (s == elem->
GetTitle())
return elem;
1287 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1314 if (opt==
"" || opt==
"D") {
1315 if (induser) printf(
"================\nDefault elements\n================\n");
1319 if (opt==
"" || opt==
"I") {
1321 printf(
"================\nIsotopes\n================\n");
1326 if (opt==
"" || opt==
"R") {
1328 printf(
"================\nRadio-nuclides\n================\n");
1333 if (opt==
"" || opt==
"U") {
1334 if (
fNelements>induser) printf(
"================\nUser elements\n================\n");
1359 if (t12 == 0.) t12 = 1.e-30;
1425 if (
this == &other)
return *
this;
1455 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1472 for (j=0; j<other.
fNcoeff; j++) {
1526 if (elem !=
fElem) {
1527 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1545 for (i=0; i<
n; i++) {
1550 if (halflife==0.) halflife = 1.e-30;
1551 if (elem->
Stable()) lambda[i] = 0.;
1556 if (halflife==0.) halflife = 1.e-30;
1557 if (elem->
Stable()) lambda[n] = 0.;
1562 for (i=0; i<order-1; i++) {
1563 for (j=i+1; j<order; j++) {
1564 if (lambda[j] == lambda[i]) lambda[j] += 0.001*lambda[j];
1569 for (j=0; j<
n; j++) plambdabr *= lambda[j]*br[j];
1570 for (i=0; i<order; i++) {
1572 for (j=0; j<n+1; j++) {
1573 if (j == i)
continue;
1574 pdlambda *= lambda[j] - lambda[i];
1576 if (pdlambda == 0.) {
1577 Error(
"FindSolution",
"pdlambda=0 !!!");
1582 ain = plambdabr/pdlambda;
1611 printf(
"%s\n", formula.
Data());
static void DecayName(UInt_t decay, TString &name)
Returns decay name.
TObjArray * GetBranch() const
virtual const char * GetName() const
Returns name of object.
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...
static TGeoElementRN * ReadElementRN(const char *record, Int_t &ndecays)
Create element from line record.
void Normalize(Double_t factor)
Normalize all coefficients with a given factor.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for RN elements.
static TGeoDecayChannel * ReadDecay(const char *record)
Create element from line record.
void AddDecay(Int_t decay, Int_t diso, Double_t branchingRatio, Double_t qValue)
Adds a decay mode for this element.
virtual void Draw(Option_t *option="")
Draw the solution of Bateman equation versus time.
~TGeoBatemanSol()
Destructor.
TGeoElementRN * Daughter() const
virtual void Print(Option_t *opt=" ") const
Prints decay info.
virtual void Print(Option_t *option="") const
Print table of elements.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
TGeoElement()
Default constructor.
TString & ReplaceAll(const TString &s1, const TString &s2)
TGeoElementRN * operator()()
() operator.
static const Int_t gDecayDeltaA[gMaxDecay]
TGeoElementTable * GetElementTable()
Returns material table. Creates it if not existing.
TGeoElementRN * GetElement() const
static const char gElName[gMaxElem][3]
void ToUpper()
Change string to upper case.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
void AddRatio(TGeoBatemanSol &ratio)
Adds a proportion ratio to the existing one.
TGeoElementTable & operator=(const TGeoElementTable &)
assignment operator
Int_t GetNdecays() const
Get number of decay channels of this element.
void ComputeDerivedQuantities()
Calculate properties for an atomic number.
virtual ~TGeoElementRN()
Destructor.
void AddIsotope(TGeoIsotope *isotope)
Add isotope to the table.
Bool_t CheckDecays() const
Check if all decay chain of the element is OK.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
TObject * At(Int_t idx) const
TGeoIsotope * GetIsotope(Int_t i) const
Return i-th isotope in the element.
TGeoIsotope * FindIsotope(const char *name) const
Find existing isotope by name. Not optimized for a big number of isotopes.
virtual void Print(Option_t *option="") const
Print info about the current decay branch.
virtual void DecayShift(Int_t &dA, Int_t &dZ, Int_t &dI) const
Returns variation in A, Z and Iso after decay.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
const TGeoElementRN * fTop
virtual Int_t ENDFCode() const
TGeoElementRN * Parent() const
static TGeoIsotope * FindIsotope(const char *name)
Find existing isotope by name.
Bool_t HasIsotopes() const
virtual ~TGeoElementTable()
destructor
TGeoBatemanSol & operator=(const TGeoBatemanSol &other)
Assignment.
Fill Area Attributes class.
TObjArray * Decays() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
void MakeName(Int_t a, Int_t z, Int_t iso)
Generate a default name for the element.
Double_t Neff() const
Returns effective number of nucleons.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for decays.
The TNamed class is the base class for all named ROOT classes.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Double_t Concentration(Double_t time) const
Find concentration of the element at a given time.
void AddIsotope(TGeoIsotope *isotope, Double_t relativeAbundance)
Add an isotope for this element. All isotopes have to be isotopes of the same element.
Base class for chemical elements.
static TGeoElementTable * GetElementTable()
Returns pointer to the table.
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
static const char gLevName[gMaxLevel]
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
TObject & operator=(const TObject &rhs)
TObject assignment operator.
TGeoElementRN()
Default constructor.
TGeoElementRN * Down(Int_t ibranch)
Go downwards from current level via ibranch as low in the tree as possible.
Double_t HalfLife() const
Bool_t HasRNElements() const
static const Int_t gDecayDeltaZ[gMaxDecay]
void SetDaughter(TGeoElementRN *daughter)
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
R__EXTERN TSystem * gSystem
static const Int_t gMaxDecay
virtual const char * GetName() const
Returns name of decay.
void FindSolution(const TObjArray *array)
Find the solution for the Bateman equations corresponding to the decay chain described by an array en...
virtual TObject * RemoveAt(Int_t idx)
Remove object at index idx.
const TGeoElementRN * fElem
virtual void Print(Option_t *option="") const
Print info about the element;.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Int_t GetEntriesFast() const
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void AddElementRN(TGeoElementRN *elem)
Add a radionuclide to the table and map it.
TGeoDecayChannel & operator=(const TGeoDecayChannel &dc)
Assignment.
static const Int_t gMaxLevel
Iterator for decay branches.
TGeoElement * FindElement(const char *name) const
Search an element by symbol or full name Exact matching.
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retrieve a radionuclide by ENDF code.
void AddElement(const char *name, const char *title, Int_t z, Double_t a)
Add an element to the table. Obsolete.
TGeoBatemanSol & operator+=(const TGeoBatemanSol &other)
Addition of other solution.
static const char * gDecayName[gMaxDecay+1]
void SetUsed(Bool_t flag=kTRUE)
Bool_t HasDefaultElements() const
void ComputeLradTsaiFactor()
Compute Tsai's Expression for the Radiation Length (Phys Rev. D50 3-1 (1994) page 1254) ...
R__EXTERN TGeoManager * gGeoManager
ElementRNMap_t fElementsRN
Int_t DecayResult(TGeoDecayChannel *dc) const
Returns ENDF code of decay result.
TGeoElementRN * Next()
Return next element.
Bool_t CheckTable() const
Checks status of element table.
virtual void Print(Option_t *option="") const
Print this isotope.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
virtual ~TGeoElemIter()
Destructor.
static constexpr double alpha_rcl2
void SetParent(TGeoElementRN *parent)
void ComputeCoulombFactor()
Compute Coulomb correction factor (Phys Rev. D50 3-1 (1994) page 1254)
static constexpr double s
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void SetDefined(Bool_t flag=kTRUE)
TGeoIsotope()
Dummy I/O constructor.
Binding & operator=(OUT(*fun)(void))
A decay channel for a radionuclide.
Mother of all ROOT objects.
virtual Double_t GetSpecificActivity() const
Get the activity in Bq of a gram of material made from this element.
you should not use this method at all Int_t Int_t z
static constexpr double fine_structure_const
virtual void Print(Option_t *option="") const
Print concentration evolution.
TGeoElementRN * Up()
Go upwards from the current location until the next branching, then down.
void ImportElementsRN()
Creates the list of radionuclides.
virtual void Print(Option_t *option="") const
Print this isotope.
Int_t GetIndex() const
Get index of this channel in the list of decays of the parent nuclide.
Class representing a radionuclide.
TGeoElementRN * fDaughter
void BuildDefaultElements()
Creates the default element table.
Int_t GetEntries() const
Return the number of objects in array (i.e.
TGeoElementTable()
default constructor
static Int_t ENDF(Int_t a, Int_t z, Int_t iso)
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
Double_t GetRelativeAbundance(Int_t i) const
Return relative abundance of i-th isotope in this element.
static const Int_t gMaxElem
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
Double_t BranchingRatio() const
void ResetRatio()
Clears the existing ratio.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual const char * GetTitle() const
Returns title of object.
const char * Data() const
void ExportElementsRN(const char *filename="")
Export radionuclides in a file.
TGeoElemIter & operator=(const TGeoElemIter &iter)
Assignment.