Ignore:
Timestamp:
Jun 18, 2010, 11:42:07 AM (14 years ago)
Author:
garnier
Message:

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/radioactive_decay/src/G4NuclearDecayChannel.cc

    r962 r1315  
    101101  FillDaughterNucleus (0, A, Z, theDaughterExcitation);
    102102  Qtransition = theQtransition;
     103  halflifethreshold = 1e-6*second;
     104  applyICM = true;
     105  applyARM = true;
    103106}
    104107///////////////////////////////////////////////////////////////////////////////
     
    131134  FillDaughterNucleus (1, A, Z, theDaughterExcitation);
    132135  Qtransition = theQtransition;
     136  halflifethreshold = 1e-6*second;
     137  applyICM = true;
     138  applyARM = true;
    133139}
    134140///////////////////////////////////////////////////////////////////////////////
     
    171177  Qtransition = theQtransition;
    172178  FermiFN = theFFN;
     179  halflifethreshold = 1e-6*second;
     180  applyICM = true;
     181  applyARM = true;
    173182}
    174183
     
    288297  //
    289298  // 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.
    291300  //
    292301  // needed to hold the shell idex after ICM
    293302  G4int shellIndex = -1;
    294303  //
    295   if (daughterExcitation > 0.0)
     304  if (daughterExcitation > 0.0) 
    296305    {
    297306      //
     
    311320      deexcitation->SetVerboseLevel(GetVerboseLevel());
    312321      // switch on/off internal electron conversion
    313       deexcitation->SetICM(true);
     322      deexcitation->SetICM(applyICM);
    314323      // set the maximum life-time for a level that will be treated. Level with life-time longer than this
    315324      // will be outputed as meta-stable isotope
    316325      //
    317       deexcitation->SetMaxHalfLife(1e-6*second);
     326      deexcitation->SetMaxHalfLife(halflifethreshold);
    318327      // but in IT mode, we need to force the transition
    319328      if (decayMode == 0) {
     
    323332      }
    324333      //
    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
    329344      // as its last entry.
    330345      G4int nGammas=gammas->size()-1;
     
    343358        }
    344359      //
    345       //      now the nucleus
     360      // now the nucleus
    346361      G4double finalDaughterExcitation = gammas->operator[](nGammas)->GetExcitationEnergy();
    347362      // f.lei (03/01/03) this is needed to fix the crach in test18
     
    356371         daughterMomentum1);
    357372      products->PushProducts (dynamicDaughter);
     373     
    358374      // retrive the ICM shell index
    359375      shellIndex = deexcitation->GetVacantShellNumber();
     
    392408        //
    393409        {
    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;
    395413        }
    396414        break;
     
    401419      }
    402420  }
    403   // now deal with the IT case where ICM may have been applied
     421  // Also have to deal with the IT case where ICM may have been applied
    404422  //
    405423  if (decayMode == 0) {
    406424    eShell = shellIndex;
    407425  }
    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) {
    411430    G4int aZ = daughterZ;
    412431    if (aZ > 5 && aZ < 100) {  // only applies to 5< Z <100
Note: See TracChangeset for help on using the changeset viewer.