113 G4bool isInCharge =
false;
115 G4bool hasMaterial =
false;
120 && hasMaterial) isInCharge =
true;
130 G4bool isInCharge =
false;
132 G4bool hasMaterial =
false;
138 && hasMaterial) isInCharge =
true;
175 if(nbOfShell < 1) nbOfShell = 1;
191 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
192 G4double coeff = twopi * proton_mass_c2 *
193 (material-> GetTotNbOfElectPerVolume()) /
195 G4double fBetheVelocity = fine_structure_const * c_light / v;
196 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
204 G4double l0Term = 0, l1Term = 0, l2Term = 0;
206 for (
G4int nos = 0 ; nos < nbOfShell ; nos++){
209 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
215 l0 =
GetL0(NormalizedEnergy);
216 l0Term += shStrength * l0;
218 l1 =
GetL1(NormalizedEnergy);
219 l1Term += shStrength * l1;
221 l2 =
GetL2(NormalizedEnergy);
222 l2Term += shStrength * l2;
240 dedx = coeff * zParticle * zParticle * (l0Term
241 + zParticle * fBetheVelocity * l1Term
242 + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
274 G4int nbOfTheShell)
const
287 else G4cout <<
"WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
288 <<
"The model is not available for "
297 G4int nbOfTheShell)
const
304 G4double squaredPlasmonEnergy = 28.816 * 28.816 * 1e-6
306 * (Z/element->
GetN()) ;
312 * squaredPlasmonEnergy / (Z*Z) ;
316 ionTerm = ionTerm*ionTerm ;
318 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
330 return oscShellEnergy;
334 G4int nbOfTheShell)
const
347 else G4cout <<
"WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
348 <<
"The model is not available for "
352 return shellStrength;
358 G4int indice = ShellNb ;
369 for(n = 0; n <
sizeL0; n++) {
370 if( normEnergy <
L0[n][0] )
break;
373 if(n >= sizeL0) n = sizeL0 - 1 ;
377 G4double bethe = l0p + (l0 - l0p) * ( normEnergy -
L0[n-1][0]) /
378 (
L0[
n][0] -
L0[n-1][0]);
387 for(n = 0; n <
sizeL1; n++) {
388 if( normEnergy <
L1[n][0] )
break;
391 if(n >= sizeL1) n = sizeL1 - 1 ;
395 G4double barkas= l1p + (l1 - l1p) * ( normEnergy -
L1[n-1][0]) /
396 (
L1[
n][0] -
L1[n-1][0]);
406 for(n = 0; n <
sizeL2; n++) {
407 if( normEnergy <
L2[n][0] )
break;
410 if(n >= sizeL2) n = sizeL2 - 1 ;
414 G4double bloch = l2p + (l2 - l2p) * ( normEnergy -
L2[n-1][0]) /
415 (
L2[
n][0] -
L2[n-1][0]);
581 2, 2, 2, 4, 2, 2, 4, 1,
582 2, 2, 2, 4, 2, 2, 4, 2,
583 2, 2, 2, 4, 2, 2, 4, 1, 2,
584 2, 2, 2, 4, 2, 2, 4, 2, 2,
585 2, 2, 2, 4, 2, 2, 4, 3, 2,
586 2, 2, 2, 4, 2, 2, 4, 4, 2,
587 2, 2, 2, 4, 2, 2, 4, 5, 2,
588 2, 2, 2, 4, 2, 2, 4, 6, 2,
589 2, 2, 2, 4, 2, 2, 4, 7, 2,
590 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,
591 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,
592 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,
593 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,
594 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,
595 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,
596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,
597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,
598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,
599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,
600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,
601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
603 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,
604 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,
605 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,
606 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,
607 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,
608 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,
609 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,
610 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,
611 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,
612 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,
613 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,
614 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,
615 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,
616 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,
617 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,
618 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,
619 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
620 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,
621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,
622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,
623 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,
624 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
625 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
626 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
627 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,
628 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,
629 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,
630 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,
631 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,
632 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,
633 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,
634 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,
635 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,
636 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,
637 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,
638 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,
639 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,
640 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,
641 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,
642 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,
643 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,
644 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,
645 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,
646 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,
647 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,
648 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,
649 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,
650 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,
651 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,
652 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,
653 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,
654 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,
655 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,
656 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,
657 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,
658 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,
659 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,
660 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,
661 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,
662 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
669 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 ,
671 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 ,
673 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 ,
675 11 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 ,
677 14 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 ,
681 16 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 ,
683 19 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 ,
685 21 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 ,
687 23 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 ,
689 27 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26
static const G4int nbofShellForMaterial[6]
static const G4double L1[22][2]
static const G4int fNumberOfShells[101]
G4double GetKineticEnergy() const
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const
const G4String & GetName() const
G4double GetDensity() const
G4double EnergyLoss(const G4Material *material, G4double kineticEnergy, G4double zParticle) const
G4ParticleDefinition * GetDefinition() const
static const G4double cuShellEnergy[4]
const G4Element * GetElement(G4int iel) const
static G4AntiProton * AntiProtonDefinition()
G4double GetL2(G4double normEnergy) const
G4double GetOccupationNumber(G4int Z, G4int ShellNb) const
G4double GetL1(G4double normEnergy) const
G4GLOB_DLL std::ostream G4cout
static const G4int nbOfElectronPerSubShell[1540]
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const
G4double GetCharge() const
G4double GetShellStrength(const G4Material *material, G4int nbOfTheShell) const
G4int GetNumberOfShell(const G4Material *material) const
static const G4double siShellStrength[3]
static const G4double cuShellStrength[4]
G4double GetOscillatorEnergy(const G4Material *material, G4int nbOfTheShell) const
static const G4double L0[67][2]
static const G4double taShellEnergy[6]
static const G4double siShellEnergy[3]
G4double energy(const ThreeVector &p, const G4double m)
static const G4double auShellEnergy[6]
G4QAOLowEnergyLoss(const G4String &name)
G4double GetL0(G4double normEnergy) const
static const G4double ptShellStrength[6]
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)
static const G4double alShellEnergy[3]
size_t GetNumberOfElements() const
G4double GetAtomicShell(G4int index) const
G4double GetShellEnergy(const G4Material *material, G4int nbOfTheShell) const
static const G4double taShellStrength[6]
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const
static const double eplus
G4double GetPDGCharge() const
static const G4int materialAvailable[6]
static const G4double auShellStrength[6]
static const G4double L2[14][2]
static const G4double ptShellEnergy[6]
static const G4double alShellStrength[3]