10#include "CLHEP/Vector/defs.h"
11#include "CLHEP/Vector/LorentzRotation.h"
12#include "CLHEP/Vector/LorentzVector.h"
13#include "CLHEP/Vector/ZMxpv.h"
31 if ( ccol4.
getT() < 0 ) {
32 ZMthrowC (ZMxpvImproperTransformation(
33 "column 4 supplied to define transformation has negative T component"));
38 double u1u1 = ccol1.
dot(ccol1);
39 double f11 = std::fabs(u1u1 + 1.0);
42 "column 1 supplied for HepLorentzRotation has w*w != -1"));
44 double u2u2 = ccol2.
dot(ccol2);
45 double f22 = std::fabs(u2u2 + 1.0);
48 "column 2 supplied for HepLorentzRotation has w*w != -1"));
50 double u3u3 = ccol3.
dot(ccol3);
51 double f33 = std::fabs(u3u3 + 1.0);
54 "column 3 supplied for HepLorentzRotation has w*w != -1"));
56 double u4u4 = ccol4.
dot(ccol4);
57 double f44 = std::fabs(u4u4 - 1.0);
60 "column 4 supplied for HepLorentzRotation has w*w != +1"));
63 double u1u2 = ccol1.
dot(ccol2);
64 double f12 = std::fabs(u1u2);
67 "columns 1 and 2 supplied for HepLorentzRotation have non-zero dot"));
69 double u1u3 = ccol1.
dot(ccol3);
70 double f13 = std::fabs(u1u3);
74 "columns 1 and 3 supplied for HepLorentzRotation have non-zero dot"));
76 double u1u4 = ccol1.
dot(ccol4);
77 double f14 = std::fabs(u1u4);
80 "columns 1 and 4 supplied for HepLorentzRotation have non-zero dot"));
82 double u2u3 = ccol2.
dot(ccol3);
83 double f23 = std::fabs(u2u3);
86 "columns 2 and 3 supplied for HepLorentzRotation have non-zero dot"));
88 double u2u4 = ccol2.
dot(ccol4);
89 double f24 = std::fabs(u2u4);
92 "columns 2 and 4 supplied for HepLorentzRotation have non-zero dot"));
94 double u3u4 = ccol3.
dot(ccol4);
95 double f34 = std::fabs(u3u4);
98 "columns 3 and 4 supplied for HepLorentzRotation have non-zero dot"));
110 bool isLorentzTransformation =
true;
116 isLorentzTransformation =
false;
125 c = ccol3 - ccol3.
dot(d) * d;
128 isLorentzTransformation =
false;
136 b = ccol2 + ccol2.
dot(c) * c - ccol2.
dot(d) * d;
139 isLorentzTransformation =
false;
147 a = ccol1 + ccol1.
dot(b) * b + ccol1.
dot(c) * c - ccol1.
dot(d) * d;
150 isLorentzTransformation =
false;
158 if ( !isLorentzTransformation ) {
159 ZMthrowC (ZMxpvImproperTransformation(
160 "cols 1-4 supplied to define transformation form either \n"
161 " a boosted reflection or a tachyonic transformation -- \n"
162 " transformation will be set to Identity "));
168 if ( isLorentzTransformation ) {
186 set (rrow1, rrow2, rrow3, rrow4);
203 set ( ccol1, ccol2, ccol3, ccol4 );
HepLorentzRotation & setRows(const HepLorentzVector &row1, const HepLorentzVector &row2, const HepLorentzVector &row3, const HepLorentzVector &row4)
HepLorentzRotation & set(double bx, double by, double bz)
double dot(const HepLorentzVector &) const
static ZMpvMetric_t setMetric(ZMpvMetric_t a1)
double norm(const HepGenMatrix &m)