Ignore:
Timestamp:
Dec 22, 2010, 3:52:27 PM (13 years ago)
Author:
garnier
Message:

geant4 tag 9.4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc

    r1340 r1347  
    2525//
    2626//
    27 // $Id: G4FissionProbability.cc,v 1.9 2009/02/15 17:03:25 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-03-ref-09 $
     27// $Id: G4FissionProbability.cc,v 1.10 2010/11/17 20:22:46 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-04-ref-00 $
    2929//
    3030// Hadronic Process: Nuclear De-excitations
     
    3838#include "G4PairingCorrection.hh"
    3939
     40G4FissionProbability::G4FissionProbability()
     41{}
     42
     43G4FissionProbability::~G4FissionProbability()
     44{}
    4045
    4146
    42 G4FissionProbability::G4FissionProbability(const G4FissionProbability &) : G4VEmissionProbability()
     47G4double
     48G4FissionProbability::EmissionProbability(const G4Fragment & fragment,
     49                                          G4double MaximalKineticEnergy)
     50  // Compute integrated probability of fission channel
    4351{
    44     throw G4HadronicException(__FILE__, __LINE__, "G4FissionProbability::copy_constructor meant to not be accessable");
     52  if (MaximalKineticEnergy <= 0.0) return 0.0;
     53  G4int A = fragment.GetA_asInt();
     54  G4int Z = fragment.GetZ_asInt();
     55  G4double U = fragment.GetExcitationEnergy();
     56 
     57  G4double Ucompound = U -
     58    G4PairingCorrection::GetInstance()->GetPairingCorrection(A,Z);
     59
     60  G4double Ufission = U -
     61    G4PairingCorrection::GetInstance()->GetFissionPairingCorrection(A,Z);
     62 
     63  G4double SystemEntropy =
     64    2.0*std::sqrt(theEvapLDP.LevelDensityParameter(A,Z,Ucompound)*Ucompound);
     65       
     66  G4double afission = theFissLDP.LevelDensityParameter(A,Z,Ufission);
     67
     68  G4double Cf = 2.0*std::sqrt(afission*MaximalKineticEnergy);
     69
     70  //    G4double Q1 = 1.0 + (Cf - 1.0)*std::exp(Cf);
     71  //    G4double Q2 = 4.0*pi*afission*std::exp(SystemEntropy);
     72 
     73  //    G4double probability = Q1/Q2;
     74   
     75  G4double Exp1 = 0.0;
     76  if (SystemEntropy <= 160.0) { Exp1 = std::exp(-SystemEntropy); }
     77  // @@@@@@@@@@@@@@@@@ hpw changed max to min - cannot notify vicente now
     78  G4double Exp2 = std::exp( std::min(700.0,Cf-SystemEntropy) );
     79
     80  // JMQ 14/02/09 BUG fixed in fission probability (missing parenthesis
     81  // at denominator)
     82  //AH fix from Vincente: G4double probability =
     83  //        (Exp1 + (1.0-Cf)*Exp2) / 4.0*pi*afission;
     84  //    G4double probability = (Exp1 + (Cf-1.0)*Exp2) / 4.0*pi*afission;
     85  G4double probability = (Exp1 + (Cf-1.0)*Exp2) / (4.0*pi*afission);
     86
     87  return probability;
    4588}
    4689
    47 
    48 
    49 
    50 const G4FissionProbability & G4FissionProbability::operator=(const G4FissionProbability &)
    51 {
    52     throw G4HadronicException(__FILE__, __LINE__, "G4FissionProbability::operator= meant to not be accessable");
    53     return *this;
    54 }
    55 
    56 
    57 G4bool G4FissionProbability::operator==(const G4FissionProbability &) const
    58 {
    59     return false;
    60 }
    61 
    62 G4bool G4FissionProbability::operator!=(const G4FissionProbability &) const
    63 {
    64     return true;
    65 }
    66 
    67 
    68 G4double G4FissionProbability::EmissionProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy)
    69     // Compute integrated probability of fission channel
    70 {
    71     if (MaximalKineticEnergy <= 0.0) return 0.0;
    72     G4double A = fragment.GetA();
    73     G4double Z = fragment.GetZ();
    74     G4double U = fragment.GetExcitationEnergy();
    75  
    76     G4double Ucompound = U - G4PairingCorrection::GetInstance()->GetPairingCorrection(static_cast<G4int>(A),
    77                                                                                       static_cast<G4int>(Z));
    78     G4double Ufission = U - G4PairingCorrection::GetInstance()->GetFissionPairingCorrection(static_cast<G4int>(A),
    79                                                                                             static_cast<G4int>(Z));
    80  
    81     G4double SystemEntropy = 2.0*std::sqrt(theEvapLDP.LevelDensityParameter(static_cast<G4int>(A),
    82                                                                        static_cast<G4int>(Z),
    83                                                                        Ucompound)*Ucompound);
    84        
    85     G4double afission = theFissLDP.LevelDensityParameter(static_cast<G4int>(A),
    86                                                          static_cast<G4int>(Z),
    87                                                          Ufission);
    88 
    89     G4double Cf = 2.0*std::sqrt(afission*MaximalKineticEnergy);
    90 
    91     //    G4double Q1 = 1.0 + (Cf - 1.0)*std::exp(Cf);
    92     //    G4double Q2 = 4.0*pi*afission*std::exp(SystemEntropy);
    93        
    94     //    G4double probability = Q1/Q2;
    95  
    96    
    97     G4double Exp1 = 0.0;
    98     if (SystemEntropy <= 160.0) Exp1 = std::exp(-SystemEntropy);
    99     // @@@@@@@@@@@@@@@@@ hpw changed max to min - cannot notify vicente now
    100     G4double Exp2 = std::exp( std::min(700.0,Cf-SystemEntropy) );
    101 
    102     // JMQ 14/02/09 BUG fixed in fission probability (missing parenthesis at denominator)
    103     //AH fix from Vincente:    G4double probability = (Exp1 + (1.0-Cf)*Exp2) / 4.0*pi*afission;
    104     //    G4double probability = (Exp1 + (Cf-1.0)*Exp2) / 4.0*pi*afission;
    105     G4double probability = (Exp1 + (Cf-1.0)*Exp2) / (4.0*pi*afission);
    106 
    107 
    108    
    109     return probability;
    110 }
    111 
Note: See TracChangeset for help on using the changeset viewer.