67 0.5917, 0.7628, 0.8983, 0.9801 };
69 0.1813, 0.1569, 0.1112, 0.0506 };
104 isInitialised(false),
208 if(cut == 0.0) {
return 0.0; }
213 const G4double* theAtomicNumDensityVector =
material->GetAtomicNumDensityVector();
218 for (
size_t i=0; i<
material->GetNumberOfElements(); i++) {
245 for(
G4int l=0; l<
n; l++) {
247 for(
G4int i=0; i<8; i++) {
277 if(cut >= tmax) {
return 0.0; }
308 for(
G4int l=0; l<
n; l++) {
310 for(
G4int i=0; i<8; i++) {
334 if (ScreenVariable > 1.)
335 screenVal = 42.24 - 8.368*
G4Log(ScreenVariable+0.952);
337 screenVal = 42.392 - ScreenVariable* (7.796 - 1.961*ScreenVariable);
350 if (ScreenVariable > 1.)
351 screenVal = 42.24 - 8.368*
G4Log(ScreenVariable+0.952);
353 screenVal = 41.734 - ScreenVariable* (6.484 - 1.250*ScreenVariable);
380 if (kineticEnergy >
tlow) {
390 ah = 1. + (ah1*U2 + ah2*U + ah3) / (U2*U);
391 bh = 0.75 + (bh1*U2 + bh2*U + bh3) / (U2*U);
398 G4double screenvar = screenfac*epsil/(1.0-epsil);
403 greject = (F1 - epsil* (ah*F1 - bh*epsil*F2))/8.;
405 std::cout <<
" yy = "<<epsil<<std::endl;
406 std::cout <<
" F1/(...) "<<F1/(42.392 - FZ)<<std::endl;
407 std::cout <<
" F2/(...) "<<F2/(42.392 - FZ)<<std::endl;
408 std::cout <<
" (42.392 - FZ) " << (42.392 - FZ) <<std::endl;
420 ah = al0 + al1*U + al2*U2;
421 bh = bl0 + bl1*U + bl2*U2;
423 G4double x=gammaEnergy/kineticEnergy;
424 greject=(1. + x* (ah + bh*x));
442 if(gammaEnergy < 0.0) {
return 0.0; }
456 std::cout<<
"Ekin = "<<
kinEnergy<<std::endl;
457 std::cout<<
"Z = "<<
currentZ<<std::endl;
458 std::cout<<
"main = "<<
main<<std::endl;
459 std::cout<<
" y = "<<y<<std::endl;
460 std::cout<<
" Fel-fCoulomb "<< (
Fel-
fCoulomb) <<std::endl;
463 std::cout<<
"main2 = "<<main2<<std::endl;
473 std::vector<G4DynamicParticle*>* vdp,
483 if(cut >=
emax) {
return; }
504 gammaEnergy = sqrt(x);
508 G4cout <<
"### G4eBremParametrizedModel Warning: Majoranta exceeded! "
509 << f <<
" > " <<
fMax
510 <<
" Egamma(MeV)= " << gammaEnergy
511 <<
" E(mEV)= " << kineticEnergy
516 }
while (f < fMax*rndmEngine->
flat());
530 vdp->push_back(gamma);
534 - gammaEnergy*gammaDirection).unit();
537 G4double finalE = kineticEnergy - gammaEnergy;
static const G4double emax
std::vector< const G4Element * > G4ElementVector
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static constexpr double keV
static constexpr double MeV
static constexpr double pi
static const G4double ah21
static const G4double bl10
static const G4double ah10
static const G4double ah20
static const G4double al21
static const G4double al22
static const G4double al01
static const G4double bl11
static const G4double ah11
static const G4double bl01
static const G4double bh31
static const G4double bh22
static const G4double bl00
static const G4double bl02
static const G4double al02
static const G4double al12
static const G4double bh10
static const G4double bl12
static const G4double bl22
static const G4double bl20
static const G4double al10
static const G4double al00
static const G4double ah32
static const G4double ah31
static const G4double bh32
static const G4double tlow
static const G4double bh30
static const G4double bh20
static const G4double bh12
static const G4double bl21
static const G4double ah12
static const G4double ah22
static const G4double bh21
static const G4double al20
static const G4double ah30
static const G4double al11
static const G4double bh11
G4GLOB_DLL std::ostream G4cout
int main(int argc, char *argv[])
const G4ThreeVector & GetMomentumDirection() const
G4double GetLogKineticEnergy() const
G4double GetKineticEnergy() const
static G4Electron * Electron()
const G4Material * GetMaterial() const
G4double GetElectronDensity() const
G4double GetZ13(G4double Z) const
static G4NistManager * Instance()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void SetProposedMomentumDirection(const G4ThreeVector &dir)
G4double GetPDGMass() const
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
G4VEmAngularDistribution * GetAngularDistribution()
G4double LowEnergyLimit() const
std::vector< G4EmElementSelector * > * GetElementSelectors()
void SetCurrentElement(const G4Element *)
void SetLowEnergyLimit(G4double)
void SetAngularDistribution(G4VEmAngularDistribution *)
const G4Element * SelectTargetAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double logKineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
G4double SecondaryThreshold() const
G4ParticleChangeForLoss * GetParticleChangeForLoss()
void ProposeTrackStatus(G4TrackStatus status)
void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel) override
static const G4double wgi[8]
G4double ScreenFunction1(G4double ScreenVariable)
G4double ComputeBremLoss(G4double cutEnergy)
~G4eBremParametrizedModel() override
G4ParticleDefinition * theGamma
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy) override
G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *) override
G4ParticleChangeForLoss * fParticleChange
G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
const G4ParticleDefinition * particle
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy) override
void SetCurrentElement(const G4double)
void InitialiseConstants()
void SetParticle(const G4ParticleDefinition *p)
G4double ComputeParametrizedDXSectionPerAtom(G4double kineticEnergy, G4double gammaEnergy, G4double Z)
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double tkin, G4double Z, G4double, G4double cutEnergy, G4double maxEnergy=DBL_MAX) override
G4eBremParametrizedModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="eBremParam")
G4double ScreenFunction2(G4double ScreenVariable)
static const G4double xgi[8]
void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double) override
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
G4double ComputeXSectionPerAtom(G4double cutEnergy)
static constexpr double MeV
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4bool isElectron(G4int ityp)
int classic_electr_radius
float electron_Compton_length