G4INCL::CDPP Class Reference

#include <G4INCLCDPP.hh>

Inheritance diagram for G4INCL::CDPP:

G4INCL::IPauli

Public Member Functions

 CDPP ()
 ~CDPP ()
G4bool isBlocked (ParticleList const, Nucleus const *const) const

Detailed Description

Definition at line 45 of file G4INCLCDPP.hh.


Constructor & Destructor Documentation

G4INCL::CDPP::CDPP (  ) 

Definition at line 41 of file G4INCLCDPP.cc.

00041 {}

G4INCL::CDPP::~CDPP (  ) 

Definition at line 43 of file G4INCLCDPP.cc.

00043 {}


Member Function Documentation

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   }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:54:06 2013 for Geant4 by  doxygen 1.4.7