34 #define INCLXX_IN_GEANT4_MODE 1 38 #include "G4INCLPauliStandard.hh" 39 #include "G4INCLPauliBlocking.hh" 46 PauliStandard::PauliStandard() :
49 INCL_DEBUG(
"Initialising PauliStandard. cellSize=" << cellSize <<
'\n');
52 PauliStandard::~PauliStandard() {}
56 if( !(*p)->isNucleon() )
continue;
57 if(getBlockingProbability(*p, n) >
Random::shoot())
return true;
62 G4double PauliStandard::getBlockingProbability(Particle
const *
const particle, Nucleus
const *
const nucleus)
const {
64 const G4double pFermi = nucleus->getPotential()->getFermiMomentum(particle);
66 const G4double pbl = cellSize * std::sqrt(pFermi/r0);
67 const G4double rbl = pbl * r0/pFermi;
73 const G4double rdeq = nucleus->getUniverseRadius();
74 const G4double rs = particle->getPosition().mag();
76 if(rs - maxVolR > rdeq) {
80 if(rs + maxVolR > rdeq) {
81 vol = vol * 0.5 * (rdeq - rs + maxVolR) / maxVolR;
86 ParticleList
const &particles = nucleus->getStore()->getParticles();
89 for(
ParticleIter it=particles.begin(),
e=particles.end(); it!=
e; ++it) {
91 if( (*it)->getID() == particle->getID() )
continue;
93 if((*it)->getType() == particle->getType()) {
94 const ThreeVector dx2v = particle->getPosition() - (*it)->getPosition();
96 if(dx2 > maxVolR * maxVolR)
continue;
98 const ThreeVector dp2v = particle->getMomentum() - (*it)->getMomentum();
100 if(dp2 > maxVolP * maxVolP)
continue;
107 if(blockingProbability > 1.0)
return 1.0;
108 else if(blockingProbability < 0.0)
return 0.0;
109 else return blockingProbability;
const G4double hc
[MeV*fm]
G4bool isBlocked(ParticleList const &modifiedAndCreated, Nucleus const *const nucleus)
G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z)
ParticleList::const_iterator ParticleIter