ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4AugerData.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4AugerData.hh
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 //
27 // Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
28 //
29 // History:
30 // -----------
31 // 2 June 2002 First committed to cvs
32 //
33 // -------------------------------------------------------------------
34 
35 // Class description:
36 // Low Energy Electromagnetic Physics
37 // This Class loads and stores all the information of auger effect (shellIds,
38 // probabilities and energies of the electrons emitted)
39 // Further documentation available from http://www.ge.infn.it/geant4/lowE
40 
41 // -------------------------------------------------------------------
42 
43 #ifndef G4AUGERDATA_HH
44 #define G4AUGERDATA_HH 1
45 
46 #include "globals.hh"
47 #include <vector>
48 #include <map>
49 #include "G4AugerTransition.hh"
50 
51 class G4DataVector;
52 
54 {
55 public:
56 
57  G4AugerData();
58 
59  ~G4AugerData();
60 
61  // The method returns the number of shells in wich a
62  // vacancy can be filled by a NON-radiative transition, given the atomic number
63  size_t NumberOfVacancies(G4int Z) const;
64 
65  // Given the index of the vacancy (and the atomic number Z) returns its identity
66  G4int VacancyId(G4int Z, G4int vacancyIndex) const;
67 
68  // Given the index of a vacancy in the atom with the atomc number Z, returns the number of
69  //shells starting from wich an electron can fill the vacancy
70  size_t NumberOfTransitions(G4int Z, G4int vacancyIndex) const;
71 
72  // Given the atomic number Z, the Index of the initial vacancy shell
73  // and the index of the starting shell for the
74  // transition, returns the identity of the shell originating the electron transition
75  G4int StartShellId(G4int Z, G4int initialVacancyIndex, G4int transitionShellIndex) const;
76 
77  // Given the atomic number , the indexes of the starting, the auger originating shell,
78  // and the transition shell Id, returns the transition energy
79  G4double StartShellEnergy(G4int Z, G4int vacancyIndex, G4int transitionId, G4int augerIndex) const;
80 
81  // Given the atomic number, the index of the starting shell, the auger originating shells,
82  // and the transition shell Id, returns the transition probability
83  G4double StartShellProb(G4int Z, G4int vacancyIndex,G4int transitionId,G4int augerIndex) const;
84 
85  // Given the atomic number, the index of the starting vacancy shell and the transition shell Id,
86  // returns the number of shells wich an auger electron can come from.
87  size_t NumberOfAuger(G4int Z, G4int initIndex, G4int vacancyId) const;
88 
89  // Given the atomic number, th index of the starting and the auger originating shell,
90  // and the transition shell Id, returns the ager originating shell Id
91  size_t AugerShellId(G4int Z, G4int vacancyIndex, G4int transId, G4int augerIndex) const;
92 
93  std::vector<G4AugerTransition> LoadData(G4int Z);
94 
96 
97  void PrintData(G4int Z);
98 
99 
100 
101  // Given the atomic number and the vacancy intial shell index returns
102  // the AugerTransition object related to that shell
103 
104  G4AugerTransition* GetAugerTransition(G4int Z, G4int vacancyShellIndex);
105 
106  // Given the atomic number returns a vector of possible AugerTransition objects
107  std::vector<G4AugerTransition>* GetAugerTransitions(G4int Z);
108 
109 private:
110 
111  // std::map<G4int,G4DataVector*,std::less<G4int> > idMap;
112 
113  typedef std::map<G4int,std::vector<G4AugerTransition>,std::less<G4int> > trans_Table;
115 
116  /*
117  std::map<G4int,std::map<G4Int,G4DataVector*,std::less<G4int> >,std::less<G4int> > transProbabilityMap;
118  std::map<G4int,std::map<G4Int,G4DataVector*,std::less<G4int> >,std::less<G4int> > transAugerIdMap;
119  */
120 
121  std::vector<G4int> nInitShells;
122  std::vector<G4int> numberOfVacancies;
123 
124 };
125 
126 #endif
127 
128 
129 
130 
131