ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4RDAtomicTransitionManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4RDAtomicTransitionManager.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 //
28 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
29 // Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
30 //
31 // History:
32 // -----------
33 //
34 // 16 Sept 2001 EG Modified according to a design iteration in the
35 // LowEnergy category
36 //
37 // -------------------------------------------------------------------
38 
39 // Class description:
40 // Low Energy Electromagnetic Physics: create or fills and manages G4RDAtomicShell,
41 // G4RDFluoTransition, G4RDAugerTransition objects.
42 // Further documentation available from http://www.ge.infn.it/geant4/lowE
43 
44 // -------------------------------------------------------------------
45 
46 #ifndef G4RDAtomicTransitionManager_h
47 #define G4RDAtomicTransitionManager_h 1
48 
49 #include "G4RDShellData.hh"
50 #include "G4RDFluoData.hh"
51 #include "G4RDAugerData.hh"
52 #include "G4RDFluoTransition.hh"
53 #include "G4RDAtomicShell.hh"
54 // #include "g4std/map"
55 #include <vector>
56 #include "globals.hh"
57 
58 // This class is a singleton
60 
61 public:
62 
63  // The only way to get an instance of this class is to call the
64  // function Instance()
66 
67  // Z is the atomic number of the element, shellIndex is the
68  // index (in EADL) of the shell
69  G4RDAtomicShell* Shell(G4int Z, size_t shellIndex) const;
70 
71  // Z is the atomic number of the element, shellIndex is the
72  // index (in EADL) of the final shell for the transition
73  // This function gives, upon Z and the Index of the initial shell where te vacancy is,
74  // the radiative transition that can happen (originating shell, energy, probability)
75  const G4RDFluoTransition* ReachableShell(G4int Z, size_t shellIndex) const ;
76 
77  // This function gives, upon Z and the Index of the initial shell where te vacancy is,
78  // the NON-radiative transition that can happen with originating shell for the transition, and the
79  // data for the possible auger electrons emitted (originating vacancy, energy amnd probability)
80 
81  const G4RDAugerTransition* ReachableAugerShell(G4int Z, G4int shellIndex) const ;
82 
83  // This function returns the number of shells of the element
84  // whose atomic number is Z
85  G4int NumberOfShells(G4int Z) const;
86 
87  // This function returns the number of those shells of the element
88  // whose atomic number is Z which are reachable through a radiative
89  // transition
90 
91  // This function returns the number of possible radiative transitions for the atom with atomic number Z
92  // i.e. the number of shell in wich a vacancy can be filled with a radiative transition
93 
95 
96 // This function returns the number of possible NON-radiative transitions for the atom with atomic number Z
97 // i.e. the number of shell in wich a vacancy can be filled by a NON-radiative transition
98 
100 
101  // Gives the sum of the probabilities of radiative transition towards the
102  // shell whose index is shellIndex
103  G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex);
104 
105  // Gives the sum of the probabilities of non radiative transition from the
106  // shell whose index is shellIndex
108 
109 protected:
110 
111  G4RDAtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100,
112  G4int limitInfTable = 6, G4int limitSupTable=100 );
114 
115 private:
116  // Hide copy constructor and assignment operator
119 
121 
122  // the first element of the map is the atomic number Z.
123  // the second element is a vector of G4RDAtomicShell*.
124  std::map<G4int,std::vector<G4RDAtomicShell*>,std::less<G4int> > shellTable;
125 
126  // the first element of the map is the atomic number Z.
127  // the second element is a vector of G4AtomicTransition*.
128  std::map<G4int,std::vector<G4RDFluoTransition*>,std::less<G4int> > transitionTable;
129 
130  // since Augereffect data r stored as a table in G4RDAugerData, we have here a pointer to an element of that class itself.
131 
133 
134  // Minimum and maximum Z in EADL table containing identities and binding
135  // energies of shells
138 
139  // Minimum and maximum Z in EADL table containing identities, transition
140  // energies and transition probabilities of shells
143 
144 
145 };
146 
147 #endif