75  if(atype != 
"iso" && atype != 
"cos" && atype != 
"user" && atype != 
"planar" 
   76     && atype != 
"beam1d" && atype != 
"beam2d"  && atype != 
"focused")
 
   78    G4cout << 
"Error, distribution must be iso, cos, planar, beam1d, beam2d, focused or user" 
   99  if (refname == 
"angref1")
 
  101  else if (refname == 
"angref2")
 
  287    theta = std::sqrt (px*px + py*py);
 
  290      phi = std::acos(px/theta);
 
  291      if ( py < 0.) phi = -phi;
 
  298  px = -std::sin(theta) * std::cos(phi);
 
  299  py = -std::sin(theta) * std::sin(phi);
 
  300  pz = -std::cos(theta);
 
  302  finx=px, finy=py, finz=pz;
 
  310    G4double ResMag = std::sqrt((finx*finx) + (finy*finy) + (finz*finz));
 
  335    G4cout << 
"Generating focused vector: " << mom << 
G4endl;
 
  347  G4double sintheta, sinphi,costheta,cosphi;
 
  351  sintheta = std::sqrt(1. - costheta*costheta);
 
  355  sinphi = std::sin(
Phi);
 
  356  cosphi = std::cos(
Phi);
 
  358  px = -sintheta * cosphi;
 
  359  py = -sintheta * sinphi;
 
  408  G4double ResMag = std::sqrt((finx*finx) + (finy*finy) + (finz*finz));
 
  421    G4cout << 
"Generating isotropic vector: " << mom << 
G4endl;
 
  432  G4double sintheta, sinphi,costheta,cosphi;
 
  437  costheta = std::sqrt(1. -sintheta*sintheta);
 
  441  sinphi = std::sin(
Phi);
 
  442  cosphi = std::cos(
Phi);
 
  444  px = -sintheta * cosphi;
 
  445  py = -sintheta * sinphi;
 
  492  G4double ResMag = std::sqrt((finx*finx) + (finy*finy) + (finz*finz));
 
  505    G4cout << 
"Resultant cosine-law unit momentum vector " << mom << 
G4endl;
 
  517    G4cout << 
"Resultant Planar wave  momentum vector " << mom << 
G4endl;
 
  549      Theta = std::acos(1. - (2. * rndm));
 
  570  px = -std::sin(
Theta) * std::cos(
Phi);
 
  571  py = -std::sin(
Theta) * std::sin(
Phi);
 
  572  pz = -std::cos(
Theta);
 
  574  pmag = std::sqrt((px*px) + (py*py) + (pz*pz));
 
  593    G4double ResMag = std::sqrt((finx*finx) + (finy*finy) + (finz*finz));
 
  612      G4cout << 
"Raw Unit vector " << pxh
 
  613             << 
"," << pyh << 
"," << pzh << 
G4endl;
 
  627    G4double ResMag = std::sqrt((resultx*resultx)
 
  629                              + (resultz*resultz));
 
  630    resultx = resultx/ResMag;
 
  631    resulty = resulty/ResMag;
 
  632    resultz = resultz/ResMag;
 
  643    G4cout << 
"Final User Defined momentum vector " 
  675      for(ii=1; ii<maxbin; ++ii)
 
  678        vals[ii] = 
UDefThetaH(std::size_t(ii)) + vals[ii-1];
 
  681      for(ii=0; ii<maxbin; ++ii)
 
  683        vals[ii] = vals[ii]/sum;
 
  724      for(ii=1; ii<maxbin; ++ii)
 
  727        vals[ii] = 
UDefPhiH(std::size_t(ii)) + vals[ii-1];
 
  728        sum = sum + 
UDefPhiH(std::size_t(ii));
 
  730      for(ii=0; ii<maxbin; ++ii)
 
  732        vals[ii] = vals[ii]/sum;
 
  750  if (atype == 
"theta")
 
  755  else if (atype == 
"phi")
 
  787    G4cout << 
"Error: AngDistType has unusual value" << 
G4endl;
 
G4ThreeVector G4ParticleMomentum
static constexpr double twopi
static constexpr double pi
#define G4MUTEXDESTROY(mutex)
#define G4MUTEXINIT(mutex)
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
Hep3Vector cross(const Hep3Vector &) const
void InsertValues(const G4double energy, const G4double value)
G4double GetEnergy(const G4double value) const
G4double GetLowEdgeEnergy(const std::size_t index) const
std::size_t GetVectorLength() const
void SetBeamSigmaInAngX(G4double)
G4PhysicsFreeVector IPDFPhiH
void GeneratePlanarFlux(G4ParticleMomentum &outputMom)
void SetBeamSigmaInAngR(G4double)
G4double GenerateUserDefTheta()
G4PhysicsFreeVector ZeroPhysVector
G4ThreeVector GetDirection()
void SetPosDistribution(G4SPSPosDistribution *a)
void GenerateFocusedFlux(G4ParticleMomentum &outputMom)
void UserDefAngTheta(const G4ThreeVector &)
G4PhysicsFreeVector UDefThetaH
void SetFocusPoint(const G4ThreeVector &)
void GenerateCosineLawFlux(G4ParticleMomentum &outputMom)
void SetAngDistType(const G4String &)
void UserDefAngPhi(const G4ThreeVector &)
G4PhysicsFreeVector IPDFThetaH
G4ParticleMomentum GenerateOne()
void GenerateBeamFlux(G4ParticleMomentum &outputMom)
void SetMaxTheta(G4double)
void SetUseUserAngAxis(G4bool)
void SetMinTheta(G4double)
G4PhysicsFreeVector UDefPhiH
void SetParticleMomentumDirection(const G4ParticleMomentum &aMomDirection)
void GenerateUserDefFlux(G4ParticleMomentum &outputMom)
G4SPSRandomGenerator * angRndm
void GenerateIsotropicFlux(G4ParticleMomentum &outputMom)
G4double GenerateUserDefPhi()
void SetBeamSigmaInAngY(G4double)
void ReSetHist(const G4String &)
G4SPSPosDistribution * posDist
void SetBiasRndm(G4SPSRandomGenerator *a)
void SetVerbosity(G4int a)
void DefineAngRefAxes(const G4String &, const G4ThreeVector &)
void SetUserWRTSurface(G4bool)
G4ParticleMomentum particle_momentum_direction
const G4ThreeVector & GetParticlePos() const
const G4String & GetSourcePosType() const
const G4ThreeVector & GetSideRefVec2() const
const G4ThreeVector & GetSideRefVec3() const
const G4ThreeVector & GetSideRefVec1() const
DLL_API const Hep3Vector HepZHat
DLL_API const Hep3Vector HepXHat
DLL_API const Hep3Vector HepYHat
ThreeVector shoot(const G4int Ap, const G4int Af)
static const G4LorentzVector zero(0., 0., 0., 0.)
static const G4double bins[31]