Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4RDAugerData.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // $Id: G4RDAugerData.hh
27 // GEANT4 tag $Name: geant4-09-01-ref-00 $
28 //
29 // Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
30 //
31 // History:
32 // -----------
33 // 2 June 2002 First committed to cvs
34 //
35 // -------------------------------------------------------------------
36 
37 // Class description:
38 // Low Energy Electromagnetic Physics
39 // This Class loads and stores all the information of auger effect (shellIds,
40 // probabilities and energies of the electrons emitted)
41 // Further documentation available from http://www.ge.infn.it/geant4/lowE
42 
43 // -------------------------------------------------------------------
44 
45 #ifndef G4RDAUGERDATA_HH
46 #define G4RDAUGERDATA_HH 1
47 
48 #include "globals.hh"
49 #include <vector>
50 #include <map>
51 #include "G4RDAugerTransition.hh"
52 
53 class G4DataVector;
54 
56 {
57 public:
58 
59  G4RDAugerData();
60 
62 
63  // The method returns the number of shells in wich a
64  // vacancy can be filled by a NON-radiative transition, given the atomic number
65  size_t NumberOfVacancies(G4int Z) const;
66 
67  // Given the index of the vacancy (and the atomic number Z) returns its identity
68  G4int VacancyId(G4int Z, G4int vacancyIndex) const;
69 
70  // Given the index of a vacancy in the atom with the atomc number Z, returns the number of
71  //shells starting from wich an electron can fill the vacancy
72  size_t NumberOfTransitions(G4int Z, G4int vacancyIndex) const;
73 
74  // Given the atomic number Z, the Index of the initial vacancy shell
75  // and the index of the starting shell for the
76  // transition, returns the identity of the shell originating the electron transition
77  G4int StartShellId(G4int Z, G4int initialVacancyIndex, G4int transitionShellIndex) const;
78 
79  // Given the atomic number , the indexes of the starting, the auger originating shell,
80  // and the transition shell Id, returns the transition energy
81  G4double StartShellEnergy(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const;
82 
83  // Given the atomic number, the index of the starting shell, the auger originating shells,
84  // and the transition shell Id, returns the transition probability
85  G4double StartShellProb(G4int Z, G4int vacancyIndex,G4int transitionId,G4int augerIndex) const;
86 
87  // Given the atomic number, the index of the starting vacancy shell and the transition shell Id,
88  // returns the number of shells wich an auger electron can come from.
89  size_t NumberOfAuger(G4int Z, G4int initIndex, G4int vacancyId) const;
90 
91  // Given the atomic number, th index of the starting and the auger originating shell,
92  // and the transition shell Id, returns the ager originating shell Id
93  size_t AugerShellId(G4int Z, G4int vacancyIndex, G4int transId, G4int augerIndex) const;
94 
95  std::vector<G4RDAugerTransition> LoadData(G4int Z);
96 
98 
99  void PrintData(G4int Z);
100 
101 
102 
103  // Given the atomic number and the vacancy intial shell index returns
104  // the AugerTransition object related to that shell
105 
106  G4RDAugerTransition* GetAugerTransition(G4int Z, G4int vacancyShellIndex);
107 
108  // Given the atomic number returns a vector of possible AugerTransition objects
109  std::vector<G4RDAugerTransition>* GetAugerTransitions(G4int Z);
110 
111 private:
112 
113  // std::map<G4int,G4DataVector*,std::less<G4int> > idMap;
114 
115  typedef std::map<G4int,std::vector<G4RDAugerTransition>,std::less<G4int> > trans_Table;
116  trans_Table augerTransitionTable;
117 
118  /*
119  std::map<G4int,std::map<G4Int,G4DataVector*,std::less<G4int> >,std::less<G4int> > transProbabilityMap;
120  std::map<G4int,std::map<G4Int,G4DataVector*,std::less<G4int> >,std::less<G4int> > transAugerIdMap;
121  */
122 
123  std::vector<G4int> nInitShells;
124  std::vector<G4int> numberOfVacancies;
125 
126 };
127 
128 #endif
129 
130 
131 
132 
133 
G4double StartShellProb(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const
G4double StartShellEnergy(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const
G4int StartShellId(G4int Z, G4int initialVacancyIndex, G4int transitionShellIndex) const
size_t AugerShellId(G4int Z, G4int vacancyIndex, G4int transId, G4int augerIndex) const
int G4int
Definition: G4Types.hh:78
std::vector< G4RDAugerTransition > * GetAugerTransitions(G4int Z)
std::vector< G4RDAugerTransition > LoadData(G4int Z)
size_t NumberOfTransitions(G4int Z, G4int vacancyIndex) const
G4int VacancyId(G4int Z, G4int vacancyIndex) const
G4RDAugerTransition * GetAugerTransition(G4int Z, G4int vacancyShellIndex)
size_t NumberOfAuger(G4int Z, G4int initIndex, G4int vacancyId) const
size_t NumberOfVacancies(G4int Z) const
double G4double
Definition: G4Types.hh:76
void BuildAugerTransitionTable()
void PrintData(G4int Z)