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-";
151 G4double wlPhoton = h_Planck*c_light/photonEnergy0;
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();
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
const G4double intrinsicLowEnergyLimit
G4RDVEMDataSet * formFactorData
const G4DynamicParticle * GetDynamicParticle() const
G4RDVEMDataSet * meanFreePathTable
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4RDVEMDataSet * BuildMeanFreePathForMaterials(const G4DataVector *energyCuts=0)
const G4double intrinsicHighEnergyLimit
G4LowEnergyRayleigh(const G4String &processName="LowEnRayleigh")
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4GLOB_DLL std::ostream G4cout
const G4ThreeVector & GetMomentumDirection() const
G4bool IsApplicable(const G4ParticleDefinition &)
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
void BuildPhysicsTable(const G4ParticleDefinition &photon)
const G4String & GetProcessName() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual void Initialize(const G4Track &)
G4double energy(const ThreeVector &p, const G4double m)
void SetNumberOfSecondaries(G4int totSecondaries)
G4int SelectRandomAtom(const G4MaterialCutsCouple *couple, G4double e) const
void ProposeEnergy(G4double finalEnergy)
G4ParticleChange aParticleChange
G4RDVCrossSectionHandler * crossSectionHandler
void LoadData(const G4String &dataFile)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void ProposeTrackStatus(G4TrackStatus status)
G4ThreeVector G4ParticleMomentum
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
virtual G4bool LoadData(const G4String &fileName)=0