33 #define INCLXX_IN_GEANT4_MODE 1
51 sampleOneProton(&
ParticleSampler::sampleOneParticleWithoutRPCorrelation),
52 sampleOneNeutron(&
ParticleSampler::sampleOneParticleWithoutRPCorrelation),
111 if(i == (
theZ + 1)) {
115 Particle *p = (this->*sampleOneParticle)(type);
117 theList.push_back(p);
127 theList.push_back(aProton);
128 theList.push_back(aNeutron);
139 const G4double momentumRatio = momentumAbs/theFermiMomentum;
152 return new Particle(t, momentumVector, positionVector);
ParticleList sampleParticles(ThreeVector const &position)
Particle * sampleOneParticleWithFuzzyRPCorrelation(const ParticleType t) const
Sample one particle with a fuzzy rp-correlation.
Particle * sampleOneParticleWithoutRPCorrelation(const ParticleType t) const
Sample one particle not taking into account the rp-correlation.
ThreeVector sphereVector(G4double rmax=1.)
Generate ThreeVectors that are uniformly distributed in a sphere of radius rmax.
void updateSampleOneParticleMethods()
G4double rpCorrelationCoefficient[UnknownParticle]
Correlation coefficients for the r-p correlation.
G4double getFermiMomentum(const Particle *const p) const
Return the Fermi momentum for a particle.
InverseInterpolationTable * createPCDFTable(const ParticleType t, const G4int A, const G4int Z)
const G4INCL::ThreeVector & getMomentum() const
Get the momentum vector.
~ParticleSampler()
Destructor.
void setUncorrelatedMomentum(const G4double p)
Set the uncorrelated momentum.
ThreeVector normVector(G4double norm=1.)
Generate isotropically-distributed ThreeVectors of given norm.
Class for sampling particles in a nucleus.
Particle * sampleOneParticleWithRPCorrelation(const ParticleType t) const
Sample one particle taking into account the rp-correlation.
void setDensity(NuclearDensity const *const d)
Setter for theDensity.
const G4int theZ
Charge number.
std::pair< G4double, G4double > correlatedUniform(const G4double corrCoeff)
Generate pairs of correlated uniform random numbers.
ParticleSamplerMethod sampleOneProton
Sample a list of particles.
virtual void setPosition(const G4INCL::ThreeVector &position)
InverseInterpolationTable const * thePCDFTable[UnknownParticle]
Array of pointers to the p-space CDF table.
ParticleSampler(const G4int A, const G4int Z)
Constructor.
const G4int theA
Mass number.
static const G4double A[nN]
NuclearPotential::INuclearPotential const * thePotential
Pointer to the Cluster's NuclearPotential.
Particle *(ParticleSampler::* ParticleSamplerMethod)(const ParticleType t) const
ParticleSamplerMethod sampleOneNeutron
Sample a list of particles.
const G4INCL::ThreeVector & getPosition() const
Set the position vector.
void setPotential(NuclearPotential::INuclearPotential const *const p)
Setter for thePotential.
InverseInterpolationTable * createRCDFTable(const ParticleType t, const G4int A, const G4int Z)
G4double shoot()
Generate flat distribution of random numbers.
InverseInterpolationTable const * theRCDFTable[UnknownParticle]
Array of pointers to the r-space CDF table.
G4double mag() const
Get the length of the vector.
G4double getRPCorrelationCoefficient(const ParticleType t)
Get the value of the r-p correlation coefficient.
G4double pow13(G4double x)
NuclearDensity const * theDensity
Pointer to the Cluster's NuclearDensity.
G4double getMaxRFromP(const ParticleType t, const G4double p) const
Get the maximum allowed radius for a given momentum.