BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTensor4C.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/EvtTensor4C.hh
12//
13// Description: Class to handle complex tensor manipulation
14//
15// Modification history:
16//
17// DJL/RYD September 25, 1996 Module created
18//
19//------------------------------------------------------------------------
20
21#ifndef EvtTensor4C_HH
22#define EvtTensor4C_HH
23
24//#include <iostream.h>
26
27//Class to handle 4D complex valued tensors.
28class EvtTensor4C;
29class EvtVector4C;
30class EvtVector4R;
31class EvtVector3R;
32#include <iosfwd>
34 double alpha,double beta,double gamma);
36EvtTensor4C boostTo(const EvtTensor4C& e, const EvtVector3R boost);
38EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2);
39EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2);
40EvtTensor4C dual(const EvtTensor4C& t2);
42EvtTensor4C cont22(const EvtTensor4C& t1,const EvtTensor4C& t2);
43EvtTensor4C cont11(const EvtTensor4C& t1,const EvtTensor4C& t2);
46EvtTensor4C operator*(const EvtTensor4C& t1,double d);
47EvtTensor4C operator*(double d,const EvtTensor4C& t1);
48EvtComplex cont(const EvtTensor4C& t1,const EvtTensor4C& t2);
49EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2);
50inline EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2);
51
53
54 friend EvtTensor4C rotateEuler(const EvtTensor4C& e,
55 double alpha,double beta,double gamma);
56 friend EvtTensor4C boostTo(const EvtTensor4C& e,
57 const EvtVector4R p4);
58 friend EvtTensor4C boostTo(const EvtTensor4C& e,
59 const EvtVector3R boost);
60 friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2);
61 friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2);
62 friend EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2);
63 friend EvtTensor4C dual(const EvtTensor4C& t2);
64 friend EvtTensor4C conj(const EvtTensor4C& t2);
65 friend EvtTensor4C cont22(const EvtTensor4C& t1,const EvtTensor4C& t2);
66 friend EvtTensor4C cont11(const EvtTensor4C& t1,const EvtTensor4C& t2);
67 friend EvtTensor4C operator*(const EvtTensor4C& t1,const EvtComplex& c);
68 friend EvtTensor4C operator*(const EvtComplex& c,const EvtTensor4C& t1);
69 friend EvtTensor4C operator*(const EvtTensor4C& t1,double d);
70 friend EvtTensor4C operator*(double d,const EvtTensor4C& t1);
71 friend EvtComplex cont(const EvtTensor4C& t1,const EvtTensor4C& t2);
72 friend EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2);
73 friend EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2);
74
75public:
77
78 EvtTensor4C(double t00,double t11,double t22, double t33) { setdiag(t00,t11,t22,t33);}
79
80
81 EvtTensor4C(const EvtTensor4C& t1 );
82 virtual ~EvtTensor4C();
85 EvtTensor4C& operator*=(double d);
87 static const EvtTensor4C& g();
88 inline void set(int i,int j,const EvtComplex& c);
89 void setdiag(double t00,double t11,double t22, double t33);
90 inline const EvtComplex& get(int i, int j) const;
91 inline EvtComplex trace() const;
92 void zero();
93 void applyRotateEuler(double alpha,double beta,double gamma);
94 void applyBoostTo(const EvtVector4R& p4);
95 void applyBoostTo(const EvtVector3R& boost);
96 friend std::ostream& operator<<(std::ostream& s, const EvtTensor4C& t);
99 EvtTensor4C conj() const;
100 EvtVector4C cont1(const EvtVector4C& v4) const;
101 EvtVector4C cont2(const EvtVector4C& v4) const;
102 EvtVector4C cont1(const EvtVector4R& v4) const;
103 EvtVector4C cont2(const EvtVector4R& v4) const;
104
105
106private:
107
108 EvtComplex t[4][4];
109
110};
111
112inline EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2){
113
114 return EvtTensor4C(t1)+=t2;
115}
116
117inline EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2){
118
119 return EvtTensor4C(t1)-=t2;
120}
121
122inline void EvtTensor4C::set(int i,int j,const EvtComplex& c){
123 t[i][j]=c;
124}
125
126inline const EvtComplex& EvtTensor4C::get(int i,int j) const{
127 return t[i][j];
128}
129
131 return t[0][0]-t[1][1]-t[2][2]-t[3][3];
132}
133
134#endif
135
double p1[4]
double p2[4]
EvtTensor4C operator-(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C dual(const EvtTensor4C &t2)
EvtTensor4C rotateEuler(const EvtTensor4C &e, double alpha, double beta, double gamma)
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C operator+(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C cont22(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C cont11(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C operator*(const EvtTensor4C &t1, const EvtComplex &c)
EvtTensor4C conj(const EvtTensor4C &t2)
EvtTensor4C directProd(const EvtVector4C &c1, const EvtVector4C &c2)
EvtTensor4C boostTo(const EvtTensor4C &e, const EvtVector4R p4)
const double alpha
XmlRpcServer s
friend EvtTensor4C operator-(const EvtTensor4C &t1, const EvtTensor4C &t2)
friend EvtTensor4C dual(const EvtTensor4C &t2)
void setdiag(double t00, double t11, double t22, double t33)
friend EvtTensor4C rotateEuler(const EvtTensor4C &e, double alpha, double beta, double gamma)
friend EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtComplex trace() const
void set(int i, int j, const EvtComplex &c)
const EvtComplex & get(int i, int j) const
EvtTensor4C & operator=(const EvtTensor4C &t1)
EvtTensor4C & operator-=(const EvtTensor4C &t2)
virtual ~EvtTensor4C()
EvtVector4C cont1(const EvtVector4C &v4) const
static const EvtTensor4C & g()
void applyBoostTo(const EvtVector4R &p4)
friend EvtTensor4C operator+(const EvtTensor4C &t1, const EvtTensor4C &t2)
friend std::ostream & operator<<(std::ostream &s, const EvtTensor4C &t)
EvtTensor4C & addDirProd(const EvtVector4R &p1, const EvtVector4R &p2)
friend EvtTensor4C cont22(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C & operator*=(const EvtComplex &c)
friend EvtTensor4C cont11(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtVector4C cont2(const EvtVector4C &v4) const
EvtTensor4C & operator+=(const EvtTensor4C &t2)
friend EvtTensor4C operator*(const EvtTensor4C &t1, const EvtComplex &c)
void applyRotateEuler(double alpha, double beta, double gamma)
friend EvtTensor4C conj(const EvtTensor4C &t2)
friend EvtTensor4C directProd(const EvtVector4C &c1, const EvtVector4C &c2)
friend EvtTensor4C boostTo(const EvtTensor4C &e, const EvtVector4R p4)
EvtTensor4C(double t00, double t11, double t22, double t33)
double double double * p4
Definition qcdloop1.h:77