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 void reset(G4int nHitNeutrons=0, G4int nHitProtons=0, const std::vector< G4ThreeVector > *hitPoints=0)
std::pair< std::vector< G4CascadParticle >, std::vector< G4InuclElementaryParticle > > modelLists
std::pair< G4int, G4int > getTypesOfNucleonsInvolved() const
G4bool worthToPropagate(const G4CascadParticle &cparticle) const
G4int getNumberOfZones() const
G4double absorptionCrossSection(G4double e, G4int type) const
G4double getCurrentDensity(G4int ip, G4int izone) const
const G4double gammaQDscale
std::vector< G4double > vz
void generateInteractionPartners(G4CascadParticle &cparticle)
G4double zoneIntegralWoodsSaxon(G4double ur1, G4double ur2, G4double nuclearRadius) const
std::vector< G4double > zone_radii
G4double generateInteractionLength(const G4CascadParticle &cparticle, G4double path, G4double invmfp) const
std::vector< G4double > zone_volumes
G4CascadeInterpolator< 30 > gammaQDinterp
G4double inverseMeanFreePath(const G4CascadParticle &cparticle, const G4InuclElementaryParticle &target, G4int zone=-1)
G4bool forceFirst(const G4CascadParticle &cparticle) const
G4double getFermiKinetic(G4int ip, G4int izone) const
G4bool passFermi(const std::vector< G4InuclElementaryParticle > &particles, G4int zone)
G4bool stillInside(const G4CascadParticle &cparticle)
G4double zoneIntegralGaussian(G4double ur1, G4double ur2, G4double nuclearRadius) const
std::vector< partner > thePartners
void boundaryTransition(G4CascadParticle &cparticle)
const G4InuclElementaryParticle protonEP
static G4bool useQuasiDeuteron(G4int ptype, G4int qdtype=0)
G4double getVolume(G4int izone) const
G4CascadParticle initializeCascad(G4InuclElementaryParticle *particle)
G4InuclNuclei * theNucleus
std::vector< G4double > pf
G4double getRadiusUnits() const
const G4double radiusScale
G4double totalCrossSection(G4double ke, G4int rtype) const
static const G4double large
const G4double radiusScale2
static const G4double piTimes4thirds
void fillBindingEnergies()
G4CollisionOutput EPCoutput
const G4double radScaleAlpha
G4InuclElementaryParticle generateQuasiDeuteron(G4int type1, G4int type2, G4int zone) const
G4double getRadius() const
G4double getRatio(G4int ip) const
void fillZoneRadii(G4double nuclearRadius)
G4LorentzConvertor dummy_convertor
G4int getZone(G4double r) const
static const G4double kaon_vp
G4int protonNumberCurrent
void fillPotentials(G4int type, G4double tot_vol)
static const G4double alfa6[6]
std::vector< G4LorentzVector > momentums
static const double fermi
std::vector< G4ThreeVector > coordinates
G4double getFermiMomentum(G4int ip, G4int izone) const
std::vector< std::vector< G4double > > nucleon_densities
G4double fillZoneVolumes(G4double nuclearRadius)
void generateModel(G4InuclNuclei *nuclei)
std::pair< G4InuclElementaryParticle, G4double > partner
static const G4double pion_vp_small
const G4double crossSectionUnits
G4LorentzVector generateNucleonMomentum(G4int type, G4int zone) const
std::vector< G4double > binding_energies
G4int getCurrentZone() const
const G4double radiusUnits
std::vector< G4InuclElementaryParticle > qdeutrons
static const G4double alfa3[3]
void generateParticleFate(G4CascadParticle &cparticle, G4ElementaryParticleCollider *theEPCollider, std::vector< G4CascadParticle > &cascade)
std::vector< G4double > rod
G4int getNumberOfNeutrons() const
static const G4double small
std::vector< G4InuclElementaryParticle > raw_particles
G4double getDensity(G4int ip, G4int izone) const
static G4bool sortPartners(const partner &p1, const partner &p2)
static const G4double hyperon_vp
void choosePointAlongTraj(G4CascadParticle &cparticle)
cout<< "-> Edep in the target
G4int getNumberOfProtons() const
void setVerboseLevel(G4int verbose)
const G4InuclElementaryParticle neutronEP
std::vector< G4ThreeVector > collisionPts
std::vector< G4double > acsecs
G4InuclElementaryParticle generateNucleon(G4int type, G4int zone) const
const G4double fermiMomentum
std::vector< std::vector< G4double > > fermi_momenta
G4double getRadius(G4int izone) const
G4bool isProjectile(const G4CascadParticle &cparticle) const
std::vector< std::vector< G4double > > zone_potentials
G4int neutronNumberCurrent
G4bool passTrailing(const G4ThreeVector &hit_position)
static const G4double pion_vp
const G4double radiusForSmall
G4double getPotential(G4int ip, G4int izone) const