60 #include "G4ParticleChangeForLoss.hh" 69 0.5917, 0.7628, 0.8983, 0.9801 };
71 0.1813, 0.1569, 0.1112, 0.0506 };
210 if(cut == 0.0) {
return 0.0; }
247 for(
G4int l=0; l<
n; l++) {
249 for(
G4int i=0; i<8; i++) {
279 if(cut >= tmax) {
return 0.0; }
310 for(
G4int l=0; l<
n; l++) {
312 for(
G4int i=0; i<8; i++) {
336 if (ScreenVariable > 1.)
337 screenVal = 42.24 - 8.368*
G4Log(ScreenVariable+0.952);
339 screenVal = 42.392 - ScreenVariable* (7.796 - 1.961*ScreenVariable);
352 if (ScreenVariable > 1.)
353 screenVal = 42.24 - 8.368*
G4Log(ScreenVariable+0.952);
355 screenVal = 41.734 - ScreenVariable* (6.484 - 1.250*ScreenVariable);
382 if (kineticEnergy >
tlow) {
392 ah = 1. + (ah1*U2 + ah2*U + ah3) / (U2*U);
393 bh = 0.75 + (bh1*U2 + bh2*U + bh3) / (U2*U);
400 G4double screenvar = screenfac*epsil/(1.0-epsil);
405 greject = (F1 - epsil* (ah*F1 - bh*epsil*F2))/8.;
407 std::cout <<
" yy = "<<epsil<<std::endl;
408 std::cout <<
" F1/(...) "<<F1/(42.392 - FZ)<<std::endl;
409 std::cout <<
" F2/(...) "<<F2/(42.392 - FZ)<<std::endl;
410 std::cout <<
" (42.392 - FZ) " << (42.392 - FZ) <<std::endl;
422 ah = al0 + al1*U + al2*U2;
423 bh = bl0 + bl1*U + bl2*U2;
426 greject=(1. + x* (ah + bh*
x));
444 if(gammaEnergy < 0.0) {
return 0.0; }
458 std::cout<<
"Ekin = "<<
kinEnergy<<std::endl;
459 std::cout<<
"Z = "<<
currentZ<<std::endl;
460 std::cout<<
"main = "<<main<<std::endl;
461 std::cout<<
" y = "<<y<<std::endl;
462 std::cout<<
" Fel-fCoulomb "<< (
Fel-
fCoulomb) <<std::endl;
465 std::cout<<
"main2 = "<<main2<<std::endl;
475 std::vector<G4DynamicParticle*>* vdp,
485 if(cut >= emax) {
return; }
506 gammaEnergy = sqrt(x);
510 G4cout <<
"### G4eBremParametrizedModel Warning: Majoranta exceeded! " 511 << f <<
" > " <<
fMax 512 <<
" Egamma(MeV)= " << gammaEnergy
513 <<
" E(mEV)= " << kineticEnergy
518 }
while (f < fMax*rndmEngine->
flat());
532 vdp->push_back(gamma);
536 - gammaEnergy*gammaDirection).unit();
539 G4double finalE = kineticEnergy - gammaEnergy;
G4double LowEnergyLimit() const
static const G4double bh12
G4double ScreenFunction2(G4double ScreenVariable)
static const G4double al00
G4double SecondaryThreshold() const
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
static const G4double bh10
G4ParticleChangeForLoss * GetParticleChangeForLoss()
static const G4double bh32
G4bool isElectron(G4int ityp)
static const G4double al12
std::vector< G4Element * > G4ElementVector
const G4Material * GetMaterial() const
static const G4double bl02
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
static const G4double ah11
G4ParticleChangeForLoss * fParticleChange
static const G4double bl11
void InitialiseConstants()
G4double GetZ13(G4double Z)
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy)
G4VEmAngularDistribution * GetAngularDistribution()
G4eBremParametrizedModel(const G4ParticleDefinition *p=0, const G4String &nam="eBremParam")
void SetElementSelectors(std::vector< G4EmElementSelector *> *)
static const G4double bh22
int main(int argc, char **argv)
G4double ScreenFunction1(G4double ScreenVariable)
static const G4double ah31
static const G4double xgi[8]
static const G4double al01
G4double ComputeXSectionPerAtom(G4double cutEnergy)
static const G4double bl21
static G4NistManager * Instance()
static const G4double ah22
static const G4double al11
static const G4double bh20
static const G4double bl00
static const G4double al22
static const G4double bl01
G4double GetKineticEnergy() const
static const G4double al20
const G4double * GetAtomicNumDensityVector() const
static const G4double al02
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * theGamma
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
static const G4double bh11
float electron_Compton_length
static const G4double tlow
std::vector< G4EmElementSelector * > * GetElementSelectors()
static const G4double bh30
virtual ~G4eBremParametrizedModel()
static const G4double emax
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double ComputeParametrizedDXSectionPerAtom(G4double kineticEnergy, G4double gammaEnergy, G4double Z)
static const G4double ah12
int classic_electr_radius
static const G4double ah32
static const G4double al10
static const G4double ah20
G4double GetElectronDensity() const
const G4ThreeVector & GetMomentumDirection() const
G4double GetPDGMass() const
void SetParticle(const G4ParticleDefinition *p)
void SetAngularDistribution(G4VEmAngularDistribution *)
size_t GetNumberOfElements() const
static const G4double bh21
const G4ParticleDefinition * particle
static const G4double bl22
static const G4double bh31
static G4Electron * Electron()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double tkin, G4double Z, G4double, G4double cutEnergy, G4double maxEnergy=DBL_MAX)
static const G4double bl10
G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
const G4ElementVector * GetElementVector() const
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double)
static const G4double bl12
void SetCurrentElement(const G4double)
void SetLowEnergyLimit(G4double)
static const G4double al21
virtual G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *)
static const G4double wgi[8]
void SetCurrentElement(const G4Element *)
static const G4double ah21
static const G4double ah30
G4double ComputeBremLoss(G4double cutEnergy)
static const G4double bl20
virtual void SampleSecondaries(std::vector< G4DynamicParticle *> *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static const G4double ah10
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)