80     lowEnergyLimit(1.022000*
MeV),
 
   81     highEnergyLimit(100*
GeV),
 
   82     intrinsicLowEnergyLimit(1.022000*
MeV),
 
   83     intrinsicHighEnergyLimit(100*
GeV),
 
   87   if (lowEnergyLimit < intrinsicLowEnergyLimit || 
 
   88       highEnergyLimit > intrinsicHighEnergyLimit)
 
   90       G4Exception(
"G4LowEnergyGammaConversion::G4LowEnergyGammaConversion()",
 
   92                   "Energy limit outside intrinsic process validity range!");
 
   99   meanFreePathTable = 0;
 
  106           << lowEnergyLimit / 
MeV << 
" MeV - " 
  107           << highEnergyLimit / 
GeV << 
" GeV"  
  114   delete meanFreePathTable;
 
  115   delete crossSectionHandler;
 
  122   crossSectionHandler->
Clear();
 
  123   G4String crossSectionFile = 
"pair/pp-cs-";
 
  124   crossSectionHandler->
LoadData(crossSectionFile);
 
  126   delete meanFreePathTable;
 
  155   if (photonEnergy < smallEnergy )
 
  166       G4cout << 
"G4LowEnergyGammaConversion::PostStepDoIt - element = 0" << 
G4endl;
 
  171       G4cout << 
"G4LowEnergyGammaConversion::PostStepDoIt - ionisation = 0" << 
G4endl;
 
  176       if (photonEnergy > 50. * 
MeV) fZ += 8. * (element->
GetfCoulomb());
 
  180       G4double screenMax = std::exp ((42.24 - fZ)/8.368) - 0.952 ;
 
  184       G4double epsilon1 = 0.5 - 0.5 * std::sqrt(1. - screenMin / screenMax) ;
 
  186       G4double epsilonRange = 0.5 - epsilonMin ;
 
  192       G4double f10 = ScreenFunction1(screenMin) - fZ;
 
  193       G4double f20 = ScreenFunction2(screenMin) - fZ;
 
  200         epsilon = 0.5 - epsilonRange * std::pow(
G4UniformRand(), 0.3333) ;
 
  201         screen = screenFactor / (epsilon * (1. - 
epsilon));
 
  202         gReject = (ScreenFunction1(screen) - fZ) / f10 ;
 
  207         screen = screenFactor / (epsilon * (1 - 
epsilon));
 
  208         gReject = (ScreenFunction2(screen) - fZ) / f20 ;
 
  221       electronTotEnergy = (1. - 
epsilon) * photonEnergy;
 
  222       positronTotEnergy = epsilon * photonEnergy;
 
  226       positronTotEnergy = (1. - 
epsilon) * photonEnergy;
 
  227       electronTotEnergy = epsilon * photonEnergy;
 
  253   G4double dxEle= std::sin(thetaEle)*std::cos(phi),dyEle= std::sin(thetaEle)*std::sin(phi),dzEle=std::cos(thetaEle);
 
  254   G4double dxPos=-std::sin(thetaPos)*std::cos(phi),dyPos=-std::sin(thetaPos)*std::sin(phi),dzPos=std::cos(thetaPos);
 
  273       electronDirection.
rotateUz(photonDirection);
 
  282       localEnergyDeposit += electronKineEnergy ;
 
  291       localEnergyDeposit += positronKineEnergy ;
 
  292       positronKineEnergy = 0. ;
 
  296   positronDirection.
rotateUz(photonDirection);   
 
  300                                positronDirection, positronKineEnergy);
 
  326   size_t materialIndex = couple->
GetIndex();
 
  329   if (energy > highEnergyLimit) meanFreePath = meanFreePathTable->
FindValue(highEnergyLimit,materialIndex);
 
  330   else if (energy < lowEnergyLimit) meanFreePath = 
DBL_MAX;
 
  331   else meanFreePath = meanFreePathTable->
FindValue(energy,materialIndex);
 
  335 G4double G4LowEnergyGammaConversion::ScreenFunction1(
G4double screenVariable)
 
  341   if (screenVariable > 1.)
 
  342     value = 42.24 - 8.368 * std::log(screenVariable + 0.952);
 
  344     value = 42.392 - screenVariable * (7.796 - 1.961 * screenVariable);
 
  349 G4double G4LowEnergyGammaConversion::ScreenFunction2(
G4double screenVariable)
 
  355   if (screenVariable > 1.)
 
  356     value = 42.24 - 8.368 * std::log(screenVariable + 0.952);
 
  358     value = 41.405 - screenVariable * (5.828 - 0.8945 * screenVariable);
 
G4double GetKineticEnergy() const 
 
const G4DynamicParticle * GetDynamicParticle() const 
 
void Initialise(G4RDVDataSetAlgorithm *interpolation=0, G4double minE=250 *CLHEP::eV, G4double maxE=100 *CLHEP::GeV, G4int numberOfBins=200, G4double unitE=CLHEP::MeV, G4double unitData=CLHEP::barn, G4int minZ=1, G4int maxZ=99)
 
const G4MaterialCutsCouple * GetMaterialCutsCouple() const 
 
G4double GetfCoulomb() const 
 
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
 
G4LowEnergyGammaConversion(const G4String &processName="LowEnConversion")
 
G4RDVEMDataSet * BuildMeanFreePathForMaterials(const G4DataVector *energyCuts=0)
 
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
 
~G4LowEnergyGammaConversion()
 
static constexpr double twopi
 
G4GLOB_DLL std::ostream G4cout
 
const XML_Char int const XML_Char * value
 
void BuildPhysicsTable(const G4ParticleDefinition &photon)
 
const G4ThreeVector & GetMomentumDirection() const 
 
Hep3Vector & rotateUz(const Hep3Vector &)
 
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
 
const G4String & GetProcessName() const 
 
G4double GetlogZ3() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
virtual G4bool Escape(const G4ParticleDefinition *particle, const G4MaterialCutsCouple *couple, G4double energy, G4double safety) const =0
 
virtual void Initialize(const G4Track &)
 
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
 
static G4Positron * Positron()
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4double energy(const ThreeVector &p, const G4double m)
 
void SetNumberOfSecondaries(G4int totSecondaries)
 
G4StepPoint * GetPostStepPoint() const 
 
G4IonisParamElm * GetIonisation() const 
 
void ProposeEnergy(G4double finalEnergy)
 
G4ParticleChange aParticleChange
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
static constexpr double GeV
 
G4double GetSafety() const 
 
void AddSecondary(G4Track *aSecondary)
 
static G4Electron * Electron()
 
static constexpr double MeV
 
void LoadData(const G4String &dataFile)
 
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
 
G4bool IsApplicable(const G4ParticleDefinition &photon)
 
void ProposeTrackStatus(G4TrackStatus status)
 
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
 
const G4Element * SelectRandomElement(const G4MaterialCutsCouple *material, G4double e) const 
 
double epsilon(double density, double temperature)