1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: Evt3Rank3C.cc
13 // Description: Implementation of complex 3Rank 3D tensors.
15 // Modification history:
17 // RYD September 14, 1996 Module created
19 //------------------------------------------------------------------------
20 #include "EvtGenBase/EvtPatches.hh"
24 #include "EvtGenBase/Evt3Rank3C.hh"
25 #include "EvtGenBase/EvtComplex.hh"
26 #include "EvtGenBase/EvtVector3C.hh"
27 #include "EvtGenBase/EvtTensor3C.hh"
28 #include "EvtGenBase/EvtReport.hh"
32 Evt3Rank3C::Evt3Rank3C( const Evt3Rank3C& t1 ) {
39 t[i][j][k] = t1.t[i][j][k];
45 Evt3Rank3C::~Evt3Rank3C() { }
48 Evt3Rank3C& Evt3Rank3C::operator=(const Evt3Rank3C& t1) {
54 t[i][j][k] = t1.t[i][j][k];
62 Evt3Rank3C Evt3Rank3C::conj() const {
70 temp.set(i,j,k,::conj(t[i][j][k]));
77 void Evt3Rank3C::zero(){
82 t[i][j][k]=EvtComplex(0.0,0.0);
89 Evt3Rank3C::Evt3Rank3C(){
96 t[i][j][k]=EvtComplex(0.0,0.0);
103 std::ostream& operator<<(std::ostream& s, const Evt3Rank3C& t2){
108 report(INFO,"EvtGen") <<t2.t[k][i][j];
110 report(INFO,"EvtGen") << "\n";
116 Evt3Rank3C& Evt3Rank3C::operator+=(const Evt3Rank3C& t2){
123 t[i][j][k]+=t2.t[i][j][k];
130 Evt3Rank3C& Evt3Rank3C::operator-=(const Evt3Rank3C& t2) {
137 t[i][j][k]-=t2.t[i][j][k];
147 Evt3Rank3C& Evt3Rank3C::operator*=(const EvtComplex& c){
161 Evt3Rank3C& Evt3Rank3C::operator*=(const double c){
176 Evt3Rank3C conj(const Evt3Rank3C& t2) {
184 temp.t[i][j][k]=::conj(t2.t[i][j][k]);
191 EvtTensor3C Evt3Rank3C::cont1(const EvtVector3C& v) const {
198 temp.set(i,k,t[0][i][k]*v.get(0)+t[1][i][k]*v.get(1)
199 +t[2][i][k]*v.get(2));
206 EvtTensor3C Evt3Rank3C::cont2(const EvtVector3C& v) const {
213 temp.set(i,k,t[i][0][k]*v.get(0)+t[i][1][k]*v.get(1)
214 +t[i][2][k]*v.get(2));
221 EvtTensor3C Evt3Rank3C::cont3(const EvtVector3C& v) const {
228 temp.set(i,k,t[i][k][0]*v.get(0)+t[i][k][1]*v.get(1)
229 +t[i][k][2]*v.get(2));
235 EvtTensor3C Evt3Rank3C::cont1(const EvtVector3R& v) const {
242 temp.set(i,k,t[0][i][k]*v.get(0)+t[1][i][k]*v.get(1)
243 +t[2][i][k]*v.get(2));
250 EvtTensor3C Evt3Rank3C::cont2(const EvtVector3R& v) const {
257 temp.set(i,k,t[i][0][k]*v.get(0)+t[i][1][k]*v.get(1)
258 +t[i][2][k]*v.get(2));
265 EvtTensor3C Evt3Rank3C::cont3(const EvtVector3R& v) const {
272 temp.set(i,k,t[i][k][0]*v.get(0)+t[i][k][1]*v.get(1)
273 +t[i][k][2]*v.get(2));