70 G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
85 G4double gam = 1.0 + primKinEnergy/mass;
86 G4double rmax = gam*CLHEP::halfpi*std::min(1.0, gam*mass/gEnergy - 1.0);
90 return std::cos(std::sqrt(x/(1.0 - x))/gam);
107 G4double etwo = elecKinEnergy + posiKinEnergy;
110 G4double cost = SampleCosTheta(ekin, etwo, mass);
111 G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
113 dirElectron.
set(sint*cosp, sint*sinp, cost);
116 cost = SampleCosTheta(ekin, etwo, mass);
117 sint = std::sqrt((1.0 - cost)*(1.0 + cost));
119 dirPositron.
set(-sint*cosp, -sint*sinp, cost);
128 G4cout <<
"Angular Generator is Modified Mephi" <<
G4endl;
G4GLOB_DLL std::ostream G4cout
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
void PrintGeneratorInformation() const override
G4ModifiedMephi(const G4String &name="")
G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double gEnergy, G4int Z, const G4Material *mat=nullptr) final
void SamplePairDirections(const G4DynamicParticle *dp, G4double elecKinEnergy, G4double posiKinEnergy, G4ThreeVector &dirElectron, G4ThreeVector &dirPositron, G4int Z=0, const G4Material *mat=nullptr) final
~G4ModifiedMephi() override
G4double GetPDGMass() const
G4ThreeVector fLocalDirection