Geant4-11
G4AugerTransition.cc
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// Based on G4AtomicTransition.cc by
29// Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
30//
31// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
32//
33// History:
34// -----------
35// 4 Mar 2002: first implementation
36//
37// -------------------------------------------------------------------
38
39#include "G4AugerTransition.hh"
40
41//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
42// the final shell in wich the electron goes is needed, to know the data for the auger electron emitted
43// (i.e. originating shell id, electron energy and transition probability)
44G4AugerTransition::G4AugerTransition(G4int finalShell, std::vector<G4int> transIds,
45 const std::map<G4int,std::vector<G4int>,std::less<G4int> >* idMap,
46 const std::map<G4int,G4DataVector,std::less<G4int> >* energyMap,
47 const std::map<G4int,G4DataVector,std::less<G4int> >* probabilityMap)
48{
49 finalShellId = finalShell;
51 augerTransitionEnergiesMap = *energyMap;
52 augerTransitionProbabilitiesMap = *probabilityMap;
54}
55
56//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
57
59{;}
60
61//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
62// Returns the ids of the shells from wich an auger electron culd came from, given th shell
63// from wich the transition electron cames from.
64const std::vector<G4int>* G4AugerTransition::AugerOriginatingShellIds(G4int startShellId) const
65{
66 auto shellId = augerOriginatingShellIdsMap.find(startShellId);
67
68 const std::vector<G4int>* dataSet = &(*shellId).second;
69 if (dataSet->empty())
70 G4cout << "Error: no auger Id found"<< G4endl;
71 return dataSet;
72}
73
74//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
75// Returns the ids of the shells from wich an electron cuuld fill the vacancy in finalShellId
76const std::vector<G4int>* G4AugerTransition::TransitionOriginatingShellIds() const
77{
78 const std::vector<G4int>* dataSet = &transitionOriginatingShellIds;
79 return dataSet;
80}
81
82//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
83// Returns the energies of the possible auger electrons, given the shell
84// from which the transition electron came from.
86{
87 auto shellId = augerTransitionEnergiesMap.find(startShellId);
88
89 if (shellId == augerTransitionEnergiesMap.end() )
90 {
91 G4Exception("G4AugerTransition::AugerTransitionEnergies()","de0002",JustWarning,
92 "corresponding map element not found, energy deposited locally");
93 return 0;
94 }
95 const G4DataVector* dataSet = &(*shellId).second;
96 return dataSet;
97}
98
99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
100// Returns the emission probabilities of the auger electrons, given the shell
101// from wich the transition electron cames from.
103{
104 auto shellId = augerTransitionProbabilitiesMap.find(startShellId);
105 if (shellId == augerTransitionProbabilitiesMap.end() )
106 {
107
108 G4Exception("G4AugerTransition::AugerTransitionProbabilities()","de0002",
109 JustWarning,"corresponding map element not found, energy deposited locally");
110 return 0;
111 }
112
113 const G4DataVector* dataSet = &(*shellId).second;
114 return dataSet;
115}
116
117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
119{
120 return finalShellId;
121}
122
123//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
124// Returns the id of the shell from wich come the auger electron , given the shell
125// from wich the transition electron cames from and the index number.
127{
128 const std::vector<G4int>* ids = AugerOriginatingShellIds(startShellId);
129 // G4int i =
130 std::vector<G4int>::const_iterator pos = ids->begin();
131 G4int n = 0;
132 n = *(pos+index);
133 return n;
134}
135
136//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
137// Returns the energy of the auger electron, given the shell
138// from wich the transition electron cames from and the index number.
140{
141 const G4DataVector* energies = AugerTransitionEnergies(startShellId);
142 G4double energy = 0;
143 if (index < (G4int) energies->size()) {
144 G4DataVector::const_iterator pos = energies->begin();
145 energy = *(pos+index);
146 }
147 return energy;
148}
149
150//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
151// Returns the probability of the auger emission, given the shell
152// from wich the transition electron cames from and the index number.
154{
155
156 const G4DataVector *probabilities = AugerTransitionProbabilities(startShellId);
157 G4DataVector::const_iterator pos = probabilities->begin();
158
159 G4double probability = 0;
160 probability = *(pos+index);
161
162 return probability;
163}
164
165//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
167{
168 return transitionOriginatingShellIds[index];
169}
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
static const G4double pos
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4int AugerOriginatingShellId(G4int index, G4int startShellId) const
G4int FinalShellId() const
returns the id of the shell in wich the transition electron arrives
const std::vector< G4int > * AugerOriginatingShellIds(G4int startShellId) const
const G4DataVector * AugerTransitionEnergies(G4int startShellId) const
std::map< G4int, G4DataVector, std::less< G4int > > augerTransitionProbabilitiesMap
G4AugerTransition(G4int finalShell, std::vector< G4int > transIds, const std::map< G4int, std::vector< G4int >, std::less< G4int > > *idMap, const std::map< G4int, G4DataVector, std::less< G4int > > *energyMap, const std::map< G4int, G4DataVector, std::less< G4int > > *probabilityMap)
const G4DataVector * AugerTransitionProbabilities(G4int startShellId) const
std::map< G4int, G4DataVector, std::less< G4int > > augerTransitionEnergiesMap
G4double AugerTransitionEnergy(G4int index, G4int startShellId) const
const std::vector< G4int > * TransitionOriginatingShellIds() const
Returns the ids of the shells from wich an electron cuuld fill the vacancy in finalShellId.
G4double AugerTransitionProbability(G4int index, G4int startShellId) const
std::map< G4int, std::vector< G4int >, std::less< G4int > > augerOriginatingShellIdsMap
G4int TransitionOriginatingShellId(G4int index) const
Returns the id of the shell form wich the transition electron come from.
std::vector< G4int > transitionOriginatingShellIds
G4double energy(const ThreeVector &p, const G4double m)