78 #ifndef G4NUCLEI_MODEL_HH
79 #define G4NUCLEI_MODEL_HH
108 const std::vector<G4ThreeVector>* hitPoints=0);
123 if (ip == 9 || ip < 0)
return 0.0;
124 G4int ip0 = ip < 3 ? ip - 1 : 2;
125 if (ip > 10 && ip < 18) ip0 = 3;
126 if (ip > 20) ip0 = 4;
135 return ( (izone<0) ? 0.
139 return ( (izone<0) ? 0.
163 typedef std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> >
modelLists;
175 std::vector<G4CascadParticle>& cascade);
192 G4bool passFermi(
const std::vector<G4InuclElementaryParticle>& particles,
205 typedef std::pair<G4InuclElementaryParticle, G4double>
partner;
212 return (p2.second > p1.second);
266 std::vector<G4double>
rod;
267 std::vector<G4double>
pf;
268 std::vector<G4double>
vz;
327 #endif // G4NUCLEI_MODEL_HH
std::vector< G4ThreeVector > collisionPts
std::vector< G4double > acsecs
G4InuclElementaryParticle generateNucleon(G4int type, G4int zone) const
const G4InuclElementaryParticle protonEP
static const G4double pion_vp_small
std::vector< ExP01TrackerHit * > a
void fillZoneRadii(G4double nuclearRadius)
const G4double fermiMomentum
std::vector< G4double > vz
static const G4double large
std::vector< std::vector< G4double > > fermi_momenta
const G4double radiusForSmall
void setVerboseLevel(G4int verbose)
static const G4double hyperon_vp
G4double getRatio(G4int ip) const
G4bool isProjectile(const G4CascadParticle &cparticle) const
G4CascadeInterpolator< 30 > gammaQDinterp
G4int getNumberOfNeutrons() const
void fillPotentials(G4int type, G4double tot_vol)
std::vector< std::vector< G4double > > nucleon_densities
G4bool worthToPropagate(const G4CascadParticle &cparticle) const
std::vector< G4double > binding_energies
G4bool passTrailing(const G4ThreeVector &hit_position)
std::vector< G4double > zone_volumes
std::vector< std::vector< G4double > > zone_potentials
std::pair< std::vector< G4CascadParticle >, std::vector< G4InuclElementaryParticle > > modelLists
G4double fillZoneVolumes(G4double nuclearRadius)
G4double totalCrossSection(G4double ke, G4int rtype) const
G4int getNumberOfZones() const
static constexpr double fermi
G4double generateInteractionLength(const G4CascadParticle &cparticle, G4double path, G4double invmfp) const
G4double getRadiusUnits() const
void reset(G4int nHitNeutrons=0, G4int nHitProtons=0, const std::vector< G4ThreeVector > *hitPoints=0)
G4double getFermiMomentum(G4int ip, G4int izone) const
std::vector< G4double > pf
G4double getRadius(G4int izone) const
void boundaryTransition(G4CascadParticle &cparticle)
G4double getPotential(G4int ip, G4int izone) const
static const G4double pion_vp
std::vector< G4double > zone_radii
G4CollisionOutput EPCoutput
G4double getDensity(G4int ip, G4int izone) const
G4int getZone(G4double r) const
const G4InuclElementaryParticle neutronEP
G4LorentzVector generateNucleonMomentum(G4int type, G4int zone) const
static G4bool useQuasiDeuteron(G4int ptype, G4int qdtype=0)
static G4bool sortPartners(const partner &p1, const partner &p2)
const G4double crossSectionUnits
G4bool passFermi(const std::vector< G4InuclElementaryParticle > &particles, G4int zone)
G4double getVolume(G4int izone) const
G4int getNumberOfProtons() const
static const G4double alfa6[6]
G4int getCurrentZone() const
std::vector< partner > thePartners
static const G4double alfa3[3]
const G4double radiusScale2
std::pair< G4InuclElementaryParticle, G4double > partner
void generateInteractionPartners(G4CascadParticle &cparticle)
G4double zoneIntegralWoodsSaxon(G4double ur1, G4double ur2, G4double nuclearRadius) const
const G4double radiusScale
std::vector< G4InuclElementaryParticle > raw_particles
G4double getCurrentDensity(G4int ip, G4int izone) const
G4InuclNuclei * theNucleus
G4bool forceFirst(const G4CascadParticle &cparticle) const
G4bool stillInside(const G4CascadParticle &cparticle)
G4InuclElementaryParticle generateQuasiDeuteron(G4int type1, G4int type2, G4int zone) const
const G4double radiusUnits
G4CascadParticle initializeCascad(G4InuclElementaryParticle *particle)
static const G4double piTimes4thirds
G4double getRadius() const
static const G4double kaon_vp
const G4double radScaleAlpha
G4double getFermiKinetic(G4int ip, G4int izone) const
std::vector< G4double > rod
std::vector< G4InuclElementaryParticle > qdeutrons
G4double zoneIntegralGaussian(G4double ur1, G4double ur2, G4double nuclearRadius) const
G4LorentzConvertor dummy_convertor
static const G4double small
void choosePointAlongTraj(G4CascadParticle &cparticle)
G4double inverseMeanFreePath(const G4CascadParticle &cparticle, const G4InuclElementaryParticle &target, G4int zone=-1)
G4int neutronNumberCurrent
std::vector< G4ThreeVector > coordinates
std::vector< G4LorentzVector > momentums
const G4double gammaQDscale
std::pair< G4int, G4int > getTypesOfNucleonsInvolved() const
G4int protonNumberCurrent
void generateModel(G4InuclNuclei *nuclei)
void fillBindingEnergies()
G4double absorptionCrossSection(G4double e, G4int type) const
void generateParticleFate(G4CascadParticle &cparticle, G4ElementaryParticleCollider *theEPCollider, std::vector< G4CascadParticle > &cascade)