BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVector3R.hh
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtGen/EvtVector3R.hh
12//
13// Description: Class to describe real 3 vectors
14//
15// Modification history:
16//
17// RYD Sept. 5, 1997 Module created
18//
19//------------------------------------------------------------------------
20
21#ifndef EVTVECTOR3R_HH
22#define EVTVECTOR3R_HH
23
24// #include <iostream.h>
25// #include <math.h>
26#include <iosfwd>
27
29
30 friend EvtVector3R rotateEuler( const EvtVector3R& v, double phi, double theta, double ksi );
31
32 inline friend EvtVector3R operator*( double c, const EvtVector3R& v2 );
33 inline friend double operator*( const EvtVector3R& v1, const EvtVector3R& v2 );
34 inline friend EvtVector3R operator+( const EvtVector3R& v1, const EvtVector3R& v2 );
35 inline friend EvtVector3R operator-( const EvtVector3R& v1, const EvtVector3R& v2 );
36 inline friend EvtVector3R operator*( const EvtVector3R& v1, double c );
37 inline friend EvtVector3R operator/( const EvtVector3R& v1, double c );
38 friend EvtVector3R cross( const EvtVector3R& v1, const EvtVector3R& v2 );
39
40public:
42 EvtVector3R( double x, double y, double z );
43 virtual ~EvtVector3R();
44 inline EvtVector3R& operator*=( const double c );
45 inline EvtVector3R& operator/=( const double c );
46 inline EvtVector3R& operator+=( const EvtVector3R& v2 );
47 inline EvtVector3R& operator-=( const EvtVector3R& v2 );
48 inline void set( int i, double d );
49 inline void set( double x, double y, double z );
50 void applyRotateEuler( double phi, double theta, double ksi );
51 inline double get( int i ) const;
52 friend std::ostream& operator<<( std::ostream& s, const EvtVector3R& v );
53 double dot( const EvtVector3R& v2 );
54 double d3mag() const;
55
56private:
57 double v[3];
58};
59
60inline EvtVector3R& EvtVector3R::operator*=( const double c ) {
61
62 v[0] *= c;
63 v[1] *= c;
64 v[2] *= c;
65 return *this;
66}
67
68inline EvtVector3R& EvtVector3R::operator/=( const double c ) {
69
70 v[0] /= c;
71 v[1] /= c;
72 v[2] /= c;
73 return *this;
74}
75
77
78 v[0] += v2.v[0];
79 v[1] += v2.v[1];
80 v[2] += v2.v[2];
81 return *this;
82}
83
85
86 v[0] -= v2.v[0];
87 v[1] -= v2.v[1];
88 v[2] -= v2.v[2];
89 return *this;
90}
91
92inline EvtVector3R operator*( double c, const EvtVector3R& v2 ) {
93
94 return EvtVector3R( v2 ) *= c;
95}
96
97inline EvtVector3R operator*( const EvtVector3R& v1, double c ) {
98
99 return EvtVector3R( v1 ) *= c;
100}
101
102inline EvtVector3R operator/( const EvtVector3R& v1, double c ) {
103
104 return EvtVector3R( v1 ) /= c;
105}
106
107inline double operator*( const EvtVector3R& v1, const EvtVector3R& v2 ) {
108
109 return v1.v[0] * v2.v[0] + v1.v[1] * v2.v[1] + v1.v[2] * v2.v[2];
110}
111
112inline EvtVector3R operator+( const EvtVector3R& v1, const EvtVector3R& v2 ) {
113
114 return EvtVector3R( v1 ) += v2;
115}
116
117inline EvtVector3R operator-( const EvtVector3R& v1, const EvtVector3R& v2 ) {
118
119 return EvtVector3R( v1 ) -= v2;
120}
121
122inline double EvtVector3R::get( int i ) const { return v[i]; }
123
124inline void EvtVector3R::set( int i, double d ) { v[i] = d; }
125
126inline void EvtVector3R::set( double x, double y, double z ) {
127
128 v[0] = x;
129 v[1] = y;
130 v[2] = z;
131}
132
133#endif
EvtVector3R operator*(double c, const EvtVector3R &v2)
EvtVector3R operator/(const EvtVector3R &v1, double c)
EvtVector3R operator+(const EvtVector3R &v1, const EvtVector3R &v2)
EvtVector3R operator-(const EvtVector3R &v1, const EvtVector3R &v2)
XmlRpcServer s
double get(int i) const
friend EvtVector3R operator*(double c, const EvtVector3R &v2)
friend EvtVector3R rotateEuler(const EvtVector3R &v, double phi, double theta, double ksi)
friend EvtVector3R operator/(const EvtVector3R &v1, double c)
double dot(const EvtVector3R &v2)
void applyRotateEuler(double phi, double theta, double ksi)
EvtVector3R & operator*=(const double c)
double d3mag() const
EvtVector3R & operator-=(const EvtVector3R &v2)
EvtVector3R & operator/=(const double c)
virtual ~EvtVector3R()
EvtVector3R & operator+=(const EvtVector3R &v2)
void set(int i, double d)
friend EvtVector3R cross(const EvtVector3R &v1, const EvtVector3R &v2)
friend EvtVector3R operator+(const EvtVector3R &v1, const EvtVector3R &v2)
friend std::ostream & operator<<(std::ostream &s, const EvtVector3R &v)
friend EvtVector3R operator-(const EvtVector3R &v1, const EvtVector3R &v2)