Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 ([email protected])
30//
31// Author: Alfonso Mantero ([email protected])
32//
33// History:
34// -----------
35// 4 Mar 2002: first implementation
36//
37// -------------------------------------------------------------------
38
39#include "G4AugerTransition.hh"
40
41// the final shell in wich the electron goes is needed, to know the data for the auger electron emitted
42// (i.e. originating shell id, electron energy and transition probability)
43
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;
50 augerOriginatingShellIdsMap = *idMap;
51 augerTransitionEnergiesMap = *energyMap;
52 augerTransitionProbabilitiesMap = *probabilityMap;
53 transitionOriginatingShellIds = transIds;
54
55
56}
57
59{
60
61}
62
63// Returns the ids of the shells from wich an auger electron culd came from, given th shell
64// from wich the transition electron cames from.
65
66const std::vector<G4int>* G4AugerTransition::AugerOriginatingShellIds(G4int startShellId) const
67{
68 std::map<G4int,std::vector<G4int>,std::less<G4int> >::const_iterator shellId = augerOriginatingShellIdsMap.find(startShellId);
69
70 const std::vector<G4int>* dataSet = &(*shellId).second;
71 //const std::vector<G4int>* dataOut = 0;
72
73 if (dataSet->size() == 0) {G4cout << "Error: no auger Id found"<< G4endl;}
74 else {
75
76 // dataOut = &dataSet;
77
78 }
79
80 return dataSet;
81}
82
83// Returns the ids of the shells from wich an electron cuuld fill the vacancy in finalShellId
84
85const std::vector<G4int>* G4AugerTransition::TransitionOriginatingShellIds() const
86{
87
88 const std::vector<G4int>* dataSet = &transitionOriginatingShellIds;
89 return dataSet;
90}
91
92// Returns the energiess of the possible auger electrons, given th shell
93// from wich the transition electron cames from.
94
96{
97 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionEnergiesMap.find(startShellId);
98
99 if (shellId == augerTransitionEnergiesMap.end() )
100 {
101 G4Exception("G4AugerTransition::AugerTransitionEnergies()","de0002",JustWarning,"corresponding map element not found, energy deposited locally");
102 return 0;
103 }
104
105 const G4DataVector* dataSet = &(*shellId).second;
106
107
108 return dataSet;
109}
110
111// Returns the emission probabilities of the auger electrons, given the shell
112// from wich the transition electron cames from.
113
115{
116
117 //debugging
118 //if (startShellId == 1){G4cout <<"OI!!!"<< G4endl;}
119
120 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionProbabilitiesMap.find(startShellId);
121
122 if (shellId == augerTransitionProbabilitiesMap.end() )
123 {
124
125 G4Exception("G4AugerTransition::AugerTransitionProbabilities()","de0002",JustWarning,"corresponding map element not found, energy deposited locally");
126 return 0;
127 }
128
129 const G4DataVector* dataSet = &(*shellId).second;
130 // debugging purpose:
131 /* G4cout << "id: " << shellId->first << G4endl;
132 G4cout << "size:" << dataSet->size() << G4endl;
133 for (G4int i = 0; i < dataSet->size(); i++){
134 G4cout << (dataSet[0])[i] << G4endl;
135 }*/
136 return dataSet;
137}
138
140{
141 return finalShellId;
142}
143
144// Returns the id of the shell from wich come the auger electron , given the shell
145// from wich the transition electron cames from and the index number.
146
148{
149 const std::vector<G4int>* ids = AugerOriginatingShellIds(startShellId);
150 // G4int i =
151 std::vector<G4int>::const_iterator pos = ids->begin();
152 G4int n = 0;
153 n = *(pos+index);
154 return n;
155}
156
157// Returns the energy of the auger electron, given the shell
158// from wich the transition electron cames from and the index number.
159
161{
162 const G4DataVector* energies = AugerTransitionEnergies(startShellId);
163 G4double energy = 0;
164 if (index < (G4int) energies->size()) {
165 G4DataVector::const_iterator pos = energies->begin();
166 energy = *(pos+index);
167 }
168 return energy;
169}
170
171// Returns the probability of the auger emission, given the shell
172// from wich the transition electron cames from and the index number.
173
175{
176
177 const G4DataVector *probabilities = AugerTransitionProbabilities(startShellId);
178 G4DataVector::const_iterator pos = probabilities->begin();
179
180 G4double probability = 0;
181 probability = *(pos+index);
182
183 return probability;
184
185}
186
188{
189 return transitionOriginatingShellIds[index];
190}
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
@ 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
const std::vector< G4int > * AugerOriginatingShellIds(G4int startShellId) const
const G4DataVector * AugerTransitionEnergies(G4int startShellId) const
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
G4double AugerTransitionEnergy(G4int index, G4int startShellId) const
const std::vector< G4int > * TransitionOriginatingShellIds() const
G4double AugerTransitionProbability(G4int index, G4int startShellId) const
G4int TransitionOriginatingShellId(G4int index) const