36cd0a147cbd5c357043847c2d190bf810be7fbf
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / Evt3Rank3C.cpp
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: Evt3Rank3C.cc
12 //
13 // Description: Implementation of complex 3Rank 3D tensors.
14 //
15 // Modification history:
16 //
17 //    RYD     September 14, 1996         Module created
18 //
19 //------------------------------------------------------------------------
20 #include "EvtGenBase/EvtPatches.hh"
21
22 #include <iostream>
23 #include <math.h>
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"
29
30
31
32 Evt3Rank3C::Evt3Rank3C( const Evt3Rank3C& t1 ) {
33
34   int i,j,k;
35   
36   for(i=0;i<3;i++) {
37     for(j=0;j<3;j++) {
38       for(k=0;k<3;j++) {
39         t[i][j][k] = t1.t[i][j][k];
40       }
41     }
42   }
43 }
44
45 Evt3Rank3C::~Evt3Rank3C() { }
46
47
48 Evt3Rank3C& Evt3Rank3C::operator=(const Evt3Rank3C& t1) {
49   int i,j,k;
50   
51   for(i=0;i<3;i++) {
52     for(j=0;j<3;j++) {
53       for(k=0;k<3;k++) {
54         t[i][j][k] = t1.t[i][j][k];
55       }
56     }
57   }
58   return *this;
59 }
60
61
62 Evt3Rank3C Evt3Rank3C::conj() const {
63   Evt3Rank3C temp;
64   
65   int i,j,k;
66   
67   for(i=0;i<3;i++) {
68     for(j=0;j<3;j++) {
69       for(k=0;k<3;k++) {
70         temp.set(i,j,k,::conj(t[i][j][k]));
71       }
72     }
73   }
74   return temp;
75 }
76
77 void Evt3Rank3C::zero(){
78   int i,j,k;
79   for(i=0;i<3;i++){
80     for(j=0;j<3;j++){
81       for(k=0;k<3;k++){
82         t[i][j][k]=EvtComplex(0.0,0.0);
83       }
84     }
85   }
86 }
87
88
89 Evt3Rank3C::Evt3Rank3C(){
90   
91   int i,j,k;
92   
93   for(i=0;i<3;i++){
94     for(j=0;j<3;j++){
95       for(k=0;k<3;k++){
96         t[i][j][k]=EvtComplex(0.0,0.0);
97       }
98     }
99   }
100
101 }
102
103 std::ostream& operator<<(std::ostream& s, const Evt3Rank3C& t2){
104   int i,j,k;
105   for(k=0;k<3;k++){
106     for(i=0;i<3;i++){
107       for(j=0;j<3;j++){
108         report(INFO,"EvtGen") <<t2.t[k][i][j];
109       }
110       report(INFO,"EvtGen") << "\n";
111     }
112   }
113   return s;
114 }
115
116 Evt3Rank3C& Evt3Rank3C::operator+=(const Evt3Rank3C& t2){
117   
118   int i,j,k;
119   
120   for (i=0;i<3;i++) {
121     for (j=0;j<3;j++) {
122       for (k=0;k<3;k++) {
123         t[i][j][k]+=t2.t[i][j][k];
124       }
125     }
126   }
127   return *this;
128 }
129
130 Evt3Rank3C& Evt3Rank3C::operator-=(const Evt3Rank3C& t2) {
131
132   int i,j,k;
133   
134   for (i=0;i<3;i++) {
135     for (j=0;j<3;j++) {
136       for (k=0;k<3;k++) {
137         t[i][j][k]-=t2.t[i][j][k];
138       }
139     }
140   }
141
142   return *this;
143
144 }
145
146
147 Evt3Rank3C& Evt3Rank3C::operator*=(const EvtComplex& c){
148
149   int i,j,k;
150   
151   for (i=0;i<3;i++) {
152     for (j=0;j<3;j++) {
153       for (k=0;k<3;k++) {
154         t[i][j][k]*=c;
155       }
156     }
157   }
158   return *this;
159 }
160
161 Evt3Rank3C& Evt3Rank3C::operator*=(const double c){
162   int i,j,k;
163   
164   for (i=0;i<3;i++) {
165     for (j=0;j<3;j++) {
166       for (k=0;k<3;k++) {
167         t[i][j][k]*=c;
168       }
169     }
170   }
171
172   return *this;
173
174 }
175
176 Evt3Rank3C conj(const Evt3Rank3C& t2) { 
177   Evt3Rank3C temp;
178   
179   int i,j,k;
180
181   for(i=0;i<3;i++){ 
182     for(j=0;j<3;j++){ 
183       for(k=0;k<3;k++){ 
184         temp.t[i][j][k]=::conj(t2.t[i][j][k]);
185       }
186     }
187   }
188   return temp;
189 }
190
191 EvtTensor3C Evt3Rank3C::cont1(const EvtVector3C& v) const {
192   EvtTensor3C temp;
193   
194   int i,k;
195   
196   for(i=0;i<3;i++){
197     for(k=0;k<3;k++){
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));
200     }
201   }
202   return temp;
203
204
205
206 EvtTensor3C Evt3Rank3C::cont2(const EvtVector3C& v) const {
207   EvtTensor3C temp;
208   
209   int i,k;
210   
211   for(i=0;i<3;i++){
212     for(k=0;k<3;k++){
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));
215     }
216   }
217   return temp;
218
219
220
221 EvtTensor3C Evt3Rank3C::cont3(const EvtVector3C& v) const {
222   EvtTensor3C temp;
223   
224   int i,k;
225   
226   for(i=0;i<3;i++){
227     for(k=0;k<3;k++){
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));
230     }
231   }
232   return temp;
233
234
235 EvtTensor3C Evt3Rank3C::cont1(const EvtVector3R& v) const {
236   EvtTensor3C temp;
237   
238   int i,k;
239   
240   for(i=0;i<3;i++){
241     for(k=0;k<3;k++){
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));
244     }
245   }
246   return temp;
247
248
249
250 EvtTensor3C Evt3Rank3C::cont2(const EvtVector3R& v) const {
251   EvtTensor3C temp;
252   
253   int i,k;
254   
255   for(i=0;i<3;i++){
256     for(k=0;k<3;k++){
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));
259     }
260   }
261   return temp;
262
263
264
265 EvtTensor3C Evt3Rank3C::cont3(const EvtVector3R& v) const {
266   EvtTensor3C temp;
267   
268   int i,k;
269   
270   for(i=0;i<3;i++){
271     for(k=0;k<3;k++){
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));
274     }
275   }
276   return temp;
277
278