Macro that demonstrates usage of radioactive elements/materials/mixtures with TGeo package.
The isomeric number is optional and the default value is 0.
To create a radioactive material based on a radionuclide, one should use the constructor:
To create a radioactive mixture, one can use radionuclides as well as stable elements:
Once defined, one can retrieve the time evolution for the radioactive materials/mixtures by using one of the 2 methods:
All radionuclides in the output population list have attached objects that represent the time evolution of their fraction of nuclei with respect to the top radionuclide in the decay chain. These objects (Bateman solutions) can be retrieved and drawn:
Another method allows to create the evolution of a given radioactive material/mixture at a given moment in time:
The method will create the mixture that result from the decay of a initial material/mixture at TIME, while all resulting elements having a fractional weight less than PRECISION are excluded.
void RadioNuclides()
{
printf("___________________________________________________________\n");
printf("Radioactive material:\n");
printf("Radioactive material evolution after %g years:\n", time/3.1536e7);
printf("___________________________________________________________\n");
printf("Radioactive mixture:\n");
time = 1000.;
printf("Radioactive mixture evolution after %g seconds:\n", time);
DrawPopulation(vect,
c1, 0, 1.4e12);
TLatex *tex =
new TLatex(8.35e11,0.564871,
"C_{N^{14}_{7}}");
tex =
new TLatex(3.33e11,0.0620678,
"C_{C^{14}_{6}}");
tex =
new TLatex(9.4e11,0.098,
"C_{X}=#frac{N_{X}(t)}{N_{0}(t=0)}=\
#sum_{j}#alpha_{j}e^{-#lambda_{j}t}");
pt->
AddText(
"Time evolution of a population of radionuclides.");
pt->
AddText(
"The concentration of a nuclide X represent the ");
pt->
AddText(
"ratio between the number of X nuclei and the ");
pt->
AddText(
"number of nuclei of the top element of the decay");
pt->
AddText(
"from which X derives from at T=0. ");
DrawPopulation(vect,
c2, 0.01, 1000.,
kTRUE);
tex =
new TLatex(0.019,0.861,
"C_{Ca^{53}_{20}}");
tex =
new TLatex(0.0311,0.078064,
"C_{Sc^{52}_{21}}");
tex =
new TLatex(0.1337,0.010208,
"C_{Ti^{52}_{22}}");
tex =
new TLatex(1.54158,0.00229644,
"C_{V^{52}_{23}}");
tex =
new TLatex(25.0522,0.00135315,
"C_{Cr^{52}_{24}}");
tex =
new TLatex(0.1056,0.5429,
"C_{Sc^{53}_{21}}");
tex =
new TLatex(0.411,0.1044,
"C_{Ti^{53}_{22}}");
tex =
new TLatex(2.93358,0.0139452,
"C_{V^{53}_{23}}");
tex =
new TLatex(10.6235,0.00440327,
"C_{Cr^{53}_{24}}");
tex =
new TLatex(15.6288,0.782976,
"C_{Sr^{78}_{38}}");
tex =
new TLatex(20.2162,0.141779,
"C_{Rb^{78}_{37}}");
tex =
new TLatex(32.4055,0.0302101,
"C_{Kr^{78}_{36}}");
tex =
new TLatex(117.,1.52,
"C_{X}=#frac{N_{X}(t)}{N_{0}(t=0)}=#sum_{j}\
#alpha_{j}e^{-#lambda_{j}t}");
arrow->SetFillStyle(1001);
arrow =
new TArrow(0.0543138,0.0586338,0.136594,0.0146596,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(0.31528,0.00722919,1.29852,0.00306079,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(4.13457,0.00201942,22.5047,0.00155182,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(0.0543138,0.761893,0.0928479,0.67253,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(0.238566,0.375717,0.416662,0.154727,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(0.653714,0.074215,2.41863,0.0213142,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(5.58256,0.00953882,10.6235,0.00629343,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(22.0271,0.601935,22.9926,0.218812,0.02,
">");
arrow->SetFillStyle(1001);
arrow =
new TArrow(27.2962,0.102084,36.8557,0.045686,0.02,
">");
arrow->SetFillStyle(1001);
}
{
if (sol) {
if (i==0) {
if (func) {
"Concentration of C14 derived elements;time[s];Ni/N0(C14)");
"Concentration of elements derived from mixture Ca53+Sr78;\
time[s];Ni/N0(Ca53)");
}
}
}
}
}
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Draw all kinds of Arrows.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void SetTitle(const char *title="")
Set function title if title has the form "fffffff;xxxx;yyyy", it is assumed that the function title i...
void SetRange(Double_t tmin=0., Double_t tmax=0.)
TGeoElementRN * GetElement() const
The manager class for any TGeo geometry.
TGeoElementTable * GetElementTable()
Returns material table. Creates it if not existing.
virtual void Print(const Option_t *option="") const
print characteristics of this material
virtual void Print(const Option_t *option="") const
print characteristics of this material
virtual void FillMaterialEvolution(TObjArray *population, Double_t precision=0.001)
Fills a user array with all the elements deriving from the possible decay of the top elements composi...
virtual TGeoMaterial * DecayMaterial(Double_t time, Double_t precision=0.001)
Create the mixture representing the decay product of this material at a given time.
To draw Mathematical Formula.
virtual const char * GetName() const
Returns name of object.
Int_t GetEntriesFast() const
virtual void Clear(Option_t *option="")
Remove all objects from the array.
TObject * At(Int_t idx) const
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
void SetLogy(Int_t value=1) override
Set Lin/Log scale for Y.
TObject * FindObject(const char *name) const override
Search if object named name is inside this pad or in pads inside this pad.
void SetLogx(Int_t value=1) override
Set Lin/Log scale for X.
const char * GetName() const override
Returns name of object.
A Pave (see TPave) with text, lines or/and boxes inside.
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
Add a new Text line to this pavetext at given coordinates.
virtual void Draw(Option_t *option="")
Draw this pavetext with its current attributes.