86 protonMassAMU(1.007276)
90 lowestKinEnergy = 0.25*CLHEP::keV;
91 theZieglerFactor = CLHEP::eV*CLHEP::cm2*1.0e-15;
93 expStopPower125 = 0.0;
96 if(
nullptr != p) { SetParticle(p); }
97 else { SetParticle(theElectron); }
115 if(p != particle) { SetParticle(p); }
130 if(
nullptr == fParticleChange) {
137 pname !=
"deuteron" && pname !=
"triton" &&
138 pname !=
"alpha+" && pname !=
"helium" &&
139 pname !=
"hydrogen") { isIon =
true; }
185 const G4double maxEnergy = std::min(tmax, maxKinEnergy);
186 const G4double cutEnergy = std::max(cut, lowestKinEnergy*massRate);
187 if(cutEnergy < maxEnergy) {
189 const G4double energy = kineticEnergy + mass;
190 const G4double energy2 = energy*energy;
191 const G4double beta2 = kineticEnergy*(kineticEnergy + 2.0*mass)/energy2;
192 cross = (maxEnergy - cutEnergy)/(cutEnergy*maxEnergy)
193 - beta2*
G4Log(maxEnergy/cutEnergy)/tmax;
195 if( 0.0 < spin ) { cross += 0.5*(maxEnergy - cutEnergy)/energy2; }
197 cross *= CLHEP::twopi_mc2_rcl2*chargeSquare/beta2;
237 const G4double tkin = kineticEnergy/massRate;
238 const G4double cutEnergy = std::max(cut, lowestKinEnergy*massRate);
241 if(tkin < lowestKinEnergy) {
242 dedx = DEDX(material, lowestKinEnergy)*std::sqrt(tkin/lowestKinEnergy);
244 dedx = DEDX(material, tkin);
246 if (cutEnergy < tmax) {
247 const G4double tau = kineticEnergy/mass;
250 dedx += (
G4Log(x)*(tau + 1.)*(tau + 1.)/(tau * (tau + 2.0)) + 1.0 - x) *
254 dedx = std::max(dedx, 0.0) * chargeSquare;
270 const G4double xmax = std::min(tmax, maxEnergy);
271 const G4double xmin = std::max(lowestKinEnergy*massRate, minEnergy);
272 if(xmin >= xmax) {
return; }
275 const G4double energy = kineticEnergy + mass;
276 const G4double energy2 = energy*energy;
277 const G4double beta2 = kineticEnergy*(kineticEnergy + 2.0*mass)/energy2;
287 deltaKinEnergy = xmin*xmax/(xmin*(1.0 - rndm[0]) + xmax*rndm[0]);
289 f = 1.0 - beta2*deltaKinEnergy/tmax;
292 G4cout <<
"G4BraggModel::SampleSecondary Warning! "
293 <<
"Majorant " << grej <<
" < "
294 << f <<
" for e= " << deltaKinEnergy
299 }
while( grej*rndm[1] >= f );
313 std::sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
314 G4double cost = deltaKinEnergy * (energy + electron_mass_c2) /
316 if(cost > 1.0) { cost = 1.0; }
317 G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
321 deltaDirection.
set(sint*std::cos(phi),sint*std::sin(phi), cost) ;
329 kineticEnergy -= deltaKinEnergy;
331 finalP = finalP.
unit();
336 vdp->push_back(delta);
344 if(pd != particle) { SetParticle(pd); }
346 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
347 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
353void G4BraggModel::HasMaterial(
const G4Material* mat)
356 if(chFormula.empty()) {
return; }
359 static const G4int numberOfMolecula = 11;
360 static const G4String molName[numberOfMolecula] = {
361 "Al_2O_3",
"CO_2",
"CH_4",
362 "(C_2H_4)_N-Polyethylene",
"(C_2H_4)_N-Polypropylene",
"(C_8H_8)_N",
363 "C_3H_8",
"SiO_2",
"H_2O",
364 "H_2O-Gas",
"Graphite" } ;
367 for (
G4int i=0; i<numberOfMolecula; ++i) {
368 if (chFormula == molName[i]) {
383 if (iMolecula >= 0) {
389 G4double T = kineticEnergy/(keV*protonMassAMU) ;
391 static const G4float a[11][5] = {
392 {1.187E+1f, 1.343E+1f, 1.069E+4f, 7.723E+2f, 2.153E-2f},
393 {7.802E+0f, 8.814E+0f, 8.303E+3f, 7.446E+2f, 7.966E-3f},
394 {7.294E+0f, 8.284E+0f, 5.010E+3f, 4.544E+2f, 8.153E-3f},
395 {8.646E+0f, 9.800E+0f, 7.066E+3f, 4.581E+2f, 9.383E-3f},
396 {1.286E+1f, 1.462E+1f, 5.625E+3f, 2.621E+3f, 3.512E-2f},
397 {3.229E+1f, 3.696E+1f, 8.918E+3f, 3.244E+3f, 1.273E-1f},
398 {1.604E+1f, 1.825E+1f, 6.967E+3f, 2.307E+3f, 3.775E-2f},
399 {8.049E+0f, 9.099E+0f, 9.257E+3f, 3.846E+2f, 1.007E-2f},
400 {4.015E+0f, 4.542E+0f, 3.955E+3f, 4.847E+2f, 7.904E-3f},
401 {4.571E+0f, 5.173E+0f, 4.346E+3f, 4.779E+2f, 8.572E-3f},
402 {2.631E+0f, 2.601E+0f, 1.701E+3f, 1.279E+3f, 1.638E-2f} };
404 static const G4float atomicWeight[11] = {
405 101.96128f, 44.0098f, 16.0426f, 28.0536f, 42.0804f,
406 104.1512f, 44.665f, 60.0843f, 18.0152f, 18.0152f, 12.0f};
409 ionloss = ((
G4double)(a[iMolecula][0])) * std::sqrt(T) ;
411 }
else if ( T < 10000.0 ) {
418 ionloss = slow*shigh / (slow + shigh) ;
421 ionloss = std::max(ionloss, 0.0);
422 if ( 10 == iMolecula ) {
426 ionloss *= (1.0+0.023+0.0066*
G4Log(T)*invLog10);
428 else if (T < 700.0) {
429 ionloss *=(1.0+0.089-0.0248*
G4Log(T-99.)*invLog10);
431 else if (T < 10000.0) {
432 ionloss *=(1.0+0.089-0.0248*
G4Log(700.-99.)*invLog10);
435 ionloss /= (
G4double)atomicWeight[iMolecula];
440 ionloss = ElectronicStoppingPower( z, kineticEnergy ) ;
458 G4double T = kineticEnergy/(keV*protonMassAMU) ;
460 static const G4float a[92][5] = {
461 {1.254E+0f, 1.440E+0f, 2.426E+2f, 1.200E+4f, 1.159E-1f},
462 {1.229E+0f, 1.397E+0f, 4.845E+2f, 5.873E+3f, 5.225E-2f},
463 {1.411E+0f, 1.600E+0f, 7.256E+2f, 3.013E+3f, 4.578E-2f},
464 {2.248E+0f, 2.590E+0f, 9.660E+2f, 1.538E+2f, 3.475E-2f},
465 {2.474E+0f, 2.815E+0f, 1.206E+3f, 1.060E+3f, 2.855E-2f},
466 {2.631E+0f, 2.601E+0f, 1.701E+3f, 1.279E+3f, 1.638E-2f},
467 {2.954E+0f, 3.350E+0f, 1.683E+3f, 1.900E+3f, 2.513E-2f},
468 {2.652E+0f, 3.000E+0f, 1.920E+3f, 2.000E+3f, 2.230E-2f},
469 {2.085E+0f, 2.352E+0f, 2.157E+3f, 2.634E+3f, 1.816E-2f},
470 {1.951E+0f, 2.199E+0f, 2.393E+3f, 2.699E+3f, 1.568E-2f},
472 {2.542E+0f, 2.869E+0f, 2.628E+3f, 1.854E+3f, 1.472E-2f},
473 {3.791E+0f, 4.293E+0f, 2.862E+3f, 1.009E+3f, 1.397E-2f},
474 {4.154E+0f, 4.739E+0f, 2.766E+3f, 1.645E+2f, 2.023E-2f},
475 {4.914E+0f, 5.598E+0f, 3.193E+3f, 2.327E+2f, 1.419E-2f},
476 {3.232E+0f, 3.647E+0f, 3.561E+3f, 1.560E+3f, 1.267E-2f},
477 {3.447E+0f, 3.891E+0f, 3.792E+3f, 1.219E+3f, 1.211E-2f},
478 {5.301E+0f, 6.008E+0f, 3.969E+3f, 6.451E+2f, 1.183E-2f},
479 {5.731E+0f, 6.500E+0f, 4.253E+3f, 5.300E+2f, 1.123E-2f},
480 {5.152E+0f, 5.833E+0f, 4.482E+3f, 5.457E+2f, 1.129E-2f},
481 {5.521E+0f, 6.252E+0f, 4.710E+3f, 5.533E+2f, 1.112E-2f},
483 {5.201E+0f, 5.884E+0f, 4.938E+3f, 5.609E+2f, 9.995E-3f},
484 {4.858E+0f, 5.489E+0f, 5.260E+3f, 6.511E+2f, 8.930E-3f},
485 {4.479E+0f, 5.055E+0f, 5.391E+3f, 9.523E+2f, 9.117E-3f},
486 {3.983E+0f, 4.489E+0f, 5.616E+3f, 1.336E+3f, 8.413E-3f},
487 {3.469E+0f, 3.907E+0f, 5.725E+3f, 1.461E+3f, 8.829E-3f},
488 {3.519E+0f, 3.963E+0f, 6.065E+3f, 1.243E+3f, 7.782E-3f},
489 {3.140E+0f, 3.535E+0f, 6.288E+3f, 1.372E+3f, 7.361E-3f},
490 {3.553E+0f, 4.004E+0f, 6.205E+3f, 5.551E+2f, 8.763E-3f},
491 {3.696E+0f, 4.194E+0f, 4.649E+3f, 8.113E+1f, 2.242E-2f},
492 {4.210E+0f, 4.750E+0f, 6.953E+3f, 2.952E+2f, 6.809E-3f},
494 {5.041E+0f, 5.697E+0f, 7.173E+3f, 2.026E+2f, 6.725E-3f},
495 {5.554E+0f, 6.300E+0f, 6.496E+3f, 1.100E+2f, 9.689E-3f},
496 {5.323E+0f, 6.012E+0f, 7.611E+3f, 2.925E+2f, 6.447E-3f},
497 {5.874E+0f, 6.656E+0f, 7.395E+3f, 1.175E+2f, 7.684E-3f},
498 {6.658E+0f, 7.536E+0f, 7.694E+3f, 2.223E+2f, 6.509E-3f},
499 {6.413E+0f, 7.240E+0f, 1.185E+4f, 1.537E+2f, 2.880E-3f},
500 {5.694E+0f, 6.429E+0f, 8.478E+3f, 2.929E+2f, 6.087E-3f},
501 {6.339E+0f, 7.159E+0f, 8.693E+3f, 3.303E+2f, 6.003E-3f},
502 {6.407E+0f, 7.234E+0f, 8.907E+3f, 3.678E+2f, 5.889E-3f},
503 {6.734E+0f, 7.603E+0f, 9.120E+3f, 4.052E+2f, 5.765E-3f},
505 {6.901E+0f, 7.791E+0f, 9.333E+3f, 4.427E+2f, 5.587E-3f},
506 {6.424E+0f, 7.248E+0f, 9.545E+3f, 4.802E+2f, 5.376E-3f},
507 {6.799E+0f, 7.671E+0f, 9.756E+3f, 5.176E+2f, 5.315E-3f},
508 {6.109E+0f, 6.887E+0f, 9.966E+3f, 5.551E+2f, 5.151E-3f},
509 {5.924E+0f, 6.677E+0f, 1.018E+4f, 5.925E+2f, 4.919E-3f},
510 {5.238E+0f, 5.900E+0f, 1.038E+4f, 6.300E+2f, 4.758E-3f},
512 {5.345E+0f, 6.038E+0f, 6.790E+3f, 3.978E+2f, 1.676E-2f},
513 {5.814E+0f, 6.554E+0f, 1.080E+4f, 3.555E+2f, 4.626E-3f},
514 {6.229E+0f, 7.024E+0f, 1.101E+4f, 3.709E+2f, 4.540E-3f},
515 {6.409E+0f, 7.227E+0f, 1.121E+4f, 3.864E+2f, 4.474E-3f},
517 {7.500E+0f, 8.480E+0f, 8.608E+3f, 3.480E+2f, 9.074E-3f},
518 {6.979E+0f, 7.871E+0f, 1.162E+4f, 3.924E+2f, 4.402E-3f},
519 {7.725E+0f, 8.716E+0f, 1.183E+4f, 3.948E+2f, 4.376E-3f},
520 {8.337E+0f, 9.425E+0f, 1.051E+4f, 2.696E+2f, 6.206E-3f},
521 {7.287E+0f, 8.218E+0f, 1.223E+4f, 3.997E+2f, 4.447E-3f},
522 {7.899E+0f, 8.911E+0f, 1.243E+4f, 4.021E+2f, 4.511E-3f},
523 {8.041E+0f, 9.071E+0f, 1.263E+4f, 4.045E+2f, 4.540E-3f},
524 {7.488E+0f, 8.444E+0f, 1.283E+4f, 4.069E+2f, 4.420E-3f},
525 {7.291E+0f, 8.219E+0f, 1.303E+4f, 4.093E+2f, 4.298E-3f},
526 {7.098E+0f, 8.000E+0f, 1.323E+4f, 4.118E+2f, 4.182E-3f},
528 {6.909E+0f, 7.786E+0f, 1.343E+4f, 4.142E+2f, 4.058E-3f},
529 {6.728E+0f, 7.580E+0f, 1.362E+4f, 4.166E+2f, 3.976E-3f},
530 {6.551E+0f, 7.380E+0f, 1.382E+4f, 4.190E+2f, 3.877E-3f},
531 {6.739E+0f, 7.592E+0f, 1.402E+4f, 4.214E+2f, 3.863E-3f},
532 {6.212E+0f, 6.996E+0f, 1.421E+4f, 4.239E+2f, 3.725E-3f},
533 {5.517E+0f, 6.210E+0f, 1.440E+4f, 4.263E+2f, 3.632E-3f},
534 {5.220E+0f, 5.874E+0f, 1.460E+4f, 4.287E+2f, 3.498E-3f},
535 {5.071E+0f, 5.706E+0f, 1.479E+4f, 4.330E+2f, 3.405E-3f},
536 {4.926E+0f, 5.542E+0f, 1.498E+4f, 4.335E+2f, 3.342E-3f},
537 {4.788E+0f, 5.386E+0f, 1.517E+4f, 4.359E+2f, 3.292E-3f},
539 {4.893E+0f, 5.505E+0f, 1.536E+4f, 4.384E+2f, 3.243E-3f},
540 {5.028E+0f, 5.657E+0f, 1.555E+4f, 4.408E+2f, 3.195E-3f},
541 {4.738E+0f, 5.329E+0f, 1.574E+4f, 4.432E+2f, 3.186E-3f},
542 {4.587E+0f, 5.160E+0f, 1.541E+4f, 4.153E+2f, 3.406E-3f},
543 {5.201E+0f, 5.851E+0f, 1.612E+4f, 4.416E+2f, 3.122E-3f},
544 {5.071E+0f, 5.704E+0f, 1.630E+4f, 4.409E+2f, 3.082E-3f},
545 {4.946E+0f, 5.563E+0f, 1.649E+4f, 4.401E+2f, 2.965E-3f},
546 {4.477E+0f, 5.034E+0f, 1.667E+4f, 4.393E+2f, 2.871E-3f},
548 {4.844E+0f, 5.458E+0f, 7.852E+3f, 9.758E+2f, 2.077E-2f},
549 {4.307E+0f, 4.843E+0f, 1.704E+4f, 4.878E+2f, 2.882E-3f},
551 {4.723E+0f, 5.311E+0f, 1.722E+4f, 5.370E+2f, 2.913E-3f},
552 {5.319E+0f, 5.982E+0f, 1.740E+4f, 5.863E+2f, 2.871E-3f},
553 {5.956E+0f, 6.700E+0f, 1.780E+4f, 6.770E+2f, 2.660E-3f},
554 {6.158E+0f, 6.928E+0f, 1.777E+4f, 5.863E+2f, 2.812E-3f},
555 {6.203E+0f, 6.979E+0f, 1.795E+4f, 5.863E+2f, 2.776E-3f},
556 {6.181E+0f, 6.954E+0f, 1.812E+4f, 5.863E+2f, 2.748E-3f},
557 {6.949E+0f, 7.820E+0f, 1.830E+4f, 5.863E+2f, 2.737E-3f},
558 {7.506E+0f, 8.448E+0f, 1.848E+4f, 5.863E+2f, 2.727E-3f},
559 {7.648E+0f, 8.609E+0f, 1.866E+4f, 5.863E+2f, 2.697E-3f},
560 {7.711E+0f, 8.679E+0f, 1.883E+4f, 5.863E+2f, 2.641E-3f},
562 {7.407E+0f, 8.336E+0f, 1.901E+4f, 5.863E+2f, 2.603E-3f},
563 {7.290E+0f, 8.204E+0f, 1.918E+4f, 5.863E+2f, 2.673E-3f}
569 if ( T < 40.0 && 5 == i) {
570 fac = std::sqrt(T*0.025);
574 }
else if ( T < 10.0 ) {
575 fac = std::sqrt(T*0.1) ;
586 ionloss = slow*shigh*fac / (slow + shigh);
588 ionloss = std::max(ionloss, 0.0);
600 if(material != currentMaterial) {
601 currentMaterial = material;
606 iICRU90 = fICRU90 ? fICRU90->
GetIndex(baseMaterial) : -1;
609 iPSTAR = fPSTAR->
GetIndex(baseMaterial);
610 if(iPSTAR < 0) { HasMaterial(baseMaterial); }
629 const G4double* theAtomicNumDensityVector =
634 eloss = StoppingPower(baseMaterial, kineticEnergy)*
638 }
else if(1 == numberOfElements) {
641 eloss = ElectronicStoppingPower(z, kineticEnergy)
646 }
else if( MolecIsInZiegler1988(material) ) {
654 for (std::size_t i=0; i<numberOfElements; ++i) {
655 const G4Element* element = (*theElementVector)[i] ;
657 eloss += ElectronicStoppingPower(z,kineticEnergy)
658 * theAtomicNumDensityVector[i] ;
659 eloss125 += ElectronicStoppingPower(z,125.0*keV)
660 * theAtomicNumDensityVector[i] ;
664 eloss *= ChemicalFactor(kineticEnergy, eloss125) ;
672 for (std::size_t i=0; i<numberOfElements; ++i)
674 const G4Element* element = (*theElementVector)[i] ;
675 eloss += ElectronicStoppingPower(element->
GetZ(), kineticEnergy)
676 * theAtomicNumDensityVector[i];
679 return eloss*theZieglerFactor;
692 if (myFormula == chFormula ) {
return false; }
702 if( theState ==
kStateGas && myFormula == chFormula)
return false ;
706 static const G4float HeEff = 2.8735f;
708 static const std::size_t numberOfMolecula = 53;
709 static const G4String nameOfMol[numberOfMolecula] = {
710 "H_2O",
"C_2H_4O",
"C_3H_6O",
"C_2H_2",
"C_H_3OH",
711 "C_2H_5OH",
"C_3H_7OH",
"C_3H_4",
"NH_3",
"C_14H_10",
712 "C_6H_6",
"C_4H_10",
"C_4H_6",
"C_4H_8O",
"CCl_4",
713 "CF_4",
"C_6H_8",
"C_6H_12",
"C_6H_10O",
"C_6H_10",
714 "C_8H_16",
"C_5H_10",
"C_5H_8",
"C_3H_6-Cyclopropane",
"C_2H_4F_2",
715 "C_2H_2F_2",
"C_4H_8O_2",
"C_2H_6",
"C_2F_6",
"C_2H_6O",
716 "C_3H_6O",
"C_4H_10O",
"C_2H_4",
"C_2H_4O",
"C_2H_4S",
717 "SH_2",
"CH_4",
"CCLF_3",
"CCl_2F_2",
"CHCl_2F",
718 "(CH_3)_2S",
"N_2O",
"C_5H_10O",
"C_8H_6",
"(CH_2)_N",
719 "(C_3H_6)_N",
"(C_8H_8)_N",
"C_3H_8",
"C_3H_6-Propylene",
"C_3H_6O",
720 "C_3H_6S",
"C_4H_4S",
"C_7H_8"
723 static const G4float expStopping[numberOfMolecula] = {
724 66.1f, 190.4f, 258.7f, 42.2f, 141.5f,
725 210.9f, 279.6f, 198.8f, 31.0f, 267.5f,
726 122.8f, 311.4f, 260.3f, 328.9f, 391.3f,
727 206.6f, 374.0f, 422.0f, 432.0f, 398.0f,
728 554.0f, 353.0f, 326.0f, 74.6f, 220.5f,
729 197.4f, 362.0f, 170.0f, 330.5f, 211.3f,
730 262.3f, 349.6f, 51.3f, 187.0f, 236.9f,
731 121.9f, 35.8f, 247.0f, 292.6f, 268.0f,
732 262.3f, 49.0f, 398.9f, 444.0f, 22.91f,
733 68.0f, 155.0f, 84.0f, 74.2f, 254.7f,
734 306.8f, 324.4f, 420.0f
737 static const G4float expCharge[numberOfMolecula] = {
738 HeEff, HeEff, HeEff, 1.0f, HeEff,
739 HeEff, HeEff, HeEff, 1.0f, 1.0f,
740 1.0f, HeEff, HeEff, HeEff, HeEff,
741 HeEff, HeEff, HeEff, HeEff, HeEff,
742 HeEff, HeEff, HeEff, 1.0f, HeEff,
743 HeEff, HeEff, HeEff, HeEff, HeEff,
744 HeEff, HeEff, 1.0f, HeEff, HeEff,
745 HeEff, 1.0f, HeEff, HeEff, HeEff,
746 HeEff, 1.0f, HeEff, HeEff, 1.0f,
747 1.0f, 1.0f, 1.0f, 1.0f, HeEff,
751 static const G4int numberOfAtomsPerMolecula[numberOfMolecula] = {
765 for (std::size_t i=0; i<numberOfMolecula; ++i) {
766 if(chFormula == nameOfMol[i]) {
767 expStopPower125 = ((
G4double)expStopping[i])
769 ((
G4double)(expCharge[i] * numberOfAtomsPerMolecula[i]));
785 static const G4double gamma25 = 1.0 + 25.0*keV /proton_mass_c2;
786 static const G4double gamma125 = 1.0 + 125.0*keV/proton_mass_c2;
787 static const G4double beta25 = std::sqrt(1.0 - 1.0/(gamma25*gamma25));
788 static const G4double beta125 = std::sqrt(1.0 - 1.0/(gamma125*gamma125));
789 static const G4double f12525 = 1.0 +
G4Exp( 1.48*(beta125/beta25 - 7.0) );
791 G4double gamma = 1.0 + kineticEnergy/proton_mass_c2;
792 G4double beta = std::sqrt(1.0 - 1.0/(gamma*gamma));
794 G4double factor = 1.0 + (expStopPower125/eloss125 - 1.0) * f12525/
795 (1.0 +
G4Exp( 1.48 * ( beta/beta25 - 7.0 ) ) );
std::vector< const G4Element * > G4ElementVector
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
virtual void flatArray(const int size, double *vect)=0
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy) override
G4BraggModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="Bragg")
G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kinEnergy) final
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
G4double GetParticleCharge(const G4ParticleDefinition *p, const G4Material *mat, G4double kineticEnergy) override
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy) override
G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *couple) override
G4double GetChargeSquareRatio() const
G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy) override
G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
G4ThreeVector GetMomentum() const
G4double GetTotalMomentum() const
static G4Electron * Electron()
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double EffectiveChargeCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
static G4EmParameters * Instance()
G4double GetElectronicDEDXforProton(const G4Material *, G4double kinEnergy) const
G4int GetIndex(const G4Material *) const
G4double GetMeanExcitationEnergy() const
static G4LossTableManager * Instance()
G4EmCorrections * EmCorrections()
const G4Material * GetMaterial() const
G4double GetDensity() const
const G4String & GetChemicalFormula() const
const G4ElementVector * GetElementVector() const
const G4Material * GetBaseMaterial() const
G4double GetTotNbOfAtomsPerVolume() const
G4IonisParamMat * GetIonisation() const
size_t GetNumberOfElements() const
const G4double * GetAtomicNumDensityVector() const
G4double GetElectronDensity() const
G4ICRU90StoppingData * GetICRU90StoppingData()
static G4NistManager * Instance()
G4int GetIndex(const G4Material *) const
G4double GetElectronicDEDX(G4int idx, G4double energy) const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void SetProposedMomentumDirection(const G4ThreeVector &dir)
const G4String & GetParticleType() const
G4double GetPDGMass() const
const G4String & GetParticleName() const
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
virtual void SetParticleAndCharge(const G4ParticleDefinition *, G4double q2)
void SetHighEnergyLimit(G4double)
G4VEmFluctuationModel * GetModelOfFluctuations()
G4VEmAngularDistribution * GetAngularDistribution()
G4int SelectRandomAtomNumber(const G4Material *) const
void SetDeexcitationFlag(G4bool val)
void SetAngularDistribution(G4VEmAngularDistribution *)
G4bool UseAngularGeneratorFlag() const
G4double MaxSecondaryKinEnergy(const G4DynamicParticle *dynParticle)
G4ParticleChangeForLoss * GetParticleChangeForLoss()