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;
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static const G4double bl10
void SetCurrentElement(const G4double)
static const G4double tlow
static const G4double bh21
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
static const G4double xgi[8]
static const G4double bl12
static constexpr double MeV
static const G4double ah22
G4double ComputeXSectionPerAtom(G4double cutEnergy)
static const G4double bh22
static const G4double ah12
static constexpr double keV
static const G4double bh30
static const G4double bl20
void SetParticle(const G4ParticleDefinition *p)
const G4ThreeVector & GetMomentumDirection() const
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double tkin, G4double Z, G4double, G4double cutEnergy, G4double maxEnergy=DBL_MAX) override
static const G4double ah10
const G4ElementVector * GetElementVector() const
virtual G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *) override
G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static const G4double emax
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double) override
void SetProposedMomentumDirection(const G4ThreeVector &dir)
std::vector< G4EmElementSelector * > * GetElementSelectors()
G4ParticleDefinition * theGamma
void InitialiseConstants()
G4double GetPDGMass() const
static constexpr double classic_electr_radius
G4double ScreenFunction1(G4double ScreenVariable)
void SetCurrentElement(const G4Element *)
G4double G4Log(G4double x)
G4double LowEnergyLimit() const
static const G4double bh31
static const G4double bh12
static constexpr double electron_Compton_length
static const G4double al10
G4ParticleChangeForLoss * GetParticleChangeForLoss()
static const G4double bh32
static const G4double bl22
static const G4double al02
static const G4double al21
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy) override
virtual ~G4eBremParametrizedModel()
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
static constexpr double electron_mass_c2
static const G4double ah20
static const G4double bl01
static constexpr double MeV
G4eBremParametrizedModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="eBremParam")
static const G4double ah11
static const G4double bl00
static const G4double ah21
void SetAngularDistribution(G4VEmAngularDistribution *)
static const G4double bh10
G4double ComputeParametrizedDXSectionPerAtom(G4double kineticEnergy, G4double gammaEnergy, G4double Z)
static G4Electron * Electron()
static const G4double ah32
int main(int argc, char **argv)
static const G4double bh11
static const G4double bl02
static const G4double al00
G4double ComputeBremLoss(G4double cutEnergy)
static const G4double ah30
static const G4double al11
std::vector< G4Element * > G4ElementVector
G4ParticleChangeForLoss * fParticleChange
void SetLowEnergyLimit(G4double)
void SetProposedKineticEnergy(G4double proposedKinEnergy)
static const G4double bh20
G4double SecondaryThreshold() const
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy) override
G4double GetZ13(G4double Z) const
static const G4double al22
G4VEmAngularDistribution * GetAngularDistribution()
const G4Material * GetMaterial() const
static constexpr double pi
const G4double * GetAtomicNumDensityVector() const
G4bool isElectron(G4int ityp)
static constexpr double fine_structure_const
static const G4double bl21
void ProposeTrackStatus(G4TrackStatus status)
static const G4double wgi[8]
G4double ScreenFunction2(G4double ScreenVariable)
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel) override
G4double GetElectronDensity() const
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
static const G4double al12
size_t GetNumberOfElements() const
static const G4double al20
static const G4double al01
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
const G4ParticleDefinition * particle
static G4NistManager * Instance()
static const G4double bl11
static const G4double ah31