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