#include <G4INCLCDPP.hh>
Inheritance diagram for G4INCL::CDPP:
Public Member Functions | |
CDPP () | |
~CDPP () | |
G4bool | isBlocked (ParticleList const, Nucleus const *const) const |
Definition at line 45 of file G4INCLCDPP.hh.
G4INCL::CDPP::CDPP | ( | ) |
G4INCL::CDPP::~CDPP | ( | ) |
G4bool G4INCL::CDPP::isBlocked | ( | ParticleList | const, | |
Nucleus const * | const | |||
) | const [virtual] |
Implements G4INCL::IPauli.
Definition at line 45 of file G4INCLCDPP.cc.
References G4INCL::Nucleus::computeSeparationEnergyBalance(), G4INCL::NuclearPotential::INuclearPotential::getFermiEnergy(), G4INCL::ParticleTable::getINCLMass(), G4INCL::Nucleus::getInitialInternalEnergy(), G4INCL::Store::getParticles(), G4INCL::Nucleus::getPotential(), G4INCL::NuclearPotential::INuclearPotential::getSeparationEnergy(), G4INCL::Nucleus::getStore(), G4INCL::Neutron, G4INCL::PiMinus, G4INCL::PiPlus, and G4INCL::Proton.
00045 { 00046 G4double S = nucleus->computeSeparationEnergyBalance(); 00047 00048 const G4double Sp = nucleus->getPotential()->getSeparationEnergy(Proton); 00049 const G4double Sn = nucleus->getPotential()->getSeparationEnergy(Neutron); 00050 00051 ParticleList remnantParticles = nucleus->getStore()->getParticles(); 00052 remnantParticles.insert(remnantParticles.end(), created.begin(), created.end()); 00053 00054 G4double Sk = 0.0; 00055 G4double TbelowTf = 0.0; 00056 for(ParticleIter i = remnantParticles.begin(); i != remnantParticles.end(); 00057 ++i) { 00058 00059 if((*i)->isNucleon()) { 00060 const G4double Tf = nucleus->getPotential()->getFermiEnergy(*i); 00061 const G4double T = (*i)->getKineticEnergy(); 00062 00063 if(T > Tf) { 00064 const G4double sep = nucleus->getPotential()->getSeparationEnergy(*i); 00065 Sk += sep; 00066 } else { 00067 TbelowTf += T - (*i)->getPotentialEnergy(); 00068 } 00069 } else if((*i)->isResonance()) { 00070 const G4double Tf = nucleus->getPotential()->getFermiEnergy(*i); 00071 const G4double T = (*i)->getKineticEnergy(); 00072 00073 if(T > Tf) { 00074 const G4double sep = nucleus->getPotential()->getSeparationEnergy(*i); 00075 Sk += sep; 00076 } else { // Ugly! We should use total energies everywhere! 00077 TbelowTf += (*i)->getEnergy() - ParticleTable::getINCLMass(Proton) - (*i)->getPotentialEnergy(); 00078 } 00079 } else if((*i)->getType() == PiPlus) 00080 Sk += Sp - Sn; 00081 else if((*i)->getType() == PiMinus) 00082 Sk += Sn - Sp; 00083 00084 } 00085 G4double Tinitial = nucleus->getInitialInternalEnergy(); 00086 G4double Eblock = TbelowTf - Tinitial - Sk - S; 00087 00088 return (Eblock < 0.0); 00089 }