75 G4double G4LivermoreBremsstrahlungModel::ylimit[] = {0.0};
 
   76 G4double G4LivermoreBremsstrahlungModel::expnumlim = -12.;
 
   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; }
 
  129     if(!dataSB[Z]) { ReadData(Z, path); }
 
  141   return "/livermore/brem/br";
 
  146 void G4LivermoreBremsstrahlungModel::ReadData(
G4int Z, 
const char* path)
 
  151   if(dataSB[Z]) { 
return; }
 
  152   const char* datadir = path;
 
  155     datadir = getenv(
"G4LEDATA");
 
  157       G4Exception(
"G4LivermoreBremsstrahlungModel::ReadData()",
"em0006",
 
  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!";
 
  169     G4Exception(
"G4LivermoreBremsstrahlungModel::ReadData()",
"em0003",
 
  171         "G4LEDATA version should be G4EMLOW6.23 or later.");
 
  183     ed << 
"Bremsstrahlung data file <" << ost.str().c_str()
 
  184        << 
"> is not retrieved!";
 
  185     G4Exception(
"G4LivermoreBremsstrahlungModel::ReadData()",
"em0005",
 
  187         "G4LEDATA version should be G4EMLOW6.23 or later.");
 
  199   if(gammaEnergy < 0.0 || 
kinEnergy <= 0.0) { 
return 0.0; }
 
  226       if(xxx < expnumlim) { cross = 0.0; }
 
  227       else { cross *= 
G4Exp(xxx); }
 
  240                                         std::vector<G4DynamicParticle*>* vdp, 
 
  249   if(cut >= emax) { 
return; }
 
  282     if(ylim > vmax) { vmax = ylim; }
 
  284   if(x0 < 0.05) { vmax *= 1.2; }
 
  292     if(x < 0.0) { x = 0.0; }
 
  293     gammaEnergy = sqrt(x);
 
  294     G4double x1 = gammaEnergy/kineticEnergy;
 
  295     v = dataSB[
Z]->
Value(x1, y, idx, idy);
 
  301       G4double e2 = kineticEnergy - gammaEnergy;
 
  305       if(xxx < expnumlim) { v = 0.0; }
 
  306       else { v *= 
G4Exp(xxx); }
 
  309     if (v > 1.05*vmax && nwarn < 5) {
 
  312       ed << 
"### G4LivermoreBremsstrahlungModel Warning: Majoranta exceeded! " 
  313      << v << 
" > " << vmax << 
" by " << v/vmax
 
  314      << 
" Egamma(MeV)= " << gammaEnergy
 
  315      << 
" Ee(MeV)= " << kineticEnergy
 
  319     ed << 
"\n ### G4LivermoreBremsstrahlungModel Warnings stopped";
 
  321       G4Exception(
"G4LivermoreBremsstrahlungModel::SampleScattering",
"em0044",
 
  339   vdp->push_back(gamma);
 
  342                  - gammaEnergy*gammaDirection).unit();
 
  352   G4double finalE = kineticEnergy - gammaEnergy;
 
  378   G4AutoLock l(&LivermoreBremsstrahlungModelMutex);
 
  381   if(!dataSB[Z]) { ReadData(Z); }
 
void SetBicubicInterpolation(G4bool)
 
G4double SecondaryThreshold() const 
 
void SetCurrentElement(G4int)
 
std::ostringstream G4ExceptionDescription
 
G4double GetKineticEnergy() const 
 
static constexpr double keV
 
G4VEmAngularDistribution * GetAngularDistribution()
 
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double cutEnergy, G4double maxEnergy)
 
virtual ~G4LivermoreBremsstrahlungModel()
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
 
static const G4double emaxlog
 
#define G4MUTEX_INITIALIZER
 
const G4String & GetParticleName() const 
 
const G4ParticleDefinition * particle
 
static constexpr double twopi
 
virtual void InitialiseForElement(const G4ParticleDefinition *, G4int Z)
 
G4ParticleDefinition * theGamma
 
G4double Value(G4double x, G4double y, size_t &lastidx, size_t &lastidy) const 
 
static size_t GetNumberOfElements()
 
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
 
virtual G4String DirectoryPath() const 
 
const G4ThreeVector & GetMomentumDirection() const 
 
static constexpr double MeV
 
void SetProposedKineticEnergy(G4double proposedKinEnergy)
 
static constexpr double eV
 
void SetProposedMomentumDirection(const G4ThreeVector &dir)
 
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. 
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
 
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double) override
 
G4bool Retrieve(std::ifstream &fIn)
 
void SetLPMFlag(G4bool val)
 
void SetAngularDistribution(G4VEmAngularDistribution *)
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
static constexpr double MeV
 
static const G4double epeaklimit
 
G4ParticleChangeForLoss * fParticleChange
 
virtual G4double ComputeDXSectionPerAtom(G4double gammaEnergy)
 
std::vector< G4Element * > G4ElementTable
 
void ProposeTrackStatus(G4TrackStatus status)
 
void SetLowEnergyLimit(G4double)
 
static const G4double elowlimit
 
static constexpr double fine_structure_const
 
static G4ElementTable * GetElementTable()
 
static const G4double alpha
 
static constexpr double twopi
 
static constexpr double millibarn
 
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)
 
const G4Material * GetMaterial() const 
 
G4LivermoreBremsstrahlungModel(const G4ParticleDefinition *p=0, const G4String &nam="LowEnBrem")