Geant4-11
Public Member Functions | Private Attributes
G4INCL::ThreeVector Class Reference

#include <G4INCLThreeVector.hh>

Public Member Functions

ThreeVector anyOrthogonal () const
 Return a vector orthogonal to this. More...
 
G4double dot (const ThreeVector &v) const
 
std::string dump () const
 
G4double getX () const
 
G4double getY () const
 
G4double getZ () const
 
G4double mag () const
 
G4double mag2 () const
 
ThreeVector operator* (const G4double C) const
 
template<typename T >
void operator*= (const T &c)
 
ThreeVector operator+ (const ThreeVector &v) const
 
void operator+= (const ThreeVector &v)
 
ThreeVector operator- () const
 Unary minus operator. More...
 
ThreeVector operator- (const ThreeVector &v) const
 
void operator-= (const ThreeVector &v)
 
ThreeVector operator/ (const G4double C) const
 
template<typename T >
void operator/= (const T &c)
 
G4double perp () const
 
G4double perp2 () const
 
G4double phi () const
 
std::string print () const
 
void rotate (const G4double angle, const ThreeVector &axis)
 Rotate the vector by a given angle around a given axis. More...
 
void set (const G4double ax, const G4double ay, const G4double az)
 Set all the coordinates. More...
 
void setX (G4double ax)
 Set the x coordinate. More...
 
void setY (G4double ay)
 Set the y coordinate. More...
 
void setZ (G4double az)
 Set the z coordinate. More...
 
G4double theta () const
 
 ThreeVector ()
 
 ThreeVector (G4double ax, G4double ay, G4double az)
 
ThreeVector vector (const ThreeVector &v) const
 

Private Attributes

G4double x
 
G4double y
 
G4double z
 

Detailed Description

Definition at line 54 of file G4INCLThreeVector.hh.

Constructor & Destructor Documentation

◆ ThreeVector() [1/2]

G4INCL::ThreeVector::ThreeVector ( )
inline

Definition at line 56 of file G4INCLThreeVector.hh.

57 :x(0.0), y(0.0), z(0.0)
58 {}

Referenced by anyOrthogonal(), operator*(), operator+(), operator-(), operator/(), and vector().

◆ ThreeVector() [2/2]

G4INCL::ThreeVector::ThreeVector ( G4double  ax,
G4double  ay,
G4double  az 
)
inline

Definition at line 60 of file G4INCLThreeVector.hh.

61 :x(ax), y(ay), z(az)
62 {}

Member Function Documentation

◆ anyOrthogonal()

ThreeVector G4INCL::ThreeVector::anyOrthogonal ( ) const
inline

Return a vector orthogonal to this.

Simple algorithm from Hughes and Moeller, J. Graphics Tools 4 (1999) 33.

Definition at line 191 of file G4INCLThreeVector.hh.

191 {
192 if(x<=y && x<=z)
193 return ThreeVector(0., -z, y);
194 else if(y<=x && y<=z)
195 return ThreeVector(-z, 0., x);
196 else
197 return ThreeVector(-y, x, 0.);
198 }

References ThreeVector(), x, y, and z.

Referenced by G4INCL::anonymous_namespace{G4INCLPhaseSpaceGenerator.cc}::bias().

◆ dot()

G4double G4INCL::ThreeVector::dot ( const ThreeVector v) const
inline

◆ dump()

std::string G4INCL::ThreeVector::dump ( ) const
inline

Definition at line 206 of file G4INCLThreeVector.hh.

206 {
207 std::stringstream ss;
208 ss <<"(vector3 " << x << " " << y << " " << z << ")";
209 return ss.str();
210 }

References x, y, and z.

Referenced by G4INCL::Particle::dump().

◆ getX()

G4double G4INCL::ThreeVector::getX ( ) const
inline

◆ getY()

G4double G4INCL::ThreeVector::getY ( ) const
inline

◆ getZ()

G4double G4INCL::ThreeVector::getZ ( ) const
inline

◆ mag()

G4double G4INCL::ThreeVector::mag ( ) const
inline

Get the length of the vector.

Definition at line 73 of file G4INCLThreeVector.hh.

73{ return std::sqrt(x*x + y*y + z*z); }

References x, y, and z.

Referenced by G4INCL::anonymous_namespace{G4INCLPhaseSpaceGenerator.cc}::bias(), G4INCL::InteractionAvatar::bringParticleInside(), G4INCL::SigmaZeroDecayChannel::computeDecayTime(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::CoulombNonRelativistic::coulombDeviation(), G4INCL::Nucleus::decayOutgoingDeltas(), G4INCL::Nucleus::decayOutgoingPionResonances(), G4INCL::Nucleus::decayOutgoingSigmaZero(), G4INCL::CoulombNonRelativistic::distortOut(), G4INCL::Nucleus::fillEventInfo(), G4INCL::DeltaDecayChannel::fillFinalState(), G4INCL::DeltaProductionChannel::fillFinalState(), G4INCL::NDeltaEtaProductionChannel::fillFinalState(), G4INCL::NDeltaOmegaProductionChannel::fillFinalState(), G4INCL::PionResonanceDecayChannel::fillFinalState(), G4INCL::SigmaZeroDecayChannel::fillFinalState(), G4INCL::StrangeAbsorbtionChannel::fillFinalState(), G4INCL::PhaseSpaceGenerator::generateBiased(), G4INCL::StandardPropagationModel::generateBinaryCollisionAvatar(), G4INCL::Particle::getBeta(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::ClusteringModelIntercomparison::getCluster(), G4INCL::KinematicsUtils::getLocalEnergy(), G4INCL::Particle::getReflectionMomentum(), G4INCL::IntersectionFactory::anonymous_namespace{G4INCLIntersection.hh}::getTrajectoryIntersection(), G4INCL::BinaryCollisionAvatar::postInteraction(), G4INCL::ParticleSampler::sampleOneParticleWithRPCorrelation(), G4INCL::StandardPropagationModel::shootComposite(), and G4INCL::StandardPropagationModel::shootParticle().

◆ mag2()

G4double G4INCL::ThreeVector::mag2 ( ) const
inline

Get the square of the length.

Definition at line 78 of file G4INCLThreeVector.hh.

78{ return (x*x + y*y + z*z); }

References x, y, and z.

Referenced by G4INCL::ProjectileRemnant::addAllDynamicalSpectators(), G4INCL::ProjectileRemnant::addDynamicalSpectator(), G4INCL::ProjectileRemnant::addMostDynamicalSpectators(), G4INCL::Particle::adjustEnergyFromMomentum(), G4INCL::Particle::adjustMomentumFromEnergy(), G4INCL::Particle::boost(), G4INCL::ClusteringModelIntercomparison::clusterCanEscape(), G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::CoulombNonRelativistic::coulombDeviation(), G4INCL::KinematicsUtils::energy(), G4INCL::ElasticChannel::fillFinalState(), G4INCL::ParticleEntryChannel::fillFinalState(), G4INCL::PiNToDeltaChannel::fillFinalState(), G4INCL::ReflectionChannel::fillFinalState(), G4INCL::Cluster::freezeInternalMotion(), G4INCL::PhaseSpaceRauboldLynch::generateEvent(), G4INCL::PauliStandard::getBlockingProbability(), G4INCL::BinaryCollisionAvatar::getChannel(), G4INCL::Particle::getCosRPAngle(), G4INCL::Particle::getLongitudinalPosition(), G4INCL::StandardPropagationModel::getTime(), G4INCL::SurfaceAvatar::getTransmissionProbability(), G4INCL::Particle::lorentzContract(), G4INCL::INCL::makeCompoundNucleus(), G4INCL::Particle::Particle(), G4INCL::Cluster::putParticlesOffShell(), G4INCL::INCL::RecoilCMFunctor::scaleParticleCMMomenta(), G4INCL::INCL::RecoilFunctor::scaleParticleEnergies(), G4INCL::KinematicsUtils::squareInvariantMass(), G4INCL::KinematicsUtils::squareTotalEnergyInCM(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::threeBodyDecay(), G4INCL::ClusterDecay::anonymous_namespace{G4INCLClusterDecay.cc}::twoBodyDecay(), and G4INCL::Nucleus::useFusionKinematics().

◆ operator*()

ThreeVector G4INCL::ThreeVector::operator* ( const G4double  C) const
inline

Definition at line 170 of file G4INCLThreeVector.hh.

170 {
171 return ThreeVector(x*C, y*C, z*C);
172 }
G4double C(G4double temp)

References C(), ThreeVector(), x, y, and z.

◆ operator*=()

template<typename T >
void G4INCL::ThreeVector::operator*= ( const T &  c)
inline

Definition at line 142 of file G4INCLThreeVector.hh.

142 {
143 x *= c;
144 y *= c;
145 z *= c;
146 }

References x, y, and z.

Referenced by operator/=().

◆ operator+()

ThreeVector G4INCL::ThreeVector::operator+ ( const ThreeVector v) const
inline

Definition at line 158 of file G4INCLThreeVector.hh.

158 {
159 return ThreeVector(x+v.x, y+v.y, z+v.z);
160 }

References ThreeVector(), x, y, and z.

◆ operator+=()

void G4INCL::ThreeVector::operator+= ( const ThreeVector v)
inline

Definition at line 124 of file G4INCLThreeVector.hh.

124 {
125 x += v.x;
126 y += v.y;
127 z += v.z;
128 }

References x, y, and z.

◆ operator-() [1/2]

ThreeVector G4INCL::ThreeVector::operator- ( ) const
inline

Unary minus operator.

Definition at line 131 of file G4INCLThreeVector.hh.

131 {
132 return ThreeVector(-x,-y,-z);
133 }

References ThreeVector(), x, y, and z.

◆ operator-() [2/2]

ThreeVector G4INCL::ThreeVector::operator- ( const ThreeVector v) const
inline

Definition at line 154 of file G4INCLThreeVector.hh.

154 {
155 return ThreeVector(x-v.x, y-v.y, z-v.z);
156 }

References ThreeVector(), x, y, and z.

◆ operator-=()

void G4INCL::ThreeVector::operator-= ( const ThreeVector v)
inline

Definition at line 135 of file G4INCLThreeVector.hh.

135 {
136 x -= v.x;
137 y -= v.y;
138 z -= v.z;
139 }

References x, y, and z.

◆ operator/()

ThreeVector G4INCL::ThreeVector::operator/ ( const G4double  C) const
inline

Divides all components of the vector with a constant number.

Definition at line 165 of file G4INCLThreeVector.hh.

165 {
166 const G4double oneOverC = 1./C;
167 return ThreeVector(x*oneOverC, y*oneOverC, z*oneOverC);
168 }
double G4double
Definition: G4Types.hh:83

References C(), ThreeVector(), x, y, and z.

◆ operator/=()

template<typename T >
void G4INCL::ThreeVector::operator/= ( const T &  c)
inline

Definition at line 149 of file G4INCLThreeVector.hh.

149 {
150 const G4double oneOverC = 1./c;
151 this->operator*=(oneOverC);
152 }
void operator*=(const T &c)

References operator*=().

◆ perp()

G4double G4INCL::ThreeVector::perp ( ) const
inline

◆ perp2()

G4double G4INCL::ThreeVector::perp2 ( ) const
inline

Definition at line 69 of file G4INCLThreeVector.hh.

69{ return x*x + y*y; }

References x, and y.

Referenced by G4INCL::DeltaProductionChannel::fillFinalState(), and G4INCL::ElasticChannel::fillFinalState().

◆ phi()

G4double G4INCL::ThreeVector::phi ( ) const
inline

Phi angle

Definition at line 90 of file G4INCLThreeVector.hh.

90 {
91 return x == 0.0 && y == 0.0 ? 0.0 : std::atan2(y,x);
92 }

References x, and y.

Referenced by G4INCL::Nucleus::fillEventInfo().

◆ print()

std::string G4INCL::ThreeVector::print ( ) const
inline

Definition at line 200 of file G4INCLThreeVector.hh.

200 {
201 std::stringstream ss;
202 ss <<"(x = " << x << " y = " << y << " z = " << z <<")";
203 return ss.str();
204 }

References x, y, and z.

Referenced by G4INCL::Cluster::print(), and G4INCL::Particle::print().

◆ rotate()

void G4INCL::ThreeVector::rotate ( const G4double  angle,
const ThreeVector axis 
)
inline

Rotate the vector by a given angle around a given axis.

Parameters
anglethe rotation angle
axisthe rotation axis, which must be a unit vector

Definition at line 179 of file G4INCLThreeVector.hh.

179 {
180 // Use Rodrigues' formula
181 const G4double cos = std::cos(angle);
182 const G4double sin = std::sin(angle);
183 (*this) = (*this) * cos + axis.vector(*this) * sin + axis * (axis.dot(*this)*(1.-cos));
184 }
static const G4double angle[DIMMOTT]

References angle, dot(), and vector().

Referenced by G4INCL::Particle::rotateMomentum(), and G4INCL::Particle::rotatePosition().

◆ set()

void G4INCL::ThreeVector::set ( const G4double  ax,
const G4double  ay,
const G4double  az 
)
inline

Set all the coordinates.

Definition at line 122 of file G4INCLThreeVector.hh.

122{ x=ax; y=ay; z=az; }

References x, y, and z.

◆ setX()

void G4INCL::ThreeVector::setX ( G4double  ax)
inline

Set the x coordinate.

Definition at line 113 of file G4INCLThreeVector.hh.

113{ x = ax; }

References x.

Referenced by G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::PhaseSpaceKopylov::generate(), and G4INCL::Cluster::internalBoostToCM().

◆ setY()

void G4INCL::ThreeVector::setY ( G4double  ay)
inline

Set the y coordinate.

Definition at line 116 of file G4INCLThreeVector.hh.

116{ y = ay; }

References y.

Referenced by G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::PhaseSpaceKopylov::generate(), and G4INCL::Cluster::internalBoostToCM().

◆ setZ()

void G4INCL::ThreeVector::setZ ( G4double  az)
inline

Set the z coordinate.

Definition at line 119 of file G4INCLThreeVector.hh.

119{ z = az; }

References z.

Referenced by G4INCL::Nucleus::computeOneNucleonRecoilKinematics(), G4INCL::PhaseSpaceKopylov::generate(), and G4INCL::Cluster::internalBoostToCM().

◆ theta()

G4double G4INCL::ThreeVector::theta ( ) const
inline

◆ vector()

ThreeVector G4INCL::ThreeVector::vector ( const ThreeVector v) const
inline

Vector product.

Definition at line 104 of file G4INCLThreeVector.hh.

104 {
105 return ThreeVector(
106 y*v.z - z*v.y,
107 z*v.x - x*v.z,
108 x*v.y - y*v.x
109 );
110 }

References ThreeVector(), x, y, and z.

Referenced by G4INCL::anonymous_namespace{G4INCLPhaseSpaceGenerator.cc}::bias(), G4INCL::CoulombNonRelativistic::coulombDeviation(), G4INCL::Particle::getAngularMomentum(), and rotate().

Field Documentation

◆ x

G4double G4INCL::ThreeVector::x
private

◆ y

G4double G4INCL::ThreeVector::y
private

◆ z

G4double G4INCL::ThreeVector::z
private

The documentation for this class was generated from the following file: