- Timestamp:
- Apr 6, 2009, 12:30:29 PM (15 years ago)
- Location:
- trunk/source/processes/hadronic/models/de_excitation/photon_evaporation
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/de_excitation/photon_evaporation/include/G4PhotonEvaporation.hh
r819 r962 48 48 // void SetEOccupancy( G4ElectronOccupancy eOccupancy) ; 49 49 // G4ElectronOccupancy GetEOccupancy () ; 50 // void SetARM (G4bool val) {_applyARM = val;} ;51 50 // G4int GetVacantShellNumber () { return _vShellNumber;}; 52 51 // … … 55 54 // G4ElectronOccupancy _eOccupancy; 56 55 // G4int _vShellNumber; 57 // 58 // G4bool _applyARM; 59 // 56 // 60 57 // ------------------------------------------------------------------- 61 58 … … 102 99 void SetEOccupancy( G4ElectronOccupancy eOccupancy) ; 103 100 104 void SetARM (G4bool val) {_applyARM = val;} ;105 101 106 102 G4ElectronOccupancy GetEOccupancy () { return _eOccupancy;} ; … … 122 118 G4Fragment _nucleus; 123 119 G4double _gammaE; 124 G4bool _applyARM;125 120 126 121 G4PhotonEvaporation(const G4PhotonEvaporation & right); -
trunk/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4DiscreteGammaDeexcitation.cc
r819 r962 130 130 G4bool canDo = true; 131 131 132 if (_transition == 0) 133 { 134 canDo = false; 135 136 if (_verbose > 0) 137 G4cout 138 << "G4DiscreteGammaDeexcitation::CanDoTransition - Null transition " 139 << G4endl; 140 } 132 if (_transition == 0) { 133 canDo = false; 134 135 if (_verbose > 0) 136 G4cout 137 << "G4DiscreteGammaDeexcitation::CanDoTransition - Null transition " 138 << G4endl; 139 } 141 140 G4Fragment nucleus = GetNucleus(); 142 141 if (canDo) { … … 154 153 155 154 G4double excitation = nucleus.GetExcitationEnergy(); 155 156 156 if (canDo) { 157 if (excitation <= 0.) 158 { 159 canDo = false; 160 if (_verbose > 0) 161 G4cout 162 << "G4DiscreteGammaDeexcitation::CanDoTransition - Excitation <= 0" 163 << G4endl; 164 } 165 166 if (excitation > _levelManager->MaxLevelEnergy() + _tolerance) canDo = false; 167 if (excitation < _levelManager->MinLevelEnergy() - _tolerance) canDo = false; 168 // The following is a protection to avoid looping in case of elements with very low 169 // ensdf levels 170 if (excitation < _levelManager->MinLevelEnergy() * 0.9) canDo = false; 157 if (excitation <= 0.) { 158 canDo = false; 159 if (_verbose > 0) 160 G4cout 161 << "G4DiscreteGammaDeexcitation::CanDoTransition - Excitation <= 0" 162 << G4endl; 163 } else { 164 if (excitation > _levelManager->MaxLevelEnergy() + _tolerance) canDo = false; 165 if (excitation < _levelManager->MinLevelEnergy() - _tolerance) canDo = false; 166 // The following is a protection to avoid looping in case of elements with very low 167 // ensdf levels 168 if (excitation < _levelManager->MinLevelEnergy() * 0.9) canDo = false; 171 169 172 if (_verbose > 0) 173 { 170 if (_verbose > 0) { 174 171 G4cout << "G4DiscreteGammaDeexcitation::CanDoTransition - Excitation " 175 172 << excitation << ", Min-Max are " … … 177 174 << _levelManager->MaxLevelEnergy() << G4endl; 178 175 } 179 } 180 176 } 177 } 178 181 179 if (canDo) { 182 180 const G4NuclearLevel* level = _levelManager->NearestLevel(excitation); … … 186 184 canDo = false; 187 185 } 188 189 if (_verbose > 0) 190 { 191 G4cout << "G4DiscreteGammaDeexcitation::CanDoTransition - Halflife " 192 << level->HalfLife() << ", Calling from RDM " 193 << (_rdm ? " True " : " False ") << " Max-HL = " << _max_hl << G4endl; 194 } 195 } 196 if (_verbose > 0) 197 { 198 199 G4cout <<"G4DiscreteGammaDeexcitation::CanDoTransition - CanDo:" 200 << (canDo ? " True " : " False ") << G4endl; 201 } 202 203 186 if (_verbose > 0) { 187 G4cout << "G4DiscreteGammaDeexcitation::CanDoTransition - Halflife " 188 << level->HalfLife() << ", Calling from RDM " 189 << (_rdm ? " True " : " False ") << ", Max-HL = " << _max_hl << G4endl; 190 } 191 } 192 if (_verbose > 0) { 193 G4cout <<"G4DiscreteGammaDeexcitation::CanDoTransition - CanDo:" 194 << (canDo ? " True " : " False ") << G4endl; 195 } 196 204 197 return canDo; 205 198 -
trunk/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4PhotonEvaporation.cc
r819 r962 64 64 #include "G4DiscreteGammaDeexcitation.hh" 65 65 #include "G4E1Probability.hh" 66 #include "G4AtomicDeexcitation.hh"67 66 68 67 G4PhotonEvaporation::G4PhotonEvaporation() 69 68 :_verbose(0),_myOwnProbAlgorithm (true), 70 _eOccupancy(0), _vShellNumber(-1),_gammaE(0.) ,_applyARM(false)69 _eOccupancy(0), _vShellNumber(-1),_gammaE(0.) 71 70 { 72 71 _probAlgorithm = new G4E1Probability; … … 199 198 _eOccupancy = _discrDeexcitation->GetEO(); 200 199 _vShellNumber = _discrDeexcitation->GetVacantSN(); 201 // _eOccupancy.DumpInfo() ; 200 201 // not sure if the following line is needed! 202 202 _discrDeexcitation->SetVaccantSN(-1); 203 203 … … 214 214 } 215 215 216 // now to see if apply Atomic relaxation model or not217 // only when there is a vacant orbital electron218 219 if (_applyARM && _vShellNumber != -1)220 {221 G4int aZ = static_cast<G4int>(_discrDeexcitation->GetNucleus().GetZ());222 G4int eShell = _vShellNumber+1;223 if ( eShell > 0 ) {224 G4AtomicDeexcitation* atomDeex = new G4AtomicDeexcitation();225 // no auger electron for now226 atomDeex->ActivateAugerElectronProduction(0);227 std::vector<G4DynamicParticle*>* armProducts = atomDeex->GenerateParticles(aZ,eShell);228 G4DynamicParticle* aParticle;229 if (_verbose > 0)230 G4cout << " = BreakItUp = " << armProducts->size()231 << " particles from G4AtomicDeexcitation " << G4endl;232 for (size_t i = 0; i < armProducts->size(); i++)233 {234 aParticle = (*armProducts)[i] ;235 G4LorentzVector lParticle = aParticle->Get4Momentum();236 G4Fragment* aFragment = new237 G4Fragment(lParticle,aParticle->GetDefinition());238 aFragment->SetCreationTime(aParticle->GetProperTime());239 products->push_back(aFragment);240 }241 242 for (size_t i = 0; i < armProducts->size(); i++)243 delete (*armProducts)[i];244 delete armProducts;245 delete atomDeex;246 }247 }248 216 // Add deexcited nucleus to products 249 217 G4Fragment* finalNucleus = new G4Fragment(_discrDeexcitation->GetNucleus()); … … 256 224 257 225 #ifdef debug 258 if ( armProducts->size() == 0) 259 CheckConservation(nucleus,products); 226 CheckConservation(nucleus,products); 260 227 #endif 261 228 contProducts->clear(); … … 265 232 return products; 266 233 } 267 268 234 269 235 G4double G4PhotonEvaporation::GetEmissionProbability() const
Note: See TracChangeset
for help on using the changeset viewer.