BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTensor3C.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/EvtTensor3C.hh
12//
13// Description: Class to handle complex 3 tensors
14//
15// Modification history:
16//
17// RYD September 14, 1997 Module created
18//
19//------------------------------------------------------------------------
20
21#ifndef EVTTENSOR3C_HH
22#define EVTTENSOR3C_HH
23
24#include <iostream>
26
27class EvtVector3C;
28class EvtVector3R;
29
30class EvtTensor3C;
31
33 double phi,double theta,double ksi);
34inline EvtTensor3C operator*(const EvtComplex& c,const EvtTensor3C& t2);
35inline EvtTensor3C operator*(const double d,const EvtTensor3C& t2);
36inline EvtTensor3C operator*(const EvtTensor3C& t2,const EvtComplex& c);
37inline EvtTensor3C operator*(const EvtTensor3C& t2,const double d);
38inline EvtTensor3C operator+(const EvtTensor3C& t1,const EvtTensor3C& t2);
39inline EvtTensor3C operator-(const EvtTensor3C& t1,const EvtTensor3C& t2);
40EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2);
41EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2);
42EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2);
44//Contract the second index of two tensors result(i,j) = t1(i,k)t2(j,k)
45EvtTensor3C cont22(const EvtTensor3C& t1,const EvtTensor3C& t2);
46//Contract the first index of two tensors result(i,j) = t1(k,i)t2(k,j)
47EvtTensor3C cont11(const EvtTensor3C& t1,const EvtTensor3C& t2);
48//Contract the last index of eps_{ijk} with w
50std::ostream& operator<<(std::ostream& c,const EvtTensor3C& v);
51
52//==================
54
56 double phi,double theta,double ksi);
58 const EvtComplex& c,const EvtTensor3C& t2);
59 friend EvtTensor3C operator*(const double d,const EvtTensor3C& t2);
61 const EvtTensor3C& t2,const EvtComplex& c);
62 friend EvtTensor3C operator*(const EvtTensor3C& t2,const double d);
64 const EvtTensor3C& t1,const EvtTensor3C& t2);
66 const EvtTensor3C& t1,const EvtTensor3C& t2);
67 friend EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3C& c2);
68 friend EvtTensor3C directProd(const EvtVector3C& c1,const EvtVector3R& c2);
69 friend EvtTensor3C directProd(const EvtVector3R& c1,const EvtVector3R& c2);
70 friend EvtTensor3C conj(const EvtTensor3C& t2);
71//Contract the second index of two tensors result(i,j) = t1(i,k)t2(j,k)
72 friend EvtTensor3C cont22(const EvtTensor3C& t1,const EvtTensor3C& t2);
73//Contract the first index of two tensors result(i,j) = t1(k,i)t2(k,j)
74 friend EvtTensor3C cont11(const EvtTensor3C& t1,const EvtTensor3C& t2);
75//Contract the last index of eps_{ijk} with w
76 friend EvtTensor3C eps(const EvtVector3R& v);
77 friend std::ostream& operator<<(std::ostream& c,const EvtTensor3C& v);
78
79public:
81 EvtTensor3C(const EvtTensor3C& t1 );
82 EvtTensor3C(double d11, double d22, double d33);
83 virtual ~EvtTensor3C();
85 inline void set(int i,int j,const EvtComplex& c);
86 inline const EvtComplex& get(int i, int j) const;
87 inline EvtComplex trace() const;
88 static const EvtTensor3C& id();
89 void zero();
90 void applyRotateEuler(double phi,double theta,double ksi);
91
94 EvtTensor3C operator*=(const double d);
96 EvtTensor3C conj() const;
97 EvtVector3C cont1(const EvtVector3C& v) const;
98 EvtVector3C cont2(const EvtVector3C& v) const;
99 EvtVector3C cont1(const EvtVector3R& v) const;
100 EvtVector3C cont2(const EvtVector3R& v) const;
101
102private:
103
104 EvtComplex t[3][3];
105};
106
107inline EvtTensor3C operator*(const EvtComplex& c,const EvtTensor3C& t2){
108 return EvtTensor3C(t2)*=c;
109}
110
111inline EvtTensor3C operator*(const double d,const EvtTensor3C& t2){
112 return EvtTensor3C(t2)*=d;
113}
114
115inline EvtTensor3C operator*(const EvtTensor3C& t2,const EvtComplex& c){
116 return EvtTensor3C(t2)*=c;
117}
118
119inline EvtTensor3C operator*(const EvtTensor3C& t2,const double d){
120 return EvtTensor3C(t2)*=d;
121}
122
123inline EvtTensor3C operator+(const EvtTensor3C& t1,const EvtTensor3C& t2){
124 return EvtTensor3C(t1)+=t2;
125}
126
127inline EvtTensor3C operator-(const EvtTensor3C& t1,const EvtTensor3C& t2){
128 return EvtTensor3C(t1)-=t2;
129}
130
131inline void EvtTensor3C::set(int i,int j,const EvtComplex& c){
132 t[i][j]=c;
133}
134
135inline const EvtComplex& EvtTensor3C::get(int i,int j) const{
136 return t[i][j];
137}
138
140 return t[0][0]+t[1][1]+t[2][2];
141}
142
143#endif
144
EvtTensor3C conj(const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:204
EvtTensor3C rotateEuler(const EvtTensor3C &v, double phi, double theta, double ksi)
Definition: EvtTensor3C.cc:348
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
Definition: EvtTensor3C.cc:165
std::ostream & operator<<(std::ostream &c, const EvtTensor3C &v)
EvtTensor3C cont22(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:219
EvtTensor3C operator*(const EvtComplex &c, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:107
EvtTensor3C operator-(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:127
EvtTensor3C operator+(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:123
EvtTensor3C eps(const EvtVector3R &v)
Definition: EvtTensor3C.cc:307
EvtTensor3C cont11(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:236
**********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
virtual ~EvtTensor3C()
Definition: EvtTensor3C.cc:32
const EvtComplex & get(int i, int j) const
Definition: EvtTensor3C.hh:135
friend EvtTensor3C conj(const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:204
friend EvtTensor3C rotateEuler(const EvtTensor3C &v, double phi, double theta, double ksi)
Definition: EvtTensor3C.cc:348
friend EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
Definition: EvtTensor3C.cc:165
void zero()
Definition: EvtTensor3C.cc:88
EvtVector3C cont1(const EvtVector3C &v) const
Definition: EvtTensor3C.cc:254
void set(int i, int j, const EvtComplex &c)
Definition: EvtTensor3C.hh:131
friend std::ostream & operator<<(std::ostream &c, const EvtTensor3C &v)
void applyRotateEuler(double phi, double theta, double ksi)
Definition: EvtTensor3C.cc:358
friend EvtTensor3C cont22(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:219
friend EvtTensor3C operator*(const EvtComplex &c, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:107
EvtVector3C cont2(const EvtVector3C &v) const
Definition: EvtTensor3C.cc:267
EvtTensor3C operator-=(const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:123
friend EvtTensor3C operator-(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:127
friend EvtTensor3C operator+(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.hh:123
static const EvtTensor3C & id()
Definition: EvtTensor3C.cc:330
EvtTensor3C & operator=(const EvtTensor3C &t1)
Definition: EvtTensor3C.cc:64
friend EvtTensor3C eps(const EvtVector3R &v)
Definition: EvtTensor3C.cc:307
EvtComplex trace() const
Definition: EvtTensor3C.hh:139
EvtTensor3C operator*=(const double d)
Definition: EvtTensor3C.cc:150
EvtTensor3C operator+=(const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:110
friend EvtTensor3C cont11(const EvtTensor3C &t1, const EvtTensor3C &t2)
Definition: EvtTensor3C.cc:236