22 #include "RConfigure.h" 40 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
41 "Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
"Ca",
"Sc",
"Ti",
"V ",
"Cr",
42 "Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
43 "Rb",
"Sr",
"Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
44 "In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
"Ce",
"Pr",
"Nd",
45 "Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
46 "Ta",
"W ",
"Re",
"Os",
"Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
47 "At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
"Cm",
48 "Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
52 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
53 "ElecCapt",
"IsoTrans",
"I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
54 "2Alpha",
"Carbon12",
"Carbon14",
"Stable" };
59 -2, -2, -8, -12, -14 };
137 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
153 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
165 Fatal(
"AddIsotope",
"Cannot add isotopes to normal elements. Use constructor with number of isotopes.");
170 for (ncurrent=0; ncurrent<
fNisotopes; ncurrent++)
172 if (ncurrent==fNisotopes) {
173 Error(
"AddIsotope",
"All %d isotopes of element %s already defined", fNisotopes,
GetName());
177 if ((
fZ!=0) && (isotope->
GetZ()!=
fZ)) {
178 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s",
186 if (ncurrent==fNisotopes-1) {
263 if (z<1)
Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,name);
264 if (n<z)
Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,n,name);
274 if (!elTable)
return 0;
283 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
291 TGeoElementRN::TGeoElementRN()
355 if (branchingRatio<1
E-20) {
408 Error(
"CheckDecays",
"Element table not present");
417 Int_t decayResult = 0;
426 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
434 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
448 if (da == -99 || dz == -99)
return 0;
468 while ((elem=next())) {
487 else fName =
"?? -?? -";
503 printf(
"Iso=%d; ",
fIso);
504 printf(
"Level=%g[MeV]; ",
fLevel);
505 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
507 else printf(
"Hlife=INF\n");
511 printf(
"Htox=%g; ",
fTH_F);
512 printf(
"Itox=%g; ",
fTG_F);
515 printf(
"Decay modes:\n");
527 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
528 char name[20],jp[20];
529 sscanf(&line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d", name,&a,&z,&iso,&level,&deltaM,
530 &halfLife,jp,&natAbun,&th_f,&tg_f,&th_s,&tg_s,&status,&ndecays);
531 TGeoElementRN *elem =
new TGeoElementRN(a,z,iso,level,deltaM,halfLife,
532 jp,natAbun,th_f,tg_f,th_s,tg_s,status);
541 if (!strcmp(option,
"h")) {
543 out <<
"#====================================================================================================================================" << std::endl;
544 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX HTOX ITOX STAT NDCY" << std::endl;
545 out <<
"#====================================================================================================================================" << std::endl;
548 out << std::setw(5) << (
Int_t)
fA;
549 out << std::setw(5) <<
fZ;
550 out << std::setw(5) <<
fIso;
551 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
552 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
553 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
555 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
556 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
557 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
558 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
559 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
560 out << std::setw(5) <<
fStatus;
563 out << std::setw(5) << ndecays;
604 fBranchingRatio = dc.fBranchingRatio;
605 fQvalue = dc.fQvalue;
606 fParent = dc.fParent;
607 fDaughter = dc.fDaughter;
622 if (name.
Length()) name +=
"+";
641 if (name.
Length()) name +=
"+";
652 return fParent->Decays()->IndexOf(
this);
661 DecayName(fDecay, name);
662 printf(
"%-20s Diso: %3d BR: %9.3f%% Qval: %g\n", name.
Data(),fDiso,fBranchingRatio,fQvalue);
673 sscanf(&line[0],
"%s%d%d%lg%lg", name,&decay,&diso,&branchingRatio,&qValue);
684 DecayName(fDecay, decayName);
685 out << std::setw(50) << decayName.
Data();
686 out << std::setw(10) << fDecay;
687 out << std::setw(10) << fDiso;
688 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) << fBranchingRatio;
689 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) << fQvalue;
718 : fTop(top), fElem(top), fBranch(0),
fLevel(0), fLimitRatio(limit),
fRatio(1.)
731 fLimitRatio(iter.fLimitRatio),
753 if (&iter ==
this)
return *
this;
791 if (
Down(ind++))
return (TGeoElementRN*)
fElem;
812 return (TGeoElementRN*)
fElem;
823 for (
Int_t i=0; i<nd; i++)
if (
Down(i))
return (TGeoElementRN*)
fElem;
835 printf(
"=== Chain with %g %%\n", 100*
fRatio);
843 printf(
"%s%s\n", indent.Data(), elem->
GetName());
853 TGeoElementTable::TGeoElementTable()
874 BuildDefaultElements();
883 fNelements(get.fNelements),
884 fNelementsRN(get.fNelementsRN),
885 fNisotopes(get.fNisotopes),
887 fListRN(get.fListRN),
954 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.",
980 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.",isotope->
GetName());
1000 AddElement(
"N" ,
"NITROGEN" ,7, 14, 14.00674);
1002 AddElement(
"F" ,
"FLUORINE" ,9, 19, 18.9984032);
1004 AddElement(
"NA" ,
"SODIUM" ,11, 23, 22.989770);
1005 AddElement(
"MG" ,
"MAGNESIUM" ,12, 24, 24.3050);
1006 AddElement(
"AL" ,
"ALUMINIUM" ,13, 27, 26.981538);
1007 AddElement(
"SI" ,
"SILICON" ,14, 28, 28.0855);
1008 AddElement(
"P" ,
"PHOSPHORUS" ,15, 31, 30.973761);
1010 AddElement(
"CL" ,
"CHLORINE" ,17, 35, 35.4527);
1012 AddElement(
"K" ,
"POTASSIUM" ,19, 39, 39.0983);
1014 AddElement(
"SC" ,
"SCANDIUM" ,21, 45, 44.955910);
1015 AddElement(
"TI" ,
"TITANIUM" ,22, 48, 47.867);
1016 AddElement(
"V" ,
"VANADIUM" ,23, 51, 50.9415);
1017 AddElement(
"CR" ,
"CHROMIUM" ,24, 52, 51.9961);
1018 AddElement(
"MN" ,
"MANGANESE" ,25, 55, 54.938049);
1020 AddElement(
"CO" ,
"COBALT" ,27, 59, 58.933200);
1025 AddElement(
"GE" ,
"GERMANIUM" ,32, 73, 72.61);
1026 AddElement(
"AS" ,
"ARSENIC" ,33, 75, 74.92160);
1030 AddElement(
"RB" ,
"RUBIDIUM" ,37, 85, 85.4678);
1031 AddElement(
"SR" ,
"STRONTIUM" ,38, 88, 87.62);
1032 AddElement(
"Y" ,
"YTTRIUM" ,39, 89, 88.90585);
1033 AddElement(
"ZR" ,
"ZIRCONIUM" ,40, 91, 91.224);
1034 AddElement(
"NB" ,
"NIOBIUM" ,41, 93, 92.90638);
1035 AddElement(
"MO" ,
"MOLYBDENUM" ,42, 96, 95.94);
1036 AddElement(
"TC" ,
"TECHNETIUM" ,43, 98, 98.0);
1037 AddElement(
"RU" ,
"RUTHENIUM" ,44, 101, 101.07);
1038 AddElement(
"RH" ,
"RHODIUM" ,45, 103, 102.90550);
1039 AddElement(
"PD" ,
"PALLADIUM" ,46, 106, 106.42);
1040 AddElement(
"AG" ,
"SILVER" ,47, 108, 107.8682);
1041 AddElement(
"CD" ,
"CADMIUM" ,48, 112, 112.411);
1042 AddElement(
"IN" ,
"INDIUM" ,49, 115, 114.818);
1044 AddElement(
"SB" ,
"ANTIMONY" ,51, 122, 121.760);
1045 AddElement(
"TE" ,
"TELLURIUM" ,52, 128, 127.60);
1046 AddElement(
"I" ,
"IODINE" ,53, 127, 126.90447);
1048 AddElement(
"CS" ,
"CESIUM" ,55, 133, 132.90545);
1049 AddElement(
"BA" ,
"BARIUM" ,56, 137, 137.327);
1050 AddElement(
"LA" ,
"LANTHANUM" ,57, 139, 138.9055);
1051 AddElement(
"CE" ,
"CERIUM" ,58, 140, 140.116);
1052 AddElement(
"PR" ,
"PRASEODYMIUM" ,59, 141, 140.90765);
1053 AddElement(
"ND" ,
"NEODYMIUM" ,60, 144, 144.24);
1054 AddElement(
"PM" ,
"PROMETHIUM" ,61, 145, 145.0);
1055 AddElement(
"SM" ,
"SAMARIUM" ,62, 150, 150.36);
1056 AddElement(
"EU" ,
"EUROPIUM" ,63, 152, 151.964);
1057 AddElement(
"GD" ,
"GADOLINIUM" ,64, 157, 157.25);
1058 AddElement(
"TB" ,
"TERBIUM" ,65, 159, 158.92534);
1059 AddElement(
"DY" ,
"DYSPROSIUM" ,66, 162, 162.50);
1060 AddElement(
"HO" ,
"HOLMIUM" ,67, 165, 164.93032);
1062 AddElement(
"TM" ,
"THULIUM" ,69, 169, 168.93421);
1063 AddElement(
"YB" ,
"YTTERBIUM" ,70, 173, 173.04);
1064 AddElement(
"LU" ,
"LUTETIUM" ,71, 175, 174.967);
1065 AddElement(
"HF" ,
"HAFNIUM" ,72, 178, 178.49);
1066 AddElement(
"TA" ,
"TANTALUM" ,73, 181, 180.9479);
1067 AddElement(
"W" ,
"TUNGSTEN" ,74, 184, 183.84);
1068 AddElement(
"RE" ,
"RHENIUM" ,75, 186, 186.207);
1070 AddElement(
"IR" ,
"IRIDIUM" ,77, 192, 192.217);
1071 AddElement(
"PT" ,
"PLATINUM" ,78, 195, 195.078);
1072 AddElement(
"AU" ,
"GOLD" ,79, 197, 196.96655);
1073 AddElement(
"HG" ,
"MERCURY" ,80, 200, 200.59);
1074 AddElement(
"TL" ,
"THALLIUM" ,81, 204, 204.3833);
1076 AddElement(
"BI" ,
"BISMUTH" ,83, 209, 208.98038);
1077 AddElement(
"PO" ,
"POLONIUM" ,84, 209, 209.0);
1078 AddElement(
"AT" ,
"ASTATINE" ,85, 210, 210.0);
1080 AddElement(
"FR" ,
"FRANCIUM" ,87, 223, 223.0);
1082 AddElement(
"AC" ,
"ACTINIUM" ,89, 227, 227.0);
1083 AddElement(
"TH" ,
"THORIUM" ,90, 232, 232.0381);
1084 AddElement(
"PA" ,
"PROTACTINIUM" ,91, 231, 231.03588);
1085 AddElement(
"U" ,
"URANIUM" ,92, 238, 238.0289);
1086 AddElement(
"NP" ,
"NEPTUNIUM" ,93, 237, 237.0);
1087 AddElement(
"PU" ,
"PLUTONIUM" ,94, 244, 244.0);
1088 AddElement(
"AM" ,
"AMERICIUM" ,95, 243, 243.0);
1090 AddElement(
"BK" ,
"BERKELIUM" ,97, 247, 247.0);
1091 AddElement(
"CF" ,
"CALIFORNIUM",98, 251, 251.0);
1092 AddElement(
"ES" ,
"EINSTEINIUM",99, 252, 252.0);
1093 AddElement(
"FM" ,
"FERMIUM" ,100, 257, 257.0);
1094 AddElement(
"MD" ,
"MENDELEVIUM",101, 258, 258.0);
1095 AddElement(
"NO" ,
"NOBELIUM" ,102, 259, 259.0);
1096 AddElement(
"LR" ,
"LAWRENCIUM" ,103, 262, 262.0);
1097 AddElement(
"RF" ,
"RUTHERFORDIUM",104, 261, 261.0);
1098 AddElement(
"DB" ,
"DUBNIUM" ,105, 262, 262.0);
1099 AddElement(
"SG" ,
"SEABORGIUM" ,106, 263, 263.0);
1100 AddElement(
"BH" ,
"BOHRIUM" ,107, 262, 262.0);
1101 AddElement(
"HS" ,
"HASSIUM" ,108, 265, 265.0);
1102 AddElement(
"MT" ,
"MEITNERIUM" ,109, 266, 266.0);
1103 AddElement(
"UUN" ,
"UNUNNILIUM" ,110, 269, 269.0);
1104 AddElement(
"UUU" ,
"UNUNUNIUM" ,111, 272, 272.0);
1105 AddElement(
"UUB" ,
"UNUNBIUM" ,112, 277, 277.0);
1116 TGeoElementRN *elem;
1117 TString rnf =
"RadioNuclides.txt";
1119 FILE *fp = fopen(rnf,
"r");
1121 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1127 while (fgets(&line[0],140,fp)) {
1128 if (line[0]==
'#')
continue;
1130 for (i=0; i<ndecays; i++) {
1131 if (!fgets(&line[0],140,fp)) {
1132 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1153 TGeoElementRN *elem;
1156 while ((elem=(TGeoElementRN*)next())) {
1169 if (!sname.
Length()) sname =
"RadioNuclides.txt";
1171 out.open(sname.
Data(), std::ios::out);
1173 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1177 TGeoElementRN *elem;
1180 while ((elem=(TGeoElementRN*)next())) {
1196 if (elem)
return elem;
1201 if (elem)
return elem;
1205 if (s == elem->
GetTitle())
return elem;
1225 TGeoElementTable *table = (TGeoElementTable*)
this;
1229 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1256 if (opt==
"" || opt==
"D") {
1257 if (induser) printf(
"================\nDefault elements\n================\n");
1261 if (opt==
"" || opt==
"I") {
1263 printf(
"================\nIsotopes\n================\n");
1268 if (opt==
"" || opt==
"R") {
1270 printf(
"================\nRadio-nuclides\n================\n");
1275 if (opt==
"" || opt==
"U") {
1276 if (
fNelements>induser) printf(
"================\nUser elements\n================\n");
1301 if (t12 == 0.) t12 = 1.e-30;
1302 if (elem->Stable()) fCoeff[0].lambda = 0.;
1367 if (
this == &other)
return *
this;
1397 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1414 for (j=0; j<other.
fNcoeff; j++) {
1467 TGeoElementRN *elem = dc->
Daughter();
1468 if (elem !=
fElem) {
1469 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1487 for (i=0; i<
n; i++) {
1492 if (halflife==0.) halflife = 1.e-30;
1493 if (elem->
Stable()) lambda[i] = 0.;
1498 if (halflife==0.) halflife = 1.e-30;
1499 if (elem->
Stable()) lambda[n] = 0.;
1504 for (i=0; i<order-1; i++) {
1505 for (j=i+1; j<order; j++) {
1506 if (lambda[j] == lambda[i]) lambda[j] += 0.001*lambda[j];
1511 for (j=0; j<
n; j++) plambdabr *= lambda[j]*br[j];
1512 for (i=0; i<order; i++) {
1514 for (j=0; j<n+1; j++) {
1515 if (j == i)
continue;
1516 pdlambda *= lambda[j] - lambda[i];
1518 if (pdlambda == 0.) {
1519 Error(
"FindSolution",
"pdlambda=0 !!!");
1524 ain = plambdabr/pdlambda;
1553 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]
Bool_t TestBit(UInt_t f) const
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.
static const char * filename()
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 chanels of this element.
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.
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.
static const Int_t gMaxLevel
TGeoElement * FindElement(const char *name) const
Search an element by symbol or full name Exact matching.
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retreive 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.
static void indent(ostringstream &buf, int indent_level)
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
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.
void SetParent(TGeoElementRN *parent)
void SetDefined(Bool_t flag=kTRUE)
TGeoIsotope()
Dummy I/O constructor.
Binding & operator=(OUT(*fun)(void))
Mother of all ROOT objects.
virtual Double_t GetSpecificActivity() const
Get the activity in Bq of a gram of material made from this element.
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.
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.