60 for (
G4int k = 0; k < 5; k++) {
61 for (
G4int j = 0; j < 8; j++) {
62 for (
G4int i = 0; i < 1001; i++) {
93 delete theFragmentation;
94 delete theStringDecay;
95 delete theStringModel;
108 if (epmax <= CutFixed) {
119 CalculateHadronicVertex(transferredPhoton, targetNucleus);
135 G4double epmax = TotalEnergy - 0.5*proton_mass_c2;
142 G4int NBINminus1 = NBIN - 1;
145 G4double zdat[] = {1.,4.,13.,29.,92.};
146 for (
G4int iz = 0; iz < nzdat; iz++) {
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) );
282void G4MuonVDNuclearModel::MakeSamplingTable()
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};
307 for (
G4int iz = 0; iz < nzdat; iz++) {
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;
320 c = std::log(Maxep/CutFixed);
323 dy = (ymax-ymin)/NBIN;
329 for (
G4int i = 0; i < NBIN; i++) {
333 dx = std::exp(yy+dy)-std::exp(yy);
335 ep = CutFixed*std::exp(c*x);
344 proba[iz][it][nbin] = CrossSection;
349 if (CrossSection > 0.0) {
350 for (
G4int ib = 0; ib <= nbin; ib++) proba[iz][it][ib] /= CrossSection;
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &theNucleus)
const G4ThreeVector & GetMomentumDirection() const
G4double GetTotalEnergy() const
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondaries(const std::vector< G4HadSecondary > &addSecs)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double GetTotalEnergy() const
G4HadFinalState theParticleChange
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double ComputeDDMicroscopicCrossSection(G4double incidentKE, G4double, G4double AtomicWeight, G4double epsilon)
static G4MuonMinus * MuonMinus()
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
G4double GetPDGMass() const
static G4PionZero * PionZero()
void SetTransport(G4VIntraNuclearTransportModel *const value)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
void SetDeExcitation(G4VPreCompoundModel *ptr)
void SetFragmentationModel(G4VStringFragmentation *aModel)