Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 // 27 // 28 // Based on G4AtomicTransition.cc by 28 // Based on G4AtomicTransition.cc by 29 // Elena Guardincerri (Elena.Guardincerri@ge.i 29 // Elena Guardincerri (Elena.Guardincerri@ge.infn.it) 30 // 30 // 31 // Author: Alfonso Mantero (Alfonso.Mantero@ge 31 // Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it) 32 // 32 // 33 // History: 33 // History: 34 // ----------- 34 // ----------- 35 // 4 Mar 2002: first implementation 35 // 4 Mar 2002: first implementation 36 // 36 // 37 // ------------------------------------------- 37 // ------------------------------------------------------------------- 38 38 39 #include "G4RDAugerTransition.hh" 39 #include "G4RDAugerTransition.hh" 40 40 41 // the final shell in wich the electron goes i 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 42 // (i.e. originating shell id, electron energy and transition probability) 43 43 44 G4RDAugerTransition::G4RDAugerTransition(G4int 44 G4RDAugerTransition::G4RDAugerTransition(G4int finalShell, std::vector<G4int> transIds, 45 const std::map<G4int,std::vector< 45 const std::map<G4int,std::vector<G4int>,std::less<G4int> >* idMap, 46 const std::map<G4int,G4DataVector 46 const std::map<G4int,G4DataVector,std::less<G4int> >* energyMap, 47 const std::map<G4int,G4DataVector 47 const std::map<G4int,G4DataVector,std::less<G4int> >* probabilityMap) 48 { 48 { 49 finalShellId = finalShell; 49 finalShellId = finalShell; 50 augerOriginatingShellIdsMap = *idMap; 50 augerOriginatingShellIdsMap = *idMap; 51 augerTransitionEnergiesMap = *energyMap; 51 augerTransitionEnergiesMap = *energyMap; 52 augerTransitionProbabilitiesMap = *probabili 52 augerTransitionProbabilitiesMap = *probabilityMap; 53 transitionOriginatingShellIds = transIds; 53 transitionOriginatingShellIds = transIds; 54 54 55 55 56 } 56 } 57 57 58 G4RDAugerTransition::~G4RDAugerTransition() 58 G4RDAugerTransition::~G4RDAugerTransition() 59 { 59 { 60 60 61 } 61 } 62 62 63 // Returns the ids of the shells from wich an 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 fro 64 // from wich the transition electron cames from. 65 65 66 const std::vector<G4int>* G4RDAugerTransition: 66 const std::vector<G4int>* G4RDAugerTransition::AugerOriginatingShellIds(G4int startShellId) const 67 { 67 { 68 std::map<G4int,std::vector<G4int>,std::less< 68 std::map<G4int,std::vector<G4int>,std::less<G4int> >::const_iterator shellId = augerOriginatingShellIdsMap.find(startShellId); 69 69 70 const std::vector<G4int>* dataSet = &(*shell 70 const std::vector<G4int>* dataSet = &(*shellId).second; 71 //const std::vector<G4int>* dataOut = 0; 71 //const std::vector<G4int>* dataOut = 0; 72 72 73 if (dataSet->size() == 0) {G4cout << "Error: 73 if (dataSet->size() == 0) {G4cout << "Error: no auger Id found"<< G4endl;} 74 else { 74 else { 75 75 76 // dataOut = &dataSet; 76 // dataOut = &dataSet; 77 77 78 } 78 } 79 79 80 return dataSet; 80 return dataSet; 81 } 81 } 82 82 83 // Returns the ids of the shells from wich an 83 // Returns the ids of the shells from wich an electron cuuld fill the vacancy in finalShellId 84 84 85 const std::vector<G4int>* G4RDAugerTransition: 85 const std::vector<G4int>* G4RDAugerTransition::TransitionOriginatingShellIds() const 86 { 86 { 87 87 88 const std::vector<G4int>* dataSet = &transit 88 const std::vector<G4int>* dataSet = &transitionOriginatingShellIds; 89 return dataSet; 89 return dataSet; 90 } 90 } 91 91 92 // Returns the energiess of the possible auger 92 // Returns the energiess of the possible auger electrons, given th shell 93 // from wich the transition electron cames fro 93 // from wich the transition electron cames from. 94 94 95 const G4DataVector* G4RDAugerTransition::Auger 95 const G4DataVector* G4RDAugerTransition::AugerTransitionEnergies(G4int startShellId) const 96 { 96 { 97 std::map<G4int,G4DataVector,std::less<G4int> 97 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionEnergiesMap.find(startShellId); 98 const G4DataVector* dataSet = &(*shellId).se 98 const G4DataVector* dataSet = &(*shellId).second; 99 99 100 100 101 return dataSet; 101 return dataSet; 102 } 102 } 103 103 104 // Returns the emission probabilities of the a 104 // Returns the emission probabilities of the auger electrons, given th shell 105 // from wich the transition electron cames fro 105 // from wich the transition electron cames from. 106 106 107 const G4DataVector* G4RDAugerTransition::Auger 107 const G4DataVector* G4RDAugerTransition::AugerTransitionProbabilities(G4int startShellId) const 108 { 108 { 109 std::map<G4int,G4DataVector,std::less<G4int> 109 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionProbabilitiesMap.find(startShellId); 110 const G4DataVector* dataSet = &(*shellId).se 110 const G4DataVector* dataSet = &(*shellId).second; 111 return dataSet; 111 return dataSet; 112 } 112 } 113 113 114 G4int G4RDAugerTransition::FinalShellId() cons 114 G4int G4RDAugerTransition::FinalShellId() const 115 { 115 { 116 return finalShellId; 116 return finalShellId; 117 } 117 } 118 118 119 // Returns the id of the shell from wich come 119 // Returns the id of the shell from wich come the auger electron , given the shell 120 // from wich the transition electron cames fro 120 // from wich the transition electron cames from and the index number. 121 121 122 G4int G4RDAugerTransition::AugerOriginatingShe 122 G4int G4RDAugerTransition::AugerOriginatingShellId(G4int index, G4int startShellId) const 123 { 123 { 124 const std::vector<G4int>* ids = AugerOrigina 124 const std::vector<G4int>* ids = AugerOriginatingShellIds(startShellId); 125 // G4int i = 125 // G4int i = 126 std::vector<G4int>::const_iterator pos = ids 126 std::vector<G4int>::const_iterator pos = ids->begin(); 127 G4int n = 0; 127 G4int n = 0; 128 n = *(pos+index); 128 n = *(pos+index); 129 return n; 129 return n; 130 } 130 } 131 131 132 // Returns the energy of the auger electron, g 132 // Returns the energy of the auger electron, given the shell 133 // from wich the transition electron cames fro 133 // from wich the transition electron cames from and the index number. 134 134 135 G4double G4RDAugerTransition::AugerTransitionE 135 G4double G4RDAugerTransition::AugerTransitionEnergy(G4int index, G4int startShellId) const 136 { 136 { 137 const G4DataVector* energies = AugerTransiti 137 const G4DataVector* energies = AugerTransitionEnergies(startShellId); 138 G4double energy = 0; 138 G4double energy = 0; 139 if (index < (G4int) energies->size()) { 139 if (index < (G4int) energies->size()) { 140 G4DataVector::const_iterator pos = energie 140 G4DataVector::const_iterator pos = energies->begin(); 141 energy = *(pos+index); 141 energy = *(pos+index); 142 } 142 } 143 return energy; 143 return energy; 144 } 144 } 145 145 146 // Returns the probability of the auger emissi 146 // Returns the probability of the auger emission, given the shell 147 // from wich the transition electron cames fro 147 // from wich the transition electron cames from and the index number. 148 148 149 G4double G4RDAugerTransition::AugerTransitionP 149 G4double G4RDAugerTransition::AugerTransitionProbability(G4int index, G4int startShellId) const 150 { 150 { 151 151 152 const G4DataVector *probabilities = AugerTra 152 const G4DataVector *probabilities = AugerTransitionProbabilities(startShellId); 153 G4DataVector::const_iterator pos = probabili 153 G4DataVector::const_iterator pos = probabilities->begin(); 154 154 155 G4double probability = 0; 155 G4double probability = 0; 156 probability = *(pos+index); 156 probability = *(pos+index); 157 157 158 return probability; 158 return probability; 159 159 160 } 160 } 161 161 162 G4int G4RDAugerTransition::TransitionOriginati 162 G4int G4RDAugerTransition::TransitionOriginatingShellId(G4int index) const 163 { 163 { 164 return transitionOriginatingShellIds[index] 164 return transitionOriginatingShellIds[index]; 165 } 165 } 166 166 167 167 168 168 169 169 170 170 171 171 172 172 173 173 174 174 175 175 176 176 177 177 178 178 179 179 180 180 181 181 182 182 183 183 184 184 185 185 186 186 187 187