GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Gw::BaseGEM Class Reference

Class to get randomly cascades of gammas on the basis of a level scheme. More...

#include <BaseGEM.h>

Inheritance diagram for Gw::BaseGEM:

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 LevelSchemeGetLS () 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
 

Detailed Description

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:

  1. a random selection of one of the feeding link on the basis of the calculated intensities (not added to the cascade)
  2. from this starting point, the cascade down is determined.
  3. if kUp has been set, the cascade is inverted.

Here is the illustration with a 'factice' level scheme and the produced spectra (sum, and two gated to show the correlation are reproduced).

simu_ags.gif
simu1_sp1.gif
Deprecated:

(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:

  • there may be several gammas feeding the ground state
  • there may be several "ground state" corresponding to levels that no decay by gamma
  • there may be some isomeric states .. in this case we can simulate a lost by giving a smaller intensity below the isomeric state
  • there may be strongly converted gamma rays at the beginning of the level scheme

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.

Todo:
initialisation with a existing level scheme by copying it (copy constructor for level scheme)
Todo:
Check out what happens when a link is not bind to two levels
Remarks
{ for the developers:

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. }

Author
Olivier Stezowski

Definition at line 107 of file BaseGEM.h.


The documentation for this class was generated from the following files: