00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include "TMatrixTCramerInv.h"
00036
00037 #if !defined(R__ALPHA) && !defined(R__SOLARIS) && !defined(R__ACC) && !defined(R__FBSD)
00038 NamespaceImp(TMatrixTCramerInv);
00039 #endif
00040
00041
00042 template<class Element>
00043 Bool_t TMatrixTCramerInv::Inv2x2(TMatrixT<Element> &m,Double_t *determ)
00044 {
00045 if (m.GetNrows() != 2 || m.GetNcols() != 2 || m.GetRowLwb() != m.GetColLwb()) {
00046 Error("Inv2x2","matrix should be square 2x2");
00047 return kFALSE;
00048 }
00049
00050 Element *pM = m.GetMatrixArray();
00051
00052 const Double_t det = pM[0] * pM[3] - pM[2] * pM[1];
00053
00054 if (determ)
00055 *determ = det;
00056
00057 const Double_t s = 1./det;
00058 if ( det == 0 ) {
00059 Error("Inv2x2","matrix is singular");
00060 return kFALSE;
00061 }
00062
00063 const Double_t tmp = s*pM[3];
00064 pM[1] *= -s;
00065 pM[2] *= -s;
00066 pM[3] = s*pM[0];
00067 pM[0] = tmp;
00068
00069 return kTRUE;
00070 }
00071
00072
00073 template<class Element>
00074 Bool_t TMatrixTCramerInv::Inv3x3(TMatrixT<Element> &m,Double_t *determ)
00075 {
00076 if (m.GetNrows() != 3 || m.GetNcols() != 3 || m.GetRowLwb() != m.GetColLwb()) {
00077 Error("Inv3x3","matrix should be square 3x3");
00078 return kFALSE;
00079 }
00080
00081 Element *pM = m.GetMatrixArray();
00082
00083 const Double_t c00 = pM[4] * pM[8] - pM[5] * pM[7];
00084 const Double_t c01 = pM[5] * pM[6] - pM[3] * pM[8];
00085 const Double_t c02 = pM[3] * pM[7] - pM[4] * pM[6];
00086 const Double_t c10 = pM[7] * pM[2] - pM[8] * pM[1];
00087 const Double_t c11 = pM[8] * pM[0] - pM[6] * pM[2];
00088 const Double_t c12 = pM[6] * pM[1] - pM[7] * pM[0];
00089 const Double_t c20 = pM[1] * pM[5] - pM[2] * pM[4];
00090 const Double_t c21 = pM[2] * pM[3] - pM[0] * pM[5];
00091 const Double_t c22 = pM[0] * pM[4] - pM[1] * pM[3];
00092
00093 const Double_t t0 = TMath::Abs(pM[0]);
00094 const Double_t t1 = TMath::Abs(pM[3]);
00095 const Double_t t2 = TMath::Abs(pM[6]);
00096 Double_t det;
00097 Double_t tmp;
00098 if (t0 >= t1) {
00099 if (t2 >= t0) {
00100 tmp = pM[6];
00101 det = c12*c01-c11*c02;
00102 } else {
00103 tmp = pM[0];
00104 det = c11*c22-c12*c21;
00105 }
00106 } else if (t2 >= t1) {
00107 tmp = pM[6];
00108 det = c12*c01-c11*c02;
00109 } else {
00110 tmp = pM[3];
00111 det = c02*c21-c01*c22;
00112 }
00113
00114 if ( det == 0 || tmp == 0) {
00115 Error("Inv3x3","matrix is singular");
00116 return kFALSE;
00117 }
00118
00119 const Double_t s = tmp/det;
00120 if (determ)
00121 *determ = 1./s;
00122
00123 pM[0] = s*c00;
00124 pM[1] = s*c10;
00125 pM[2] = s*c20;
00126 pM[3] = s*c01;
00127 pM[4] = s*c11;
00128 pM[5] = s*c21;
00129 pM[6] = s*c02;
00130 pM[7] = s*c12;
00131 pM[8] = s*c22;
00132
00133 return kTRUE;
00134 }
00135
00136
00137
00138 #define GF00 0
00139 #define GF01 1
00140 #define GF02 2
00141 #define GF03 3
00142
00143 #define GF10 4
00144 #define GF11 5
00145 #define GF12 6
00146 #define GF13 7
00147
00148 #define GF20 8
00149 #define GF21 9
00150 #define GF22 10
00151 #define GF23 11
00152
00153 #define GF30 12
00154 #define GF31 13
00155 #define GF32 14
00156 #define GF33 15
00157
00158
00159 template<class Element>
00160 Bool_t TMatrixTCramerInv::Inv4x4(TMatrixT<Element> &m,Double_t *determ)
00161 {
00162 if (m.GetNrows() != 4 || m.GetNcols() != 4 || m.GetRowLwb() != m.GetColLwb()) {
00163 Error("Inv4x4","matrix should be square 4x4");
00164 return kFALSE;
00165 }
00166
00167 Element *pM = m.GetMatrixArray();
00168
00169
00170
00171 const Double_t det2_12_01 = pM[GF10]*pM[GF21] - pM[GF11]*pM[GF20];
00172 const Double_t det2_12_02 = pM[GF10]*pM[GF22] - pM[GF12]*pM[GF20];
00173 const Double_t det2_12_03 = pM[GF10]*pM[GF23] - pM[GF13]*pM[GF20];
00174 const Double_t det2_12_13 = pM[GF11]*pM[GF23] - pM[GF13]*pM[GF21];
00175 const Double_t det2_12_23 = pM[GF12]*pM[GF23] - pM[GF13]*pM[GF22];
00176 const Double_t det2_12_12 = pM[GF11]*pM[GF22] - pM[GF12]*pM[GF21];
00177 const Double_t det2_13_01 = pM[GF10]*pM[GF31] - pM[GF11]*pM[GF30];
00178 const Double_t det2_13_02 = pM[GF10]*pM[GF32] - pM[GF12]*pM[GF30];
00179 const Double_t det2_13_03 = pM[GF10]*pM[GF33] - pM[GF13]*pM[GF30];
00180 const Double_t det2_13_12 = pM[GF11]*pM[GF32] - pM[GF12]*pM[GF31];
00181 const Double_t det2_13_13 = pM[GF11]*pM[GF33] - pM[GF13]*pM[GF31];
00182 const Double_t det2_13_23 = pM[GF12]*pM[GF33] - pM[GF13]*pM[GF32];
00183 const Double_t det2_23_01 = pM[GF20]*pM[GF31] - pM[GF21]*pM[GF30];
00184 const Double_t det2_23_02 = pM[GF20]*pM[GF32] - pM[GF22]*pM[GF30];
00185 const Double_t det2_23_03 = pM[GF20]*pM[GF33] - pM[GF23]*pM[GF30];
00186 const Double_t det2_23_12 = pM[GF21]*pM[GF32] - pM[GF22]*pM[GF31];
00187 const Double_t det2_23_13 = pM[GF21]*pM[GF33] - pM[GF23]*pM[GF31];
00188 const Double_t det2_23_23 = pM[GF22]*pM[GF33] - pM[GF23]*pM[GF32];
00189
00190
00191
00192 const Double_t det3_012_012 = pM[GF00]*det2_12_12 - pM[GF01]*det2_12_02
00193 + pM[GF02]*det2_12_01;
00194 const Double_t det3_012_013 = pM[GF00]*det2_12_13 - pM[GF01]*det2_12_03
00195 + pM[GF03]*det2_12_01;
00196 const Double_t det3_012_023 = pM[GF00]*det2_12_23 - pM[GF02]*det2_12_03
00197 + pM[GF03]*det2_12_02;
00198 const Double_t det3_012_123 = pM[GF01]*det2_12_23 - pM[GF02]*det2_12_13
00199 + pM[GF03]*det2_12_12;
00200 const Double_t det3_013_012 = pM[GF00]*det2_13_12 - pM[GF01]*det2_13_02
00201 + pM[GF02]*det2_13_01;
00202 const Double_t det3_013_013 = pM[GF00]*det2_13_13 - pM[GF01]*det2_13_03
00203 + pM[GF03]*det2_13_01;
00204 const Double_t det3_013_023 = pM[GF00]*det2_13_23 - pM[GF02]*det2_13_03
00205 + pM[GF03]*det2_13_02;
00206 const Double_t det3_013_123 = pM[GF01]*det2_13_23 - pM[GF02]*det2_13_13
00207 + pM[GF03]*det2_13_12;
00208 const Double_t det3_023_012 = pM[GF00]*det2_23_12 - pM[GF01]*det2_23_02
00209 + pM[GF02]*det2_23_01;
00210 const Double_t det3_023_013 = pM[GF00]*det2_23_13 - pM[GF01]*det2_23_03
00211 + pM[GF03]*det2_23_01;
00212 const Double_t det3_023_023 = pM[GF00]*det2_23_23 - pM[GF02]*det2_23_03
00213 + pM[GF03]*det2_23_02;
00214 const Double_t det3_023_123 = pM[GF01]*det2_23_23 - pM[GF02]*det2_23_13
00215 + pM[GF03]*det2_23_12;
00216 const Double_t det3_123_012 = pM[GF10]*det2_23_12 - pM[GF11]*det2_23_02
00217 + pM[GF12]*det2_23_01;
00218 const Double_t det3_123_013 = pM[GF10]*det2_23_13 - pM[GF11]*det2_23_03
00219 + pM[GF13]*det2_23_01;
00220 const Double_t det3_123_023 = pM[GF10]*det2_23_23 - pM[GF12]*det2_23_03
00221 + pM[GF13]*det2_23_02;
00222 const Double_t det3_123_123 = pM[GF11]*det2_23_23 - pM[GF12]*det2_23_13
00223 + pM[GF13]*det2_23_12;
00224
00225
00226
00227 const Double_t det = pM[GF00]*det3_123_123 - pM[GF01]*det3_123_023
00228 + pM[GF02]*det3_123_013 - pM[GF03]*det3_123_012;
00229 if (determ)
00230 *determ = det;
00231
00232 if ( det == 0 ) {
00233 Error("Inv4x4","matrix is singular");
00234 return kFALSE;
00235 }
00236
00237 const Double_t oneOverDet = 1.0/det;
00238 const Double_t mn1OverDet = - oneOverDet;
00239
00240 pM[GF00] = det3_123_123 * oneOverDet;
00241 pM[GF01] = det3_023_123 * mn1OverDet;
00242 pM[GF02] = det3_013_123 * oneOverDet;
00243 pM[GF03] = det3_012_123 * mn1OverDet;
00244
00245 pM[GF10] = det3_123_023 * mn1OverDet;
00246 pM[GF11] = det3_023_023 * oneOverDet;
00247 pM[GF12] = det3_013_023 * mn1OverDet;
00248 pM[GF13] = det3_012_023 * oneOverDet;
00249
00250 pM[GF20] = det3_123_013 * oneOverDet;
00251 pM[GF21] = det3_023_013 * mn1OverDet;
00252 pM[GF22] = det3_013_013 * oneOverDet;
00253 pM[GF23] = det3_012_013 * mn1OverDet;
00254
00255 pM[GF30] = det3_123_012 * mn1OverDet;
00256 pM[GF31] = det3_023_012 * oneOverDet;
00257 pM[GF32] = det3_013_012 * mn1OverDet;
00258 pM[GF33] = det3_012_012 * oneOverDet;
00259
00260 return kTRUE;
00261 }
00262
00263
00264
00265 #define GM00 0
00266 #define GM01 1
00267 #define GM02 2
00268 #define GM03 3
00269 #define GM04 4
00270
00271 #define GM10 5
00272 #define GM11 6
00273 #define GM12 7
00274 #define GM13 8
00275 #define GM14 9
00276
00277 #define GM20 10
00278 #define GM21 11
00279 #define GM22 12
00280 #define GM23 13
00281 #define GM24 14
00282
00283 #define GM30 15
00284 #define GM31 16
00285 #define GM32 17
00286 #define GM33 18
00287 #define GM34 19
00288
00289 #define GM40 20
00290 #define GM41 21
00291 #define GM42 22
00292 #define GM43 23
00293 #define GM44 24
00294
00295
00296 template<class Element>
00297 Bool_t TMatrixTCramerInv::Inv5x5(TMatrixT<Element> &m,Double_t *determ)
00298 {
00299 if (m.GetNrows() != 5 || m.GetNcols() != 5 || m.GetRowLwb() != m.GetColLwb()) {
00300 Error("Inv5x5","matrix should be square 5x5");
00301 return kFALSE;
00302 }
00303
00304 Element *pM = m.GetMatrixArray();
00305
00306
00307
00308 const Double_t det2_23_01 = pM[GM20]*pM[GM31] - pM[GM21]*pM[GM30];
00309 const Double_t det2_23_02 = pM[GM20]*pM[GM32] - pM[GM22]*pM[GM30];
00310 const Double_t det2_23_03 = pM[GM20]*pM[GM33] - pM[GM23]*pM[GM30];
00311 const Double_t det2_23_04 = pM[GM20]*pM[GM34] - pM[GM24]*pM[GM30];
00312 const Double_t det2_23_12 = pM[GM21]*pM[GM32] - pM[GM22]*pM[GM31];
00313 const Double_t det2_23_13 = pM[GM21]*pM[GM33] - pM[GM23]*pM[GM31];
00314 const Double_t det2_23_14 = pM[GM21]*pM[GM34] - pM[GM24]*pM[GM31];
00315 const Double_t det2_23_23 = pM[GM22]*pM[GM33] - pM[GM23]*pM[GM32];
00316 const Double_t det2_23_24 = pM[GM22]*pM[GM34] - pM[GM24]*pM[GM32];
00317 const Double_t det2_23_34 = pM[GM23]*pM[GM34] - pM[GM24]*pM[GM33];
00318 const Double_t det2_24_01 = pM[GM20]*pM[GM41] - pM[GM21]*pM[GM40];
00319 const Double_t det2_24_02 = pM[GM20]*pM[GM42] - pM[GM22]*pM[GM40];
00320 const Double_t det2_24_03 = pM[GM20]*pM[GM43] - pM[GM23]*pM[GM40];
00321 const Double_t det2_24_04 = pM[GM20]*pM[GM44] - pM[GM24]*pM[GM40];
00322 const Double_t det2_24_12 = pM[GM21]*pM[GM42] - pM[GM22]*pM[GM41];
00323 const Double_t det2_24_13 = pM[GM21]*pM[GM43] - pM[GM23]*pM[GM41];
00324 const Double_t det2_24_14 = pM[GM21]*pM[GM44] - pM[GM24]*pM[GM41];
00325 const Double_t det2_24_23 = pM[GM22]*pM[GM43] - pM[GM23]*pM[GM42];
00326 const Double_t det2_24_24 = pM[GM22]*pM[GM44] - pM[GM24]*pM[GM42];
00327 const Double_t det2_24_34 = pM[GM23]*pM[GM44] - pM[GM24]*pM[GM43];
00328 const Double_t det2_34_01 = pM[GM30]*pM[GM41] - pM[GM31]*pM[GM40];
00329 const Double_t det2_34_02 = pM[GM30]*pM[GM42] - pM[GM32]*pM[GM40];
00330 const Double_t det2_34_03 = pM[GM30]*pM[GM43] - pM[GM33]*pM[GM40];
00331 const Double_t det2_34_04 = pM[GM30]*pM[GM44] - pM[GM34]*pM[GM40];
00332 const Double_t det2_34_12 = pM[GM31]*pM[GM42] - pM[GM32]*pM[GM41];
00333 const Double_t det2_34_13 = pM[GM31]*pM[GM43] - pM[GM33]*pM[GM41];
00334 const Double_t det2_34_14 = pM[GM31]*pM[GM44] - pM[GM34]*pM[GM41];
00335 const Double_t det2_34_23 = pM[GM32]*pM[GM43] - pM[GM33]*pM[GM42];
00336 const Double_t det2_34_24 = pM[GM32]*pM[GM44] - pM[GM34]*pM[GM42];
00337 const Double_t det2_34_34 = pM[GM33]*pM[GM44] - pM[GM34]*pM[GM43];
00338
00339
00340
00341 const Double_t det3_123_012 = pM[GM10]*det2_23_12 - pM[GM11]*det2_23_02 + pM[GM12]*det2_23_01;
00342 const Double_t det3_123_013 = pM[GM10]*det2_23_13 - pM[GM11]*det2_23_03 + pM[GM13]*det2_23_01;
00343 const Double_t det3_123_014 = pM[GM10]*det2_23_14 - pM[GM11]*det2_23_04 + pM[GM14]*det2_23_01;
00344 const Double_t det3_123_023 = pM[GM10]*det2_23_23 - pM[GM12]*det2_23_03 + pM[GM13]*det2_23_02;
00345 const Double_t det3_123_024 = pM[GM10]*det2_23_24 - pM[GM12]*det2_23_04 + pM[GM14]*det2_23_02;
00346 const Double_t det3_123_034 = pM[GM10]*det2_23_34 - pM[GM13]*det2_23_04 + pM[GM14]*det2_23_03;
00347 const Double_t det3_123_123 = pM[GM11]*det2_23_23 - pM[GM12]*det2_23_13 + pM[GM13]*det2_23_12;
00348 const Double_t det3_123_124 = pM[GM11]*det2_23_24 - pM[GM12]*det2_23_14 + pM[GM14]*det2_23_12;
00349 const Double_t det3_123_134 = pM[GM11]*det2_23_34 - pM[GM13]*det2_23_14 + pM[GM14]*det2_23_13;
00350 const Double_t det3_123_234 = pM[GM12]*det2_23_34 - pM[GM13]*det2_23_24 + pM[GM14]*det2_23_23;
00351 const Double_t det3_124_012 = pM[GM10]*det2_24_12 - pM[GM11]*det2_24_02 + pM[GM12]*det2_24_01;
00352 const Double_t det3_124_013 = pM[GM10]*det2_24_13 - pM[GM11]*det2_24_03 + pM[GM13]*det2_24_01;
00353 const Double_t det3_124_014 = pM[GM10]*det2_24_14 - pM[GM11]*det2_24_04 + pM[GM14]*det2_24_01;
00354 const Double_t det3_124_023 = pM[GM10]*det2_24_23 - pM[GM12]*det2_24_03 + pM[GM13]*det2_24_02;
00355 const Double_t det3_124_024 = pM[GM10]*det2_24_24 - pM[GM12]*det2_24_04 + pM[GM14]*det2_24_02;
00356 const Double_t det3_124_034 = pM[GM10]*det2_24_34 - pM[GM13]*det2_24_04 + pM[GM14]*det2_24_03;
00357 const Double_t det3_124_123 = pM[GM11]*det2_24_23 - pM[GM12]*det2_24_13 + pM[GM13]*det2_24_12;
00358 const Double_t det3_124_124 = pM[GM11]*det2_24_24 - pM[GM12]*det2_24_14 + pM[GM14]*det2_24_12;
00359 const Double_t det3_124_134 = pM[GM11]*det2_24_34 - pM[GM13]*det2_24_14 + pM[GM14]*det2_24_13;
00360 const Double_t det3_124_234 = pM[GM12]*det2_24_34 - pM[GM13]*det2_24_24 + pM[GM14]*det2_24_23;
00361 const Double_t det3_134_012 = pM[GM10]*det2_34_12 - pM[GM11]*det2_34_02 + pM[GM12]*det2_34_01;
00362 const Double_t det3_134_013 = pM[GM10]*det2_34_13 - pM[GM11]*det2_34_03 + pM[GM13]*det2_34_01;
00363 const Double_t det3_134_014 = pM[GM10]*det2_34_14 - pM[GM11]*det2_34_04 + pM[GM14]*det2_34_01;
00364 const Double_t det3_134_023 = pM[GM10]*det2_34_23 - pM[GM12]*det2_34_03 + pM[GM13]*det2_34_02;
00365 const Double_t det3_134_024 = pM[GM10]*det2_34_24 - pM[GM12]*det2_34_04 + pM[GM14]*det2_34_02;
00366 const Double_t det3_134_034 = pM[GM10]*det2_34_34 - pM[GM13]*det2_34_04 + pM[GM14]*det2_34_03;
00367 const Double_t det3_134_123 = pM[GM11]*det2_34_23 - pM[GM12]*det2_34_13 + pM[GM13]*det2_34_12;
00368 const Double_t det3_134_124 = pM[GM11]*det2_34_24 - pM[GM12]*det2_34_14 + pM[GM14]*det2_34_12;
00369 const Double_t det3_134_134 = pM[GM11]*det2_34_34 - pM[GM13]*det2_34_14 + pM[GM14]*det2_34_13;
00370 const Double_t det3_134_234 = pM[GM12]*det2_34_34 - pM[GM13]*det2_34_24 + pM[GM14]*det2_34_23;
00371 const Double_t det3_234_012 = pM[GM20]*det2_34_12 - pM[GM21]*det2_34_02 + pM[GM22]*det2_34_01;
00372 const Double_t det3_234_013 = pM[GM20]*det2_34_13 - pM[GM21]*det2_34_03 + pM[GM23]*det2_34_01;
00373 const Double_t det3_234_014 = pM[GM20]*det2_34_14 - pM[GM21]*det2_34_04 + pM[GM24]*det2_34_01;
00374 const Double_t det3_234_023 = pM[GM20]*det2_34_23 - pM[GM22]*det2_34_03 + pM[GM23]*det2_34_02;
00375 const Double_t det3_234_024 = pM[GM20]*det2_34_24 - pM[GM22]*det2_34_04 + pM[GM24]*det2_34_02;
00376 const Double_t det3_234_034 = pM[GM20]*det2_34_34 - pM[GM23]*det2_34_04 + pM[GM24]*det2_34_03;
00377 const Double_t det3_234_123 = pM[GM21]*det2_34_23 - pM[GM22]*det2_34_13 + pM[GM23]*det2_34_12;
00378 const Double_t det3_234_124 = pM[GM21]*det2_34_24 - pM[GM22]*det2_34_14 + pM[GM24]*det2_34_12;
00379 const Double_t det3_234_134 = pM[GM21]*det2_34_34 - pM[GM23]*det2_34_14 + pM[GM24]*det2_34_13;
00380 const Double_t det3_234_234 = pM[GM22]*det2_34_34 - pM[GM23]*det2_34_24 + pM[GM24]*det2_34_23;
00381
00382
00383
00384 const Double_t det4_0123_0123 = pM[GM00]*det3_123_123 - pM[GM01]*det3_123_023
00385 + pM[GM02]*det3_123_013 - pM[GM03]*det3_123_012;
00386 const Double_t det4_0123_0124 = pM[GM00]*det3_123_124 - pM[GM01]*det3_123_024
00387 + pM[GM02]*det3_123_014 - pM[GM04]*det3_123_012;
00388 const Double_t det4_0123_0134 = pM[GM00]*det3_123_134 - pM[GM01]*det3_123_034
00389 + pM[GM03]*det3_123_014 - pM[GM04]*det3_123_013;
00390 const Double_t det4_0123_0234 = pM[GM00]*det3_123_234 - pM[GM02]*det3_123_034
00391 + pM[GM03]*det3_123_024 - pM[GM04]*det3_123_023;
00392 const Double_t det4_0123_1234 = pM[GM01]*det3_123_234 - pM[GM02]*det3_123_134
00393 + pM[GM03]*det3_123_124 - pM[GM04]*det3_123_123;
00394 const Double_t det4_0124_0123 = pM[GM00]*det3_124_123 - pM[GM01]*det3_124_023
00395 + pM[GM02]*det3_124_013 - pM[GM03]*det3_124_012;
00396 const Double_t det4_0124_0124 = pM[GM00]*det3_124_124 - pM[GM01]*det3_124_024
00397 + pM[GM02]*det3_124_014 - pM[GM04]*det3_124_012;
00398 const Double_t det4_0124_0134 = pM[GM00]*det3_124_134 - pM[GM01]*det3_124_034
00399 + pM[GM03]*det3_124_014 - pM[GM04]*det3_124_013;
00400 const Double_t det4_0124_0234 = pM[GM00]*det3_124_234 - pM[GM02]*det3_124_034
00401 + pM[GM03]*det3_124_024 - pM[GM04]*det3_124_023;
00402 const Double_t det4_0124_1234 = pM[GM01]*det3_124_234 - pM[GM02]*det3_124_134
00403 + pM[GM03]*det3_124_124 - pM[GM04]*det3_124_123;
00404 const Double_t det4_0134_0123 = pM[GM00]*det3_134_123 - pM[GM01]*det3_134_023
00405 + pM[GM02]*det3_134_013 - pM[GM03]*det3_134_012;
00406 const Double_t det4_0134_0124 = pM[GM00]*det3_134_124 - pM[GM01]*det3_134_024
00407 + pM[GM02]*det3_134_014 - pM[GM04]*det3_134_012;
00408 const Double_t det4_0134_0134 = pM[GM00]*det3_134_134 - pM[GM01]*det3_134_034
00409 + pM[GM03]*det3_134_014 - pM[GM04]*det3_134_013;
00410 const Double_t det4_0134_0234 = pM[GM00]*det3_134_234 - pM[GM02]*det3_134_034
00411 + pM[GM03]*det3_134_024 - pM[GM04]*det3_134_023;
00412 const Double_t det4_0134_1234 = pM[GM01]*det3_134_234 - pM[GM02]*det3_134_134
00413 + pM[GM03]*det3_134_124 - pM[GM04]*det3_134_123;
00414 const Double_t det4_0234_0123 = pM[GM00]*det3_234_123 - pM[GM01]*det3_234_023
00415 + pM[GM02]*det3_234_013 - pM[GM03]*det3_234_012;
00416 const Double_t det4_0234_0124 = pM[GM00]*det3_234_124 - pM[GM01]*det3_234_024
00417 + pM[GM02]*det3_234_014 - pM[GM04]*det3_234_012;
00418 const Double_t det4_0234_0134 = pM[GM00]*det3_234_134 - pM[GM01]*det3_234_034
00419 + pM[GM03]*det3_234_014 - pM[GM04]*det3_234_013;
00420 const Double_t det4_0234_0234 = pM[GM00]*det3_234_234 - pM[GM02]*det3_234_034
00421 + pM[GM03]*det3_234_024 - pM[GM04]*det3_234_023;
00422 const Double_t det4_0234_1234 = pM[GM01]*det3_234_234 - pM[GM02]*det3_234_134
00423 + pM[GM03]*det3_234_124 - pM[GM04]*det3_234_123;
00424 const Double_t det4_1234_0123 = pM[GM10]*det3_234_123 - pM[GM11]*det3_234_023
00425 + pM[GM12]*det3_234_013 - pM[GM13]*det3_234_012;
00426 const Double_t det4_1234_0124 = pM[GM10]*det3_234_124 - pM[GM11]*det3_234_024
00427 + pM[GM12]*det3_234_014 - pM[GM14]*det3_234_012;
00428 const Double_t det4_1234_0134 = pM[GM10]*det3_234_134 - pM[GM11]*det3_234_034
00429 + pM[GM13]*det3_234_014 - pM[GM14]*det3_234_013;
00430 const Double_t det4_1234_0234 = pM[GM10]*det3_234_234 - pM[GM12]*det3_234_034
00431 + pM[GM13]*det3_234_024 - pM[GM14]*det3_234_023;
00432 const Double_t det4_1234_1234 = pM[GM11]*det3_234_234 - pM[GM12]*det3_234_134
00433 + pM[GM13]*det3_234_124 - pM[GM14]*det3_234_123;
00434
00435
00436
00437 const Double_t det = pM[GM00]*det4_1234_1234 - pM[GM01]*det4_1234_0234 + pM[GM02]*det4_1234_0134
00438 - pM[GM03]*det4_1234_0124 + pM[GM04]*det4_1234_0123;
00439 if (determ)
00440 *determ = det;
00441
00442 if ( det == 0 ) {
00443 Error("Inv5x5","matrix is singular");
00444 return kFALSE;
00445 }
00446
00447 const Double_t oneOverDet = 1.0/det;
00448 const Double_t mn1OverDet = - oneOverDet;
00449
00450 pM[GM00] = det4_1234_1234 * oneOverDet;
00451 pM[GM01] = det4_0234_1234 * mn1OverDet;
00452 pM[GM02] = det4_0134_1234 * oneOverDet;
00453 pM[GM03] = det4_0124_1234 * mn1OverDet;
00454 pM[GM04] = det4_0123_1234 * oneOverDet;
00455
00456 pM[GM10] = det4_1234_0234 * mn1OverDet;
00457 pM[GM11] = det4_0234_0234 * oneOverDet;
00458 pM[GM12] = det4_0134_0234 * mn1OverDet;
00459 pM[GM13] = det4_0124_0234 * oneOverDet;
00460 pM[GM14] = det4_0123_0234 * mn1OverDet;
00461
00462 pM[GM20] = det4_1234_0134 * oneOverDet;
00463 pM[GM21] = det4_0234_0134 * mn1OverDet;
00464 pM[GM22] = det4_0134_0134 * oneOverDet;
00465 pM[GM23] = det4_0124_0134 * mn1OverDet;
00466 pM[GM24] = det4_0123_0134 * oneOverDet;
00467
00468 pM[GM30] = det4_1234_0124 * mn1OverDet;
00469 pM[GM31] = det4_0234_0124 * oneOverDet;
00470 pM[GM32] = det4_0134_0124 * mn1OverDet;
00471 pM[GM33] = det4_0124_0124 * oneOverDet;
00472 pM[GM34] = det4_0123_0124 * mn1OverDet;
00473
00474 pM[GM40] = det4_1234_0123 * oneOverDet;
00475 pM[GM41] = det4_0234_0123 * mn1OverDet;
00476 pM[GM42] = det4_0134_0123 * oneOverDet;
00477 pM[GM43] = det4_0124_0123 * mn1OverDet;
00478 pM[GM44] = det4_0123_0123 * oneOverDet;
00479
00480 return kTRUE;
00481 }
00482
00483
00484
00485 #define GA00 0
00486 #define GA01 1
00487 #define GA02 2
00488 #define GA03 3
00489 #define GA04 4
00490 #define GA05 5
00491
00492 #define GA10 6
00493 #define GA11 7
00494 #define GA12 8
00495 #define GA13 9
00496 #define GA14 10
00497 #define GA15 11
00498
00499 #define GA20 12
00500 #define GA21 13
00501 #define GA22 14
00502 #define GA23 15
00503 #define GA24 16
00504 #define GA25 17
00505
00506 #define GA30 18
00507 #define GA31 19
00508 #define GA32 20
00509 #define GA33 21
00510 #define GA34 22
00511 #define GA35 23
00512
00513 #define GA40 24
00514 #define GA41 25
00515 #define GA42 26
00516 #define GA43 27
00517 #define GA44 28
00518 #define GA45 29
00519
00520 #define GA50 30
00521 #define GA51 31
00522 #define GA52 32
00523 #define GA53 33
00524 #define GA54 34
00525 #define GA55 35
00526
00527
00528 template<class Element>
00529 Bool_t TMatrixTCramerInv::Inv6x6(TMatrixT<Element> &m,Double_t *determ)
00530 {
00531 if (m.GetNrows() != 6 || m.GetNcols() != 6 || m.GetRowLwb() != m.GetColLwb()) {
00532 Error("Inv6x6","matrix should be square 6x6");
00533 return kFALSE;
00534 }
00535
00536 Element *pM = m.GetMatrixArray();
00537
00538
00539
00540 const Double_t det2_34_01 = pM[GA30]*pM[GA41] - pM[GA31]*pM[GA40];
00541 const Double_t det2_34_02 = pM[GA30]*pM[GA42] - pM[GA32]*pM[GA40];
00542 const Double_t det2_34_03 = pM[GA30]*pM[GA43] - pM[GA33]*pM[GA40];
00543 const Double_t det2_34_04 = pM[GA30]*pM[GA44] - pM[GA34]*pM[GA40];
00544 const Double_t det2_34_05 = pM[GA30]*pM[GA45] - pM[GA35]*pM[GA40];
00545 const Double_t det2_34_12 = pM[GA31]*pM[GA42] - pM[GA32]*pM[GA41];
00546 const Double_t det2_34_13 = pM[GA31]*pM[GA43] - pM[GA33]*pM[GA41];
00547 const Double_t det2_34_14 = pM[GA31]*pM[GA44] - pM[GA34]*pM[GA41];
00548 const Double_t det2_34_15 = pM[GA31]*pM[GA45] - pM[GA35]*pM[GA41];
00549 const Double_t det2_34_23 = pM[GA32]*pM[GA43] - pM[GA33]*pM[GA42];
00550 const Double_t det2_34_24 = pM[GA32]*pM[GA44] - pM[GA34]*pM[GA42];
00551 const Double_t det2_34_25 = pM[GA32]*pM[GA45] - pM[GA35]*pM[GA42];
00552 const Double_t det2_34_34 = pM[GA33]*pM[GA44] - pM[GA34]*pM[GA43];
00553 const Double_t det2_34_35 = pM[GA33]*pM[GA45] - pM[GA35]*pM[GA43];
00554 const Double_t det2_34_45 = pM[GA34]*pM[GA45] - pM[GA35]*pM[GA44];
00555 const Double_t det2_35_01 = pM[GA30]*pM[GA51] - pM[GA31]*pM[GA50];
00556 const Double_t det2_35_02 = pM[GA30]*pM[GA52] - pM[GA32]*pM[GA50];
00557 const Double_t det2_35_03 = pM[GA30]*pM[GA53] - pM[GA33]*pM[GA50];
00558 const Double_t det2_35_04 = pM[GA30]*pM[GA54] - pM[GA34]*pM[GA50];
00559 const Double_t det2_35_05 = pM[GA30]*pM[GA55] - pM[GA35]*pM[GA50];
00560 const Double_t det2_35_12 = pM[GA31]*pM[GA52] - pM[GA32]*pM[GA51];
00561 const Double_t det2_35_13 = pM[GA31]*pM[GA53] - pM[GA33]*pM[GA51];
00562 const Double_t det2_35_14 = pM[GA31]*pM[GA54] - pM[GA34]*pM[GA51];
00563 const Double_t det2_35_15 = pM[GA31]*pM[GA55] - pM[GA35]*pM[GA51];
00564 const Double_t det2_35_23 = pM[GA32]*pM[GA53] - pM[GA33]*pM[GA52];
00565 const Double_t det2_35_24 = pM[GA32]*pM[GA54] - pM[GA34]*pM[GA52];
00566 const Double_t det2_35_25 = pM[GA32]*pM[GA55] - pM[GA35]*pM[GA52];
00567 const Double_t det2_35_34 = pM[GA33]*pM[GA54] - pM[GA34]*pM[GA53];
00568 const Double_t det2_35_35 = pM[GA33]*pM[GA55] - pM[GA35]*pM[GA53];
00569 const Double_t det2_35_45 = pM[GA34]*pM[GA55] - pM[GA35]*pM[GA54];
00570 const Double_t det2_45_01 = pM[GA40]*pM[GA51] - pM[GA41]*pM[GA50];
00571 const Double_t det2_45_02 = pM[GA40]*pM[GA52] - pM[GA42]*pM[GA50];
00572 const Double_t det2_45_03 = pM[GA40]*pM[GA53] - pM[GA43]*pM[GA50];
00573 const Double_t det2_45_04 = pM[GA40]*pM[GA54] - pM[GA44]*pM[GA50];
00574 const Double_t det2_45_05 = pM[GA40]*pM[GA55] - pM[GA45]*pM[GA50];
00575 const Double_t det2_45_12 = pM[GA41]*pM[GA52] - pM[GA42]*pM[GA51];
00576 const Double_t det2_45_13 = pM[GA41]*pM[GA53] - pM[GA43]*pM[GA51];
00577 const Double_t det2_45_14 = pM[GA41]*pM[GA54] - pM[GA44]*pM[GA51];
00578 const Double_t det2_45_15 = pM[GA41]*pM[GA55] - pM[GA45]*pM[GA51];
00579 const Double_t det2_45_23 = pM[GA42]*pM[GA53] - pM[GA43]*pM[GA52];
00580 const Double_t det2_45_24 = pM[GA42]*pM[GA54] - pM[GA44]*pM[GA52];
00581 const Double_t det2_45_25 = pM[GA42]*pM[GA55] - pM[GA45]*pM[GA52];
00582 const Double_t det2_45_34 = pM[GA43]*pM[GA54] - pM[GA44]*pM[GA53];
00583 const Double_t det2_45_35 = pM[GA43]*pM[GA55] - pM[GA45]*pM[GA53];
00584 const Double_t det2_45_45 = pM[GA44]*pM[GA55] - pM[GA45]*pM[GA54];
00585
00586
00587
00588 const Double_t det3_234_012 = pM[GA20]*det2_34_12 - pM[GA21]*det2_34_02 + pM[GA22]*det2_34_01;
00589 const Double_t det3_234_013 = pM[GA20]*det2_34_13 - pM[GA21]*det2_34_03 + pM[GA23]*det2_34_01;
00590 const Double_t det3_234_014 = pM[GA20]*det2_34_14 - pM[GA21]*det2_34_04 + pM[GA24]*det2_34_01;
00591 const Double_t det3_234_015 = pM[GA20]*det2_34_15 - pM[GA21]*det2_34_05 + pM[GA25]*det2_34_01;
00592 const Double_t det3_234_023 = pM[GA20]*det2_34_23 - pM[GA22]*det2_34_03 + pM[GA23]*det2_34_02;
00593 const Double_t det3_234_024 = pM[GA20]*det2_34_24 - pM[GA22]*det2_34_04 + pM[GA24]*det2_34_02;
00594 const Double_t det3_234_025 = pM[GA20]*det2_34_25 - pM[GA22]*det2_34_05 + pM[GA25]*det2_34_02;
00595 const Double_t det3_234_034 = pM[GA20]*det2_34_34 - pM[GA23]*det2_34_04 + pM[GA24]*det2_34_03;
00596 const Double_t det3_234_035 = pM[GA20]*det2_34_35 - pM[GA23]*det2_34_05 + pM[GA25]*det2_34_03;
00597 const Double_t det3_234_045 = pM[GA20]*det2_34_45 - pM[GA24]*det2_34_05 + pM[GA25]*det2_34_04;
00598 const Double_t det3_234_123 = pM[GA21]*det2_34_23 - pM[GA22]*det2_34_13 + pM[GA23]*det2_34_12;
00599 const Double_t det3_234_124 = pM[GA21]*det2_34_24 - pM[GA22]*det2_34_14 + pM[GA24]*det2_34_12;
00600 const Double_t det3_234_125 = pM[GA21]*det2_34_25 - pM[GA22]*det2_34_15 + pM[GA25]*det2_34_12;
00601 const Double_t det3_234_134 = pM[GA21]*det2_34_34 - pM[GA23]*det2_34_14 + pM[GA24]*det2_34_13;
00602 const Double_t det3_234_135 = pM[GA21]*det2_34_35 - pM[GA23]*det2_34_15 + pM[GA25]*det2_34_13;
00603 const Double_t det3_234_145 = pM[GA21]*det2_34_45 - pM[GA24]*det2_34_15 + pM[GA25]*det2_34_14;
00604 const Double_t det3_234_234 = pM[GA22]*det2_34_34 - pM[GA23]*det2_34_24 + pM[GA24]*det2_34_23;
00605 const Double_t det3_234_235 = pM[GA22]*det2_34_35 - pM[GA23]*det2_34_25 + pM[GA25]*det2_34_23;
00606 const Double_t det3_234_245 = pM[GA22]*det2_34_45 - pM[GA24]*det2_34_25 + pM[GA25]*det2_34_24;
00607 const Double_t det3_234_345 = pM[GA23]*det2_34_45 - pM[GA24]*det2_34_35 + pM[GA25]*det2_34_34;
00608 const Double_t det3_235_012 = pM[GA20]*det2_35_12 - pM[GA21]*det2_35_02 + pM[GA22]*det2_35_01;
00609 const Double_t det3_235_013 = pM[GA20]*det2_35_13 - pM[GA21]*det2_35_03 + pM[GA23]*det2_35_01;
00610 const Double_t det3_235_014 = pM[GA20]*det2_35_14 - pM[GA21]*det2_35_04 + pM[GA24]*det2_35_01;
00611 const Double_t det3_235_015 = pM[GA20]*det2_35_15 - pM[GA21]*det2_35_05 + pM[GA25]*det2_35_01;
00612 const Double_t det3_235_023 = pM[GA20]*det2_35_23 - pM[GA22]*det2_35_03 + pM[GA23]*det2_35_02;
00613 const Double_t det3_235_024 = pM[GA20]*det2_35_24 - pM[GA22]*det2_35_04 + pM[GA24]*det2_35_02;
00614 const Double_t det3_235_025 = pM[GA20]*det2_35_25 - pM[GA22]*det2_35_05 + pM[GA25]*det2_35_02;
00615 const Double_t det3_235_034 = pM[GA20]*det2_35_34 - pM[GA23]*det2_35_04 + pM[GA24]*det2_35_03;
00616 const Double_t det3_235_035 = pM[GA20]*det2_35_35 - pM[GA23]*det2_35_05 + pM[GA25]*det2_35_03;
00617 const Double_t det3_235_045 = pM[GA20]*det2_35_45 - pM[GA24]*det2_35_05 + pM[GA25]*det2_35_04;
00618 const Double_t det3_235_123 = pM[GA21]*det2_35_23 - pM[GA22]*det2_35_13 + pM[GA23]*det2_35_12;
00619 const Double_t det3_235_124 = pM[GA21]*det2_35_24 - pM[GA22]*det2_35_14 + pM[GA24]*det2_35_12;
00620 const Double_t det3_235_125 = pM[GA21]*det2_35_25 - pM[GA22]*det2_35_15 + pM[GA25]*det2_35_12;
00621 const Double_t det3_235_134 = pM[GA21]*det2_35_34 - pM[GA23]*det2_35_14 + pM[GA24]*det2_35_13;
00622 const Double_t det3_235_135 = pM[GA21]*det2_35_35 - pM[GA23]*det2_35_15 + pM[GA25]*det2_35_13;
00623 const Double_t det3_235_145 = pM[GA21]*det2_35_45 - pM[GA24]*det2_35_15 + pM[GA25]*det2_35_14;
00624 const Double_t det3_235_234 = pM[GA22]*det2_35_34 - pM[GA23]*det2_35_24 + pM[GA24]*det2_35_23;
00625 const Double_t det3_235_235 = pM[GA22]*det2_35_35 - pM[GA23]*det2_35_25 + pM[GA25]*det2_35_23;
00626 const Double_t det3_235_245 = pM[GA22]*det2_35_45 - pM[GA24]*det2_35_25 + pM[GA25]*det2_35_24;
00627 const Double_t det3_235_345 = pM[GA23]*det2_35_45 - pM[GA24]*det2_35_35 + pM[GA25]*det2_35_34;
00628 const Double_t det3_245_012 = pM[GA20]*det2_45_12 - pM[GA21]*det2_45_02 + pM[GA22]*det2_45_01;
00629 const Double_t det3_245_013 = pM[GA20]*det2_45_13 - pM[GA21]*det2_45_03 + pM[GA23]*det2_45_01;
00630 const Double_t det3_245_014 = pM[GA20]*det2_45_14 - pM[GA21]*det2_45_04 + pM[GA24]*det2_45_01;
00631 const Double_t det3_245_015 = pM[GA20]*det2_45_15 - pM[GA21]*det2_45_05 + pM[GA25]*det2_45_01;
00632 const Double_t det3_245_023 = pM[GA20]*det2_45_23 - pM[GA22]*det2_45_03 + pM[GA23]*det2_45_02;
00633 const Double_t det3_245_024 = pM[GA20]*det2_45_24 - pM[GA22]*det2_45_04 + pM[GA24]*det2_45_02;
00634 const Double_t det3_245_025 = pM[GA20]*det2_45_25 - pM[GA22]*det2_45_05 + pM[GA25]*det2_45_02;
00635 const Double_t det3_245_034 = pM[GA20]*det2_45_34 - pM[GA23]*det2_45_04 + pM[GA24]*det2_45_03;
00636 const Double_t det3_245_035 = pM[GA20]*det2_45_35 - pM[GA23]*det2_45_05 + pM[GA25]*det2_45_03;
00637 const Double_t det3_245_045 = pM[GA20]*det2_45_45 - pM[GA24]*det2_45_05 + pM[GA25]*det2_45_04;
00638 const Double_t det3_245_123 = pM[GA21]*det2_45_23 - pM[GA22]*det2_45_13 + pM[GA23]*det2_45_12;
00639 const Double_t det3_245_124 = pM[GA21]*det2_45_24 - pM[GA22]*det2_45_14 + pM[GA24]*det2_45_12;
00640 const Double_t det3_245_125 = pM[GA21]*det2_45_25 - pM[GA22]*det2_45_15 + pM[GA25]*det2_45_12;
00641 const Double_t det3_245_134 = pM[GA21]*det2_45_34 - pM[GA23]*det2_45_14 + pM[GA24]*det2_45_13;
00642 const Double_t det3_245_135 = pM[GA21]*det2_45_35 - pM[GA23]*det2_45_15 + pM[GA25]*det2_45_13;
00643 const Double_t det3_245_145 = pM[GA21]*det2_45_45 - pM[GA24]*det2_45_15 + pM[GA25]*det2_45_14;
00644 const Double_t det3_245_234 = pM[GA22]*det2_45_34 - pM[GA23]*det2_45_24 + pM[GA24]*det2_45_23;
00645 const Double_t det3_245_235 = pM[GA22]*det2_45_35 - pM[GA23]*det2_45_25 + pM[GA25]*det2_45_23;
00646 const Double_t det3_245_245 = pM[GA22]*det2_45_45 - pM[GA24]*det2_45_25 + pM[GA25]*det2_45_24;
00647 const Double_t det3_245_345 = pM[GA23]*det2_45_45 - pM[GA24]*det2_45_35 + pM[GA25]*det2_45_34;
00648 const Double_t det3_345_012 = pM[GA30]*det2_45_12 - pM[GA31]*det2_45_02 + pM[GA32]*det2_45_01;
00649 const Double_t det3_345_013 = pM[GA30]*det2_45_13 - pM[GA31]*det2_45_03 + pM[GA33]*det2_45_01;
00650 const Double_t det3_345_014 = pM[GA30]*det2_45_14 - pM[GA31]*det2_45_04 + pM[GA34]*det2_45_01;
00651 const Double_t det3_345_015 = pM[GA30]*det2_45_15 - pM[GA31]*det2_45_05 + pM[GA35]*det2_45_01;
00652 const Double_t det3_345_023 = pM[GA30]*det2_45_23 - pM[GA32]*det2_45_03 + pM[GA33]*det2_45_02;
00653 const Double_t det3_345_024 = pM[GA30]*det2_45_24 - pM[GA32]*det2_45_04 + pM[GA34]*det2_45_02;
00654 const Double_t det3_345_025 = pM[GA30]*det2_45_25 - pM[GA32]*det2_45_05 + pM[GA35]*det2_45_02;
00655 const Double_t det3_345_034 = pM[GA30]*det2_45_34 - pM[GA33]*det2_45_04 + pM[GA34]*det2_45_03;
00656 const Double_t det3_345_035 = pM[GA30]*det2_45_35 - pM[GA33]*det2_45_05 + pM[GA35]*det2_45_03;
00657 const Double_t det3_345_045 = pM[GA30]*det2_45_45 - pM[GA34]*det2_45_05 + pM[GA35]*det2_45_04;
00658 const Double_t det3_345_123 = pM[GA31]*det2_45_23 - pM[GA32]*det2_45_13 + pM[GA33]*det2_45_12;
00659 const Double_t det3_345_124 = pM[GA31]*det2_45_24 - pM[GA32]*det2_45_14 + pM[GA34]*det2_45_12;
00660 const Double_t det3_345_125 = pM[GA31]*det2_45_25 - pM[GA32]*det2_45_15 + pM[GA35]*det2_45_12;
00661 const Double_t det3_345_134 = pM[GA31]*det2_45_34 - pM[GA33]*det2_45_14 + pM[GA34]*det2_45_13;
00662 const Double_t det3_345_135 = pM[GA31]*det2_45_35 - pM[GA33]*det2_45_15 + pM[GA35]*det2_45_13;
00663 const Double_t det3_345_145 = pM[GA31]*det2_45_45 - pM[GA34]*det2_45_15 + pM[GA35]*det2_45_14;
00664 const Double_t det3_345_234 = pM[GA32]*det2_45_34 - pM[GA33]*det2_45_24 + pM[GA34]*det2_45_23;
00665 const Double_t det3_345_235 = pM[GA32]*det2_45_35 - pM[GA33]*det2_45_25 + pM[GA35]*det2_45_23;
00666 const Double_t det3_345_245 = pM[GA32]*det2_45_45 - pM[GA34]*det2_45_25 + pM[GA35]*det2_45_24;
00667 const Double_t det3_345_345 = pM[GA33]*det2_45_45 - pM[GA34]*det2_45_35 + pM[GA35]*det2_45_34;
00668
00669
00670
00671 const Double_t det4_1234_0123 = pM[GA10]*det3_234_123 - pM[GA11]*det3_234_023
00672 + pM[GA12]*det3_234_013 - pM[GA13]*det3_234_012;
00673 const Double_t det4_1234_0124 = pM[GA10]*det3_234_124 - pM[GA11]*det3_234_024
00674 + pM[GA12]*det3_234_014 - pM[GA14]*det3_234_012;
00675 const Double_t det4_1234_0125 = pM[GA10]*det3_234_125 - pM[GA11]*det3_234_025
00676 + pM[GA12]*det3_234_015 - pM[GA15]*det3_234_012;
00677 const Double_t det4_1234_0134 = pM[GA10]*det3_234_134 - pM[GA11]*det3_234_034
00678 + pM[GA13]*det3_234_014 - pM[GA14]*det3_234_013;
00679 const Double_t det4_1234_0135 = pM[GA10]*det3_234_135 - pM[GA11]*det3_234_035
00680 + pM[GA13]*det3_234_015 - pM[GA15]*det3_234_013;
00681 const Double_t det4_1234_0145 = pM[GA10]*det3_234_145 - pM[GA11]*det3_234_045
00682 + pM[GA14]*det3_234_015 - pM[GA15]*det3_234_014;
00683 const Double_t det4_1234_0234 = pM[GA10]*det3_234_234 - pM[GA12]*det3_234_034
00684 + pM[GA13]*det3_234_024 - pM[GA14]*det3_234_023;
00685 const Double_t det4_1234_0235 = pM[GA10]*det3_234_235 - pM[GA12]*det3_234_035
00686 + pM[GA13]*det3_234_025 - pM[GA15]*det3_234_023;
00687 const Double_t det4_1234_0245 = pM[GA10]*det3_234_245 - pM[GA12]*det3_234_045
00688 + pM[GA14]*det3_234_025 - pM[GA15]*det3_234_024;
00689 const Double_t det4_1234_0345 = pM[GA10]*det3_234_345 - pM[GA13]*det3_234_045
00690 + pM[GA14]*det3_234_035 - pM[GA15]*det3_234_034;
00691 const Double_t det4_1234_1234 = pM[GA11]*det3_234_234 - pM[GA12]*det3_234_134
00692 + pM[GA13]*det3_234_124 - pM[GA14]*det3_234_123;
00693 const Double_t det4_1234_1235 = pM[GA11]*det3_234_235 - pM[GA12]*det3_234_135
00694 + pM[GA13]*det3_234_125 - pM[GA15]*det3_234_123;
00695 const Double_t det4_1234_1245 = pM[GA11]*det3_234_245 - pM[GA12]*det3_234_145
00696 + pM[GA14]*det3_234_125 - pM[GA15]*det3_234_124;
00697 const Double_t det4_1234_1345 = pM[GA11]*det3_234_345 - pM[GA13]*det3_234_145
00698 + pM[GA14]*det3_234_135 - pM[GA15]*det3_234_134;
00699 const Double_t det4_1234_2345 = pM[GA12]*det3_234_345 - pM[GA13]*det3_234_245
00700 + pM[GA14]*det3_234_235 - pM[GA15]*det3_234_234;
00701 const Double_t det4_1235_0123 = pM[GA10]*det3_235_123 - pM[GA11]*det3_235_023
00702 + pM[GA12]*det3_235_013 - pM[GA13]*det3_235_012;
00703 const Double_t det4_1235_0124 = pM[GA10]*det3_235_124 - pM[GA11]*det3_235_024
00704 + pM[GA12]*det3_235_014 - pM[GA14]*det3_235_012;
00705 const Double_t det4_1235_0125 = pM[GA10]*det3_235_125 - pM[GA11]*det3_235_025
00706 + pM[GA12]*det3_235_015 - pM[GA15]*det3_235_012;
00707 const Double_t det4_1235_0134 = pM[GA10]*det3_235_134 - pM[GA11]*det3_235_034
00708 + pM[GA13]*det3_235_014 - pM[GA14]*det3_235_013;
00709 const Double_t det4_1235_0135 = pM[GA10]*det3_235_135 - pM[GA11]*det3_235_035
00710 + pM[GA13]*det3_235_015 - pM[GA15]*det3_235_013;
00711 const Double_t det4_1235_0145 = pM[GA10]*det3_235_145 - pM[GA11]*det3_235_045
00712 + pM[GA14]*det3_235_015 - pM[GA15]*det3_235_014;
00713 const Double_t det4_1235_0234 = pM[GA10]*det3_235_234 - pM[GA12]*det3_235_034
00714 + pM[GA13]*det3_235_024 - pM[GA14]*det3_235_023;
00715 const Double_t det4_1235_0235 = pM[GA10]*det3_235_235 - pM[GA12]*det3_235_035
00716 + pM[GA13]*det3_235_025 - pM[GA15]*det3_235_023;
00717 const Double_t det4_1235_0245 = pM[GA10]*det3_235_245 - pM[GA12]*det3_235_045
00718 + pM[GA14]*det3_235_025 - pM[GA15]*det3_235_024;
00719 const Double_t det4_1235_0345 = pM[GA10]*det3_235_345 - pM[GA13]*det3_235_045
00720 + pM[GA14]*det3_235_035 - pM[GA15]*det3_235_034;
00721 const Double_t det4_1235_1234 = pM[GA11]*det3_235_234 - pM[GA12]*det3_235_134
00722 + pM[GA13]*det3_235_124 - pM[GA14]*det3_235_123;
00723 const Double_t det4_1235_1235 = pM[GA11]*det3_235_235 - pM[GA12]*det3_235_135
00724 + pM[GA13]*det3_235_125 - pM[GA15]*det3_235_123;
00725 const Double_t det4_1235_1245 = pM[GA11]*det3_235_245 - pM[GA12]*det3_235_145
00726 + pM[GA14]*det3_235_125 - pM[GA15]*det3_235_124;
00727 const Double_t det4_1235_1345 = pM[GA11]*det3_235_345 - pM[GA13]*det3_235_145
00728 + pM[GA14]*det3_235_135 - pM[GA15]*det3_235_134;
00729 const Double_t det4_1235_2345 = pM[GA12]*det3_235_345 - pM[GA13]*det3_235_245
00730 + pM[GA14]*det3_235_235 - pM[GA15]*det3_235_234;
00731 const Double_t det4_1245_0123 = pM[GA10]*det3_245_123 - pM[GA11]*det3_245_023
00732 + pM[GA12]*det3_245_013 - pM[GA13]*det3_245_012;
00733 const Double_t det4_1245_0124 = pM[GA10]*det3_245_124 - pM[GA11]*det3_245_024
00734 + pM[GA12]*det3_245_014 - pM[GA14]*det3_245_012;
00735 const Double_t det4_1245_0125 = pM[GA10]*det3_245_125 - pM[GA11]*det3_245_025
00736 + pM[GA12]*det3_245_015 - pM[GA15]*det3_245_012;
00737 const Double_t det4_1245_0134 = pM[GA10]*det3_245_134 - pM[GA11]*det3_245_034
00738 + pM[GA13]*det3_245_014 - pM[GA14]*det3_245_013;
00739 const Double_t det4_1245_0135 = pM[GA10]*det3_245_135 - pM[GA11]*det3_245_035
00740 + pM[GA13]*det3_245_015 - pM[GA15]*det3_245_013;
00741 const Double_t det4_1245_0145 = pM[GA10]*det3_245_145 - pM[GA11]*det3_245_045
00742 + pM[GA14]*det3_245_015 - pM[GA15]*det3_245_014;
00743 const Double_t det4_1245_0234 = pM[GA10]*det3_245_234 - pM[GA12]*det3_245_034
00744 + pM[GA13]*det3_245_024 - pM[GA14]*det3_245_023;
00745 const Double_t det4_1245_0235 = pM[GA10]*det3_245_235 - pM[GA12]*det3_245_035
00746 + pM[GA13]*det3_245_025 - pM[GA15]*det3_245_023;
00747 const Double_t det4_1245_0245 = pM[GA10]*det3_245_245 - pM[GA12]*det3_245_045
00748 + pM[GA14]*det3_245_025 - pM[GA15]*det3_245_024;
00749 const Double_t det4_1245_0345 = pM[GA10]*det3_245_345 - pM[GA13]*det3_245_045
00750 + pM[GA14]*det3_245_035 - pM[GA15]*det3_245_034;
00751 const Double_t det4_1245_1234 = pM[GA11]*det3_245_234 - pM[GA12]*det3_245_134
00752 + pM[GA13]*det3_245_124 - pM[GA14]*det3_245_123;
00753 const Double_t det4_1245_1235 = pM[GA11]*det3_245_235 - pM[GA12]*det3_245_135
00754 + pM[GA13]*det3_245_125 - pM[GA15]*det3_245_123;
00755 const Double_t det4_1245_1245 = pM[GA11]*det3_245_245 - pM[GA12]*det3_245_145
00756 + pM[GA14]*det3_245_125 - pM[GA15]*det3_245_124;
00757 const Double_t det4_1245_1345 = pM[GA11]*det3_245_345 - pM[GA13]*det3_245_145
00758 + pM[GA14]*det3_245_135 - pM[GA15]*det3_245_134;
00759 const Double_t det4_1245_2345 = pM[GA12]*det3_245_345 - pM[GA13]*det3_245_245
00760 + pM[GA14]*det3_245_235 - pM[GA15]*det3_245_234;
00761 const Double_t det4_1345_0123 = pM[GA10]*det3_345_123 - pM[GA11]*det3_345_023
00762 + pM[GA12]*det3_345_013 - pM[GA13]*det3_345_012;
00763 const Double_t det4_1345_0124 = pM[GA10]*det3_345_124 - pM[GA11]*det3_345_024
00764 + pM[GA12]*det3_345_014 - pM[GA14]*det3_345_012;
00765 const Double_t det4_1345_0125 = pM[GA10]*det3_345_125 - pM[GA11]*det3_345_025
00766 + pM[GA12]*det3_345_015 - pM[GA15]*det3_345_012;
00767 const Double_t det4_1345_0134 = pM[GA10]*det3_345_134 - pM[GA11]*det3_345_034
00768 + pM[GA13]*det3_345_014 - pM[GA14]*det3_345_013;
00769 const Double_t det4_1345_0135 = pM[GA10]*det3_345_135 - pM[GA11]*det3_345_035
00770 + pM[GA13]*det3_345_015 - pM[GA15]*det3_345_013;
00771 const Double_t det4_1345_0145 = pM[GA10]*det3_345_145 - pM[GA11]*det3_345_045
00772 + pM[GA14]*det3_345_015 - pM[GA15]*det3_345_014;
00773 const Double_t det4_1345_0234 = pM[GA10]*det3_345_234 - pM[GA12]*det3_345_034
00774 + pM[GA13]*det3_345_024 - pM[GA14]*det3_345_023;
00775 const Double_t det4_1345_0235 = pM[GA10]*det3_345_235 - pM[GA12]*det3_345_035
00776 + pM[GA13]*det3_345_025 - pM[GA15]*det3_345_023;
00777 const Double_t det4_1345_0245 = pM[GA10]*det3_345_245 - pM[GA12]*det3_345_045
00778 + pM[GA14]*det3_345_025 - pM[GA15]*det3_345_024;
00779 const Double_t det4_1345_0345 = pM[GA10]*det3_345_345 - pM[GA13]*det3_345_045
00780 + pM[GA14]*det3_345_035 - pM[GA15]*det3_345_034;
00781 const Double_t det4_1345_1234 = pM[GA11]*det3_345_234 - pM[GA12]*det3_345_134
00782 + pM[GA13]*det3_345_124 - pM[GA14]*det3_345_123;
00783 const Double_t det4_1345_1235 = pM[GA11]*det3_345_235 - pM[GA12]*det3_345_135
00784 + pM[GA13]*det3_345_125 - pM[GA15]*det3_345_123;
00785 const Double_t det4_1345_1245 = pM[GA11]*det3_345_245 - pM[GA12]*det3_345_145
00786 + pM[GA14]*det3_345_125 - pM[GA15]*det3_345_124;
00787 const Double_t det4_1345_1345 = pM[GA11]*det3_345_345 - pM[GA13]*det3_345_145
00788 + pM[GA14]*det3_345_135 - pM[GA15]*det3_345_134;
00789 const Double_t det4_1345_2345 = pM[GA12]*det3_345_345 - pM[GA13]*det3_345_245
00790 + pM[GA14]*det3_345_235 - pM[GA15]*det3_345_234;
00791 const Double_t det4_2345_0123 = pM[GA20]*det3_345_123 - pM[GA21]*det3_345_023
00792 + pM[GA22]*det3_345_013 - pM[GA23]*det3_345_012;
00793 const Double_t det4_2345_0124 = pM[GA20]*det3_345_124 - pM[GA21]*det3_345_024
00794 + pM[GA22]*det3_345_014 - pM[GA24]*det3_345_012;
00795 const Double_t det4_2345_0125 = pM[GA20]*det3_345_125 - pM[GA21]*det3_345_025
00796 + pM[GA22]*det3_345_015 - pM[GA25]*det3_345_012;
00797 const Double_t det4_2345_0134 = pM[GA20]*det3_345_134 - pM[GA21]*det3_345_034
00798 + pM[GA23]*det3_345_014 - pM[GA24]*det3_345_013;
00799 const Double_t det4_2345_0135 = pM[GA20]*det3_345_135 - pM[GA21]*det3_345_035
00800 + pM[GA23]*det3_345_015 - pM[GA25]*det3_345_013;
00801 const Double_t det4_2345_0145 = pM[GA20]*det3_345_145 - pM[GA21]*det3_345_045
00802 + pM[GA24]*det3_345_015 - pM[GA25]*det3_345_014;
00803 const Double_t det4_2345_0234 = pM[GA20]*det3_345_234 - pM[GA22]*det3_345_034
00804 + pM[GA23]*det3_345_024 - pM[GA24]*det3_345_023;
00805 const Double_t det4_2345_0235 = pM[GA20]*det3_345_235 - pM[GA22]*det3_345_035
00806 + pM[GA23]*det3_345_025 - pM[GA25]*det3_345_023;
00807 const Double_t det4_2345_0245 = pM[GA20]*det3_345_245 - pM[GA22]*det3_345_045
00808 + pM[GA24]*det3_345_025 - pM[GA25]*det3_345_024;
00809 const Double_t det4_2345_0345 = pM[GA20]*det3_345_345 - pM[GA23]*det3_345_045
00810 + pM[GA24]*det3_345_035 - pM[GA25]*det3_345_034;
00811 const Double_t det4_2345_1234 = pM[GA21]*det3_345_234 - pM[GA22]*det3_345_134
00812 + pM[GA23]*det3_345_124 - pM[GA24]*det3_345_123;
00813 const Double_t det4_2345_1235 = pM[GA21]*det3_345_235 - pM[GA22]*det3_345_135
00814 + pM[GA23]*det3_345_125 - pM[GA25]*det3_345_123;
00815 const Double_t det4_2345_1245 = pM[GA21]*det3_345_245 - pM[GA22]*det3_345_145
00816 + pM[GA24]*det3_345_125 - pM[GA25]*det3_345_124;
00817 const Double_t det4_2345_1345 = pM[GA21]*det3_345_345 - pM[GA23]*det3_345_145
00818 + pM[GA24]*det3_345_135 - pM[GA25]*det3_345_134;
00819 const Double_t det4_2345_2345 = pM[GA22]*det3_345_345 - pM[GA23]*det3_345_245
00820 + pM[GA24]*det3_345_235 - pM[GA25]*det3_345_234;
00821
00822
00823
00824 const Double_t det5_01234_01234 = pM[GA00]*det4_1234_1234 - pM[GA01]*det4_1234_0234
00825 + pM[GA02]*det4_1234_0134 - pM[GA03]*det4_1234_0124 + pM[GA04]*det4_1234_0123;
00826 const Double_t det5_01234_01235 = pM[GA00]*det4_1234_1235 - pM[GA01]*det4_1234_0235
00827 + pM[GA02]*det4_1234_0135 - pM[GA03]*det4_1234_0125 + pM[GA05]*det4_1234_0123;
00828 const Double_t det5_01234_01245 = pM[GA00]*det4_1234_1245 - pM[GA01]*det4_1234_0245
00829 + pM[GA02]*det4_1234_0145 - pM[GA04]*det4_1234_0125 + pM[GA05]*det4_1234_0124;
00830 const Double_t det5_01234_01345 = pM[GA00]*det4_1234_1345 - pM[GA01]*det4_1234_0345
00831 + pM[GA03]*det4_1234_0145 - pM[GA04]*det4_1234_0135 + pM[GA05]*det4_1234_0134;
00832 const Double_t det5_01234_02345 = pM[GA00]*det4_1234_2345 - pM[GA02]*det4_1234_0345
00833 + pM[GA03]*det4_1234_0245 - pM[GA04]*det4_1234_0235 + pM[GA05]*det4_1234_0234;
00834 const Double_t det5_01234_12345 = pM[GA01]*det4_1234_2345 - pM[GA02]*det4_1234_1345
00835 + pM[GA03]*det4_1234_1245 - pM[GA04]*det4_1234_1235 + pM[GA05]*det4_1234_1234;
00836 const Double_t det5_01235_01234 = pM[GA00]*det4_1235_1234 - pM[GA01]*det4_1235_0234
00837 + pM[GA02]*det4_1235_0134 - pM[GA03]*det4_1235_0124 + pM[GA04]*det4_1235_0123;
00838 const Double_t det5_01235_01235 = pM[GA00]*det4_1235_1235 - pM[GA01]*det4_1235_0235
00839 + pM[GA02]*det4_1235_0135 - pM[GA03]*det4_1235_0125 + pM[GA05]*det4_1235_0123;
00840 const Double_t det5_01235_01245 = pM[GA00]*det4_1235_1245 - pM[GA01]*det4_1235_0245
00841 + pM[GA02]*det4_1235_0145 - pM[GA04]*det4_1235_0125 + pM[GA05]*det4_1235_0124;
00842 const Double_t det5_01235_01345 = pM[GA00]*det4_1235_1345 - pM[GA01]*det4_1235_0345
00843 + pM[GA03]*det4_1235_0145 - pM[GA04]*det4_1235_0135 + pM[GA05]*det4_1235_0134;
00844 const Double_t det5_01235_02345 = pM[GA00]*det4_1235_2345 - pM[GA02]*det4_1235_0345
00845 + pM[GA03]*det4_1235_0245 - pM[GA04]*det4_1235_0235 + pM[GA05]*det4_1235_0234;
00846 const Double_t det5_01235_12345 = pM[GA01]*det4_1235_2345 - pM[GA02]*det4_1235_1345
00847 + pM[GA03]*det4_1235_1245 - pM[GA04]*det4_1235_1235 + pM[GA05]*det4_1235_1234;
00848 const Double_t det5_01245_01234 = pM[GA00]*det4_1245_1234 - pM[GA01]*det4_1245_0234
00849 + pM[GA02]*det4_1245_0134 - pM[GA03]*det4_1245_0124 + pM[GA04]*det4_1245_0123;
00850 const Double_t det5_01245_01235 = pM[GA00]*det4_1245_1235 - pM[GA01]*det4_1245_0235
00851 + pM[GA02]*det4_1245_0135 - pM[GA03]*det4_1245_0125 + pM[GA05]*det4_1245_0123;
00852 const Double_t det5_01245_01245 = pM[GA00]*det4_1245_1245 - pM[GA01]*det4_1245_0245
00853 + pM[GA02]*det4_1245_0145 - pM[GA04]*det4_1245_0125 + pM[GA05]*det4_1245_0124;
00854 const Double_t det5_01245_01345 = pM[GA00]*det4_1245_1345 - pM[GA01]*det4_1245_0345
00855 + pM[GA03]*det4_1245_0145 - pM[GA04]*det4_1245_0135 + pM[GA05]*det4_1245_0134;
00856 const Double_t det5_01245_02345 = pM[GA00]*det4_1245_2345 - pM[GA02]*det4_1245_0345
00857 + pM[GA03]*det4_1245_0245 - pM[GA04]*det4_1245_0235 + pM[GA05]*det4_1245_0234;
00858 const Double_t det5_01245_12345 = pM[GA01]*det4_1245_2345 - pM[GA02]*det4_1245_1345
00859 + pM[GA03]*det4_1245_1245 - pM[GA04]*det4_1245_1235 + pM[GA05]*det4_1245_1234;
00860 const Double_t det5_01345_01234 = pM[GA00]*det4_1345_1234 - pM[GA01]*det4_1345_0234
00861 + pM[GA02]*det4_1345_0134 - pM[GA03]*det4_1345_0124 + pM[GA04]*det4_1345_0123;
00862 const Double_t det5_01345_01235 = pM[GA00]*det4_1345_1235 - pM[GA01]*det4_1345_0235
00863 + pM[GA02]*det4_1345_0135 - pM[GA03]*det4_1345_0125 + pM[GA05]*det4_1345_0123;
00864 const Double_t det5_01345_01245 = pM[GA00]*det4_1345_1245 - pM[GA01]*det4_1345_0245
00865 + pM[GA02]*det4_1345_0145 - pM[GA04]*det4_1345_0125 + pM[GA05]*det4_1345_0124;
00866 const Double_t det5_01345_01345 = pM[GA00]*det4_1345_1345 - pM[GA01]*det4_1345_0345
00867 + pM[GA03]*det4_1345_0145 - pM[GA04]*det4_1345_0135 + pM[GA05]*det4_1345_0134;
00868 const Double_t det5_01345_02345 = pM[GA00]*det4_1345_2345 - pM[GA02]*det4_1345_0345
00869 + pM[GA03]*det4_1345_0245 - pM[GA04]*det4_1345_0235 + pM[GA05]*det4_1345_0234;
00870 const Double_t det5_01345_12345 = pM[GA01]*det4_1345_2345 - pM[GA02]*det4_1345_1345
00871 + pM[GA03]*det4_1345_1245 - pM[GA04]*det4_1345_1235 + pM[GA05]*det4_1345_1234;
00872 const Double_t det5_02345_01234 = pM[GA00]*det4_2345_1234 - pM[GA01]*det4_2345_0234
00873 + pM[GA02]*det4_2345_0134 - pM[GA03]*det4_2345_0124 + pM[GA04]*det4_2345_0123;
00874 const Double_t det5_02345_01235 = pM[GA00]*det4_2345_1235 - pM[GA01]*det4_2345_0235
00875 + pM[GA02]*det4_2345_0135 - pM[GA03]*det4_2345_0125 + pM[GA05]*det4_2345_0123;
00876 const Double_t det5_02345_01245 = pM[GA00]*det4_2345_1245 - pM[GA01]*det4_2345_0245
00877 + pM[GA02]*det4_2345_0145 - pM[GA04]*det4_2345_0125 + pM[GA05]*det4_2345_0124;
00878 const Double_t det5_02345_01345 = pM[GA00]*det4_2345_1345 - pM[GA01]*det4_2345_0345
00879 + pM[GA03]*det4_2345_0145 - pM[GA04]*det4_2345_0135 + pM[GA05]*det4_2345_0134;
00880 const Double_t det5_02345_02345 = pM[GA00]*det4_2345_2345 - pM[GA02]*det4_2345_0345
00881 + pM[GA03]*det4_2345_0245 - pM[GA04]*det4_2345_0235 + pM[GA05]*det4_2345_0234;
00882 const Double_t det5_02345_12345 = pM[GA01]*det4_2345_2345 - pM[GA02]*det4_2345_1345
00883 + pM[GA03]*det4_2345_1245 - pM[GA04]*det4_2345_1235 + pM[GA05]*det4_2345_1234;
00884 const Double_t det5_12345_01234 = pM[GA10]*det4_2345_1234 - pM[GA11]*det4_2345_0234
00885 + pM[GA12]*det4_2345_0134 - pM[GA13]*det4_2345_0124 + pM[GA14]*det4_2345_0123;
00886 const Double_t det5_12345_01235 = pM[GA10]*det4_2345_1235 - pM[GA11]*det4_2345_0235
00887 + pM[GA12]*det4_2345_0135 - pM[GA13]*det4_2345_0125 + pM[GA15]*det4_2345_0123;
00888 const Double_t det5_12345_01245 = pM[GA10]*det4_2345_1245 - pM[GA11]*det4_2345_0245
00889 + pM[GA12]*det4_2345_0145 - pM[GA14]*det4_2345_0125 + pM[GA15]*det4_2345_0124;
00890 const Double_t det5_12345_01345 = pM[GA10]*det4_2345_1345 - pM[GA11]*det4_2345_0345
00891 + pM[GA13]*det4_2345_0145 - pM[GA14]*det4_2345_0135 + pM[GA15]*det4_2345_0134;
00892 const Double_t det5_12345_02345 = pM[GA10]*det4_2345_2345 - pM[GA12]*det4_2345_0345
00893 + pM[GA13]*det4_2345_0245 - pM[GA14]*det4_2345_0235 + pM[GA15]*det4_2345_0234;
00894 const Double_t det5_12345_12345 = pM[GA11]*det4_2345_2345 - pM[GA12]*det4_2345_1345
00895 + pM[GA13]*det4_2345_1245 - pM[GA14]*det4_2345_1235 + pM[GA15]*det4_2345_1234;
00896
00897
00898
00899 const Double_t det = pM[GA00]*det5_12345_12345 - pM[GA01]*det5_12345_02345 + pM[GA02]*det5_12345_01345
00900 - pM[GA03]*det5_12345_01245 + pM[GA04]*det5_12345_01235 - pM[GA05]*det5_12345_01234;
00901 if (determ)
00902 *determ = det;
00903
00904 if ( det == 0 ) {
00905 Error("Inv6x6","matrix is singular");
00906 return kFALSE;
00907 }
00908
00909 const Double_t oneOverDet = 1.0/det;
00910 const Double_t mn1OverDet = - oneOverDet;
00911
00912 pM[GA00] = det5_12345_12345*oneOverDet;
00913 pM[GA01] = det5_02345_12345*mn1OverDet;
00914 pM[GA02] = det5_01345_12345*oneOverDet;
00915 pM[GA03] = det5_01245_12345*mn1OverDet;
00916 pM[GA04] = det5_01235_12345*oneOverDet;
00917 pM[GA05] = det5_01234_12345*mn1OverDet;
00918
00919 pM[GA10] = det5_12345_02345*mn1OverDet;
00920 pM[GA11] = det5_02345_02345*oneOverDet;
00921 pM[GA12] = det5_01345_02345*mn1OverDet;
00922 pM[GA13] = det5_01245_02345*oneOverDet;
00923 pM[GA14] = det5_01235_02345*mn1OverDet;
00924 pM[GA15] = det5_01234_02345*oneOverDet;
00925
00926 pM[GA20] = det5_12345_01345*oneOverDet;
00927 pM[GA21] = det5_02345_01345*mn1OverDet;
00928 pM[GA22] = det5_01345_01345*oneOverDet;
00929 pM[GA23] = det5_01245_01345*mn1OverDet;
00930 pM[GA24] = det5_01235_01345*oneOverDet;
00931 pM[GA25] = det5_01234_01345*mn1OverDet;
00932
00933 pM[GA30] = det5_12345_01245*mn1OverDet;
00934 pM[GA31] = det5_02345_01245*oneOverDet;
00935 pM[GA32] = det5_01345_01245*mn1OverDet;
00936 pM[GA33] = det5_01245_01245*oneOverDet;
00937 pM[GA34] = det5_01235_01245*mn1OverDet;
00938 pM[GA35] = det5_01234_01245*oneOverDet;
00939
00940 pM[GA40] = det5_12345_01235*oneOverDet;
00941 pM[GA41] = det5_02345_01235*mn1OverDet;
00942 pM[GA42] = det5_01345_01235*oneOverDet;
00943 pM[GA43] = det5_01245_01235*mn1OverDet;
00944 pM[GA44] = det5_01235_01235*oneOverDet;
00945 pM[GA45] = det5_01234_01235*mn1OverDet;
00946
00947 pM[GA50] = det5_12345_01234*mn1OverDet;
00948 pM[GA51] = det5_02345_01234*oneOverDet;
00949 pM[GA52] = det5_01345_01234*mn1OverDet;
00950 pM[GA53] = det5_01245_01234*oneOverDet;
00951 pM[GA54] = det5_01235_01234*mn1OverDet;
00952 pM[GA55] = det5_01234_01234*oneOverDet;
00953
00954 return kTRUE;
00955 }
00956
00957 #ifndef ROOT_TMatrixFfwd
00958 #include "TMatrixFfwd.h"
00959 #endif
00960
00961 template Bool_t TMatrixTCramerInv::Inv2x2<Float_t>(TMatrixF&,Double_t*);
00962 template Bool_t TMatrixTCramerInv::Inv3x3<Float_t>(TMatrixF&,Double_t*);
00963 template Bool_t TMatrixTCramerInv::Inv4x4<Float_t>(TMatrixF&,Double_t*);
00964 template Bool_t TMatrixTCramerInv::Inv5x5<Float_t>(TMatrixF&,Double_t*);
00965 template Bool_t TMatrixTCramerInv::Inv6x6<Float_t>(TMatrixF&,Double_t*);
00966
00967 #ifndef ROOT_TMatrixDfwd
00968 #include "TMatrixDfwd.h"
00969 #endif
00970
00971 template Bool_t TMatrixTCramerInv::Inv2x2<Double_t>(TMatrixD&,Double_t*);
00972 template Bool_t TMatrixTCramerInv::Inv3x3<Double_t>(TMatrixD&,Double_t*);
00973 template Bool_t TMatrixTCramerInv::Inv4x4<Double_t>(TMatrixD&,Double_t*);
00974 template Bool_t TMatrixTCramerInv::Inv5x5<Double_t>(TMatrixD&,Double_t*);
00975 template Bool_t TMatrixTCramerInv::Inv6x6<Double_t>(TMatrixD&,Double_t*);