34 #define INCLXX_IN_GEANT4_MODE 1
52 sampleOneProton(&
ParticleSampler::sampleOneParticleWithoutRPCorrelation),
53 sampleOneNeutron(&
ParticleSampler::sampleOneParticleWithoutRPCorrelation),
113 theList.resize(
theA);
122 Particle *p = (this->*sampleOneParticle)(type);
134 theList[0] = aProton;
135 theList[1] = aNeutron;
144 const G4double momentumRatio = momentumAbs/theFermiMomentum;
157 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.
InterpolationTable * createPCDFTable(const ParticleType t, const G4int A, const G4int Z)
G4double getFermiMomentum(const Particle *const p) const
Return the Fermi momentum for a particle.
const G4INCL::ThreeVector & getMomentum() const
Get the momentum vector.
~ParticleSampler()
Destructor.
InterpolationTable * createRCDFTable(const ParticleType t, const G4int A, const G4int Z)
void setUncorrelatedMomentum(const G4double p)
Set the uncorrelated momentum.
ThreeVector normVector(G4double norm=1.)
Generate isotropically-distributed ThreeVectors of given norm.
void sampleParticlesIntoList(ThreeVector const &position, ParticleList &theList)
Class for sampling particles in a nucleus.
double A(double temperature)
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)
InterpolationTable const * theRCDFTable[UnknownParticle]
Array of pointers to the r-space CDF table.
ParticleSampler(const G4int A, const G4int Z)
Constructor.
const G4int theA
Mass number.
NuclearPotential::INuclearPotential const * thePotential
Pointer to the Cluster's NuclearPotential.
Particle *(ParticleSampler::* ParticleSamplerMethod)(const ParticleType t) const
ParticleSamplerMethod sampleOneNeutron
Sample a list of particles.
InterpolationTable const * thePCDFTable[UnknownParticle]
Array of pointers to the p-space CDF table.
const G4INCL::ThreeVector & getPosition() const
Set the position vector.
void setPotential(NuclearPotential::INuclearPotential const *const p)
Setter for thePotential.
const G4double x[NPOINTSGL]
G4double shoot()
Generate flat distribution of random numbers.
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.