67 #ifndef G4NUCLEI_MODEL_HH 
   68 #define G4NUCLEI_MODEL_HH 
   97          const std::vector<G4ThreeVector>* hitPoints=0);
 
  102     return nucleon_densities[ip - 1][izone];
 
  106     return fermi_momenta[ip - 1][izone];
 
  112     if (ip == 9) 
return 0.0;        
 
  113     G4int ip0 = ip < 3 ? ip - 1 : 2;
 
  114     if (ip > 10 && ip < 18) ip0 = 3;
 
  115     if (ip > 20) ip0 = 4;
 
  116     return izone < number_of_zones ? zone_potentials[ip0][izone] : 0.0;
 
  124     return ( (izone<0) ? 0.
 
  125          : (izone<number_of_zones) ? zone_radii[izone] : nuclei_radius);
 
  128     return ( (izone<0) ? 0.
 
  129          : (izone<number_of_zones) ? zone_volumes[izone] : nuclei_volume);
 
  134     for (
G4int iz=0; 
iz<number_of_zones; 
iz++) 
if (r<zone_radii[
iz]) 
return iz;
 
  135     return number_of_zones;
 
  142     return neutronNumberCurrent < 1 && protonNumberCurrent < 1; 
 
  152   typedef std::pair<std::vector<G4CascadParticle>, std::vector<G4InuclElementaryParticle> > 
modelLists;
 
  159     return std::pair<G4int, G4int>(current_nucl1, current_nucl2);
 
  164                 std::vector<G4CascadParticle>& cascade); 
 
  179   G4bool passFermi(
const std::vector<G4InuclElementaryParticle>& particles, 
 
  190   typedef std::pair<G4InuclElementaryParticle, G4double> partner;
 
  192   std::vector<partner> thePartners;     
 
  196   static G4bool sortPartners(
const partner& p1, 
const partner& p2) {
 
  197     return (p2.second > p1.second);
 
  201   void fillBindingEnergies();
 
  203   void fillZoneRadii(
G4double nuclearRadius);
 
  234   std::vector<G4InuclElementaryParticle> qdeutrons; 
 
  235   std::vector<G4double> acsecs;
 
  237   std::vector<G4ThreeVector> coordinates;   
 
  238   std::vector<G4LorentzVector> momentums;
 
  239   std::vector<G4InuclElementaryParticle> raw_particles;
 
  241   std::vector<G4ThreeVector> collisionPts;
 
  247   std::vector<G4double> rod;    
 
  248   std::vector<G4double> pf; 
 
  249   std::vector<G4double> vz; 
 
  252   std::vector<std::vector<G4double> > nucleon_densities;
 
  253   std::vector<std::vector<G4double> > zone_potentials;
 
  254   std::vector<std::vector<G4double> > fermi_momenta;
 
  255   std::vector<G4double> zone_radii;
 
  256   std::vector<G4double> zone_volumes;
 
  257   std::vector<G4double> binding_energies;
 
  260   G4int number_of_zones;
 
  269   G4int neutronNumberCurrent;
 
  270   G4int protonNumberCurrent;
 
  276   enum PotentialType { WoodsSaxon=0, Gaussian=1 };
 
  282   static const G4double radiusForSmall; 
 
  283   static const G4double radScaleAlpha;  
 
  284   static const G4double fermiMomentum;
 
  286   static const G4double alfa3[3], alfa6[6];
 
  288   static const G4double pion_vp_small;
 
  293   static const G4double piTimes4thirds;
 
  294   static const G4double crossSectionUnits;
 
  298 #endif // G4NUCLEI_MODEL_HH