59 #include "G4ParticleChangeForLoss.hh"    99     for(
size_t i=0; i<101; ++i) { 
   118     char* path = getenv(
"G4LEDATA");
   123       for(
size_t i=0; i<numOfElm; ++i) {
   126         else if(Z > 100) { Z = 100; }
   141   return "/brem_SB/br";
   152   const char* datadir = path;
   155     datadir = getenv(
"G4LEDATA");
   158                   "Environment variable G4LEDATA not defined");
   162   std::ostringstream ost;
   164   std::ifstream 
fin(ost.str().c_str());
   165   if( !
fin.is_open()) {
   167     ed << 
"Bremsstrahlung data file <" << ost.str().c_str()
   168        << 
"> is not opened!";
   170                 ed,
"G4LEDATA version should be G4EMLOW6.23 or later.");
   182     ed << 
"Bremsstrahlung data file <" << ost.str().c_str()
   183        << 
"> is not retrieved!";
   185                 ed,
"G4LEDATA version should be G4EMLOW6.23 or later.");
   196   if(gammaEnergy < 0.0 || 
kinEnergy <= 0.0) { 
return 0.0; }
   224       else { cross *= 
G4Exp(xxx); }
   245   if(cut >= emax) { 
return; }
   278     if(ylim > vmax) { vmax = ylim; }
   280   if(x0 < 0.05) { vmax *= 1.2; }
   284   static const G4int ncountmax = 100;
   291     if(x < 0.0) { x = 0.0; }
   292     gammaEnergy = sqrt(x);
   305       else { v *= 
G4Exp(xxx); }
   308     if (v > 1.05*vmax && 
nwarn < 5) {
   311       ed << 
"### G4SeltzerBergerModel Warning: Majoranta exceeded! "   312          << v << 
" > " << vmax << 
" by " << v/vmax
   314          << 
" Egamma(MeV)= " << gammaEnergy
   315          << 
" Ee(MeV)= " << kineticEnergy
   319         ed << 
"\n ### G4SeltzerBergerModel Warnings stopped";
   321       G4Exception(
"G4SeltzerBergerModel::SampleScattering",
"em0044",
   325     if(v >= vmax*rndm[1]) { 
break; }
   340   vdp->push_back(gamma);
   343                              - gammaEnergy*gammaDirection).unit();
   353   G4double finalE = kineticEnergy - gammaEnergy;
 
virtual ~G4SeltzerBergerModel()
 
G4double SecondaryThreshold() const
 
void SetBicubicInterpolation(G4bool)
 
static G4double expnumlim
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
 
std::ostringstream G4ExceptionDescription
 
const G4Material * GetMaterial() const
 
void ReadData(G4int Z, const char *path=0)
 
G4SeltzerBergerModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="eBremSB")
 
G4VEmAngularDistribution * GetAngularDistribution()
 
G4double LowestKinEnergy() const
 
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double)
 
static const double fine_structure_const
 
#define G4MUTEX_INITIALIZER
 
const G4ParticleDefinition * particle
 
G4ParticleDefinition * theGamma
 
G4double GetKineticEnergy() const
 
const G4String & GetParticleName() const
 
virtual G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
 
static size_t GetNumberOfElements()
 
virtual G4String DirectoryPath() const
 
virtual void SampleSecondaries(std::vector< G4DynamicParticle *> *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy)
 
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
 
static const G4double elowlimit
 
void SetLowestKinEnergy(G4double)
 
static const double twopi
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
static const G4double emax
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
static G4double ylimit[101]
 
virtual void InitialiseForElement(const G4ParticleDefinition *, G4int Z)
 
G4bool Retrieve(std::ifstream &fIn)
 
void SetLPMFlag(G4bool val)
 
const G4ThreeVector & GetMomentumDirection() const
 
static G4Physics2DVector * dataSB[101]
 
static const double millibarn
 
G4ParticleChangeForLoss * fParticleChange
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
 
static const G4double epeaklimit
 
std::vector< G4Element * > G4ElementTable
 
G4bool useBicubicInterpolation
 
static const double twopi
 
void SetLowEnergyLimit(G4double)
 
G4double Value(G4double x, G4double y, size_t &lastidx, size_t &lastidy) const
 
static G4ElementTable * GetElementTable()
 
virtual void flatArray(const int size, double *vect)=0
 
static const G4double alpha
 
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
static const G4double emaxlog
 
void SetCurrentElement(const G4double)