22 #include "RConfigure.h"
39 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
40 "Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
"Ca",
"Sc",
"Ti",
"V ",
"Cr",
41 "Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
42 "Rb",
"Sr",
"Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
43 "In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
"Ce",
"Pr",
"Nd",
44 "Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
45 "Ta",
"W ",
"Re",
"Os",
"Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
46 "At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
"Cm",
47 "Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
51 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
52 "ElecCapt",
"IsoTrans",
"I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
53 "2Alpha",
"Carbon12",
"Carbon14",
"Stable" };
58 -2, -2, -8, -12, -14 };
152 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
164 Fatal(
"AddIsotope",
"Cannot add isotopes to normal elements. Use constructor with number of isotopes.");
169 for (ncurrent=0; ncurrent<
fNisotopes; ncurrent++)
171 if (ncurrent==fNisotopes) {
172 Error(
"AddIsotope",
"All %d isotopes of element %s already defined", fNisotopes,
GetName());
176 if ((
fZ!=0) && (isotope->
GetZ()!=
fZ)) {
177 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s",
185 if (ncurrent==fNisotopes-1) {
262 if (z<1)
Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,name);
263 if (n<z)
Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,n,name);
273 if (!elTable)
return 0;
354 if (branchingRatio<1
E-20) {
407 Error(
"CheckDecays",
"Element table not present");
416 Int_t decayResult = 0;
425 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
433 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
447 if (da == -99 || dz == -99)
return 0;
467 while ((elem=
next())) {
486 else fName =
"?? -?? -";
506 else printf(
"Hlife=INF\n");
526 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
527 char name[20],jp[20];
528 sscanf(&line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d", name,&a,&z,&iso,&level,&deltaM,
529 &halfLife,jp,&natAbun,&th_f,&tg_f,&th_s,&tg_s,&status,&ndecays);
531 jp,natAbun,th_f,tg_f,th_s,tg_s,status);
540 if (!strcmp(option,
"h")) {
542 out <<
"#====================================================================================================================================" << std::endl;
543 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX HTOX ITOX STAT NDCY" << std::endl;
544 out <<
"#====================================================================================================================================" << std::endl;
547 out << std::setw(5) << (
Int_t)
fA;
548 out << std::setw(5) <<
fZ;
549 out << std::setw(5) <<
fIso;
550 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
551 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
552 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
554 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
555 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
556 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
557 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
558 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
559 out << std::setw(5) <<
fStatus;
562 out << std::setw(5) << ndecays;
603 fBranchingRatio = dc.fBranchingRatio;
604 fQvalue = dc.fQvalue;
605 fParent = dc.fParent;
606 fDaughter = dc.fDaughter;
621 if (name.
Length()) name +=
"+";
640 if (name.
Length()) name +=
"+";
672 sscanf(&line[0],
"%s%d%d%lg%lg", name,&decay,&diso,&branchingRatio,&qValue);
684 out << std::setw(50) << decayName.
Data();
685 out << std::setw(10) <<
fDecay;
686 out << std::setw(10) <<
fDiso;
687 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fBranchingRatio;
688 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fQvalue;
717 : fTop(top), fElem(top), fBranch(0), fLevel(0), fLimitRatio(limit), fRatio(1.)
730 fLimitRatio(iter.fLimitRatio),
752 if (&iter ==
this)
return *
this;
882 fNelements(get.fNelements),
883 fNelementsRN(get.fNelementsRN),
884 fNisotopes(get.fNisotopes),
886 fListRN(get.fListRN),
953 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.",
979 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.",isotope->
GetName());
1001 AddElement(
"F" ,
"FLUORINE" ,9, 19, 18.9984032);
1003 AddElement(
"NA" ,
"SODIUM" ,11, 23, 22.989770);
1004 AddElement(
"MG" ,
"MAGNESIUM" ,12, 24, 24.3050);
1005 AddElement(
"AL" ,
"ALUMINIUM" ,13, 27, 26.981538);
1006 AddElement(
"SI" ,
"SILICON" ,14, 28, 28.0855);
1007 AddElement(
"P" ,
"PHOSPHORUS" ,15, 31, 30.973761);
1009 AddElement(
"CL" ,
"CHLORINE" ,17, 35, 35.4527);
1011 AddElement(
"K" ,
"POTASSIUM" ,19, 39, 39.0983);
1013 AddElement(
"SC" ,
"SCANDIUM" ,21, 45, 44.955910);
1014 AddElement(
"TI" ,
"TITANIUM" ,22, 48, 47.867);
1015 AddElement(
"V" ,
"VANADIUM" ,23, 51, 50.9415);
1016 AddElement(
"CR" ,
"CHROMIUM" ,24, 52, 51.9961);
1017 AddElement(
"MN" ,
"MANGANESE" ,25, 55, 54.938049);
1019 AddElement(
"CO" ,
"COBALT" ,27, 59, 58.933200);
1024 AddElement(
"GE" ,
"GERMANIUM" ,32, 73, 72.61);
1025 AddElement(
"AS" ,
"ARSENIC" ,33, 75, 74.92160);
1029 AddElement(
"RB" ,
"RUBIDIUM" ,37, 85, 85.4678);
1030 AddElement(
"SR" ,
"STRONTIUM" ,38, 88, 87.62);
1031 AddElement(
"Y" ,
"YTTRIUM" ,39, 89, 88.90585);
1032 AddElement(
"ZR" ,
"ZIRCONIUM" ,40, 91, 91.224);
1033 AddElement(
"NB" ,
"NIOBIUM" ,41, 93, 92.90638);
1034 AddElement(
"MO" ,
"MOLYBDENUM" ,42, 96, 95.94);
1035 AddElement(
"TC" ,
"TECHNETIUM" ,43, 98, 98.0);
1036 AddElement(
"RU" ,
"RUTHENIUM" ,44, 101, 101.07);
1037 AddElement(
"RH" ,
"RHODIUM" ,45, 103, 102.90550);
1038 AddElement(
"PD" ,
"PALLADIUM" ,46, 106, 106.42);
1039 AddElement(
"AG" ,
"SILVER" ,47, 108, 107.8682);
1040 AddElement(
"CD" ,
"CADMIUM" ,48, 112, 112.411);
1041 AddElement(
"IN" ,
"INDIUM" ,49, 115, 114.818);
1043 AddElement(
"SB" ,
"ANTIMONY" ,51, 122, 121.760);
1044 AddElement(
"TE" ,
"TELLURIUM" ,52, 128, 127.60);
1045 AddElement(
"I" ,
"IODINE" ,53, 127, 126.90447);
1047 AddElement(
"CS" ,
"CESIUM" ,55, 133, 132.90545);
1048 AddElement(
"BA" ,
"BARIUM" ,56, 137, 137.327);
1049 AddElement(
"LA" ,
"LANTHANUM" ,57, 139, 138.9055);
1050 AddElement(
"CE" ,
"CERIUM" ,58, 140, 140.116);
1051 AddElement(
"PR" ,
"PRASEODYMIUM" ,59, 141, 140.90765);
1052 AddElement(
"ND" ,
"NEODYMIUM" ,60, 144, 144.24);
1053 AddElement(
"PM" ,
"PROMETHIUM" ,61, 145, 145.0);
1054 AddElement(
"SM" ,
"SAMARIUM" ,62, 150, 150.36);
1055 AddElement(
"EU" ,
"EUROPIUM" ,63, 152, 151.964);
1056 AddElement(
"GD" ,
"GADOLINIUM" ,64, 157, 157.25);
1057 AddElement(
"TB" ,
"TERBIUM" ,65, 159, 158.92534);
1058 AddElement(
"DY" ,
"DYSPROSIUM" ,66, 162, 162.50);
1059 AddElement(
"HO" ,
"HOLMIUM" ,67, 165, 164.93032);
1061 AddElement(
"TM" ,
"THULIUM" ,69, 169, 168.93421);
1062 AddElement(
"YB" ,
"YTTERBIUM" ,70, 173, 173.04);
1063 AddElement(
"LU" ,
"LUTETIUM" ,71, 175, 174.967);
1064 AddElement(
"HF" ,
"HAFNIUM" ,72, 178, 178.49);
1065 AddElement(
"TA" ,
"TANTALUM" ,73, 181, 180.9479);
1066 AddElement(
"W" ,
"TUNGSTEN" ,74, 184, 183.84);
1067 AddElement(
"RE" ,
"RHENIUM" ,75, 186, 186.207);
1069 AddElement(
"IR" ,
"IRIDIUM" ,77, 192, 192.217);
1070 AddElement(
"PT" ,
"PLATINUM" ,78, 195, 195.078);
1071 AddElement(
"AU" ,
"GOLD" ,79, 197, 196.96655);
1072 AddElement(
"HG" ,
"MERCURY" ,80, 200, 200.59);
1073 AddElement(
"TL" ,
"THALLIUM" ,81, 204, 204.3833);
1075 AddElement(
"BI" ,
"BISMUTH" ,83, 209, 208.98038);
1076 AddElement(
"PO" ,
"POLONIUM" ,84, 209, 209.0);
1077 AddElement(
"AT" ,
"ASTATINE" ,85, 210, 210.0);
1079 AddElement(
"FR" ,
"FRANCIUM" ,87, 223, 223.0);
1081 AddElement(
"AC" ,
"ACTINIUM" ,89, 227, 227.0);
1082 AddElement(
"TH" ,
"THORIUM" ,90, 232, 232.0381);
1083 AddElement(
"PA" ,
"PROTACTINIUM" ,91, 231, 231.03588);
1084 AddElement(
"U" ,
"URANIUM" ,92, 238, 238.0289);
1085 AddElement(
"NP" ,
"NEPTUNIUM" ,93, 237, 237.0);
1086 AddElement(
"PU" ,
"PLUTONIUM" ,94, 244, 244.0);
1087 AddElement(
"AM" ,
"AMERICIUM" ,95, 243, 243.0);
1089 AddElement(
"BK" ,
"BERKELIUM" ,97, 247, 247.0);
1090 AddElement(
"CF" ,
"CALIFORNIUM",98, 251, 251.0);
1091 AddElement(
"ES" ,
"EINSTEINIUM",99, 252, 252.0);
1092 AddElement(
"FM" ,
"FERMIUM" ,100, 257, 257.0);
1093 AddElement(
"MD" ,
"MENDELEVIUM",101, 258, 258.0);
1094 AddElement(
"NO" ,
"NOBELIUM" ,102, 259, 259.0);
1095 AddElement(
"LR" ,
"LAWRENCIUM" ,103, 262, 262.0);
1096 AddElement(
"RF" ,
"RUTHERFORDIUM",104, 261, 261.0);
1097 AddElement(
"DB" ,
"DUBNIUM" ,105, 262, 262.0);
1098 AddElement(
"SG" ,
"SEABORGIUM" ,106, 263, 263.0);
1099 AddElement(
"BH" ,
"BOHRIUM" ,107, 262, 262.0);
1100 AddElement(
"HS" ,
"HASSIUM" ,108, 265, 265.0);
1101 AddElement(
"MT" ,
"MEITNERIUM" ,109, 266, 266.0);
1102 AddElement(
"UUN" ,
"UNUNNILIUM" ,110, 269, 269.0);
1103 AddElement(
"UUU" ,
"UNUNUNIUM" ,111, 272, 272.0);
1104 AddElement(
"UUB" ,
"UNUNBIUM" ,112, 277, 277.0);
1118 rnf.
Form(
"%s/RadioNuclides.txt", ROOTETCDIR);
1122 FILE *fp = fopen(rnf,
"r");
1124 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1130 while (fgets(&line[0],140,fp)) {
1131 if (line[0]==
'#')
continue;
1133 for (i=0; i<ndecays; i++) {
1134 if (!fgets(&line[0],140,fp)) {
1135 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1172 if (!sname.
Length()) sname =
"RadioNuclides.txt";
1176 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1199 if (elem)
return elem;
1204 if (elem)
return elem;
1208 if (s == elem->
GetTitle())
return elem;
1232 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1259 if (opt==
"" || opt==
"D") {
1260 if (induser)
printf(
"================\nDefault elements\n================\n");
1264 if (opt==
"" || opt==
"I") {
1266 printf(
"================\nIsotopes\n================\n");
1271 if (opt==
"" || opt==
"R") {
1273 printf(
"================\nRadio-nuclides\n================\n");
1278 if (opt==
"" || opt==
"U") {
1279 if (
fNelements>induser)
printf(
"================\nUser elements\n================\n");
1300 fCoeff =
new BtCoef_t[fCsize];
1304 if (t12 == 0.) t12 = 1.e-30;
1305 if (elem->Stable()) fCoeff[0].lambda = 0.;
1340 fElemTop(other.fElemTop),
1341 fCsize(other.fCsize),
1342 fNcoeff(other.fNcoeff),
1343 fFactor(other.fFactor),
1370 if (
this == &other)
return *
this;
1400 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1417 for (j=0; j<other.
fNcoeff; j++) {
1471 if (elem !=
fElem) {
1472 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1490 for (i=0; i<
n; i++) {
1495 if (halflife==0.) halflife = 1.e-30;
1496 if (elem->
Stable()) lambda[i] = 0.;
1501 if (halflife==0.) halflife = 1.e-30;
1502 if (elem->
Stable()) lambda[n] = 0.;
1507 for (i=0; i<order-1; i++) {
1508 for (j=i+1; j<order; j++) {
1509 if (lambda[j] == lambda[i]) lambda[j] += 0.001*lambda[j];
1514 for (j=0; j<
n; j++) plambdabr *= lambda[j]*br[j];
1515 for (i=0; i<order; i++) {
1517 for (j=0; j<n+1; j++) {
1518 if (j == i)
continue;
1519 pdlambda *= lambda[j] - lambda[i];
1521 if (pdlambda == 0.) {
1522 Error(
"FindSolution",
"pdlambda=0 !!!");
1527 ain = plambdabr/pdlambda;
static void DecayName(UInt_t decay, TString &name)
Returns decay name.
virtual const char * GetTitle() const
Returns title of object.
virtual Int_t ENDFCode() const
TGeoElement * FindElement(const char *name) const
Search an element by symbol or full name Exact matching.
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.
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
virtual void Draw(Option_t *option="")
Draw the solution of Bateman equation versus time.
~TGeoBatemanSol()
Destructor.
Double_t Concentration(Double_t time) const
Find concentration of the element at a given time.
TObjArray * Decays() const
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
TString & ReplaceAll(const TString &s1, const TString &s2)
TGeoElementRN * operator()()
() operator.
static const Int_t gDecayDeltaA[gMaxDecay]
Bool_t HasIsotopes() const
TGeoElementTable * GetElementTable()
Returns material table. Creates it if not existing.
static const char gElName[gMaxElem][3]
void ToUpper()
Change string to upper case.
static const char * filename()
virtual const char * GetName() const
Returns name of decay.
void AddRatio(TGeoBatemanSol &ratio)
Adds a proportion ratio to the existing one.
TGeoElementTable & operator=(const TGeoElementTable &)
assignment operator
virtual ~TGeoElementRN()
Destructor.
Int_t GetIndex() const
Get index of this channel in the list of decays of the parent nuclide.
void AddIsotope(TGeoIsotope *isotope)
Add isotope to the table.
TGeoIsotope * FindIsotope(const char *name) const
Find existing isotope by name. Not optimized for a big number of isotopes.
Int_t GetEntriesFast() const
virtual Double_t GetSpecificActivity() const
Get the activity in Bq of a gram of material made from this element.
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retreive a radionuclide by ENDF code.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
const TGeoElementRN * fTop
Int_t GetNdecays() const
Get number of decay chanels of this element.
virtual void Print(Option_t *option="") const
Print this isotope.
const char * Data() const
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
static TGeoIsotope * FindIsotope(const char *name)
Find existing isotope by name.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual ~TGeoElementTable()
destructor
TGeoBatemanSol & operator=(const TGeoBatemanSol &other)
Assignment.
Fill Area Attributes class.
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.
Bool_t CheckTable() const
Checks status of element table.
TGeoElementRN * Parent() const
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 void Print(Option_t *option="") const
Print info about the current decay branch.
std::map< std::string, std::string >::const_iterator iter
ClassImp(TGeoElement) TGeoElement
Default constructor.
void AddIsotope(TGeoIsotope *isotope, Double_t relativeAbundance)
Add an isotope for this element. All isotopes have to be isotopes of the same element.
virtual const char * Getenv(const char *env)
Get environment variable.
static TGeoElementTable * GetElementTable()
Returns pointer to the table.
Double_t Neff() const
Returns effective number of nucleons.
static const char gLevName[gMaxLevel]
Bool_t HasDefaultElements() const
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
TObject & operator=(const TObject &rhs)
TObject assignment operator.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TGeoElementRN * Down(Int_t ibranch)
Go downwards from current level via ibranch as low in the tree as possible.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
TObjArray * GetBranch() const
static const Int_t gDecayDeltaZ[gMaxDecay]
virtual void Print(Option_t *option="") const
Print concentration evolution.
void SetDaughter(TGeoElementRN *daughter)
Int_t IndexOf(const TObject *obj) const
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
R__EXTERN TSystem * gSystem
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
static const Int_t gMaxDecay
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
Double_t HalfLife() const
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t TestBit(UInt_t f) const
void AddElementRN(TGeoElementRN *elem)
Add a radionuclide to the table and map it.
static const Int_t gMaxLevel
virtual const char * GetName() const
Returns name of object.
virtual void Print(Option_t *option="") const
Print this isotope.
void AddElement(const char *name, const char *title, Int_t z, Double_t a)
Add an element to the table. Obsolete.
static void indent(ostringstream &buf, int indent_level)
virtual void DecayShift(Int_t &dA, Int_t &dZ, Int_t &dI) const
Returns variation in A, Z and Iso after decay.
Double_t GetRelativeAbundance(Int_t i) const
Return relative abundance of i-th isotope in this element.
TGeoBatemanSol & operator+=(const TGeoBatemanSol &other)
Addition of other solution.
static const char * gDecayName[gMaxDecay+1]
virtual void Print(Option_t *opt=" ") const
Prints decay info.
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
void SetUsed(Bool_t flag=kTRUE)
R__EXTERN TGeoManager * gGeoManager
ElementRNMap_t fElementsRN
TGeoElementRN * Next()
Return next element.
virtual void Print(Option_t *option="") const
Print table of elements.
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
virtual ~TGeoElemIter()
Destructor.
void SetParent(TGeoElementRN *parent)
virtual void Print(Option_t *option="") const
Print info about the element;.
void SetDefined(Bool_t flag=kTRUE)
Int_t GetEntries() const
Return the number of objects in array (i.e.
TGeoElementRN * GetElement() const
Binding & operator=(OUT(*fun)(void))
Mother of all ROOT objects.
TGeoElementRN * Up()
Go upwards from the current location until the next branching, then down.
void ImportElementsRN()
Creates the list of radionuclides.
Int_t DecayResult(TGeoDecayChannel *dc) const
Returns ENDF code of decay result.
Bool_t CheckDecays() const
Check if all decay chain of the element is OK.
void BuildDefaultElements()
Creates the default element table.
static Int_t ENDF(Int_t a, Int_t z, Int_t iso)
Double_t BranchingRatio() const
TObject * At(Int_t idx) const
static const Int_t gMaxElem
Bool_t HasRNElements() const
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
TGeoElementRN * Daughter() const
TGeoIsotope * GetIsotope(Int_t i) const
Return i-th isotope in the element.
void ResetRatio()
Clears the existing ratio.
void ExportElementsRN(const char *filename="")
Export radionuclides in a file.
TGeoElemIter & operator=(const TGeoElemIter &iter)
Assignment.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.