60 for (
G4int k = 0; k < 5; k++) {
61 for (
G4int j = 0; j < 8; j++) {
62 for (
G4int i = 0; i < 1001; i++) {
135 G4double epmax = TotalEnergy - 0.5*proton_mass_c2;
145 G4double zdat[] = {1.,4.,13.,29.,92.};
147 del = std::abs(lnZ-std::log(zdat[
iz]));
155 G4double tdat[] = {1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
157 for (
G4int it = 0; it < ntdat; it++) {
158 del = std::abs(std::log(KineticEnergy)-std::log(tdat[it]) );
171 }
while (((
proba[izz][itt][iy]) < r)&&(iy < NBINminus1)) ;
182 G4double ep = epmin*std::exp(x*std::log(epmax/epmin) );
186 G4double tmin = Mass*Mass*yy*yy/(1.-yy);
187 G4double tmax = 2.*proton_mass_c2*ep;
200 G4double w3 = tmax*(tmin+t1)/(tmin*w2);
214 rej = (1.-t/tmax)*(y1*(1.-tmin/t)+y2)/(y3*(1.-t/t2));
219 0.5*(t-tmin)/(2.*(TotalEnergy*(TotalEnergy-ep)-Mass*Mass)-tmin);
220 G4double theta = std::acos(1. - 2.*sinth2);
224 G4double dirx = sinth*std::cos(phi);
225 G4double diry = sinth*std::sin(phi);
229 finalDirection.rotateUz(ParticleDirection);
231 G4double NewKinEnergy = KineticEnergy - ep;
232 G4double finalMomentum = std::sqrt(NewKinEnergy*(NewKinEnergy+2.*Mass) );
234 G4double initMomentum = std::sqrt(KineticEnergy*(TotalEnergy+Mass) );
242 G4LorentzVector primaryMomentum(initMomentum*ParticleDirection, TotalEnergy);
260 if (gammaE < 10*
GeV) {
267 G4double piMom = std::sqrt(piKE*(piKE + 2*piMass) );
284 G4double adat[] = {1.01,9.01,26.98,63.55,238.03};
285 G4double zdat[] = {1.,4.,13.,29.,92.};
288 G4double tdat[] = {1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
308 AtomicNumber = zdat[
iz];
309 AtomicWeight = adat[
iz]*(
g/
mole);
311 for (
G4int it = 0; it < ntdat; it++) {
312 KineticEnergy = tdat[it];
314 Maxep = TotalEnergy - 0.5*proton_mass_c2;
323 dy = (ymax-ymin)/
NBIN;
333 dx = std::exp(yy+dy)-std::exp(yy);
344 proba[
iz][it][nbin] = CrossSection;
349 if (CrossSection > 0.0) {
350 for (
G4int ib = 0; ib <= nbin; ib++)
proba[
iz][it][ib] /= CrossSection;
G4PreCompoundModel * preEquilib
G4double proba[5][8][1001]
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &theNucleus)
void AddSecondaries(const std::vector< G4HadSecondary > &addSecs)
G4GeneratorPrecompoundInterface * precoInterface
CLHEP::Hep3Vector G4ThreeVector
G4double GetTotalEnergy() const
void CalculateHadronicVertex(G4DynamicParticle *incident, G4Nucleus &target)
void SetFragmentationModel(G4VStringFragmentation *aModel)
G4FTFModel * theStringModel
G4double ComputeDDMicroscopicCrossSection(G4double incidentKE, G4double, G4double AtomicWeight, G4double epsilon)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void SetStatusChange(G4HadFinalStateStatus aS)
void SetMinEnergy(G4double anEnergy)
const G4ThreeVector & GetMomentumDirection() const
G4ExcitationHandler * theHandler
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
static G4PionZero * PionZero()
G4DynamicParticle * CalculateEMVertex(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
void SetEnergyChange(G4double anEnergy)
G4double GetPDGMass() const
G4CascadeInterface * bert
void SetMaxEnergy(const G4double anEnergy)
void SetDeExcitation(G4VPreCompoundModel *ptr)
G4HadFinalState theParticleChange
static G4MuonMinus * MuonMinus()
void SetTransport(G4VIntraNuclearTransportModel *const value)
G4LundStringFragmentation * theFragmentation
void SetMomentumChange(const G4ThreeVector &aV)
G4KokoulinMuonNuclearXS muNucXS
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4ExcitedStringDecay * theStringDecay
G4double GetTotalEnergy() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
CLHEP::HepLorentzVector G4LorentzVector