Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4AtomicTransitionManager.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//
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 G4AtomicShell,
41// G4FluoTransition, G4AugerTransition objects.
42// -------------------------------------------------------------------
43
44#ifndef G4AtomicTransitionManager_h
45#define G4AtomicTransitionManager_h 1
46
47#include "G4ShellData.hh"
48#include "G4FluoTransition.hh"
49#include "G4AugerTransition.hh"
50#include "G4AtomicShell.hh"
51#include <vector>
52#include "globals.hh"
53
54class G4AugerData;
55
56// This class is a singleton
58
59public:
60 /// The only way to get an instance of this class is to call the
61 /// function Instance()
63
64 /// needs to be called once from other code before start of run
65 void Initialise();
66
67 /// Z is the atomic number of the element, shellIndex is the
68 /// index (in EADL) of the shell
69 G4AtomicShell* 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
74 /// the vacancy is, the radiative transition that can happen (originating
75 /// shell, energy, probability)
76 const G4FluoTransition* ReachableShell(G4int Z, size_t shellIndex) const;
77
78 /// This function gives, upon Z and the Index of the initial shell where
79 /// the vacancy is, the NON-radiative transition that can happen with
80 /// originating shell for the transition, and the data for the possible
81 /// auger electrons emitted (originating vacancy, energy amnd probability)
82 const G4AugerTransition* ReachableAugerShell(G4int Z, G4int shellIndex) const;
83
84 /// This function returns the number of shells of the element
85 /// whose atomic number is Z
87
88 /// This function returns the number of those shells of the element
89 /// whose atomic number is Z which are reachable through a radiative
90 /// transition
92
93 /// This function returns the number of possible NON-radiative transitions
94 /// for the atom with atomic number Z i.e. the number of shell in wich
95 /// a vacancy can be filled by a NON-radiative transition
97
98 /// Gives the sum of the probabilities of radiative transition towards the
99 /// shell whose index is shellIndex
100 G4double
101 TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex) const;
102
103 /// Gives the sum of the probabilities of non radiative transition from the
104 /// shell whose index is shellIndex
105 G4double
106 TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex) const;
107
108 /// Verbosity control
109 void SetVerboseLevel(G4int vl) {verboseLevel = vl;};
110 G4int GetVerboseLevel(){return verboseLevel;};
111
112private:
113 explicit G4AtomicTransitionManager();
114
116
117 // Hide copy constructor and assignment operator
120
121 static G4AtomicTransitionManager* instance;
122 // since Augereffect data r stored as a table in G4AugerData, we have
123 // here a pointer to an element of that class itself.
124 G4AugerData* augerData;
125
126 // the first element of the map is the atomic number Z.
127 // the second element is a vector of G4AtomicShell*.
128 std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> > shellTable;
129
130 // the first element of the map is the atomic number Z.
131 // the second element is a vector of G4AtomicTransition*.
132 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> > transitionTable;
133
134 // Minimum and maximum Z in EADL table containing identities and binding
135 // energies of shells
136 G4int zMin = 1;
137 G4int zMax = 104;
138
139 // Minimum and maximum Z in EADL table containing identities, transition
140 // energies and transition probabilities of shells
141 G4int infTableLimit = 6;
142 G4int supTableLimit = 104;
143 G4int verboseLevel;
144 G4bool isInitialized;
145};
146
147#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
G4int NumberOfReachableShells(G4int Z) const
G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex) const
const G4AugerTransition * ReachableAugerShell(G4int Z, G4int shellIndex) const
void SetVerboseLevel(G4int vl)
Verbosity control.
G4AtomicShell * Shell(G4int Z, size_t shellIndex) const
const G4FluoTransition * ReachableShell(G4int Z, size_t shellIndex) const
void Initialise()
needs to be called once from other code before start of run
G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex) const
static G4AtomicTransitionManager * Instance()
G4int NumberOfReachableAugerShells(G4int Z) const