69 0.5917, 0.7628, 0.8983, 0.9801 };
71 0.1813, 0.1569, 0.1112, 0.0506 };
105 fMigdalConstant(classic_electr_radius*electron_Compton_length*electron_Compton_length*4.0*
pi),
106 bremFactor(fine_structure_const*classic_electr_radius*classic_electr_radius*16./3.),
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; }
501 CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
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);
534 G4double totMomentum = sqrt(kineticEnergy*(totalEnergy + electron_mass_c2));
536 - gammaEnergy*gammaDirection).unit();
539 G4double finalE = kineticEnergy - gammaEnergy;
static const G4double bh12
G4double ScreenFunction2(G4double ScreenVariable)
static const G4double al00
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
G4double LowEnergyLimit() const
static const G4double bh10
G4ParticleChangeForLoss * GetParticleChangeForLoss()
G4double SecondaryThreshold() const
static const G4double bh32
G4bool isElectron(G4int ityp)
static const G4double al12
std::vector< G4Element * > G4ElementVector
static const G4double bl02
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
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")
static const G4double bh22
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
const G4ElementVector * GetElementVector() const
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
static const G4double al20
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
G4double GetElectronDensity() const
const G4ThreeVector & GetMomentumDirection() const
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy)
void SetProposedKineticEnergy(G4double proposedKinEnergy)
static const G4double tlow
std::vector< G4EmElementSelector * > * GetElementSelectors()
void SetProposedMomentumDirection(const G4ThreeVector &dir)
const G4double * GetAtomicNumDensityVector() const
static const G4double bh30
int main(int argc, char **argv)
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
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
static const G4double ah32
static const G4double al10
G4double GetPDGMass() const
static const G4double ah20
T max(const T t1, const T t2)
brief Return the largest of the two arguments
void SetParticle(const G4ParticleDefinition *p)
void SetAngularDistribution(G4VEmAngularDistribution *)
const G4double x[NPOINTSGL]
static const G4double bh21
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
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
size_t GetNumberOfElements() const
G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double)
static const G4double bl12
void SetCurrentElement(const G4double)
void ProposeTrackStatus(G4TrackStatus status)
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
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static const G4double ah10
const G4Material * GetMaterial() const
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)