Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
45 G4AugerTransition::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 
67 const 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 
86 const 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 
G4double AugerTransitionProbability(G4int index, G4int startShellId) const
G4int AugerOriginatingShellId(G4int index, G4int startShellId) const
const G4DataVector * AugerTransitionEnergies(G4int startShellId) const
const std::vector< G4int > * AugerOriginatingShellIds(G4int startShellId) const
G4double AugerTransitionEnergy(G4int index, G4int startShellId) const
int G4int
Definition: G4Types.hh:78
G4int FinalShellId() const
G4GLOB_DLL std::ostream G4cout
G4int TransitionOriginatingShellId(G4int index) const
const G4int n
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)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4double energy(const ThreeVector &p, const G4double m)
#define G4endl
Definition: G4ios.hh:61
const std::vector< G4int > * TransitionOriginatingShellIds() const
double G4double
Definition: G4Types.hh:76
const G4DataVector * AugerTransitionProbabilities(G4int startShellId) const
static const G4double pos