92 lowestKinEnergy(1.0*
GeV),
101 for(
G4int i=1; i<93; ++i) {
105 fDN[i] /= std::pow(dn, 1./
G4double(i));
116 size_t n = partialSumSigma.size();
118 for(
size_t i=0; i<
n; i++) {
119 delete partialSumSigma[i];
147 G4int nn = partialSumSigma.size();
148 G4int nc = cuts.size();
151 if(nn == numOfCouples) {
return; }
157 if ( a ) {
delete a; }
159 partialSumSigma.clear();
162 if (numOfCouples>0) {
163 for (
G4int i=0; i<numOfCouples; i++) {
167 if(i < nc) { cute = cuts[i]; }
172 G4DataVector* dv = ComputePartialSumSigma(material,fixedEnergy,cute);
173 partialSumSigma.push_back(dv);
191 if (kineticEnergy <= lowestKinEnergy)
return dedx;
194 G4double cut = std::min(cutEnergy,tmax);
195 if(cut < minThreshold) cut = minThreshold;
198 const G4double* theAtomicNumDensityVector =
207 dedx += loss*theAtomicNumDensityVector[i];
210 if(dedx < 0.) dedx = 0.;
222 G4double xgi[]={0.03377,0.16940,0.38069,0.61931,0.83060,0.96623};
223 G4double wgi[]={0.08566,0.18038,0.23396,0.23396,0.18038,0.08566};
231 if(vcut>vmax) bbb=vmax ;
233 if (kkk < 1) { kkk = 1; }
237 for(
G4int l=0; l<kkk; l++)
239 for(
G4int i=0; i<6; i++)
247 loss *=hhh*totalEnergy ;
262 G4double xgi[]={0.03377,0.16940,0.38069,0.61931,0.83060,0.96623};
263 G4double wgi[]={0.08566,0.18038,0.23396,0.23396,0.18038,0.08566};
266 if(cut >= tkin)
return cross;
278 for(
G4int l=0; l<kkk; l++)
280 for(
G4int i=0; i<6; i++)
282 G4double ep = exp(aa + xgi[i]*hhh)*totalEnergy;
305 if( gammaEnergy > tkin)
return dxsection ;
309 G4double delta = 0.5*mass*mass*v/(E-gammaEnergy) ;
314 else if(iz > 92) iz = 92;
332 (mass+delta*(dnstar*sqrte-2.))) ;
337 if(gammaEnergy<epmax1)
345 dxsection =
coeff*(1.-v*(1. - 0.75*
v))*Z*(fn*Z +
fe)/gammaEnergy;
360 if (kineticEnergy <= lowestKinEnergy)
return cross;
361 G4double tmax = std::min(maxEnergy, kineticEnergy);
362 G4double cut = std::min(cutEnergy, kineticEnergy);
363 if(cut < minThreshold) cut = minThreshold;
364 if (cut >= tmax)
return cross;
367 if(tmax < kineticEnergy) {
375 G4DataVector* G4MuBremsstrahlungModel::ComputePartialSumSigma(
386 const G4double* theAtomNumDensityVector =
393 for (
G4int i=0; i<nElements; i++ ) {
394 cross += theAtomNumDensityVector[i]
396 (*theElementVector)[i]->GetZ(), cut);
397 dv->push_back(cross);
405 std::vector<G4DynamicParticle*>* vdp,
413 G4double tmax = std::min(kineticEnergy, maxEnergy);
414 G4double tmin = std::min(kineticEnergy, minEnergy);
415 if(tmin < minThreshold) tmin = minThreshold;
416 if(tmin >= tmax)
return;
423 const G4Element* anElement = SelectRandomAtom(couple);
427 G4double totalMomentum = sqrt(kineticEnergy*(kineticEnergy + 2.0*mass));
436 G4double xmax = log(kineticEnergy/tmin);
440 epksi =
MeV*exp(lnepksi);
450 G4double rmax = gam*std::min(1.0, totalEnergy/gEnergy - 1.0);
457 G4double dirx = sint*cos(phi), diry = sint*sin(phi), dirz = cos(theta) ;
462 partDirection *= totalMomentum;
463 partDirection -= gEnergy*gDirection;
464 partDirection = partDirection.
unit();
467 kineticEnergy -= gEnergy;
474 vdp->push_back(aGamma);
479 const G4Element* G4MuBremsstrahlungModel::SelectRandomAtom(
487 if(1 == nElements) {
return (*theElementVector)[0]; }
488 else if(1 > nElements) {
return 0; }
492 for (
G4int i=0; i<nElements; i++) {
493 if (rval <= (*dv)[i]) {
return (*theElementVector)[i]; }
495 return (*theElementVector)[nElements-1];