BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTensor3C.cc
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: EvtTensor3C.cc
12//
13// Description: Implementation of 3 tensors.
14//
15// Modification history:
16//
17// RYD September 14, 1996 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtTensor3C.hh"
22#include "EvtComplex.hh"
23#include "EvtPatches.hh"
24#include "EvtReport.hh"
25#include "EvtVector3C.hh"
26#include <iostream>
27#include <math.h>
28using std::endl;
29using std::ostream;
30
32
34
35 int i, j;
36
37 for ( i = 0; i < 3; i++ )
38 {
39 for ( j = 0; j < 3; j++ ) { t[i][j] = t1.t[i][j]; }
40 }
41}
42
43EvtTensor3C::EvtTensor3C( double d11, double d22, double d33 ) {
44
45 int i, j;
46
47 for ( i = 0; i < 3; i++ )
48 {
49 for ( j = 0; j < 3; j++ ) { t[i][j] = 0.0; }
50 }
51
52 t[0][0] = d11;
53 t[1][1] = d22;
54 t[2][2] = d33;
55}
56
58 int i, j;
59
60 for ( i = 0; i < 3; i++ )
61 {
62 for ( j = 0; j < 3; j++ ) { t[i][j] = t1.t[i][j]; }
63 }
64 return *this;
65}
69
70 int i, j;
71
72 for ( i = 0; i < 3; i++ )
73 {
74 for ( j = 0; j < 3; j++ ) { temp.set( j, i, ::conj( t[i][j] ) ); }
75 }
76 return temp;
77}
78
80 int i, j;
81 for ( i = 0; i < 3; i++ )
82 {
83 for ( j = 0; j < 3; j++ ) { t[i][j] = EvtComplex( 0.0, 0.0 ); }
84 }
85}
86
88
89 int i, j;
90
91 for ( i = 0; i < 3; i++ )
92 {
93 for ( j = 0; j < 3; j++ ) { t[i][j] = EvtComplex( 0.0, 0.0 ); }
94 }
95}
96
98
99 int i, j;
100
101 for ( i = 0; i < 3; i++ )
102 {
103 for ( j = 0; j < 3; j++ ) { t[i][j] += t2.t[i][j]; }
104 }
105 return *this;
106}
107
109
110 int i, j;
111
112 for ( i = 0; i < 3; i++ )
113 {
114 for ( j = 0; j < 3; j++ ) { t[i][j] -= t2.t[i][j]; }
115 }
116 return *this;
117}
118
120
121 int i, j;
122
123 for ( i = 0; i < 3; i++ )
124 {
125 for ( j = 0; j < 3; j++ ) { t[i][j] *= c; }
126 }
127 return *this;
128}
129
131
132 int i, j;
133
134 for ( i = 0; i < 3; i++ )
135 {
136 for ( j = 0; j < 3; j++ ) { t[i][j] *= EvtComplex( c ); }
137 }
138 return *this;
139}
140
142 EvtTensor3C temp;
143 int i, j;
144
145 for ( i = 0; i < 3; i++ )
146 {
147 for ( j = 0; j < 3; j++ ) { temp.set( i, j, c1.get( i ) * c2.get( j ) ); }
148 }
149 return temp;
150}
151
153 EvtTensor3C temp;
154 int i, j;
155
156 for ( i = 0; i < 3; i++ )
157 {
158 for ( j = 0; j < 3; j++ ) { temp.set( i, j, c1.get( i ) * c2.get( j ) ); }
159 }
160 return temp;
161}
162
164 EvtTensor3C temp;
165 int i, j;
166
167 for ( i = 0; i < 3; i++ )
168 {
169 for ( j = 0; j < 3; j++ ) { temp.t[i][j] = EvtComplex( c1.get( i ) * c2.get( j ), 0.0 ); }
170 }
171 return temp;
172}
173
175 EvtTensor3C temp;
176
177 int i, j;
178
179 for ( i = 0; i < 3; i++ )
180 {
181 for ( j = 0; j < 3; j++ ) { temp.set( i, j, ::conj( ( t2.get( i, j ) ) ) ); }
182 }
183
184 return temp;
185}
186
187EvtTensor3C cont22( const EvtTensor3C& t1, const EvtTensor3C& t2 ) {
188 EvtTensor3C temp;
189
190 int i, j;
191 EvtComplex c;
192
193 for ( i = 0; i < 3; i++ )
194 {
195 for ( j = 0; j < 3; j++ )
196 {
197 c = t1.get( i, 0 ) * t2.get( j, 0 ) + t1.get( i, 1 ) * t2.get( j, 1 ) +
198 t1.get( i, 2 ) * t2.get( j, 2 );
199 temp.set( i, j, c );
200 }
201 }
202
203 return temp;
204}
205
206EvtTensor3C cont11( const EvtTensor3C& t1, const EvtTensor3C& t2 ) {
207 EvtTensor3C temp;
208
209 int i, j;
210 EvtComplex c;
211
212 for ( i = 0; i < 3; i++ )
213 {
214 for ( j = 0; j < 3; j++ )
215 {
216 c = t1.get( 0, i ) * t2.get( 0, j ) + t1.get( 1, i ) * t2.get( 1, j ) +
217 t1.get( 2, i ) * t2.get( 2, j );
218 temp.set( i, j, c );
219 }
220 }
221
222 return temp;
223}
224
226 EvtVector3C temp;
227
228 int i;
229
230 for ( i = 0; i < 3; i++ )
231 { temp.set( i, t[0][i] * v.get( 0 ) + t[1][i] * v.get( 1 ) + t[2][i] * v.get( 2 ) ); }
232
233 return temp;
234}
235
237 EvtVector3C temp;
238
239 int i;
240
241 for ( i = 0; i < 3; i++ )
242 { temp.set( i, t[i][0] * v.get( 0 ) + t[i][1] * v.get( 1 ) + t[i][2] * v.get( 2 ) ); }
243
244 return temp;
245}
246
248 EvtVector3C temp;
249
250 int i;
251
252 for ( i = 0; i < 3; i++ )
253 { temp.set( i, t[0][i] * v.get( 0 ) + t[1][i] * v.get( 1 ) + t[2][i] * v.get( 2 ) ); }
254
255 return temp;
256}
257
259 EvtVector3C temp;
260
261 int i;
262
263 for ( i = 0; i < 3; i++ )
264 { temp.set( i, t[i][0] * v.get( 0 ) + t[i][1] * v.get( 1 ) + t[i][2] * v.get( 2 ) ); }
265
266 return temp;
267}
268
270
271 EvtTensor3C temp;
272
273 temp.t[0][0] = 0.0;
274 temp.t[1][1] = 0.0;
275 temp.t[2][2] = 0.0;
276
277 temp.t[0][1] = v.get( 2 );
278 temp.t[0][2] = -v.get( 1 );
279
280 temp.t[1][0] = -v.get( 2 );
281 temp.t[1][2] = v.get( 0 );
282
283 temp.t[2][0] = v.get( 1 );
284 temp.t[2][1] = -v.get( 0 );
285
286 return temp;
287}
288
290
291 static EvtTensor3C identity( 1.0, 1.0, 1.0 );
292
293 return identity;
294}
295
296ostream& operator<<( ostream& s, const EvtTensor3C& v ) {
297
298 s << endl << "(" << v.t[0][0] << "," << v.t[0][1] << "," << v.t[0][2] << ")";
299 s << endl << "(" << v.t[1][0] << "," << v.t[1][1] << "," << v.t[1][2] << ")";
300 s << endl << "(" << v.t[2][0] << "," << v.t[2][1] << "," << v.t[2][2] << ")" << endl;
301
302 return s;
303}
304
305EvtTensor3C rotateEuler( const EvtTensor3C& v, double alpha, double beta, double gamma ) {
306
307 EvtTensor3C tmp( v );
308 tmp.applyRotateEuler( alpha, beta, gamma );
309 return tmp;
310}
311
312void EvtTensor3C::applyRotateEuler( double phi, double theta, double ksi ) {
313
314 EvtComplex temp[3][3];
315 double sp, st, sk, cp, ct, ck;
316 double r[3][3];
317 int i, j, k;
318
319 sp = sin( phi );
320 st = sin( theta );
321 sk = sin( ksi );
322 cp = cos( phi );
323 ct = cos( theta );
324 ck = cos( ksi );
325
326 r[0][0] = ck * ct * cp - sk * sp;
327 r[0][1] = ck * ct * sp + sk * cp;
328 r[0][2] = -ck * st;
329
330 r[1][0] = -sk * ct * cp - ck * sp;
331 r[1][1] = -sk * ct * sp + ck * cp;
332 r[1][2] = sk * st;
333
334 r[2][0] = st * cp;
335 r[2][1] = st * sp;
336 r[2][2] = ct;
337
338 for ( i = 0; i < 3; i++ )
339 {
340 for ( j = 0; j < 3; j++ )
341 {
342 temp[i][j] = 0.0;
343 for ( k = 0; k < 3; k++ ) { temp[i][j] += r[i][k] * t[k][j]; }
344 }
345 }
346
347 for ( i = 0; i < 3; i++ )
348 {
349 for ( j = 0; j < 3; j++ )
350 {
351 t[i][j] = 0.0;
352 for ( k = 0; k < 3; k++ ) { t[i][j] += r[i][k] * temp[j][k]; }
353 }
354 }
355}
Evt3Rank3C conj(const Evt3Rank3C &t2)
double alpha
EvtTensor3C rotateEuler(const EvtTensor3C &v, double alpha, double beta, double gamma)
EvtTensor3C conj(const EvtTensor3C &t2)
EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
EvtTensor3C cont22(const EvtTensor3C &t1, const EvtTensor3C &t2)
ostream & operator<<(ostream &s, const EvtTensor3C &v)
EvtTensor3C eps(const EvtVector3R &v)
EvtTensor3C cont11(const EvtTensor3C &t1, const EvtTensor3C &t2)
XmlRpcServer s
**********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()
const EvtComplex & get(int i, int j) const
friend EvtTensor3C conj(const EvtTensor3C &t2)
EvtVector3C cont1(const EvtVector3C &v) const
void set(int i, int j, const EvtComplex &c)
void applyRotateEuler(double phi, double theta, double ksi)
EvtVector3C cont2(const EvtVector3C &v) const
EvtTensor3C operator-=(const EvtTensor3C &t2)
static const EvtTensor3C & id()
EvtTensor3C conj() const
EvtTensor3C & operator=(const EvtTensor3C &t1)
EvtTensor3C operator*=(const double d)
EvtTensor3C operator+=(const EvtTensor3C &t2)
const EvtComplex & get(int) const
void set(const int, const EvtComplex &)
double get(int i) const
int t()
Definition t.c:1