|
ROOT
Reference Guide |
|
Go to the documentation of this file.
47 #include "RConfigure.h"
68 "H ",
"He",
"Li",
"Be",
"B ",
"C ",
"N ",
"O ",
"F ",
"Ne",
"Na",
"Mg",
69 "Al",
"Si",
"P ",
"S ",
"Cl",
"Ar",
"K ",
"Ca",
"Sc",
"Ti",
"V ",
"Cr",
70 "Mn",
"Fe",
"Co",
"Ni",
"Cu",
"Zn",
"Ga",
"Ge",
"As",
"Se",
"Br",
"Kr",
71 "Rb",
"Sr",
"Y ",
"Zr",
"Nb",
"Mo",
"Tc",
"Ru",
"Rh",
"Pd",
"Ag",
"Cd",
72 "In",
"Sn",
"Sb",
"Te",
"I ",
"Xe",
"Cs",
"Ba",
"La",
"Ce",
"Pr",
"Nd",
73 "Pm",
"Sm",
"Eu",
"Gd",
"Tb",
"Dy",
"Ho",
"Er",
"Tm",
"Yb",
"Lu",
"Hf",
74 "Ta",
"W ",
"Re",
"Os",
"Ir",
"Pt",
"Au",
"Hg",
"Tl",
"Pb",
"Bi",
"Po",
75 "At",
"Rn",
"Fr",
"Ra",
"Ac",
"Th",
"Pa",
"U ",
"Np",
"Pu",
"Am",
"Cm",
76 "Bk",
"Cf",
"Es",
"Fm",
"Md",
"No",
"Lr",
"Rf",
"Db",
"Sg",
"Bh",
"Hs",
80 "2BetaMinus",
"BetaMinus",
"NeutronEm",
"ProtonEm",
"Alpha",
"ECF",
81 "ElecCapt",
"IsoTrans",
"I",
"SpontFiss",
"2ProtonEm",
"2NeutronEm",
82 "2Alpha",
"Carbon12",
"Carbon14",
"Stable" };
87 -2, -2, -8, -12, -14 };
190 static constexpr
Double_t k1 = 0.0083 , k2 = 0.20206 ,k3 = 0.0020 , k4 = 0.0369;
196 fCoulomb = (k1*az4 + k2 + 1./(1.+az2))*az2 - (k3*az4 + k4)*az4;
203 static constexpr
Double_t Lrad_light[] = {5.31 , 4.79 , 4.74 , 4.71} ;
204 static constexpr
Double_t Lprad_light[] = {6.144 , 5.621 , 5.805 , 5.924} ;
216 if (iz <= 3) { Lrad = Lrad_light[iz] ; Lprad = Lprad_light[iz] ; }
217 else { Lrad = log184 - logZ3 ; Lprad = log1194 - 2*logZ3;}
226 printf(
"Element: %s Z=%d N=%f A=%f [g/mole]\n",
GetName(),
fZ,
Neff(),
fA);
242 ::Error(
"TGeoElementTable::GetElementTable",
"Create a geometry manager first");
254 Fatal(
"AddIsotope",
"Cannot add isotopes to normal elements. Use constructor with number of isotopes.");
259 for (ncurrent=0; ncurrent<
fNisotopes; ncurrent++)
266 if ((
fZ!=0) && (isotope->
GetZ()!=
fZ)) {
267 Fatal(
"AddIsotope",
"Trying to add isotope %s with different Z to the same element %s",
353 if (z<1)
Fatal(
"ctor",
"Not allowed Z=%d (<1) for isotope: %s", z,
name);
354 if (
n<z)
Fatal(
"ctor",
"Not allowed Z=%d < N=%d for isotope: %s", z,
n,
name);
364 if (!elTable)
return 0;
373 printf(
"Isotope: %s Z=%d N=%d A=%f [g/mole]\n",
GetName(),
fZ,
fN,
fA);
445 if (branchingRatio<1
E-20) {
498 Error(
"CheckDecays",
"Element table not present");
507 Int_t decayResult = 0;
516 Error(
"CheckDecays",
"Element after decay %s of %s not found in DB", decayName.
Data(),
fName.
Data());
524 Warning(
"CheckDecays",
"BR for decays of element %s sum-up = %f",
fName.
Data(), br);
538 if (da == -99 || dz == -99)
return 0;
558 while ((elem=next())) {
577 else fName =
"?? -?? -";
593 printf(
"Iso=%d; ",
fIso);
594 printf(
"Level=%g[MeV]; ",
fLevel);
595 printf(
"Dmass=%g[MeV]; ",
fDeltaM);
597 else printf(
"Hlife=INF\n");
601 printf(
"Htox=%g; ",
fTH_F);
602 printf(
"Itox=%g; ",
fTG_F);
605 printf(
"Decay modes:\n");
617 Double_t level, deltaM, halfLife, natAbun, th_f, tg_f, th_s, tg_s;
618 char name[20],jp[20];
619 sscanf(&
line[0],
"%s%d%d%d%lg%lg%lg%s%lg%lg%lg%lg%lg%d%d",
name,&
a,&z,&iso,&level,&deltaM,
620 &halfLife,jp,&natAbun,&th_f,&tg_f,&th_s,&tg_s,&status,&ndecays);
622 jp,natAbun,th_f,tg_f,th_s,tg_s,status);
631 if (!strcmp(option,
"h")) {
633 out <<
"#====================================================================================================================================" << std::endl;
634 out <<
"# Name A Z ISO LEV[MeV] DM[MeV] T1/2[s] J/P ABUND[%] HTOX ITOX HTOX ITOX STAT NDCY" << std::endl;
635 out <<
"#====================================================================================================================================" << std::endl;
638 out << std::setw(5) << (
Int_t)
fA;
639 out << std::setw(5) <<
fZ;
640 out << std::setw(5) <<
fIso;
641 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fLevel;
642 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fDeltaM;
643 out << std::setw(10) << std::setiosflags(std::ios::scientific) << std::setprecision(3) <<
fHalfLife;
645 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fNatAbun;
646 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_F;
647 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_F;
648 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTH_S;
649 out << std::setw(10) << std::setiosflags(std::ios::fixed) << std::setprecision(5) <<
fTG_S;
650 out << std::setw(5) <<
fStatus;
653 out << std::setw(5) << ndecays;
763 sscanf(&
line[0],
"%s%d%d%lg%lg",
name,&decay,&diso,&branchingRatio,&qValue);
775 out << std::setw(50) << decayName.
Data();
776 out << std::setw(10) <<
fDecay;
777 out << std::setw(10) <<
fDiso;
778 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fBranchingRatio;
779 out << std::setw(12) << std::setiosflags(std::ios::fixed) << std::setprecision(6) <<
fQvalue;
808 : fTop(top), fElem(top), fBranch(0), fLevel(0), fLimitRatio(limit), fRatio(1.)
821 fLimitRatio(iter.fLimitRatio),
843 if (&iter ==
this)
return *
this;
910 if (!
fElem)
return NULL;
925 printf(
"=== Chain with %g %%\n", 100*
fRatio);
973 fNelements(get.fNelements),
974 fNelementsRN(get.fNelementsRN),
975 fNisotopes(get.fNisotopes),
977 fListRN(get.fListRN),
1044 Error(
"AddElement",
"Found element with same name: %s (%s). Cannot add to table.",
1070 Error(
"AddIsotope",
"Isotope with the same name: %s already in table. Not adding.",isotope->
GetName());
1087 AddElement(
"BE" ,
"BERYLLIUM" ,4, 9, 9.01218);
1090 AddElement(
"N" ,
"NITROGEN" ,7, 14, 14.00674);
1092 AddElement(
"F" ,
"FLUORINE" ,9, 19, 18.9984032);
1094 AddElement(
"NA" ,
"SODIUM" ,11, 23, 22.989770);
1095 AddElement(
"MG" ,
"MAGNESIUM" ,12, 24, 24.3050);
1096 AddElement(
"AL" ,
"ALUMINIUM" ,13, 27, 26.981538);
1097 AddElement(
"SI" ,
"SILICON" ,14, 28, 28.0855);
1098 AddElement(
"P" ,
"PHOSPHORUS" ,15, 31, 30.973761);
1100 AddElement(
"CL" ,
"CHLORINE" ,17, 35, 35.4527);
1102 AddElement(
"K" ,
"POTASSIUM" ,19, 39, 39.0983);
1104 AddElement(
"SC" ,
"SCANDIUM" ,21, 45, 44.955910);
1105 AddElement(
"TI" ,
"TITANIUM" ,22, 48, 47.867);
1106 AddElement(
"V" ,
"VANADIUM" ,23, 51, 50.9415);
1107 AddElement(
"CR" ,
"CHROMIUM" ,24, 52, 51.9961);
1108 AddElement(
"MN" ,
"MANGANESE" ,25, 55, 54.938049);
1110 AddElement(
"CO" ,
"COBALT" ,27, 59, 58.933200);
1115 AddElement(
"GE" ,
"GERMANIUM" ,32, 73, 72.61);
1116 AddElement(
"AS" ,
"ARSENIC" ,33, 75, 74.92160);
1120 AddElement(
"RB" ,
"RUBIDIUM" ,37, 85, 85.4678);
1121 AddElement(
"SR" ,
"STRONTIUM" ,38, 88, 87.62);
1122 AddElement(
"Y" ,
"YTTRIUM" ,39, 89, 88.90585);
1123 AddElement(
"ZR" ,
"ZIRCONIUM" ,40, 91, 91.224);
1124 AddElement(
"NB" ,
"NIOBIUM" ,41, 93, 92.90638);
1125 AddElement(
"MO" ,
"MOLYBDENUM" ,42, 96, 95.94);
1126 AddElement(
"TC" ,
"TECHNETIUM" ,43, 98, 98.0);
1127 AddElement(
"RU" ,
"RUTHENIUM" ,44, 101, 101.07);
1128 AddElement(
"RH" ,
"RHODIUM" ,45, 103, 102.90550);
1129 AddElement(
"PD" ,
"PALLADIUM" ,46, 106, 106.42);
1130 AddElement(
"AG" ,
"SILVER" ,47, 108, 107.8682);
1131 AddElement(
"CD" ,
"CADMIUM" ,48, 112, 112.411);
1132 AddElement(
"IN" ,
"INDIUM" ,49, 115, 114.818);
1134 AddElement(
"SB" ,
"ANTIMONY" ,51, 122, 121.760);
1135 AddElement(
"TE" ,
"TELLURIUM" ,52, 128, 127.60);
1136 AddElement(
"I" ,
"IODINE" ,53, 127, 126.90447);
1138 AddElement(
"CS" ,
"CESIUM" ,55, 133, 132.90545);
1139 AddElement(
"BA" ,
"BARIUM" ,56, 137, 137.327);
1140 AddElement(
"LA" ,
"LANTHANUM" ,57, 139, 138.9055);
1141 AddElement(
"CE" ,
"CERIUM" ,58, 140, 140.116);
1142 AddElement(
"PR" ,
"PRASEODYMIUM" ,59, 141, 140.90765);
1143 AddElement(
"ND" ,
"NEODYMIUM" ,60, 144, 144.24);
1144 AddElement(
"PM" ,
"PROMETHIUM" ,61, 145, 145.0);
1145 AddElement(
"SM" ,
"SAMARIUM" ,62, 150, 150.36);
1146 AddElement(
"EU" ,
"EUROPIUM" ,63, 152, 151.964);
1147 AddElement(
"GD" ,
"GADOLINIUM" ,64, 157, 157.25);
1148 AddElement(
"TB" ,
"TERBIUM" ,65, 159, 158.92534);
1149 AddElement(
"DY" ,
"DYSPROSIUM" ,66, 162, 162.50);
1150 AddElement(
"HO" ,
"HOLMIUM" ,67, 165, 164.93032);
1152 AddElement(
"TM" ,
"THULIUM" ,69, 169, 168.93421);
1153 AddElement(
"YB" ,
"YTTERBIUM" ,70, 173, 173.04);
1154 AddElement(
"LU" ,
"LUTETIUM" ,71, 175, 174.967);
1155 AddElement(
"HF" ,
"HAFNIUM" ,72, 178, 178.49);
1156 AddElement(
"TA" ,
"TANTALUM" ,73, 181, 180.9479);
1157 AddElement(
"W" ,
"TUNGSTEN" ,74, 184, 183.84);
1158 AddElement(
"RE" ,
"RHENIUM" ,75, 186, 186.207);
1160 AddElement(
"IR" ,
"IRIDIUM" ,77, 192, 192.217);
1161 AddElement(
"PT" ,
"PLATINUM" ,78, 195, 195.078);
1162 AddElement(
"AU" ,
"GOLD" ,79, 197, 196.96655);
1163 AddElement(
"HG" ,
"MERCURY" ,80, 200, 200.59);
1164 AddElement(
"TL" ,
"THALLIUM" ,81, 204, 204.3833);
1166 AddElement(
"BI" ,
"BISMUTH" ,83, 209, 208.98038);
1167 AddElement(
"PO" ,
"POLONIUM" ,84, 209, 209.0);
1168 AddElement(
"AT" ,
"ASTATINE" ,85, 210, 210.0);
1170 AddElement(
"FR" ,
"FRANCIUM" ,87, 223, 223.0);
1172 AddElement(
"AC" ,
"ACTINIUM" ,89, 227, 227.0);
1173 AddElement(
"TH" ,
"THORIUM" ,90, 232, 232.0381);
1174 AddElement(
"PA" ,
"PROTACTINIUM" ,91, 231, 231.03588);
1175 AddElement(
"U" ,
"URANIUM" ,92, 238, 238.0289);
1176 AddElement(
"NP" ,
"NEPTUNIUM" ,93, 237, 237.0);
1177 AddElement(
"PU" ,
"PLUTONIUM" ,94, 244, 244.0);
1178 AddElement(
"AM" ,
"AMERICIUM" ,95, 243, 243.0);
1180 AddElement(
"BK" ,
"BERKELIUM" ,97, 247, 247.0);
1181 AddElement(
"CF" ,
"CALIFORNIUM",98, 251, 251.0);
1182 AddElement(
"ES" ,
"EINSTEINIUM",99, 252, 252.0);
1183 AddElement(
"FM" ,
"FERMIUM" ,100, 257, 257.0);
1184 AddElement(
"MD" ,
"MENDELEVIUM",101, 258, 258.0);
1185 AddElement(
"NO" ,
"NOBELIUM" ,102, 259, 259.0);
1186 AddElement(
"LR" ,
"LAWRENCIUM" ,103, 262, 262.0);
1187 AddElement(
"RF" ,
"RUTHERFORDIUM",104, 261, 261.0);
1188 AddElement(
"DB" ,
"DUBNIUM" ,105, 262, 262.0);
1189 AddElement(
"SG" ,
"SEABORGIUM" ,106, 263, 263.0);
1190 AddElement(
"BH" ,
"BOHRIUM" ,107, 262, 262.0);
1191 AddElement(
"HS" ,
"HASSIUM" ,108, 265, 265.0);
1192 AddElement(
"MT" ,
"MEITNERIUM" ,109, 266, 266.0);
1193 AddElement(
"UUN" ,
"UNUNNILIUM" ,110, 269, 269.0);
1194 AddElement(
"UUU" ,
"UNUNUNIUM" ,111, 272, 272.0);
1195 AddElement(
"UUB" ,
"UNUNBIUM" ,112, 277, 277.0);
1207 TString rnf =
"RadioNuclides.txt";
1209 FILE *fp = fopen(rnf,
"r");
1211 Error(
"ImportElementsRN",
"File RadioNuclides.txt not found");
1217 while (fgets(&
line[0],140,fp)) {
1218 if (
line[0]==
'#')
continue;
1220 for (i=0; i<ndecays; i++) {
1221 if (!fgets(&
line[0],140,fp)) {
1222 Error(
"ImportElementsRN",
"Error parsing RadioNuclides.txt file");
1259 if (!sname.
Length()) sname =
"RadioNuclides.txt";
1261 out.open(sname.
Data(), std::ios::out);
1263 Error(
"ExportElementsRN",
"Cannot open file %s", sname.
Data());
1286 if (elem)
return elem;
1291 if (elem)
return elem;
1319 ElementRNMap_t::const_iterator it =
fElementsRN.find(ENDFcode);
1346 if (opt==
"" || opt==
"D") {
1347 if (induser) printf(
"================\nDefault elements\n================\n");
1351 if (opt==
"" || opt==
"I") {
1353 printf(
"================\nIsotopes\n================\n");
1358 if (opt==
"" || opt==
"R") {
1360 printf(
"================\nRadio-nuclides\n================\n");
1365 if (opt==
"" || opt==
"U") {
1366 if (
fNelements>induser) printf(
"================\nUser elements\n================\n");
1391 if (t12 == 0.) t12 = 1.e-30;
1427 fElemTop(other.fElemTop),
1428 fCsize(other.fCsize),
1429 fNcoeff(other.fNcoeff),
1430 fFactor(other.fFactor),
1457 if (
this == &other)
return *
this;
1487 Error(
"operator+=",
"Cannot add 2 solutions for different elements");
1504 for (j=0; j<other.
fNcoeff; j++) {
1558 if (elem !=
fElem) {
1559 Error(
"FindSolution",
"Last element in the list must be %s\n",
fElem->
GetName());
1577 for (i=0; i<
n; i++) {
1582 if (halflife==0.) halflife = 1.e-30;
1583 if (elem->
Stable()) lambda[i] = 0.;
1588 if (halflife==0.) halflife = 1.e-30;
1589 if (elem->
Stable()) lambda[
n] = 0.;
1594 for (i=0; i<order-1; i++) {
1595 for (j=i+1; j<order; j++) {
1596 if (lambda[j] == lambda[i]) lambda[j] += 0.001*lambda[j];
1601 for (j=0; j<
n; j++) plambdabr *= lambda[j]*br[j];
1602 for (i=0; i<order; i++) {
1604 for (j=0; j<
n+1; j++) {
1605 if (j == i)
continue;
1606 pdlambda *= lambda[j] - lambda[i];
1608 if (pdlambda == 0.) {
1609 Error(
"FindSolution",
"pdlambda=0 !!!");
1614 ain = plambdabr/pdlambda;
1643 printf(
"%s\n", formula.
Data());
virtual Int_t ENDFCode() const
Bool_t HasDefaultElements() const
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
Double_t GetRelativeAbundance(Int_t i) const
Return relative abundance of i-th isotope in this element.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
static TGeoIsotope * FindIsotope(const char *name)
Find existing isotope by name.
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
TGeoElementRN * GetElement() const
virtual void Print(Option_t *option="") const
Print this isotope.
TObjArray * GetBranch() const
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
virtual ~TGeoElementRN()
Destructor.
R__EXTERN TGeoManager * gGeoManager
const char * Data() const
virtual const char * GetTitle() const
Returns title of object.
Double_t HalfLife() const
virtual TObject * RemoveAt(Int_t idx)
Remove object at index idx.
static const Int_t gMaxElem
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
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.
Binding & operator=(OUT(*fun)(void))
Int_t DecayResult(TGeoDecayChannel *dc) const
Returns ENDF code of decay result.
Int_t IndexOf(const TObject *obj) const
static constexpr double s
TObjArray * Decays() const
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
void MakeName(Int_t a, Int_t z, Int_t iso)
Generate a default name for the element.
void SetDaughter(TGeoElementRN *daughter)
static constexpr double fine_structure_const
void AddElement(const char *name, const char *title, Int_t z, Double_t a)
Add an element to the table. Obsolete.
Int_t GetEntries() const
Return the number of objects in array (i.e.
virtual void Print(Option_t *option="") const
Print info about the element;.
Bool_t HasIsotopes() const
static void indent(ostringstream &buf, int indent_level)
TGeoElement()
Default constructor.
static constexpr double alpha_rcl2
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
TGeoIsotope * GetIsotope(Int_t i) const
Return i-th isotope in the element.
TObject * At(Int_t idx) const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
static TGeoDecayChannel * ReadDecay(const char *record)
Create element from line record.
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.
TGeoBatemanSol & operator+=(const TGeoBatemanSol &other)
Addition of other solution.
ElementRNMap_t fElementsRN
TGeoElementRN * GetElementRN(Int_t ENDFcode) const
Retrieve a radionuclide by ENDF code.
TGeoElement * FindElement(const char *name) const
Search an element by symbol or full name Exact matching.
TString & ReplaceAll(const TString &s1, const TString &s2)
void ComputeDerivedQuantities()
Calculate properties for an atomic number.
virtual void Print(Option_t *option="") const
Print table of elements.
Iterator for decay branches.
const TGeoElementRN * fTop
void ToUpper()
Change string to upper case.
Double_t Neff() const
Returns effective number of nucleons.
virtual void Print(Option_t *option="") const
Print concentration evolution.
virtual void Draw(Option_t *option="")
Draw the solution of Bateman equation versus time.
static const char gElName[gMaxElem][3]
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
TGeoElementRN * Daughter() const
const TGeoElementRN * fElem
virtual void Print(Option_t *option="") const
Print info about the current decay branch.
Bool_t CheckTable() const
Checks status of element table.
virtual ~TGeoElement()
destructor
A decay channel for a radionuclide.
TGeoElementTable & operator=(const TGeoElementTable &)
assignment operator
void SetParent(TGeoElementRN *parent)
static const char * gDecayName[gMaxDecay+1]
virtual Double_t GetSpecificActivity() const
Get the activity in Bq of a gram of material made from this element.
static const Int_t gMaxDecay
Base class for chemical elements.
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
TGeoElementRN * fDaughter
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
TGeoIsotope()
Dummy I/O constructor.
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.
Class representing a radionuclidevoid TGeoManager::SetDefaultRootUnits() { if ( fgDefaultUnits == kRo...
Int_t GetEntriesFast() const
The TNamed class is the base class for all named ROOT classes.
~TGeoBatemanSol()
Destructor.
static const Int_t gDecayDeltaZ[gMaxDecay]
static TGeoElementTable * GetElementTable()
Returns pointer to the table.
Bool_t CheckDecays() const
Check if all decay chain of the element is OK.
TGeoElementRN * Next()
Return next element.
TGeoElementRN * Parent() const
static Int_t ENDF(Int_t a, Int_t z, Int_t iso)
void ImportElementsRN()
Creates the list of radionuclides.
static void SetDefaultUnits(EDefaultUnits new_value)
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
void AddDecay(Int_t decay, Int_t diso, Double_t branchingRatio, Double_t qValue)
Adds a decay mode for this element.
void ComputeCoulombFactor()
Compute Coulomb correction factor (Phys Rev. D50 3-1 (1994) page 1254)
static constexpr double fine_structure_const
TGeoElementTable()
default constructor
virtual ~TGeoElemIter()
Destructor.
void SetUsed(Bool_t flag=kTRUE)
void ExportElementsRN(const char *filename="")
Export radionuclides in a file.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
static void DecayName(UInt_t decay, TString &name)
Returns decay name.
static const char gLevName[gMaxLevel]
virtual void Print(Option_t *option="") const
Print this isotope.
void ResetRatio()
Clears the existing ratio.
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
R__EXTERN TSystem * gSystem
TGeoElementRN * Down(Int_t ibranch)
Go downwards from current level via ibranch as low in the tree as possible.
Double_t BranchingRatio() const
void AddRatio(TGeoBatemanSol &ratio)
Adds a proportion ratio to the existing one.
void Normalize(Double_t factor)
Normalize all coefficients with a given factor.
static TGeoElementRN * ReadElementRN(const char *record, Int_t &ndecays)
Create element from line record.
static EDefaultUnits GetDefaultUnits()
TGeoElementRN * Up()
Go upwards from the current location until the next branching, then down.
TGeoElementRN()
Default constructor.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for decays.
Int_t GetNdecays() const
Get number of decay channels of this element.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive for RN elements.
void FindSolution(const TObjArray *array)
Find the solution for the Bateman equations corresponding to the decay chain described by an array en...
Bool_t HasRNElements() const
TObject & operator=(const TObject &rhs)
TObject assignment operator.
void ComputeLradTsaiFactor()
Compute Tsai's Expression for the Radiation Length (Phys Rev. D50 3-1 (1994) page 1254)
virtual void Print(Option_t *opt=" ") const
Prints decay info.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Mother of all ROOT objects.
TGeoElemIter & operator=(const TGeoElemIter &iter)
Assignment.
virtual const char * GetName() const
Returns name of decay.
TGeoElementTable * GetElementTable()
Returns material table. Creates it if not existing.
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
static const Int_t gMaxLevel
static constexpr double alpha_rcl2
Fill Area Attributes class.
virtual const char * GetName() const
Returns name of object.
void AddIsotope(TGeoIsotope *isotope)
Add isotope to the table.
static const Int_t gDecayDeltaA[gMaxDecay]
void SetDefined(Bool_t flag=kTRUE)
constexpr Double_t Na()
Avogadro constant (Avogadro's Number) in .
constexpr Double_t E()
Base of natural log:
void AddElementRN(TGeoElementRN *elem)
Add a radionuclide to the table and map it.
TGeoDecayChannel & operator=(const TGeoDecayChannel &dc)
Assignment.
TGeoElementRN * operator()()
() operator.
virtual ~TGeoElementTable()
destructor
TGeoIsotope * FindIsotope(const char *name) const
Find existing isotope by name. Not optimized for a big number of isotopes.
TGeoBatemanSol & operator=(const TGeoBatemanSol &other)
Assignment.
virtual void DecayShift(Int_t &dA, Int_t &dZ, Int_t &dI) const
Returns variation in A, Z and Iso after decay.