ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4AtomicTransitionManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4AtomicTransitionManager.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 G4AtomicShell,
41 // G4FluoTransition, G4AugerTransition objects.
42 // Further documentation available from http://www.ge.infn.it/geant4/lowE
43 
44 // -------------------------------------------------------------------
45 
46 #ifndef G4AtomicTransitionManager_h
47 #define G4AtomicTransitionManager_h 1
48 
49 #include "G4ShellData.hh"
50 #include "G4FluoTransition.hh"
51 #include "G4AugerTransition.hh"
52 #include "G4AtomicShell.hh"
53 #include <vector>
54 #include "globals.hh"
55 
56 class G4AugerData;
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  // needs to be called once from other code before start of run
68  void Initialise();
69 
70  // Z is the atomic number of the element, shellIndex is the
71  // index (in EADL) of the shell
72  G4AtomicShell* Shell(G4int Z, size_t shellIndex) const;
73 
74  // Z is the atomic number of the element, shellIndex is the
75  // index (in EADL) of the final shell for the transition
76  // This function gives, upon Z and the Index of the initial shell where
77  // the vacancy is, the radiative transition that can happen (originating
78  // shell, energy, probability)
79  const G4FluoTransition* ReachableShell(G4int Z, size_t shellIndex) const;
80 
81  // This function gives, upon Z and the Index of the initial shell where
82  // the vacancy is, the NON-radiative transition that can happen with
83  // originating shell for the transition, and the data for the possible
84  // auger electrons emitted (originating vacancy, energy amnd probability)
85 
86  const G4AugerTransition* ReachableAugerShell(G4int Z, G4int shellIndex) const;
87 
88  // This function returns the number of shells of the element
89  // whose atomic number is Z
90  G4int NumberOfShells(G4int Z) const;
91 
92  // This function returns the number of those shells of the element
93  // whose atomic number is Z which are reachable through a radiative
94  // transition
96 
97  // This function returns the number of possible NON-radiative transitions
98  // for the atom with atomic number Z i.e. the number of shell in wich
99  // 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
105  G4double
106  TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex) const;
107 
108  // Gives the sum of the probabilities of non radiative transition from the
109  // shell whose index is shellIndex
110  G4double
111  TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex) const;
112 
113  // Verbosity control
116 
117 private:
118 
120 
122 
123  // Hide copy constructor and assignment operator
126 
128 
129  // the first element of the map is the atomic number Z.
130  // the second element is a vector of G4AtomicShell*.
131  std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> > shellTable;
132 
133  // the first element of the map is the atomic number Z.
134  // the second element is a vector of G4AtomicTransition*.
135  std::map<G4int,std::vector<G4FluoTransition*>,std::less<G4int> > transitionTable;
136 
137  // since Augereffect data r stored as a table in G4AugerData, we have
138  // here a pointer to an element of that class itself.
140 
141  // Minimum and maximum Z in EADL table containing identities and binding
142  // energies of shells
145 
146  // Minimum and maximum Z in EADL table containing identities, transition
147  // energies and transition probabilities of shells
150 
152 
154 };
155 
156 #endif