134 if (photonEnergy0 <= lowEnergyLimit)
164 fcostheta = ( 1. + cosTheta*cosTheta)/2.;
167 G4double sinThetaHalf = std::sqrt((1. - cosTheta) / 2.);
168 x = sinThetaHalf / (wlPhoton/
cm);
170 dataFormFactor = formFactorData->
FindValue(x,Z-1);
172 dataFormFactor = formFactorData->
FindValue(0.,Z-1);
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);
G4double GetKineticEnergy() const
const G4DynamicParticle * GetDynamicParticle() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
static constexpr double twopi
const G4ThreeVector & GetMomentumDirection() const
static constexpr double cm
virtual G4double FindValue(G4double x, G4int componentId=0) const =0
virtual void Initialize(const G4Track &)
void SetNumberOfSecondaries(G4int totSecondaries)
G4int SelectRandomAtom(const G4MaterialCutsCouple *couple, G4double e) const
void ProposeEnergy(G4double finalEnergy)
G4ParticleChange aParticleChange
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void ProposeTrackStatus(G4TrackStatus status)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)