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.
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.
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.
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.
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.