BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVector3C.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/EvtVector3C.hh
12//
13// Description: Class for complex 3 vectors
14//
15// Modification history:
16//
17// RYD September 6, 1997 Module created
18//
19//------------------------------------------------------------------------
20
21#ifndef EVTVECTOR3C_N
22#define EVTVECTOR3C_N
23
24//#include <iostream.h>
27#include <iosfwd>
28
30
31 friend EvtVector3C rotateEuler(const EvtVector3C& v,
32 double phi,double theta,double ksi);
33
34 inline friend EvtVector3C operator*(const EvtComplex& c,const EvtVector3C& v2);
35 inline friend EvtVector3C operator*(const EvtComplex& c,const EvtVector3R& v2);
36 inline friend EvtComplex operator*(const EvtVector3R& v1,const EvtVector3C& v2);
37 inline friend EvtComplex operator*(const EvtVector3C& v1,const EvtVector3R& v2);
38 inline friend EvtComplex operator*(const EvtVector3C& v1,const EvtVector3C& v2);
39 inline friend EvtVector3C operator+(const EvtVector3C& v1,const EvtVector3C& v2);
40 inline friend EvtVector3C operator-(const EvtVector3C& v1,const EvtVector3C& v2);
41 inline friend EvtVector3C operator*(const EvtVector3C& v1,const EvtComplex& c);
42
43
44public:
45
47 EvtVector3C(const EvtComplex&,const EvtComplex&,const EvtComplex&);
48 virtual ~EvtVector3C();
49 inline void set(const int,const EvtComplex&);
50 inline void set(const EvtComplex&,const EvtComplex&,const EvtComplex&);
51 inline void set(double,double,double);
52 inline EvtVector3C& operator*=(const EvtComplex& c);
53 inline EvtVector3C& operator/=(const EvtComplex& c);
54 inline EvtVector3C& operator+=(const EvtVector3C& v2);
55 inline EvtVector3C& operator-=(const EvtVector3C& v2);
56 inline EvtVector3C(const EvtVector3R& v1);
57 void applyRotateEuler(double phi,double theta,double ksi);
58 inline const EvtComplex& get(int) const;
59 inline EvtVector3C conj() const;
60 EvtVector3C cross(const EvtVector3C& v2);
61 friend std::ostream& operator<<(std::ostream& c,const EvtVector3C& v);
62 double dot( const EvtVector3C& p2 );
63private:
64
65 EvtComplex v[3];
66};
67
69
70 v[0]=EvtComplex(v1.get(0),0.0);
71 v[1]=EvtComplex(v1.get(1),0.0);
72 v[2]=EvtComplex(v1.get(2),0.0);
73
74}
75
76inline void EvtVector3C::set(const int i,const EvtComplex& c){
77
78 v[i]=c;
79
80}
81
82inline void EvtVector3C::set(const EvtComplex& x,const EvtComplex& y,
83 const EvtComplex& z){
84
85 v[0]=x; v[1]=y; v[2]=z;
86}
87
88inline void EvtVector3C::set(double x,
89 double y,double z){
90
91 v[0]=EvtComplex(x); v[1]=EvtComplex(y); v[2]=EvtComplex(z);
92}
93
94inline const EvtComplex& EvtVector3C::get(int i) const {
95
96 return v[i];
97}
98
100
101 v[0]*=c;
102 v[1]*=c;
103 v[2]*=c;
104 return *this;
105}
106
108
109 v[0]/=c;
110 v[1]/=c;
111 v[2]/=c;
112 return *this;
113}
114
116
117 v[0]+=v2.v[0];
118 v[1]+=v2.v[1];
119 v[2]+=v2.v[2];
120 return *this;
121}
122
124
125 v[0]-=v2.v[0];
126 v[1]-=v2.v[1];
127 v[2]-=v2.v[2];
128 return *this;
129}
130
131inline EvtVector3C operator+(const EvtVector3C& v1,const EvtVector3C& v2) {
132
133 return EvtVector3C(v1)+=v2;
134}
135
136inline EvtVector3C operator-(const EvtVector3C& v1,const EvtVector3C& v2) {
137
138 return EvtVector3C(v1)-=v2;
139}
140
141inline EvtVector3C operator*(const EvtVector3C& v1,const EvtComplex& c) {
142
143 return EvtVector3C(v1)*=c;
144}
145
146inline EvtVector3C operator*(const EvtComplex& c,const EvtVector3C& v2){
147
148 return EvtVector3C(v2)*=c;
149}
150
151inline EvtVector3C operator*(const EvtComplex& c,const EvtVector3R& v2){
152
153 return EvtVector3C(v2)*=c;
154}
155
156inline EvtComplex operator*(const EvtVector3R& v1,const EvtVector3C& v2){
157
158 return v1.get(0)*v2.v[0]+v1.get(1)*v2.v[1]+v1.get(2)*v2.v[2];
159}
160
161inline EvtComplex operator*(const EvtVector3C& v1,const EvtVector3R& v2){
162
163 return v1.v[0]*v2.get(0)+v1.v[1]*v2.get(1)+v1.v[2]*v2.get(2);
164}
165
166inline EvtComplex operator*(const EvtVector3C& v1,const EvtVector3C& v2){
167
168 return v1.v[0]*v2.v[0]+v1.v[1]*v2.v[1]+v1.v[2]*v2.v[2];
169}
170
172
173 return EvtVector3C(::conj(v[0]),::conj(v[1]),
174 ::conj(v[2]));
175}
176
177#endif
178
Double_t x[10]
EvtVector3C operator+(const EvtVector3C &v1, const EvtVector3C &v2)
Definition: EvtVector3C.hh:131
EvtVector3C operator-(const EvtVector3C &v1, const EvtVector3C &v2)
Definition: EvtVector3C.hh:136
EvtVector3C operator*(const EvtVector3C &v1, const EvtComplex &c)
Definition: EvtVector3C.hh:141
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition: KarLud.h:35
EvtVector3C & operator/=(const EvtComplex &c)
Definition: EvtVector3C.hh:107
friend EvtVector3C operator+(const EvtVector3C &v1, const EvtVector3C &v2)
Definition: EvtVector3C.hh:131
EvtVector3C & operator-=(const EvtVector3C &v2)
Definition: EvtVector3C.hh:123
double dot(const EvtVector3C &p2)
EvtVector3C cross(const EvtVector3C &v2)
Definition: EvtVector3C.cc:48
friend std::ostream & operator<<(std::ostream &c, const EvtVector3C &v)
EvtVector3C & operator+=(const EvtVector3C &v2)
Definition: EvtVector3C.hh:115
virtual ~EvtVector3C()
Definition: EvtVector3C.cc:36
friend EvtVector3C rotateEuler(const EvtVector3C &v, double phi, double theta, double ksi)
Definition: EvtVector3C.cc:61
friend EvtVector3C operator-(const EvtVector3C &v1, const EvtVector3C &v2)
Definition: EvtVector3C.hh:136
EvtVector3C & operator*=(const EvtComplex &c)
Definition: EvtVector3C.hh:99
const EvtComplex & get(int) const
Definition: EvtVector3C.hh:94
void set(const int, const EvtComplex &)
Definition: EvtVector3C.hh:76
void applyRotateEuler(double phi, double theta, double ksi)
Definition: EvtVector3C.cc:71
friend EvtVector3C operator*(const EvtComplex &c, const EvtVector3C &v2)
Definition: EvtVector3C.hh:146
EvtVector3C conj() const
Definition: EvtVector3C.hh:171
double get(int i) const
Definition: EvtVector3R.hh:126