Geant4  9.6.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