Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCL::CDPP Class Reference

#include <G4INCLCDPP.hh>

+ Inheritance diagram for G4INCL::CDPP:

Public Member Functions

 CDPP ()
 
 ~CDPP ()
 
G4bool isBlocked (ParticleList const, Nucleus const *const) const
 
- Public Member Functions inherited from G4INCL::IPauli
 IPauli ()
 
virtual ~IPauli ()
 
virtual G4bool isBlocked (ParticleList const, Nucleus const *const) const =0
 

Detailed Description

Definition at line 47 of file G4INCLCDPP.hh.

Constructor & Destructor Documentation

◆ CDPP()

G4INCL::CDPP::CDPP ( )

Definition at line 43 of file G4INCLCDPP.cc.

43{}

◆ ~CDPP()

G4INCL::CDPP::~CDPP ( )

Definition at line 45 of file G4INCLCDPP.cc.

45{}

Member Function Documentation

◆ isBlocked()

G4bool G4INCL::CDPP::isBlocked ( ParticleList const  created,
Nucleus const * const  nucleus 
) const
virtual

Implements G4INCL::IPauli.

Definition at line 47 of file G4INCLCDPP.cc.

47 {
48 G4double S = nucleus->computeSeparationEnergyBalance();
49
50 const G4double Sp = nucleus->getPotential()->getSeparationEnergy(Proton);
51 const G4double Sn = nucleus->getPotential()->getSeparationEnergy(Neutron);
52
53 ParticleList remnantParticles = nucleus->getStore()->getParticles();
54 remnantParticles.insert(remnantParticles.end(), created.begin(), created.end());
55
56 G4double Sk = 0.0;
57 G4double TbelowTf = 0.0;
58 for(ParticleIter i = remnantParticles.begin(); i != remnantParticles.end();
59 ++i) {
60
61 if((*i)->isNucleon()) {
62 const G4double Tf = nucleus->getPotential()->getFermiEnergy(*i);
63 const G4double T = (*i)->getKineticEnergy();
64
65 if(T > Tf) {
66 const G4double sep = nucleus->getPotential()->getSeparationEnergy(*i);
67 Sk += sep;
68 } else {
69 TbelowTf += T - (*i)->getPotentialEnergy();
70 }
71 } else if((*i)->isResonance()) {
72 const G4double Tf = nucleus->getPotential()->getFermiEnergy(*i);
73 const G4double T = (*i)->getKineticEnergy();
74
75 if(T > Tf) {
76 const G4double sep = nucleus->getPotential()->getSeparationEnergy(*i);
77 Sk += sep;
78 } else { // Ugly! We should use total energies everywhere!
79 TbelowTf += (*i)->getEnergy() - ParticleTable::getINCLMass(Proton) - (*i)->getPotentialEnergy();
80 }
81 } else if((*i)->getType() == PiPlus)
82 Sk += Sp - Sn;
83 else if((*i)->getType() == PiMinus)
84 Sk += Sn - Sp;
85
86 }
87 G4double Tinitial = nucleus->getInitialInternalEnergy();
88 G4double Eblock = TbelowTf - Tinitial - Sk - S;
89
90 return (Eblock < 0.0);
91 }
double G4double
Definition: G4Types.hh:64
static G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
std::list< G4INCL::Particle * > ParticleList
std::list< G4INCL::Particle * >::const_iterator ParticleIter

The documentation for this class was generated from the following files: