119 G4bool isInCharge =
false;
120 G4bool hasMaterial =
false;
122 if (
material->GetNumberOfElements() == 1) hasMaterial =
true;
125 && hasMaterial) isInCharge =
true;
136 G4bool isInCharge =
false;
137 G4bool hasMaterial =
false;
139 if (
material->GetNumberOfElements() == 1) hasMaterial =
true;
142 && hasMaterial) isInCharge =
true;
179 if(nbOfShell < 1) nbOfShell = 1;
184 (
material-> GetTotNbOfElectPerVolume()) /
190 G4double l0Term = 0, l1Term = 0, l2Term = 0;
192 for (
G4int nos = 0 ; nos < nbOfShell ; nos++){
200 l0 =
GetL0(NormalizedEnergy);
201 l0Term += shStrength * l0;
203 l1 =
GetL1(NormalizedEnergy);
204 l1Term += shStrength * l1;
206 l2 =
GetL2(NormalizedEnergy);
207 l2Term += shStrength * l2;
210 dedx = coeff * zParticle * zParticle * (l0Term
211 + zParticle * fBetheVelocity * l1Term
212 + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
242 G4int nbOfTheShell)
const
253 else if (
material->GetNumberOfElements() == 1)
258 ed <<
"The model is not available for "
261 G4Exception(
"G4QAOLowEnergyLoss::GetShellEnergy()",
271 G4int nbOfTheShell)
const
278 G4double squaredPlasmonEnergy = 28.816 * 28.816 * 1e-6
280 * (
Z/element->
GetN()) ;
283 * squaredPlasmonEnergy / (
Z*
Z) ;
286 ionTerm = ionTerm*ionTerm ;
288 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
289 return oscShellEnergy;
295 G4int nbOfTheShell)
const
305 else if (
material->GetNumberOfElements() == 1){
311 ed <<
"The model is not available for "
314 G4Exception(
"G4QAOLowEnergyLoss::GetShellStrength()",
317 return shellStrength;
325 G4int indice = ShellNb ;
338 if( normEnergy <
L0[
n][0] )
break;
345 G4double bethe = l0p + (l0 - l0p) * ( normEnergy -
L0[
n-1][0]) /
357 if( normEnergy <
L1[
n][0] )
break;
364 G4double barkas= l1p + (l1 - l1p) * ( normEnergy -
L1[
n-1][0]) /
375 if( normEnergy <
L2[
n][0] )
break;
382 G4double bloch = l2p + (l2 - l2p) * ( normEnergy -
L2[
n-1][0]) /
541 2, 2, 2, 4, 2, 2, 4, 1,
542 2, 2, 2, 4, 2, 2, 4, 2,
543 2, 2, 2, 4, 2, 2, 4, 1, 2,
544 2, 2, 2, 4, 2, 2, 4, 2, 2,
545 2, 2, 2, 4, 2, 2, 4, 3, 2,
546 2, 2, 2, 4, 2, 2, 4, 4, 2,
547 2, 2, 2, 4, 2, 2, 4, 5, 2,
548 2, 2, 2, 4, 2, 2, 4, 6, 2,
549 2, 2, 2, 4, 2, 2, 4, 7, 2,
550 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,
551 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,
552 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,
553 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,
554 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,
555 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,
556 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,
557 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,
558 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,
559 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,
560 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,
561 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
562 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
563 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,
564 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,
565 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,
566 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,
567 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,
568 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,
569 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,
570 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,
571 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,
572 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,
573 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,
574 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,
575 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,
576 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,
577 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,
578 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,
579 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
580 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,
581 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,
582 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,
583 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,
584 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
585 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
586 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
587 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,
588 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,
589 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,
590 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,
591 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,
592 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,
593 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,
594 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,
595 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,
596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,
597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,
598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,
599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,
600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,
601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,
602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,
603 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,
604 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,
605 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,
606 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,
607 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,
608 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,
609 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1,
610 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2,
611 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
612 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
613 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 2, 4, 1, 2,
614 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 3, 2, 2, 4, 1, 2,
615 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 4, 2, 2, 4, 1, 2,
616 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
617 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
618 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
619 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 8, 2, 2, 4, 1, 2,
620 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,
621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,
622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2
629 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 ,
631 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 ,
633 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 ,
63511 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 ,
63714 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 ,
64116 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 ,
64319 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 ,
64521 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 ,
64723 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 ,
64927 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static constexpr double cm3
static constexpr double twopi
static constexpr double eplus
static constexpr double keV
static constexpr double g
static constexpr double MeV
static G4AntiProton * AntiProtonDefinition()
G4double GetCharge() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetAtomicShell(G4int index) const
G4double GetPDGCharge() const
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const override
static const G4double siShellStrength[3]
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const override
G4double EnergyLoss(const G4Material *material, G4double kineticEnergy, G4double zParticle) const
G4double GetShellEnergy(const G4Material *material, G4int nbOfTheShell) const
static const G4int nbofShellForMaterial[6]
G4double GetOscillatorEnergy(const G4Material *material, G4int nbOfTheShell) const
static const G4double ptShellStrength[6]
static const G4double alShellEnergy[3]
static const G4double cuShellStrength[4]
static const G4double taShellStrength[6]
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material) override
static const G4double siShellEnergy[3]
static const G4int nbOfElectronPerSubShell[1540]
G4double GetOccupationNumber(G4int Z, G4int ShellNb) const
G4int GetNumberOfShell(const G4Material *material) const
static const G4int materialAvailable[6]
static const G4double cuShellEnergy[4]
G4QAOLowEnergyLoss(const G4String &name)
static const G4double alShellStrength[3]
G4double GetL0(G4double normEnergy) const
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const override
G4double GetShellStrength(const G4Material *material, G4int nbOfTheShell) const
G4double GetL2(G4double normEnergy) const
static const G4double L0[67][2]
static const G4double ptShellEnergy[6]
static const G4double L1[22][2]
static const G4double auShellEnergy[6]
static const G4int fNumberOfShells[101]
G4double GetL1(G4double normEnergy) const
static const G4double auShellStrength[6]
static const G4double taShellEnergy[6]
static const G4double L2[14][2]
G4double energy(const ThreeVector &p, const G4double m)
const char * name(G4int ptype)