ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4AugerTransition.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4AugerTransition.cc
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 // 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 
44 G4AugerTransition::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 }
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 
66 const 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 
85 const 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