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