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
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// $Id: G4AugerTransition.cc,v 1.2 ????
28//
29// Based on G4AtomicTransition.cc by
30// Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
31//
32// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
33//
34// History:
35// -----------
36// 4 Mar 2002: first implementation
37//
38// -------------------------------------------------------------------
39
40#include "G4AugerTransition.hh"
41
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)
44
45G4AugerTransition::G4AugerTransition(G4int finalShell, std::vector<G4int> transIds,
46 const std::map<G4int,std::vector<G4int>,std::less<G4int> >* idMap,
47 const std::map<G4int,G4DataVector,std::less<G4int> >* energyMap,
48 const std::map<G4int,G4DataVector,std::less<G4int> >* probabilityMap)
49{
50 finalShellId = finalShell;
51 augerOriginatingShellIdsMap = *idMap;
52 augerTransitionEnergiesMap = *energyMap;
53 augerTransitionProbabilitiesMap = *probabilityMap;
54 transitionOriginatingShellIds = transIds;
55
56
57}
58
60{
61
62}
63
64// Returns the ids of the shells from wich an auger electron culd came from, given th shell
65// from wich the transition electron cames from.
66
67const std::vector<G4int>* G4AugerTransition::AugerOriginatingShellIds(G4int startShellId) const
68{
69 std::map<G4int,std::vector<G4int>,std::less<G4int> >::const_iterator shellId = augerOriginatingShellIdsMap.find(startShellId);
70
71 const std::vector<G4int>* dataSet = &(*shellId).second;
72 //const std::vector<G4int>* dataOut = 0;
73
74 if (dataSet->size() == 0) {G4cout << "Error: no auger Id found"<< G4endl;}
75 else {
76
77 // dataOut = &dataSet;
78
79 }
80
81 return dataSet;
82}
83
84// Returns the ids of the shells from wich an electron cuuld fill the vacancy in finalShellId
85
86const std::vector<G4int>* G4AugerTransition::TransitionOriginatingShellIds() const
87{
88
89 const std::vector<G4int>* dataSet = &transitionOriginatingShellIds;
90 return dataSet;
91}
92
93// Returns the energiess of the possible auger electrons, given th shell
94// from wich the transition electron cames from.
95
97{
98 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionEnergiesMap.find(startShellId);
99
100 if (shellId == augerTransitionEnergiesMap.end() )
101 {
102 G4Exception("G4AugerTransition::AugerTransitionEnergies()","de0002",JustWarning,"corresponding map element not found, energy deposited locally");
103 return 0;
104 }
105
106 const G4DataVector* dataSet = &(*shellId).second;
107
108
109 return dataSet;
110}
111
112// Returns the emission probabilities of the auger electrons, given the shell
113// from wich the transition electron cames from.
114
116{
117
118 //debugging
119 //if (startShellId == 1){G4cout <<"OI!!!"<< G4endl;}
120
121 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionProbabilitiesMap.find(startShellId);
122
123 if (shellId == augerTransitionProbabilitiesMap.end() )
124 {
125
126 G4Exception("G4AugerTransition::AugerTransitionProbabilities()","de0002",JustWarning,"corresponding map element not found, energy deposited locally");
127 return 0;
128 }
129
130 const G4DataVector* dataSet = &(*shellId).second;
131 // debugging purpose:
132 /* G4cout << "id: " << shellId->first << G4endl;
133 G4cout << "size:" << dataSet->size() << G4endl;
134 for (G4int i = 0; i < dataSet->size(); i++){
135 G4cout << (dataSet[0])[i] << G4endl;
136 }*/
137 return dataSet;
138}
139
141{
142 return finalShellId;
143}
144
145// Returns the id of the shell from wich come the auger electron , given the shell
146// from wich the transition electron cames from and the index number.
147
149{
150 const std::vector<G4int>* ids = AugerOriginatingShellIds(startShellId);
151 // G4int i =
152 std::vector<G4int>::const_iterator pos = ids->begin();
153 G4int n = 0;
154 n = *(pos+index);
155 return n;
156}
157
158// Returns the energy of the auger electron, given the shell
159// from wich the transition electron cames from and the index number.
160
162{
163 const G4DataVector* energies = AugerTransitionEnergies(startShellId);
164 G4double energy = 0;
165 if (index < (G4int) energies->size()) {
166 G4DataVector::const_iterator pos = energies->begin();
167 energy = *(pos+index);
168 }
169 return energy;
170}
171
172// Returns the probability of the auger emission, given the shell
173// from wich the transition electron cames from and the index number.
174
176{
177
178 const G4DataVector *probabilities = AugerTransitionProbabilities(startShellId);
179 G4DataVector::const_iterator pos = probabilities->begin();
180
181 G4double probability = 0;
182 probability = *(pos+index);
183
184 return probability;
185
186}
187
189{
190 return transitionOriginatingShellIds[index];
191}
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
@ JustWarning
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT 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
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41