evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Evt3Rank3C.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #include "EvtGenBase/Evt3Rank3C.hh"
22 
23 #include "EvtGenBase/EvtComplex.hh"
24 #include "EvtGenBase/EvtPatches.hh"
25 #include "EvtGenBase/EvtReport.hh"
28 
29 #include <iostream>
30 #include <math.h>
31 
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; k++ ) {
39  t[i][j][k] = t1.t[i][j][k];
40  }
41  }
42  }
43 }
44 
46 {
47  int i, j, k;
48 
49  for ( i = 0; i < 3; i++ ) {
50  for ( j = 0; j < 3; j++ ) {
51  for ( k = 0; k < 3; k++ ) {
52  t[i][j][k] = t1.t[i][j][k];
53  }
54  }
55  }
56  return *this;
57 }
58 
60 {
61  Evt3Rank3C temp;
62 
63  int i, j, k;
64 
65  for ( i = 0; i < 3; i++ ) {
66  for ( j = 0; j < 3; j++ ) {
67  for ( k = 0; k < 3; k++ ) {
68  temp.set( i, j, k, ::conj( t[i][j][k] ) );
69  }
70  }
71  }
72  return temp;
73 }
74 
76 {
77  int i, j, k;
78  for ( i = 0; i < 3; i++ ) {
79  for ( j = 0; j < 3; j++ ) {
80  for ( k = 0; k < 3; k++ ) {
81  t[i][j][k] = EvtComplex( 0.0, 0.0 );
82  }
83  }
84  }
85 }
86 
88 {
89  int i, j, k;
90 
91  for ( i = 0; i < 3; i++ ) {
92  for ( j = 0; j < 3; j++ ) {
93  for ( k = 0; k < 3; k++ ) {
94  t[i][j][k] = EvtComplex( 0.0, 0.0 );
95  }
96  }
97  }
98 }
99 
100 std::ostream& operator<<( std::ostream& s, const Evt3Rank3C& t2 )
101 {
102  int i, j, k;
103  for ( k = 0; k < 3; k++ ) {
104  for ( i = 0; i < 3; i++ ) {
105  for ( j = 0; j < 3; j++ ) {
106  EvtGenReport( EVTGEN_INFO, "EvtGen" ) << t2.t[k][i][j];
107  }
108  EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "\n";
109  }
110  }
111  return s;
112 }
113 
115 {
116  int i, j, k;
117 
118  for ( i = 0; i < 3; i++ ) {
119  for ( j = 0; j < 3; j++ ) {
120  for ( k = 0; k < 3; k++ ) {
121  t[i][j][k] += t2.t[i][j][k];
122  }
123  }
124  }
125  return *this;
126 }
127 
129 {
130  int i, j, k;
131 
132  for ( i = 0; i < 3; i++ ) {
133  for ( j = 0; j < 3; j++ ) {
134  for ( k = 0; k < 3; k++ ) {
135  t[i][j][k] -= t2.t[i][j][k];
136  }
137  }
138  }
139 
140  return *this;
141 }
142 
144 {
145  int i, j, k;
146 
147  for ( i = 0; i < 3; i++ ) {
148  for ( j = 0; j < 3; j++ ) {
149  for ( k = 0; k < 3; k++ ) {
150  t[i][j][k] *= c;
151  }
152  }
153  }
154  return *this;
155 }
156 
158 {
159  int i, j, k;
160 
161  for ( i = 0; i < 3; i++ ) {
162  for ( j = 0; j < 3; j++ ) {
163  for ( k = 0; k < 3; k++ ) {
164  t[i][j][k] *= c;
165  }
166  }
167  }
168 
169  return *this;
170 }
171 
173 {
174  Evt3Rank3C temp;
175 
176  int i, j, k;
177 
178  for ( i = 0; i < 3; i++ ) {
179  for ( j = 0; j < 3; j++ ) {
180  for ( k = 0; k < 3; k++ ) {
181  temp.t[i][j][k] = ::conj( t2.t[i][j][k] );
182  }
183  }
184  }
185  return temp;
186 }
187 
189 {
190  EvtTensor3C temp;
191 
192  int i, k;
193 
194  for ( i = 0; i < 3; i++ ) {
195  for ( k = 0; k < 3; k++ ) {
196  temp.set( i, k,
197  t[0][i][k] * v.get( 0 ) + t[1][i][k] * v.get( 1 ) +
198  t[2][i][k] * v.get( 2 ) );
199  }
200  }
201  return temp;
202 }
203 
205 {
206  EvtTensor3C temp;
207 
208  int i, k;
209 
210  for ( i = 0; i < 3; i++ ) {
211  for ( k = 0; k < 3; k++ ) {
212  temp.set( i, k,
213  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 
221 {
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,
229  t[i][k][0] * v.get( 0 ) + t[i][k][1] * v.get( 1 ) +
230  t[i][k][2] * v.get( 2 ) );
231  }
232  }
233  return temp;
234 }
235 
237 {
238  EvtTensor3C temp;
239 
240  int i, k;
241 
242  for ( i = 0; i < 3; i++ ) {
243  for ( k = 0; k < 3; k++ ) {
244  temp.set( i, k,
245  t[0][i][k] * v.get( 0 ) + t[1][i][k] * v.get( 1 ) +
246  t[2][i][k] * v.get( 2 ) );
247  }
248  }
249  return temp;
250 }
251 
253 {
254  EvtTensor3C temp;
255 
256  int i, k;
257 
258  for ( i = 0; i < 3; i++ ) {
259  for ( k = 0; k < 3; k++ ) {
260  temp.set( i, k,
261  t[i][0][k] * v.get( 0 ) + t[i][1][k] * v.get( 1 ) +
262  t[i][2][k] * v.get( 2 ) );
263  }
264  }
265  return temp;
266 }
267 
269 {
270  EvtTensor3C temp;
271 
272  int i, k;
273 
274  for ( i = 0; i < 3; i++ ) {
275  for ( k = 0; k < 3; k++ ) {
276  temp.set( i, k,
277  t[i][k][0] * v.get( 0 ) + t[i][k][1] * v.get( 1 ) +
278  t[i][k][2] * v.get( 2 ) );
279  }
280  }
281  return temp;
282 }
double get(int i) const
Definition: EvtVector3R.hh:121
EvtTensor3C cont1(const EvtVector3C &v) const
Definition: Evt3Rank3C.cpp:188
void zero()
Definition: Evt3Rank3C.cpp:75
EvtTensor3C cont2(const EvtVector3C &v) const
Definition: Evt3Rank3C.cpp:204
Evt3Rank3C & operator *=(const double d)
Definition: Evt3Rank3C.cpp:157
const EvtComplex & get(int) const
Definition: EvtVector3C.hh:99
void set(int i, int j, int k, const EvtComplex &c)
Definition: Evt3Rank3C.hh:110
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
Evt3Rank3C & operator+=(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:114
Evt3Rank3C conj(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:172
Evt3Rank3C & operator-=(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:128
void set(int i, int j, const EvtComplex &c)
Definition: EvtTensor3C.hh:120
EvtTensor3C cont3(const EvtVector3C &v) const
Definition: Evt3Rank3C.cpp:220
EvtComplex t[3][3][3]
Definition: Evt3Rank3C.hh:77
std::ostream & operator<<(std::ostream &s, const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cpp:100
Evt3Rank3C conj() const
Definition: Evt3Rank3C.cpp:59
Evt3Rank3C & operator=(const Evt3Rank3C &t1)
Definition: Evt3Rank3C.cpp:45