76 #ifndef G4NUCLEI_MODEL_HH 
   77 #define G4NUCLEI_MODEL_HH 
  106          const std::vector<G4ThreeVector>* hitPoints=0);
 
  111     return nucleon_densities[ip - 1][izone];
 
  115     return fermi_momenta[ip - 1][izone];
 
  121     if (ip == 9 || ip < 0) 
return 0.0;      
 
  122     G4int ip0 = ip < 3 ? ip - 1 : 2;
 
  123     if (ip > 10 && ip < 18) ip0 = 3;
 
  124     if (ip > 20) ip0 = 4;
 
  125     return izone < number_of_zones ? zone_potentials[ip0][izone] : 0.0;
 
  133     return ( (izone<0) ? 0.
 
  134          : (izone<number_of_zones) ? zone_radii[izone] : nuclei_radius);
 
  137     return ( (izone<0) ? 0.
 
  138          : (izone<number_of_zones) ? zone_volumes[izone] : nuclei_volume);
 
  143     for (
G4int iz=0; 
iz<number_of_zones; 
iz++) 
if (r<zone_radii[
iz]) 
return iz;
 
  144     return number_of_zones;
 
  151     return neutronNumberCurrent < 1 && protonNumberCurrent < 1; 
 
  161   typedef std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> > 
modelLists;
 
  168     return std::pair<G4int, G4int>(current_nucl1, current_nucl2);
 
  173                 std::vector<G4CascadParticle>& cascade); 
 
  190   G4bool passFermi(
const std::vector<G4InuclElementaryParticle>& particles, 
 
  203   typedef std::pair<G4InuclElementaryParticle, G4double> 
partner;
 
  210     return (p2.second > p1.second);
 
  251   std::vector<G4InuclElementaryParticle> qdeutrons; 
 
  252   std::vector<G4double> acsecs;
 
  254   std::vector<G4ThreeVector> coordinates;   
 
  255   std::vector<G4LorentzVector> momentums;
 
  256   std::vector<G4InuclElementaryParticle> raw_particles;
 
  258   std::vector<G4ThreeVector> collisionPts;
 
  264   std::vector<G4double> rod;    
 
  265   std::vector<G4double> pf; 
 
  266   std::vector<G4double> vz; 
 
  269   std::vector<std::vector<G4double> > nucleon_densities;
 
  270   std::vector<std::vector<G4double> > zone_potentials;
 
  271   std::vector<std::vector<G4double> > fermi_momenta;
 
  272   std::vector<G4double> zone_radii;
 
  273   std::vector<G4double> zone_volumes;
 
  274   std::vector<G4double> binding_energies;
 
  277   G4int number_of_zones;
 
  286   G4int neutronNumberCurrent;
 
  287   G4int protonNumberCurrent;
 
  295   enum PotentialType { WoodsSaxon=0, Gaussian=1 };
 
  305   static const G4double radiusForSmall; 
 
  306   static const G4double radScaleAlpha;  
 
  307   static const G4double fermiMomentum;
 
  309   static const G4double alfa3[3], alfa6[6];
 
  311   static const G4double pion_vp_small;
 
  319   static const G4double piTimes4thirds;
 
  320   static const G4double crossSectionUnits;
 
  328 #endif // G4NUCLEI_MODEL_HH  
void reset(G4int nHitNeutrons=0, G4int nHitProtons=0, const std::vector< G4ThreeVector > *hitPoints=0)
 
G4double zoneIntegralWoodsSaxon(G4double ur1, G4double ur2, G4double nuclearRadius) const 
 
G4double getRadius(G4int izone) const 
 
G4InuclElementaryParticle generateQuasiDeuteron(G4int type1, G4int type2, G4int zone) const 
 
std::pair< std::vector< G4CascadParticle >, std::vector< G4InuclElementaryParticle > > modelLists
 
std::pair< G4int, G4int > getTypesOfNucleonsInvolved() const 
 
void generateInteractionPartners(G4CascadParticle &cparticle)
 
G4double inverseMeanFreePath(const G4CascadParticle &cparticle, const G4InuclElementaryParticle &target, G4int zone=-1)
 
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
 
G4LorentzVector generateNucleonMomentum(G4int type, G4int zone) const 
 
void boundaryTransition(G4CascadParticle &cparticle)
 
static G4bool useQuasiDeuteron(G4int ptype, G4int qdtype=0)
 
G4CascadParticle initializeCascad(G4InuclElementaryParticle *particle)
 
G4double getVolume(G4int izone) const 
 
G4double absorptionCrossSection(G4double e, G4int type) const 
 
G4bool isProjectile(const G4CascadParticle &cparticle) const 
 
void fillBindingEnergies()
 
G4double getCurrentDensity(G4int ip, G4int izone) const 
 
void fillZoneRadii(G4double nuclearRadius)
 
void fillPotentials(G4int type, G4double tot_vol)
 
G4double generateInteractionLength(const G4CascadParticle &cparticle, G4double path, G4double invmfp) const 
 
G4double fillZoneVolumes(G4double nuclearRadius)
 
void generateModel(G4InuclNuclei *nuclei)
 
std::pair< G4InuclElementaryParticle, G4double > partner
 
G4double getRadius() const 
 
G4int getNumberOfZones() const 
 
void generateParticleFate(G4CascadParticle &cparticle, G4ElementaryParticleCollider *theEPCollider, std::vector< G4CascadParticle > &cascade)
 
G4double getRatio(G4int ip) const 
 
G4int getNumberOfProtons() const 
 
G4double totalCrossSection(G4double ke, G4int rtype) const 
 
G4double getFermiMomentum(G4int ip, G4int izone) const 
 
G4bool worthToPropagate(const G4CascadParticle &cparticle) const 
 
static G4bool sortPartners(const partner &p1, const partner &p2)
 
void choosePointAlongTraj(G4CascadParticle &cparticle)
 
G4int getCurrentZone() const 
 
G4int getNumberOfNeutrons() const 
 
void setVerboseLevel(G4int verbose)
 
G4InuclElementaryParticle generateNucleon(G4int type, G4int zone) const 
 
G4double getDensity(G4int ip, G4int izone) const 
 
G4double getRadiusUnits() const 
 
G4bool passTrailing(const G4ThreeVector &hit_position)
 
G4int getZone(G4double r) const 
 
G4bool forceFirst(const G4CascadParticle &cparticle) const 
 
G4double getPotential(G4int ip, G4int izone) const