Class to get randomly cascades of gammas on the basis of a level scheme. More...
#include <BaseGEM.h>
Public Types | |
enum | EDirection { kDown, kUp } |
Public Member Functions | |
BaseGEM () | |
ClassDef (BaseGEM, 0) | |
Fill the histogram with a random distribution corresponding to the first selected Link. More... | |
virtual void | Clear (Option_t *opt="all") |
Clear everything. More... | |
virtual Int_t | DoCascade (TSeqCollection &cascade, Option_t *opt="") |
cascade simulation More... | |
virtual Int_t | DoCascade (TSeqCollection &cascade, TSeqCollection &directions, Option_t *opt="") |
cascade simulation with angular distributions More... | |
virtual Int_t | DoCascade (TSeqCollection &cas, Int_t from, Option_t *opt="") |
cascade simulation with the 'entry point' given by the user More... | |
virtual Int_t | DoCascade (TSeqCollection &cas, TSeqCollection &directions, Int_t from, Option_t *opt="") |
const TObjArray & | GetFeedings () const |
To get all the entry point in this level scheme with their intensities. More... | |
const LevelScheme * | GetLS () const |
To set the intensity of the lowest link of the level scheme. More... | |
virtual Int_t | Import (const Char_t *, Option_t *opt="152DY") |
Load the level scheme and init the Monte-Carlo. More... | |
virtual void | SetDirection (EDirection d=kDown) |
To determine the order of the simulate cascade. More... | |
Bool_t | SetParameter (const char *name, Int_t value) |
to set some parameters that modify the way the simulation is performed. return false is the parameter is not known More... | |
Bool_t | SetParameter (const char *name, Double_t value) |
virtual | ~BaseGEM () |
Protected Member Functions | |
virtual void | DoAngularDistribution (Int_t which_gamma, TLorentzVector &, Bool_t forceiso=false) |
virtual void | InitRandom () |
to be called to init the random generator More... | |
Protected Attributes | |
Int_t | fADType |
Double_t | fCutLifeTime |
Int_t | fDirection |
Double_t | fMinEnergyFactor |
Double_t | fSigma |
Class to get randomly cascades of gammas on the basis of a level scheme.
A BaseGEM wraps a LevelScheme in order to produce randomly cascades of gamma-rays on the basis of the level scheme. BE SURE OF YOUR LEVEL SCHEME BEFORE RUNNING IT !!
The first version of the BaseGEM class (Release 0.2 and 0.4, svn revision < 188 ) takes into account the lateral feeding ONLY to stop the random process. A side effect of such a 'simple' treatment has been found by Gabriel and gives spectra with relative intensities between peaks that are not what is expected from the level scheme.
To properly simulate cascades of gamma-rays, a new implementation has been developed. It DOES NOT change anything if you use BaseGEM (public interface), except the order of the links in the produced cascade which now by default goes from the top to the bottom contrary to the previous implementation. If your program needs absolutely the previous behavior, it is possible just by calling SetDirection(kUp). If you have developed a class that inherits from BaseGEM, there are important modifications of the protected interface. If you have troubles, please asked (agata-AT-ipnl.in2p3.fr) to find solutions to help you resolving them.
In the new implementation, once the level scheme has been initialised with Import(), the whole level scheme is processed to determine the 'entry points' i.e. the lateral feedings with an intensity > 0. A list of Gw::Link is produced and is available through GetFeedings(). The random procedure consists then in:
Here is the illustration with a 'factice' level scheme and the produced spectra (sum, and two gated to show the correlation are reproduced).
(Release 0.2 and 0.4, svn revision < 188 )
The first step is to randomly select a gamma-ray on the basis on the relative intensities of all gamma-rays in the level scheme. One cannot starts from the bottom of the level scheme for several reasons:
Once a gamma-ray has been selected, the path down and up in the level scheme is generated based on the relative intensities of the links feeding (desexciting) the initial (final) link's level. This generator takes into account lateral feeding from the continuum or the lost of intensity due to isomeric or converted gammas.
For each level, a lateral feeding is calculated as the difference between all the intensity that arrives on a level compared to all the intensity that leaves a level. It could be then from 0 (no lateral feeding) to 100 % (the highest discret gamma in the cascade).
If in the random process up in the level scheme a lateral feeding is found, the process random stops.
For each level, a probability to decay to something else that a gamma in the level scheme is calculated as the difference between all the intensity that leave a level compare to all the intensity that arrive on a level. It goes then from 0 (the next gamma belongs to the level scheme) to 100% (last level, decay by electron, long life time isomeric state ...). The Monte-Carlo process down stops when one of this situation is reached.
fRandUp (fRandDown) is a TObjArray.
With fRand0, all gamma-rays of the level scheme are associated to a unique integer corresponding to their slot position in the underlying TObjArray.
Concerning fRandUp (fRandDown), each slot number i corresponds to a RandObj in which is stored the list of links needed to go up (down) after the link labelled number i in fRand0. Besides storing a list of links, in each slot of fRandUp (fRandDown) is stored a collection of TObject and their uniqueID (see ROOT TObject) are set to establish a correspondance with a link in the fRand0 TObjArray. Those objects are stored in a TList fTmp that owms tehm and thus will delete them. }