Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
28// GEANT4 tag $Name: not supported by cvs2svn $
29//
30// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
31// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
32//
33// History:
34// -----------
35//
36// 16 Sept 2001 EG Modified according to a design iteration in the
37// LowEnergy category
38//
39// -------------------------------------------------------------------
40
41// Class description:
42// Low Energy Electromagnetic Physics: create or fills and manages G4AtomicShell,
43// G4FluoTransition, G4AugerTransition objects.
44// Further documentation available from http://www.ge.infn.it/geant4/lowE
45
46// -------------------------------------------------------------------
47
48#ifndef G4AtomicTransitionManager_h
49#define G4AtomicTransitionManager_h 1
50
51#include "G4ShellData.hh"
52#include "G4FluoData.hh"
53#include "G4AugerData.hh"
54#include "G4FluoTransition.hh"
55#include "G4AtomicShell.hh"
56// #include "g4std/map"
57#include <vector>
58#include "globals.hh"
59
60// This class is a singleton
62
63public:
64
65 // The only way to get an instance of this class is to call the
66 // function Instance()
68
69 // Z is the atomic number of the element, shellIndex is the
70 // index (in EADL) of the shell
71 G4AtomicShell* Shell(G4int Z, size_t shellIndex) const;
72
73 // Z is the atomic number of the element, shellIndex is the
74 // index (in EADL) of the final shell for the transition
75 // This function gives, upon Z and the Index of the initial shell where te vacancy is,
76 // the radiative transition that can happen (originating shell, energy, probability)
77 const G4FluoTransition* ReachableShell(G4int Z, size_t shellIndex) const ;
78
79 // This function gives, upon Z and the Index of the initial shell where te vacancy is,
80 // the NON-radiative transition that can happen with originating shell for the transition, and the
81 // data for the possible auger electrons emitted (originating vacancy, energy amnd probability)
82
83 const G4AugerTransition* ReachableAugerShell(G4int Z, G4int shellIndex) const ;
84
85 // This function returns the number of shells of the element
86 // whose atomic number is Z
87 G4int NumberOfShells(G4int Z) const;
88
89 // This function returns the number of those shells of the element
90 // whose atomic number is Z which are reachable through a radiative
91 // transition
92
93 // This function returns the number of possible radiative transitions for the atom with atomic number Z
94 // i.e. the number of shell in wich a vacancy can be filled with a radiative transition
95
97
98// This function returns the number of possible NON-radiative transitions for the atom with atomic number Z
99// i.e. the number of shell in wich a vacancy can be filled by a NON-radiative transition
100
102
103 // Gives the sum of the probabilities of radiative transition towards the
104 // shell whose index is shellIndex
106
107 // Gives the sum of the probabilities of non radiative transition from the
108 // shell whose index is shellIndex
110
111protected:
112
113 G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100,
114 G4int limitInfTable = 6, G4int limitSupTable=100 );
116
117private:
118 // Hide copy constructor and assignment operator
121
122 static G4AtomicTransitionManager* instance;
123
124 // the first element of the map is the atomic number Z.
125 // the second element is a vector of G4AtomicShell*.
126 std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> > shellTable;
127
128 // the first element of the map is the atomic number Z.
129 // the second element is a vector of G4AtomicTransition*.
130 std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> > transitionTable;
131
132 // since Augereffect data r stored as a table in G4AugerData, we have here a pointer to an element of that class itself.
133
134 G4AugerData* augerData;
135
136 // Minimum and maximum Z in EADL table containing identities and binding
137 // energies of shells
138 G4int zMin;
139 G4int zMax;
140
141 // Minimum and maximum Z in EADL table containing identities, transition
142 // energies and transition probabilities of shells
143 G4int infTableLimit;
144 G4int supTableLimit;
145
146
147};
148
149#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4int NumberOfReachableShells(G4int Z) const
G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex)
G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex)
const G4AugerTransition * ReachableAugerShell(G4int Z, G4int shellIndex) const
G4AtomicShell * Shell(G4int Z, size_t shellIndex) const
const G4FluoTransition * ReachableShell(G4int Z, size_t shellIndex) const
static G4AtomicTransitionManager * Instance()
G4int NumberOfReachableAugerShells(G4int Z) const