Geant4 Cross Reference |
1 // -*- C++ -*- 1 // -*- C++ -*- >> 2 // $Id:$ 2 // ------------------------------------------- 3 // --------------------------------------------------------------------------- 3 // 4 // 4 // This file is a part of the CLHEP - a Class 5 // This file is a part of the CLHEP - a Class Library for High Energy Physics. 5 // 6 // 6 // This is the implementation basic parts of t 7 // This is the implementation basic parts of the HepLorentzRotation class. 7 // 8 // 8 // Some ZOOM methods involving construction fr 9 // Some ZOOM methods involving construction from columns and decomposition 9 // into boost*rotation are split off into Lore 10 // into boost*rotation are split off into LorentzRotationC and LorentzRotationD 10 11 >> 12 #ifdef GNUPRAGMA >> 13 #pragma implementation >> 14 #endif >> 15 11 #include "CLHEP/Vector/LorentzRotation.h" 16 #include "CLHEP/Vector/LorentzRotation.h" 12 17 13 #include <cmath> << 14 #include <iomanip> << 15 #include <iostream> 18 #include <iostream> >> 19 #include <iomanip> 16 20 17 namespace CLHEP { 21 namespace CLHEP { 18 22 19 // ---------- Constructors and Assignment: 23 // ---------- Constructors and Assignment: 20 24 21 25 22 HepLorentzRotation & HepLorentzRotation::set 26 HepLorentzRotation & HepLorentzRotation::set 23 (double bx, double by, double bz) { 27 (double bx, double by, double bz) { 24 double bp2 = bx*bx + by*by + bz*bz; 28 double bp2 = bx*bx + by*by + bz*bz; 25 // if (bp2 >= 1) { 29 // if (bp2 >= 1) { 26 // std::cerr << "HepLorentzRotation::set() 30 // std::cerr << "HepLorentzRotation::set() - " 27 // << "Boost Vector supplied to set HepLo 31 // << "Boost Vector supplied to set HepLorentzRotation represents speed >= c." 28 // << std::endl; 32 // << std::endl; 29 // } 33 // } 30 double gamma = 1.0 / std::sqrt(1.0 - bp2); 34 double gamma = 1.0 / std::sqrt(1.0 - bp2); 31 double bgamma = gamma * gamma / (1.0 + gamma 35 double bgamma = gamma * gamma / (1.0 + gamma); 32 mxx = 1.0 + bgamma * bx * bx; 36 mxx = 1.0 + bgamma * bx * bx; 33 myy = 1.0 + bgamma * by * by; 37 myy = 1.0 + bgamma * by * by; 34 mzz = 1.0 + bgamma * bz * bz; 38 mzz = 1.0 + bgamma * bz * bz; 35 mxy = myx = bgamma * bx * by; 39 mxy = myx = bgamma * bx * by; 36 mxz = mzx = bgamma * bx * bz; 40 mxz = mzx = bgamma * bx * bz; 37 myz = mzy = bgamma * by * bz; 41 myz = mzy = bgamma * by * bz; 38 mxt = mtx = gamma * bx; 42 mxt = mtx = gamma * bx; 39 myt = mty = gamma * by; 43 myt = mty = gamma * by; 40 mzt = mtz = gamma * bz; 44 mzt = mtz = gamma * bz; 41 mtt = gamma; 45 mtt = gamma; 42 return *this; 46 return *this; 43 } 47 } 44 48 45 HepLorentzRotation & HepLorentzRotation::set 49 HepLorentzRotation & HepLorentzRotation::set 46 (const HepBoost & B, const HepRotation & R 50 (const HepBoost & B, const HepRotation & R) { 47 set (B.rep4x4()); 51 set (B.rep4x4()); 48 *this = matrixMultiplication ( R.rep4x4() ); 52 *this = matrixMultiplication ( R.rep4x4() ); 49 return *this; 53 return *this; 50 } 54 } 51 55 52 HepLorentzRotation & HepLorentzRotation::set 56 HepLorentzRotation & HepLorentzRotation::set 53 (const HepRotation & R, const HepBoost & B 57 (const HepRotation & R, const HepBoost & B) { 54 set (R.rep4x4()); 58 set (R.rep4x4()); 55 *this = matrixMultiplication ( B.rep4x4() ); 59 *this = matrixMultiplication ( B.rep4x4() ); 56 return *this; 60 return *this; 57 } 61 } 58 62 59 // ---------- Accessors: 63 // ---------- Accessors: 60 64 61 // ------------ Subscripting: 65 // ------------ Subscripting: 62 66 63 double HepLorentzRotation::operator () (int i, 67 double HepLorentzRotation::operator () (int i, int j) const { 64 if (i == 0) { 68 if (i == 0) { 65 if (j == 0) { return xx(); } 69 if (j == 0) { return xx(); } 66 if (j == 1) { return xy(); } 70 if (j == 1) { return xy(); } 67 if (j == 2) { return xz(); } 71 if (j == 2) { return xz(); } 68 if (j == 3) { return xt(); } 72 if (j == 3) { return xt(); } 69 } else if (i == 1) { 73 } else if (i == 1) { 70 if (j == 0) { return yx(); } 74 if (j == 0) { return yx(); } 71 if (j == 1) { return yy(); } 75 if (j == 1) { return yy(); } 72 if (j == 2) { return yz(); } 76 if (j == 2) { return yz(); } 73 if (j == 3) { return yt(); } 77 if (j == 3) { return yt(); } 74 } else if (i == 2) { 78 } else if (i == 2) { 75 if (j == 0) { return zx(); } 79 if (j == 0) { return zx(); } 76 if (j == 1) { return zy(); } 80 if (j == 1) { return zy(); } 77 if (j == 2) { return zz(); } 81 if (j == 2) { return zz(); } 78 if (j == 3) { return zt(); } 82 if (j == 3) { return zt(); } 79 } else if (i == 3) { 83 } else if (i == 3) { 80 if (j == 0) { return tx(); } 84 if (j == 0) { return tx(); } 81 if (j == 1) { return ty(); } 85 if (j == 1) { return ty(); } 82 if (j == 2) { return tz(); } 86 if (j == 2) { return tz(); } 83 if (j == 3) { return tt(); } 87 if (j == 3) { return tt(); } 84 } 88 } 85 std::cerr << "HepLorentzRotation subscriptin << 89 std::cerr << "HepLorentzRotation subscripting: bad indeces " 86 << "(" << i << "," << j << ")\n"; 90 << "(" << i << "," << j << ")\n"; 87 return 0.0; 91 return 0.0; 88 } 92 } 89 93 90 // ---------- Application: 94 // ---------- Application: 91 95 92 96 93 // ---------- Comparison: 97 // ---------- Comparison: 94 98 95 int HepLorentzRotation::compare( const HepLore 99 int HepLorentzRotation::compare( const HepLorentzRotation & m1 ) const { 96 if (mtt<m1.mtt) return -1; else if (mtt 100 if (mtt<m1.mtt) return -1; else if (mtt>m1.mtt) return 1; 97 else if (mtz<m1.mtz) return -1; else if (mtz 101 else if (mtz<m1.mtz) return -1; else if (mtz>m1.mtz) return 1; 98 else if (mty<m1.mty) return -1; else if (mty 102 else if (mty<m1.mty) return -1; else if (mty>m1.mty) return 1; 99 else if (mtx<m1.mtx) return -1; else if (mtx 103 else if (mtx<m1.mtx) return -1; else if (mtx>m1.mtx) return 1; 100 104 101 else if (mzt<m1.mzt) return -1; else if (mzt 105 else if (mzt<m1.mzt) return -1; else if (mzt>m1.mzt) return 1; 102 else if (mzz<m1.mzz) return -1; else if (mzz 106 else if (mzz<m1.mzz) return -1; else if (mzz>m1.mzz) return 1; 103 else if (mzy<m1.mzy) return -1; else if (mzy 107 else if (mzy<m1.mzy) return -1; else if (mzy>m1.mzy) return 1; 104 else if (mzx<m1.mzx) return -1; else if (mzx 108 else if (mzx<m1.mzx) return -1; else if (mzx>m1.mzx) return 1; 105 109 106 else if (myt<m1.myt) return -1; else if (myt 110 else if (myt<m1.myt) return -1; else if (myt>m1.myt) return 1; 107 else if (myz<m1.myz) return -1; else if (myz 111 else if (myz<m1.myz) return -1; else if (myz>m1.myz) return 1; 108 else if (myy<m1.myy) return -1; else if (myy 112 else if (myy<m1.myy) return -1; else if (myy>m1.myy) return 1; 109 else if (myx<m1.myx) return -1; else if (myx 113 else if (myx<m1.myx) return -1; else if (myx>m1.myx) return 1; 110 114 111 else if (mxt<m1.mxt) return -1; else if (mxt 115 else if (mxt<m1.mxt) return -1; else if (mxt>m1.mxt) return 1; 112 else if (mxz<m1.mxz) return -1; else if (mxz 116 else if (mxz<m1.mxz) return -1; else if (mxz>m1.mxz) return 1; 113 else if (mxy<m1.mxy) return -1; else if (mxy 117 else if (mxy<m1.mxy) return -1; else if (mxy>m1.mxy) return 1; 114 else if (mxx<m1.mxx) return -1; else if (mxx 118 else if (mxx<m1.mxx) return -1; else if (mxx>m1.mxx) return 1; 115 119 116 else return 0; 120 else return 0; 117 } 121 } 118 122 119 123 120 // ---------- Operations in the group of 4-Rot 124 // ---------- Operations in the group of 4-Rotations 121 125 122 HepLorentzRotation 126 HepLorentzRotation 123 HepLorentzRotation::matrixMultiplication(const 127 HepLorentzRotation::matrixMultiplication(const HepRep4x4 & m1) const { 124 return HepLorentzRotation( 128 return HepLorentzRotation( 125 mxx*m1.xx_ + mxy*m1.yx_ + mxz*m1.zx_ + mxt 129 mxx*m1.xx_ + mxy*m1.yx_ + mxz*m1.zx_ + mxt*m1.tx_, 126 mxx*m1.xy_ + mxy*m1.yy_ + mxz*m1.zy_ + mxt 130 mxx*m1.xy_ + mxy*m1.yy_ + mxz*m1.zy_ + mxt*m1.ty_, 127 mxx*m1.xz_ + mxy*m1.yz_ + mxz*m1.zz_ + mxt 131 mxx*m1.xz_ + mxy*m1.yz_ + mxz*m1.zz_ + mxt*m1.tz_, 128 mxx*m1.xt_ + mxy*m1.yt_ + mxz*m1.zt_ + mxt 132 mxx*m1.xt_ + mxy*m1.yt_ + mxz*m1.zt_ + mxt*m1.tt_, 129 133 130 myx*m1.xx_ + myy*m1.yx_ + myz*m1.zx_ + myt 134 myx*m1.xx_ + myy*m1.yx_ + myz*m1.zx_ + myt*m1.tx_, 131 myx*m1.xy_ + myy*m1.yy_ + myz*m1.zy_ + myt 135 myx*m1.xy_ + myy*m1.yy_ + myz*m1.zy_ + myt*m1.ty_, 132 myx*m1.xz_ + myy*m1.yz_ + myz*m1.zz_ + myt 136 myx*m1.xz_ + myy*m1.yz_ + myz*m1.zz_ + myt*m1.tz_, 133 myx*m1.xt_ + myy*m1.yt_ + myz*m1.zt_ + myt 137 myx*m1.xt_ + myy*m1.yt_ + myz*m1.zt_ + myt*m1.tt_, 134 138 135 mzx*m1.xx_ + mzy*m1.yx_ + mzz*m1.zx_ + mzt 139 mzx*m1.xx_ + mzy*m1.yx_ + mzz*m1.zx_ + mzt*m1.tx_, 136 mzx*m1.xy_ + mzy*m1.yy_ + mzz*m1.zy_ + mzt 140 mzx*m1.xy_ + mzy*m1.yy_ + mzz*m1.zy_ + mzt*m1.ty_, 137 mzx*m1.xz_ + mzy*m1.yz_ + mzz*m1.zz_ + mzt 141 mzx*m1.xz_ + mzy*m1.yz_ + mzz*m1.zz_ + mzt*m1.tz_, 138 mzx*m1.xt_ + mzy*m1.yt_ + mzz*m1.zt_ + mzt 142 mzx*m1.xt_ + mzy*m1.yt_ + mzz*m1.zt_ + mzt*m1.tt_, 139 143 140 mtx*m1.xx_ + mty*m1.yx_ + mtz*m1.zx_ + mtt 144 mtx*m1.xx_ + mty*m1.yx_ + mtz*m1.zx_ + mtt*m1.tx_, 141 mtx*m1.xy_ + mty*m1.yy_ + mtz*m1.zy_ + mtt 145 mtx*m1.xy_ + mty*m1.yy_ + mtz*m1.zy_ + mtt*m1.ty_, 142 mtx*m1.xz_ + mty*m1.yz_ + mtz*m1.zz_ + mtt 146 mtx*m1.xz_ + mty*m1.yz_ + mtz*m1.zz_ + mtt*m1.tz_, 143 mtx*m1.xt_ + mty*m1.yt_ + mtz*m1.zt_ + mtt 147 mtx*m1.xt_ + mty*m1.yt_ + mtz*m1.zt_ + mtt*m1.tt_ ); 144 } 148 } 145 149 146 HepLorentzRotation & HepLorentzRotation::rotat 150 HepLorentzRotation & HepLorentzRotation::rotateX(double delta) { 147 double c1 = std::cos (delta); 151 double c1 = std::cos (delta); 148 double s1 = std::sin (delta); 152 double s1 = std::sin (delta); 149 HepLorentzVector rowy = row2(); 153 HepLorentzVector rowy = row2(); 150 HepLorentzVector rowz = row3(); 154 HepLorentzVector rowz = row3(); 151 HepLorentzVector r2 = c1 * rowy - s1 * rowz; 155 HepLorentzVector r2 = c1 * rowy - s1 * rowz; 152 HepLorentzVector r3 = s1 * rowy + c1 * rowz; 156 HepLorentzVector r3 = s1 * rowy + c1 * rowz; 153 myx = r2.x(); myy = r2.y(); myz = r2.z() 157 myx = r2.x(); myy = r2.y(); myz = r2.z(); myt = r2.t(); 154 mzx = r3.x(); mzy = r3.y(); mzz = r3.z() 158 mzx = r3.x(); mzy = r3.y(); mzz = r3.z(); mzt = r3.t(); 155 return *this; 159 return *this; 156 } 160 } 157 161 158 HepLorentzRotation & HepLorentzRotation::rotat 162 HepLorentzRotation & HepLorentzRotation::rotateY(double delta) { 159 double c1 = std::cos (delta); 163 double c1 = std::cos (delta); 160 double s1 = std::sin (delta); 164 double s1 = std::sin (delta); 161 HepLorentzVector rowx = row1(); 165 HepLorentzVector rowx = row1(); 162 HepLorentzVector rowz = row3(); 166 HepLorentzVector rowz = row3(); 163 HepLorentzVector r1 = c1 * rowx + s1 * rowz 167 HepLorentzVector r1 = c1 * rowx + s1 * rowz; 164 HepLorentzVector r3 = -s1 * rowx + c1 * rowz 168 HepLorentzVector r3 = -s1 * rowx + c1 * rowz; 165 mxx = r1.x(); mxy = r1.y(); mxz = r1.z() 169 mxx = r1.x(); mxy = r1.y(); mxz = r1.z(); mxt = r1.t(); 166 mzx = r3.x(); mzy = r3.y(); mzz = r3.z() 170 mzx = r3.x(); mzy = r3.y(); mzz = r3.z(); mzt = r3.t(); 167 return *this; 171 return *this; 168 } 172 } 169 173 170 HepLorentzRotation & HepLorentzRotation::rotat 174 HepLorentzRotation & HepLorentzRotation::rotateZ(double delta) { 171 double c1 = std::cos (delta); 175 double c1 = std::cos (delta); 172 double s1 = std::sin (delta); 176 double s1 = std::sin (delta); 173 HepLorentzVector rowx = row1(); 177 HepLorentzVector rowx = row1(); 174 HepLorentzVector rowy = row2(); 178 HepLorentzVector rowy = row2(); 175 HepLorentzVector r1 = c1 * rowx - s1 * rowy; 179 HepLorentzVector r1 = c1 * rowx - s1 * rowy; 176 HepLorentzVector r2 = s1 * rowx + c1 * rowy; 180 HepLorentzVector r2 = s1 * rowx + c1 * rowy; 177 mxx = r1.x(); mxy = r1.y(); mxz = r1.z() 181 mxx = r1.x(); mxy = r1.y(); mxz = r1.z(); mxt = r1.t(); 178 myx = r2.x(); myy = r2.y(); myz = r2.z() 182 myx = r2.x(); myy = r2.y(); myz = r2.z(); myt = r2.t(); 179 return *this; 183 return *this; 180 } 184 } 181 185 182 HepLorentzRotation & HepLorentzRotation::boost 186 HepLorentzRotation & HepLorentzRotation::boostX(double beta) { 183 double b2 = beta*beta; 187 double b2 = beta*beta; 184 // if (b2 >= 1) { 188 // if (b2 >= 1) { 185 // std::cerr << "HepLorentzRotation::boostX 189 // std::cerr << "HepLorentzRotation::boostX() - " 186 // << "Beta supplied to HepLorentzRotatio 190 // << "Beta supplied to HepLorentzRotation::boostX represents speed >= c." 187 // << std::endl; 191 // << std::endl; 188 // } 192 // } 189 double g1 = 1.0/std::sqrt(1.0-b2); 193 double g1 = 1.0/std::sqrt(1.0-b2); 190 double bg = beta*g1; 194 double bg = beta*g1; 191 HepLorentzVector rowx = row1(); 195 HepLorentzVector rowx = row1(); 192 HepLorentzVector rowt = row4(); 196 HepLorentzVector rowt = row4(); 193 HepLorentzVector r1 = g1 * rowx + bg * rowt 197 HepLorentzVector r1 = g1 * rowx + bg * rowt; 194 HepLorentzVector r4 = bg * rowx + g1 * rowt 198 HepLorentzVector r4 = bg * rowx + g1 * rowt; 195 mxx = r1.x(); mxy = r1.y(); mxz = r1.z() 199 mxx = r1.x(); mxy = r1.y(); mxz = r1.z(); mxt = r1.t(); 196 mtx = r4.x(); mty = r4.y(); mtz = r4.z() 200 mtx = r4.x(); mty = r4.y(); mtz = r4.z(); mtt = r4.t(); 197 return *this; 201 return *this; 198 } 202 } 199 203 200 HepLorentzRotation & HepLorentzRotation::boost 204 HepLorentzRotation & HepLorentzRotation::boostY(double beta) { 201 double b2 = beta*beta; 205 double b2 = beta*beta; 202 // if (b2 >= 1) { 206 // if (b2 >= 1) { 203 // std::cerr << "HepLorentzRotation::boostY 207 // std::cerr << "HepLorentzRotation::boostY() - " 204 // << "Beta supplied to HepLorentzRotatio 208 // << "Beta supplied to HepLorentzRotation::boostY represents speed >= c." 205 // << std::endl; 209 // << std::endl; 206 // } 210 // } 207 double g1 = 1.0/std::sqrt(1.0-b2); 211 double g1 = 1.0/std::sqrt(1.0-b2); 208 double bg = beta*g1; 212 double bg = beta*g1; 209 HepLorentzVector rowy = row2(); 213 HepLorentzVector rowy = row2(); 210 HepLorentzVector rowt = row4(); 214 HepLorentzVector rowt = row4(); 211 HepLorentzVector r2 = g1 * rowy + bg * rowt 215 HepLorentzVector r2 = g1 * rowy + bg * rowt; 212 HepLorentzVector r4 = bg * rowy + g1 * rowt 216 HepLorentzVector r4 = bg * rowy + g1 * rowt; 213 myx = r2.x(); myy = r2.y(); myz = r2.z() 217 myx = r2.x(); myy = r2.y(); myz = r2.z(); myt = r2.t(); 214 mtx = r4.x(); mty = r4.y(); mtz = r4.z() 218 mtx = r4.x(); mty = r4.y(); mtz = r4.z(); mtt = r4.t(); 215 return *this; 219 return *this; 216 } 220 } 217 221 218 HepLorentzRotation & HepLorentzRotation::boost 222 HepLorentzRotation & HepLorentzRotation::boostZ(double beta) { 219 double b2 = beta*beta; 223 double b2 = beta*beta; 220 // if (b2 >= 1) { 224 // if (b2 >= 1) { 221 // std::cerr << "HepLorentzRotation::boostZ 225 // std::cerr << "HepLorentzRotation::boostZ() - " 222 // << "Beta supplied to HepLorentzRotatio 226 // << "Beta supplied to HepLorentzRotation::boostZ represents speed >= c." 223 // << std::endl; 227 // << std::endl; 224 // } 228 // } 225 double g1 = 1.0/std::sqrt(1.0-b2); 229 double g1 = 1.0/std::sqrt(1.0-b2); 226 double bg = beta*g1; 230 double bg = beta*g1; 227 HepLorentzVector rowz = row3(); 231 HepLorentzVector rowz = row3(); 228 HepLorentzVector rowt = row4(); 232 HepLorentzVector rowt = row4(); 229 HepLorentzVector r3 = g1 * rowz + bg * rowt 233 HepLorentzVector r3 = g1 * rowz + bg * rowt; 230 HepLorentzVector r4 = bg * rowz + g1 * rowt 234 HepLorentzVector r4 = bg * rowz + g1 * rowt; 231 mtx = r4.x(); mty = r4.y(); mtz = r4.z() 235 mtx = r4.x(); mty = r4.y(); mtz = r4.z(); mtt = r4.t(); 232 mzx = r3.x(); mzy = r3.y(); mzz = r3.z() 236 mzx = r3.x(); mzy = r3.y(); mzz = r3.z(); mzt = r3.t(); 233 return *this; 237 return *this; 234 } 238 } 235 239 236 std::ostream & HepLorentzRotation::print( std: 240 std::ostream & HepLorentzRotation::print( std::ostream & os ) const { 237 os << "\n [ ( " << 241 os << "\n [ ( " << 238 std::setw(11) << std::setprecision(6) 242 std::setw(11) << std::setprecision(6) << xx() << " " << 239 std::setw(11) << std::setprecision(6) 243 std::setw(11) << std::setprecision(6) << xy() << " " << 240 std::setw(11) << std::setprecision(6) 244 std::setw(11) << std::setprecision(6) << xz() << " " << 241 std::setw(11) << std::setprecision(6) 245 std::setw(11) << std::setprecision(6) << xt() << ")\n" 242 << " ( " << 246 << " ( " << 243 std::setw(11) << std::setprecision(6) 247 std::setw(11) << std::setprecision(6) << yx() << " " << 244 std::setw(11) << std::setprecision(6) 248 std::setw(11) << std::setprecision(6) << yy() << " " << 245 std::setw(11) << std::setprecision(6) 249 std::setw(11) << std::setprecision(6) << yz() << " " << 246 std::setw(11) << std::setprecision(6) 250 std::setw(11) << std::setprecision(6) << yt() << ")\n" 247 << " ( " << 251 << " ( " << 248 std::setw(11) << std::setprecision(6) 252 std::setw(11) << std::setprecision(6) << zx() << " " << 249 std::setw(11) << std::setprecision(6) 253 std::setw(11) << std::setprecision(6) << zy() << " " << 250 std::setw(11) << std::setprecision(6) 254 std::setw(11) << std::setprecision(6) << zz() << " " << 251 std::setw(11) << std::setprecision(6) 255 std::setw(11) << std::setprecision(6) << zt() << ")\n" 252 << " ( " << 256 << " ( " << 253 std::setw(11) << std::setprecision(6) 257 std::setw(11) << std::setprecision(6) << tx() << " " << 254 std::setw(11) << std::setprecision(6) 258 std::setw(11) << std::setprecision(6) << ty() << " " << 255 std::setw(11) << std::setprecision(6) 259 std::setw(11) << std::setprecision(6) << tz() << " " << 256 std::setw(11) << std::setprecision(6) 260 std::setw(11) << std::setprecision(6) << tt() << ") ]\n"; 257 return os; 261 return os; 258 } 262 } 259 263 260 HepLorentzRotation operator* ( const HepRotati 264 HepLorentzRotation operator* ( const HepRotation & r, 261 const HepLorent 265 const HepLorentzRotation & lt) { 262 r.rep4x4(); 266 r.rep4x4(); 263 lt.rep4x4(); 267 lt.rep4x4(); 264 return HepLorentzRotation( HepRep4x4( 268 return HepLorentzRotation( HepRep4x4( 265 r.xx()*lt.xx() + r.xy()*lt.yx() + r.x 269 r.xx()*lt.xx() + r.xy()*lt.yx() + r.xz()*lt.zx() + r.xt()*lt.tx(), 266 r.xx()*lt.xy() + r.xy()*lt.yy() + r.xz()*lt 270 r.xx()*lt.xy() + r.xy()*lt.yy() + r.xz()*lt.zy() + r.xt()*lt.ty(), 267 r.xx()*lt.xz() + r.xy()*lt.yz() + r.xz()*lt 271 r.xx()*lt.xz() + r.xy()*lt.yz() + r.xz()*lt.zz() + r.xt()*lt.tz(), 268 r.xx()*lt.xt() + r.xy()*lt.yt() + r.xz()*lt 272 r.xx()*lt.xt() + r.xy()*lt.yt() + r.xz()*lt.zt() + r.xt()*lt.tt(), 269 273 270 r.yx()*lt.xx() + r.yy()*lt.yx() + r.y 274 r.yx()*lt.xx() + r.yy()*lt.yx() + r.yz()*lt.zx() + r.yt()*lt.tx(), 271 r.yx()*lt.xy() + r.yy()*lt.yy() + r.y 275 r.yx()*lt.xy() + r.yy()*lt.yy() + r.yz()*lt.zy() + r.yt()*lt.ty(), 272 r.yx()*lt.xz() + r.yy()*lt.yz() + r.y 276 r.yx()*lt.xz() + r.yy()*lt.yz() + r.yz()*lt.zz() + r.yt()*lt.tz(), 273 r.yx()*lt.xt() + r.yy()*lt.yt() + r.y 277 r.yx()*lt.xt() + r.yy()*lt.yt() + r.yz()*lt.zt() + r.yt()*lt.tt(), 274 278 275 r.zx()*lt.xx() + r.zy()*lt.yx() + r.z 279 r.zx()*lt.xx() + r.zy()*lt.yx() + r.zz()*lt.zx() + r.zt()*lt.tx(), 276 r.zx()*lt.xy() + r.zy()*lt.yy() + r.z 280 r.zx()*lt.xy() + r.zy()*lt.yy() + r.zz()*lt.zy() + r.zt()*lt.ty(), 277 r.zx()*lt.xz() + r.zy()*lt.yz() + r.z 281 r.zx()*lt.xz() + r.zy()*lt.yz() + r.zz()*lt.zz() + r.zt()*lt.tz(), 278 r.zx()*lt.xt() + r.zy()*lt.yt() + r.z 282 r.zx()*lt.xt() + r.zy()*lt.yt() + r.zz()*lt.zt() + r.zt()*lt.tt(), 279 283 280 r.tx()*lt.xx() + r.ty()*lt.yx() + r.t 284 r.tx()*lt.xx() + r.ty()*lt.yx() + r.tz()*lt.zx() + r.tt()*lt.tx(), 281 r.tx()*lt.xy() + r.ty()*lt.yy() + r.t 285 r.tx()*lt.xy() + r.ty()*lt.yy() + r.tz()*lt.zy() + r.tt()*lt.ty(), 282 r.tx()*lt.xz() + r.ty()*lt.yz() + r.t 286 r.tx()*lt.xz() + r.ty()*lt.yz() + r.tz()*lt.zz() + r.tt()*lt.tz(), 283 r.tx()*lt.xt() + r.ty()*lt.yt() + r.t 287 r.tx()*lt.xt() + r.ty()*lt.yt() + r.tz()*lt.zt() + r.tt()*lt.tt() ) ); 284 } 288 } 285 289 286 290 287 const HepLorentzRotation HepLorentzRotation::I 291 const HepLorentzRotation HepLorentzRotation::IDENTITY; 288 292 289 } // namespace CLHEP 293 } // namespace CLHEP 290 294