Changeset 1315 for trunk/source/processes/hadronic/models/radioactive_decay/src/G4NuclearDecayChannel.cc
- Timestamp:
- Jun 18, 2010, 11:42:07 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/radioactive_decay/src/G4NuclearDecayChannel.cc
r962 r1315 101 101 FillDaughterNucleus (0, A, Z, theDaughterExcitation); 102 102 Qtransition = theQtransition; 103 halflifethreshold = 1e-6*second; 104 applyICM = true; 105 applyARM = true; 103 106 } 104 107 /////////////////////////////////////////////////////////////////////////////// … … 131 134 FillDaughterNucleus (1, A, Z, theDaughterExcitation); 132 135 Qtransition = theQtransition; 136 halflifethreshold = 1e-6*second; 137 applyICM = true; 138 applyARM = true; 133 139 } 134 140 /////////////////////////////////////////////////////////////////////////////// … … 171 177 Qtransition = theQtransition; 172 178 FermiFN = theFFN; 179 halflifethreshold = 1e-6*second; 180 applyICM = true; 181 applyARM = true; 173 182 } 174 183 … … 288 297 // 289 298 // If the decay is to an excited state of the daughter nuclide, we need 290 // to apply the photo-evaporation process. 299 // to apply the photo-evaporation process. This includes the IT decay mode itself. 291 300 // 292 301 // needed to hold the shell idex after ICM 293 302 G4int shellIndex = -1; 294 303 // 295 if (daughterExcitation > 0.0) 304 if (daughterExcitation > 0.0) 296 305 { 297 306 // … … 311 320 deexcitation->SetVerboseLevel(GetVerboseLevel()); 312 321 // switch on/off internal electron conversion 313 deexcitation->SetICM( true);322 deexcitation->SetICM(applyICM); 314 323 // set the maximum life-time for a level that will be treated. Level with life-time longer than this 315 324 // will be outputed as meta-stable isotope 316 325 // 317 deexcitation->SetMaxHalfLife( 1e-6*second);326 deexcitation->SetMaxHalfLife(halflifethreshold); 318 327 // but in IT mode, we need to force the transition 319 328 if (decayMode == 0) { … … 323 332 } 324 333 // 325 // Get the gammas by deexciting the nucleus. 326 // 327 G4FragmentVector* gammas = deexcitation->BreakItUp(nucleus); 328 // in the case of BreakItUp(nucleus), the returned G4FragmentVector contains the residual nuclide 334 // Now apply the photo-evaporation 335 // Use BreakUp() so limit to one transition at a time, if ICM is requested 336 // this change is realted to bug#1001 (F.Lei 07/05/2010) 337 G4FragmentVector* gammas = 0; 338 if (applyICM) { 339 gammas = deexcitation->BreakUp(nucleus); 340 } else { 341 gammas = deexcitation->BreakItUp(nucleus); 342 } 343 // the returned G4FragmentVector contains the residual nuclide 329 344 // as its last entry. 330 345 G4int nGammas=gammas->size()-1; … … 343 358 } 344 359 // 345 // 360 // now the nucleus 346 361 G4double finalDaughterExcitation = gammas->operator[](nGammas)->GetExcitationEnergy(); 347 362 // f.lei (03/01/03) this is needed to fix the crach in test18 … … 356 371 daughterMomentum1); 357 372 products->PushProducts (dynamicDaughter); 373 358 374 // retrive the ICM shell index 359 375 shellIndex = deexcitation->GetVacantShellNumber(); … … 392 408 // 393 409 { 394 eShell = G4int(G4UniformRand()*5)+4; 410 // limit the shell index to 6 as specified by the ARM (F.Lei 06/05/2010) 411 // eShell = G4int(G4UniformRand()*5)+4; 412 eShell = G4int(G4UniformRand()*3)+4; 395 413 } 396 414 break; … … 401 419 } 402 420 } 403 // nowdeal with the IT case where ICM may have been applied421 // Also have to deal with the IT case where ICM may have been applied 404 422 // 405 423 if (decayMode == 0) { 406 424 eShell = shellIndex; 407 425 } 408 // now apply ARM if there is a vaccancy 409 // 410 if (eShell != -1) { 426 // 427 // now apply ARM if it is requested and there is a vaccancy 428 // 429 if (applyARM && eShell != -1) { 411 430 G4int aZ = daughterZ; 412 431 if (aZ > 5 && aZ < 100) { // only applies to 5< Z <100
Note: See TracChangeset
for help on using the changeset viewer.