61 for (
G4int k = 0; k < 5; k++) {
62 for (
G4int j = 0; j < 8; j++) {
63 for (
G4int i = 0; i < 1001; i++) {
137 G4double epmax = TotalEnergy - 0.5*proton_mass_c2;
147 G4double zdat[] = {1.,4.,13.,29.,92.};
149 del = std::abs(lnZ-std::log(zdat[
iz]));
157 G4double tdat[] = {1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
159 for (
G4int it = 0; it < ntdat; it++) {
160 del = std::abs(std::log(KineticEnergy)-std::log(tdat[it]) );
173 }
while (((
proba[izz][itt][iy]) < r)&&(iy < NBINminus1)) ;
184 G4double ep = epmin*std::exp(x*std::log(epmax/epmin) );
188 G4double tmin = Mass*Mass*yy*yy/(1.-yy);
189 G4double tmax = 2.*proton_mass_c2*ep;
202 G4double w3 = tmax*(tmin+t1)/(tmin*w2);
216 rej = (1.-t/tmax)*(y1*(1.-tmin/t)+y2)/(y3*(1.-t/t2));
221 0.5*(t-tmin)/(2.*(TotalEnergy*(TotalEnergy-ep)-Mass*Mass)-tmin);
222 G4double theta = std::acos(1. - 2.*sinth2);
226 G4double dirx = sinth*std::cos(phi);
227 G4double diry = sinth*std::sin(phi);
231 finalDirection.rotateUz(ParticleDirection);
233 G4double NewKinEnergy = KineticEnergy - ep;
234 G4double finalMomentum = std::sqrt(NewKinEnergy*(NewKinEnergy+2.*Mass) );
236 G4double initMomentum = std::sqrt(KineticEnergy*(TotalEnergy+Mass) );
244 G4LorentzVector primaryMomentum(initMomentum*ParticleDirection, TotalEnergy);
262 if (gammaE < 10*
GeV) {
269 G4double piMom = std::sqrt(piKE*(piKE + 2*piMass) );
286 G4double adat[] = {1.01,9.01,26.98,63.55,238.03};
287 G4double zdat[] = {1.,4.,13.,29.,92.};
290 G4double tdat[] = {1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
310 AtomicNumber = zdat[
iz];
311 AtomicWeight = adat[
iz]*(
g/
mole);
313 for (
G4int it = 0; it < ntdat; it++) {
314 KineticEnergy = tdat[it];
316 Maxep = TotalEnergy - 0.5*proton_mass_c2;
325 dy = (ymax-ymin)/
NBIN;
335 dx = std::exp(yy+dy)-std::exp(yy);
346 proba[
iz][it][nbin] = CrossSection;
351 if (CrossSection > 0.0) {
352 for (
G4int ib = 0; ib <= nbin; ib++)
proba[
iz][it][ib] /= CrossSection;
G4double proba[5][8][1001]
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &theNucleus)
void AddSecondaries(const std::vector< G4HadSecondary > &addSecs)
CLHEP::Hep3Vector G4ThreeVector
G4double GetTotalEnergy() const
void CalculateHadronicVertex(G4DynamicParticle *incident, G4Nucleus &target)
void SetFragmentationModel(G4VStringFragmentation *aModel)
G4double ComputeDDMicroscopicCrossSection(G4double incidentKE, G4double Z, G4double A, G4double epsilon)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void SetStatusChange(G4HadFinalStateStatus aS)
void SetMinEnergy(G4double anEnergy)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
static G4PionZero * PionZero()
G4DynamicParticle * CalculateEMVertex(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4HadronicInteraction * FindModel(const G4String &name)
void SetEnergyChange(G4double anEnergy)
G4double GetPDGMass() const
G4CascadeInterface * bert
static G4HadronicInteractionRegistry * Instance()
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