G4AtomicTransitionManager.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id: G4AtomicTransitionManager.hh,v 1.2 ????
00028 // GEANT4 tag $Name: not supported by cvs2svn $
00029 //
00030 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
00031 //          Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
00032 //
00033 // History:
00034 // -----------
00035 //  
00036 //  16 Sept 2001 EG  Modified according to a design iteration in the 
00037 //                   LowEnergy category
00038 //
00039 // -------------------------------------------------------------------
00040 
00041 // Class description:
00042 // Low Energy Electromagnetic Physics: create or fills and manages G4AtomicShell, 
00043 // G4FluoTransition, G4AugerTransition objects.
00044 // Further documentation available from http://www.ge.infn.it/geant4/lowE
00045 
00046 // -------------------------------------------------------------------
00047 
00048 #ifndef G4AtomicTransitionManager_h
00049 #define G4AtomicTransitionManager_h 1
00050 
00051 #include "G4ShellData.hh"
00052 #include "G4FluoData.hh"
00053 #include "G4AugerData.hh"
00054 #include "G4FluoTransition.hh"
00055 #include "G4AtomicShell.hh"
00056 // #include "g4std/map"
00057 #include <vector>
00058 #include "globals.hh"
00059 
00060 // This class is a singleton
00061 class G4AtomicTransitionManager {
00062 
00063 public: 
00064 
00065   // The only way to get an instance of this class is to call the 
00066   // function Instance() 
00067   static G4AtomicTransitionManager* Instance();
00068  
00069   // Z is the atomic number of the element, shellIndex is the 
00070   // index (in EADL) of the shell
00071   G4AtomicShell* Shell(G4int Z, size_t shellIndex) const;
00072    
00073   // Z is the atomic number of the element, shellIndex is the 
00074   // index (in EADL) of the final shell for the transition
00075   // This function gives, upon Z and the Index of the initial shell where te vacancy is, 
00076   // the radiative transition that can happen (originating shell, energy, probability)
00077   const G4FluoTransition* ReachableShell(G4int Z, size_t shellIndex) const ;
00078 
00079   // This function gives, upon Z and the Index of the initial shell where te vacancy is, 
00080   // the NON-radiative transition that can happen with originating shell for the transition, and the
00081   // data for the possible auger electrons emitted (originating vacancy, energy amnd probability)
00082   
00083   const G4AugerTransition* ReachableAugerShell(G4int Z, G4int shellIndex) const ;
00084   
00085   // This function returns the number of shells of the element
00086   // whose atomic number is Z
00087   G4int NumberOfShells(G4int Z) const;
00088   
00089   // This function returns the number of those shells of the element
00090   // whose atomic number is Z which are reachable through a radiative
00091   // transition
00092   
00093   // This function returns the number of possible radiative transitions for the atom with atomic number Z
00094   // i.e. the number of shell in wich a vacancy can be filled with a radiative transition 
00095   
00096   G4int NumberOfReachableShells(G4int Z)const ;
00097 
00098 // This function returns the number of possible NON-radiative transitions for the atom with atomic number Z
00099 // i.e. the number of shell in wich a vacancy can be filled by a NON-radiative transition 
00100 
00101   G4int NumberOfReachableAugerShells(G4int Z)const ;
00102 
00103   // Gives the sum of the probabilities of radiative transition towards the
00104   // shell whose index is shellIndex
00105   G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex);
00106   
00107   // Gives the sum of the probabilities of non radiative transition from the
00108   // shell whose index is shellIndex
00109   G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex);
00110    
00111 protected:
00112 
00113   G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100, 
00114                             G4int limitInfTable = 6, G4int limitSupTable=100 );
00115   ~G4AtomicTransitionManager();
00116 
00117 private:
00118   // Hide copy constructor and assignment operator 
00119   G4AtomicTransitionManager& operator=(const G4AtomicTransitionManager& right);
00120   G4AtomicTransitionManager(const G4AtomicTransitionManager&);
00121  
00122   static G4AtomicTransitionManager* instance;
00123   
00124   // the first element of the map is the atomic number Z.
00125   // the second element is a vector of G4AtomicShell*.
00126   std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> > shellTable;
00127   
00128   // the first element of the map is the atomic number Z.
00129   // the second element is a vector of G4AtomicTransition*.
00130   std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> > transitionTable;
00131  
00132   // since Augereffect data r stored as a table in G4AugerData, we have here a pointer to an element of that class itself.
00133 
00134   G4AugerData* augerData;
00135 
00136   // Minimum and maximum Z in EADL table containing identities and binding
00137   // energies of shells
00138   G4int zMin;
00139   G4int zMax;
00140   
00141   // Minimum and maximum Z in EADL table containing identities, transition 
00142   // energies and transition probabilities of shells
00143   G4int infTableLimit;
00144   G4int supTableLimit;
00145  
00146  
00147 };
00148 
00149 #endif

Generated on Mon May 27 17:47:41 2013 for Geant4 by  doxygen 1.4.7