File indexing completed on 2025-04-19 09:09:51
0001 #ifndef ATOOLS_Math_Vector_H
0002 #define ATOOLS_Math_Vector_H
0003
0004 #include <iostream>
0005 #include <vector>
0006 #include "ATOOLS/Math/Vec3.H"
0007 #include "ATOOLS/Math/Vec4.H"
0008 #include "ATOOLS/Math/MyComplex.H"
0009
0010 namespace ATOOLS {
0011
0012
0013
0014
0015 typedef Vec3<double> Vec3D;
0016 typedef Vec4<double> Vec4D;
0017 typedef std::vector<Vec4D> Vec4D_Vector;
0018
0019 template<> double Vec4<double>::CosPhi() const;
0020 template<> double Vec4<double>::SinPhi() const;
0021 template<> double Vec4<double>::Phi() const;
0022 template<> double Vec4<double>::CosTheta() const;
0023 template<> double Vec4<double>::SinTheta() const;
0024 template<> double Vec4<double>::Theta() const;
0025 template<> double Vec4<double>::Eta() const;
0026 template<> double Vec4<double>::CosTheta(const Vec4D& ref) const;
0027 template<> double Vec4<double>::Theta(const Vec4D& ref) const;
0028 template<> double Vec4<double>::Eta(const Vec4D& ref) const;
0029 template<> double Vec4<double>::CosDPhi(const Vec4D& ref) const;
0030 template<> double Vec4<double>::DPhi(const Vec4D& ref) const;
0031 template<> double Vec4<double>::DEta(const Vec4D& ref) const;
0032 template<> double Vec4<double>::DY(const Vec4D& ref) const;
0033 template<> double Vec4<double>::DR(const Vec4D& ref) const;
0034 template<> double Vec4<double>::DR2(const Vec4D& ref) const;
0035 template<> double Vec4<double>::DRy(const Vec4D& ref) const;
0036 template<> double Vec4<double>::DR2y(const Vec4D& ref) const;
0037 template<> double Vec4<double>::SmallOMCT(const Vec4D& ref) const;
0038 template<> double Vec4<double>::SmallMLDP(const Vec4D& ref) const;
0039
0040 std::istream& operator>>(std::istream& s,Vec4D& vec);
0041 std::istream& operator>>(std::istream& s,Vec3D& vec);
0042
0043 bool IsEqual(const Vec4D& v1, const Vec4D& v2, const double crit=1.0e-12);
0044 inline bool operator==(const Vec4D& v1, const Vec4D& v2) {
0045 return IsEqual(v1,v2);
0046 }
0047 inline bool operator!=(const Vec4D& v1, const Vec4D& v2) {
0048 return !IsEqual(v1,v2);
0049 }
0050 bool IsEqual(const Vec3D& v1, const Vec3D& v2, const double crit=1.0e-12);
0051 inline bool operator==(const Vec3D& v1, const Vec3D& v2) {
0052 return IsEqual(v1,v2);
0053 }
0054 inline bool operator!=(const Vec3D& v1, const Vec3D& v2) {
0055 return !IsEqual(v1,v2);
0056 }
0057
0058
0059
0060
0061
0062 typedef Vec3<Complex> Vec3C;
0063 typedef Vec4<Complex> Vec4C;
0064 inline Vec4C conj(const Vec4C& v) {
0065 return Vec4C(std::conj(v[0]),std::conj(v[1]),
0066 std::conj(v[2]),std::conj(v[3]));
0067 }
0068
0069
0070 template<> const Vec4D Vec4<double>::XVEC;
0071 template<> const Vec4D Vec4<double>::YVEC;
0072 template<> const Vec4D Vec4<double>::ZVEC;
0073 template<> const Vec3D Vec3<double>::XVEC;
0074 template<> const Vec3D Vec3<double>::YVEC;
0075 template<> const Vec3D Vec3<double>::ZVEC;
0076
0077 }
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 #endif