75 lowEnergyLimit(250*
eV),
76 highEnergyLimit(100*
GeV),
77 intrinsicLowEnergyLimit(10*
eV),
78 intrinsicHighEnergyLimit(100*
GeV)
83 G4Exception(
"G4LowEnergyRayleigh::G4LowEnergyRayleigh()",
85 "Energy limit outside intrinsic process validity range!");
91 G4String formFactorFile =
"rayl/re-ff-";
118 G4String crossSectionFile =
"rayl/re-cs-";
164 fcostheta = ( 1. + cosTheta*cosTheta)/2.;
167 G4double sinThetaHalf = std::sqrt((1. - cosTheta) / 2.);
168 x = sinThetaHalf / (wlPhoton/
cm);
174 sinTheta = std::sqrt(1. - cosTheta*cosTheta);
175 gReject = dataFormFactor * dataFormFactor;
177 }
while( gReject < randomFormFactor);
181 G4double dirX = sinTheta*std::cos(phi);
182 G4double dirY = sinTheta*std::sin(phi);
188 photonDirection1.
rotateUz(photonDirection0);
209 size_t materialIndex = couple->
GetIndex();
G4RDVEMDataSet * BuildMeanFreePathForMaterials(const G4DataVector *energyCuts=0)
G4int SelectRandomAtom(const G4MaterialCutsCouple *couple, G4double e) const
static constexpr double keV
const G4double intrinsicLowEnergyLimit
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
const G4ThreeVector & GetMomentumDirection() const
Hep3Vector & rotateUz(const Hep3Vector &)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void BuildPhysicsTable(const G4ParticleDefinition &photon)
G4RDVEMDataSet * meanFreePathTable
static constexpr double h_Planck
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4ParticleChange aParticleChange
void LoadData(const G4String &dataFile)
G4RDVCrossSectionHandler * crossSectionHandler
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
virtual void Initialize(const G4Track &)
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
static constexpr double twopi
virtual G4bool LoadData(const G4String &fileName)=0
G4bool IsApplicable(const G4ParticleDefinition &)
const G4String & GetProcessName() const
static constexpr double eV
void ProposeEnergy(G4double finalEnergy)
G4LowEnergyRayleigh(const G4String &processName="LowEnRayleigh")
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
const G4double intrinsicHighEnergyLimit
static constexpr double c_light
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
G4RDVEMDataSet * formFactorData
G4double GetKineticEnergy() const
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void ProposeTrackStatus(G4TrackStatus status)
static constexpr double GeV
const G4DynamicParticle * GetDynamicParticle() const
void SetNumberOfSecondaries(G4int totSecondaries)