We have mentioned that volumes are the building blocks for geometry, but they describe real objects having well defined properties. In fact, there are just two of them: the material they are made from and their geometrical shape
. These have to be created before creating the volume itself, so we will describe the bits and pieces needed for making the geometry before moving to an architectural point of view.
As far as materials are concerned, they represent the physical properties of the solid from which a volume is made. Materials are just a support for the data that has to be provided to the tracking engine that uses this geometry package. Due to this fact, the TGeoMaterial class is more like a thin data structure needed for building the corresponding native materials of the Monte-Carlo tracking code that uses TGeo.
In order to make easier material and mixture creation, one can use the pre-built table of elements owned by TGeoManager class:
Materials made of single elements can be defined by their atomic mass (A
), charge (Z
) and density (rho
). One can also create a material by specifying the element that it is made of. Optionally the radiation and absorption lengths can be also provided; otherwise they can be computed on-demand [G3
]. The class representing them is TGeoMaterial:
Any material or derived class is automatically indexed after creation. The assigned index is corresponding to the last entry in the list of materials owned by TGeoManager class. This can be changed using the TGeoMaterial::SetIndex()
method, however it is not recommended while using the geometry package interfaced with a transport MC. Radiation and absorption lengths can be set using:
radlen:
radiation length. If radlen<=0
the value is computed using GSMATE algorithm in GEANT3intlen:
absorption lengthMaterial state, temperature and pressure can be changed via setters. Another material property is transparency. It can be defined and used while viewing the geometry with OpenGL.
transparency:
between 0 (opaque default) to 100 (fully transparent)One can attach to a material a user-defined object storing Cerenkov properties. Another hook for material shading properties is currently not in use. Mixtures are materials made of several elements. They are represented by the class TGeoMixture, deriving from TGeoMaterial and defined by their number of components and the density:
Elements have to be further defined one by one:
or:
iel:
index of the element[0,nel-1]
a
and z:
the atomic mass and chargeweight:
proportion by mass of the elementsnatoms
: number of atoms of the element in the molecule making the mixtureThe radiation length is automatically computed when all elements are defined. Since tracking MC provide several other ways to create materials/mixtures, the materials classes are likely to evolve as the interfaces to these engines are being developed. Generally in the process of tracking material properties are not enough and more specific media properties have to be defined. These highly depend on the MC performing tracking and sometimes allow the definition of different media properties (e.g. energy or range cuts) for the same material.
A new class TGeoElementRN was introduced in this version to provide support for radioactive nuclides and their decays. A database of 3162 radionuclides can be loaded on demand via the table of elements (TGeoElementTable class). One can make then materials/mixtures based on these radionuclides and use them in a geometry
One can make materials or mixtures from radionuclides:
The following properties of radionuclides can be currently accessed via getters in the TGeoElementRN class:
Atomic number and charge (from the base class TGeoElement)
ISO
)ENDF=10000*Z+100*A+ISO
MeV
]MeV
]s
]TGeoElementRN::GetTitle()
TGeoElementRN::GetDecays()
The radioactive decays of a radionuclide are represented by the class TGeoDecayChannel and they are stored in a TObjArray. Decay provides:
Q
value for the decay [GeV
]Radionuclides are linked one to each other via their decays, until the last element in the decay chain which must be stable. One can iterate decay chains using the iterator TGeoElemIter:
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 next two methods:
To use this method, one has to provide an empty TObjArray object that will be filled with all elements coming from the decay chain of the initial radionuclides contained by the material/mixture. The precision represent the cumulative branching ratio for which decay products are still considered.
The population list may contain stable elements as well as radionuclides, depending on the initial elements. To test if an element is a radionuclide:
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.
A demo macro for radioactive material features is $ROOTSYS/tutorials/visualisation/geom/RadioNuclides.C
It demonstrates also the decay of a mixture made of radionuclides.
The class TGeoMedium describes tracking media properties. This has a pointer to a material and the additional data members representing the properties related to tracking.
name:
name assigned to the mediummat:
pointer to a materialparams:
array of additional parametersAnother constructor allows effectively defining tracking parameters in GEANT3 style:
This constructor is reserved for creating tracking media from the VMC interface [...]:
numed:
user-defined medium indeximat:
unique ID of the materialothers:
see G3 documentationLooking at our simple world example, one can see that for creating volumes one needs to create tracking media before. The way to proceed for those not interested in performing tracking with external MC's is to define and use only one dummy tracking medium
as in the example (or a NULL
pointer).
The TGeoManager class contains the API for accessing and handling defined materials:
Classes | |
class | TGeoElement |
Base class for chemical elements. More... | |
class | TGeoMaterial |
Base class describing materials. More... | |
class | TGeoMedium |
Media are used to store properties related to tracking and which are useful only when using geometry with a particle transport MC package (via VMC). More... | |
class | TGeoMixture |
Mixtures of elements. More... | |