14 #ifndef BASICTOOL_GEOVECTOR_H 15 #define BASICTOOL_GEOVECTOR_H 19 #include "TLorentzVector.h" 50 Vector(
const double x,
const double y);
51 Vector(
const double x,
const double y,
const double z);
53 Vector(
const TLorentzVector& pt);
77 void RotateX(
const double& theta);
78 void RotateY(
const double& theta);
79 void RotateZ(
const double& theta);
99 for (
size_t i = 0; i <
size(); ++i)
100 (*
this)[i] += rhs[i];
106 for (
size_t i = 0; i <
size(); ++i)
107 (*
this)[i] -= rhs[i];
113 for (
auto& v : *
this)
120 for (
auto& v : *
this)
127 this->resize(rhs.size());
128 for (
size_t i = 0; i < rhs.size(); ++i)
150 for (
size_t i = 0; i <
size(); ++i)
151 res += (*
this)[i] * rhs[i];
172 for (
size_t i = 0; i <
size(); ++i)
173 if ((*
this)[i] < rhs[i])
return true;
182 for (
size_t i = 0; i <
size(); ++i)
183 if ((*
this)[i] != rhs[i])
return false;
194 for (
auto const& v : a)
214 return (*lhs) < (*rhs);
bool operator<(const Vector &rhs) const
bool operator!=(const Vector &rhs) const
Algorithm to compute various geometrical relation among geometrical objects. In particular functions ...
double _Angle_(const Vector &obj) const
Compute the angle in degrees between 2 vectors w/o dimension check.
Vector & operator+=(const Vector &rhs)
Vector operator+(const Vector &rhs) const
double _Dot_(const Vector &obj) const
Compute a dot product w/o dimention check.
Representation of a simple 3D line segment Defines a finite 3D straight line by having the start and ...
double Phi() const
Compute the angle Phi.
void compat(const Vector &obj) const
Dimensional check for a compatibility.
double _SqDist_(const Vector &obj) const
Compute the squared-distance to another vector w/o dimension check.
double Dist(const Vector &obj) const
Compute the distance to another vector.
Vector & operator*=(const double rhs)
Vector operator*(const double &rhs) const
void Normalize()
Normalize itself.
double SqLength() const
Compute the squared length of the vector.
Vector(const std::vector< double > &obj)
Default ctor w/ a bare std::vector<double>
Vector _Cross_(const Vector &obj) const
Compute a cross product w/o dimension check.
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
Vector operator/(const double &rhs) const
Vector(size_t n)
Ctor to instantiate with invalid value.
double Length() const
Compute the length of the vector.
double Dot(const Vector &obj) const
bool operator<(const double &rhs) const
bool IsValid() const
Check if point is valid.
Vector operator-(const Vector &rhs) const
Vector Cross(const Vector &obj) const
Compute a dot product of two vectors.
void RotateY(const double &theta)
double SqDist(const Vector &obj) const
Compute the squared distance to another vector.
TLorentzVector ToTLorentzVector() const
Compute an opening angle w.r.t. the given vector.
Vector & operator/=(const double rhs)
double operator*(const Vector &rhs) const
Representation of a 3D semi-infinite line. Defines a semi-infinite 3D line by having a start point (P...
void RotateX(const double &theta)
rotation operations
Vector Dir() const
Return a direction unit vector.
Vector & operator=(const Vector &rhs)
Vector Vector_t
Point has same feature as Vector.
double Theta() const
Compute the angle theta.
double _Dist_(const Vector &obj) const
Compute the distance to another vector w/o dimension check.
static const double kINVALID_DOUBLE
void RotateZ(const double &theta)
bool operator==(const Vector &rhs) const
bool operator()(const geoalgo::Vector *lhs, const geoalgo::Vector *rhs)
double Angle(const Vector &obj) const
Compute a cross product of two vectors.
Vector & operator-=(const Vector &rhs)
friend std::ostream & operator<<(std::ostream &o,::geoalgo::Vector const &a)
Streamer.