9 #include <analysis/utility/ReferenceFrame.h>
19 m_momentum(particle->get4Vector()),
20 m_displacement(particle->getVertex()),
21 m_boost(m_momentum.BoostVector()),
22 m_lab2restframe(TLorentzRotation(-m_boost))
44 return a.Vect() -
m_boost * a.T();
55 TMatrixD lorentzrot(4, 4);
57 for (
int i = 0; i < 4; ++i)
58 for (
int j = 0; j < 4; ++j)
61 TMatrixFSym tmp_matrix(matrix);
63 return tmp_matrix.Similarity(lorentzrot);
68 TMatrixD lorentzrot(4, 3);
70 for (
int i = 0; i < 4; ++i)
71 for (
int j = 0; j < 3; ++j)
74 TMatrixFSym tmp_matrix(matrix);
75 auto rotated_error_matrix = tmp_matrix.Similarity(lorentzrot);
77 TMatrixD timeshift(3, 4);
86 return rotated_error_matrix.Similarity(timeshift);
128 TMatrixD lorentzrot(4, 4);
131 for (
int i = 0; i < 4; ++i)
132 for (
int j = 0; j < 4; ++j)
133 lorentzrot(i, j) = labToCmsFrame(i, j);
135 TMatrixFSym tmp_matrix(matrix);
136 return tmp_matrix.Similarity(lorentzrot);
141 TMatrixD lorentzrot(4, 3);
144 for (
int i = 0; i < 4; ++i)
145 for (
int j = 0; j < 3; ++j)
146 lorentzrot(i, j) = labToCmsFrame(i, j);
148 TMatrixFSym tmp_matrix(matrix);
149 auto rotated_error_matrix = tmp_matrix.Similarity(lorentzrot);
151 TMatrixD timeshift(3, 4);
157 timeshift(0, 3) = boost_vector(0);
158 timeshift(1, 3) = boost_vector(1);
159 timeshift(2, 3) = boost_vector(2);
161 return rotated_error_matrix.Similarity(timeshift);
166 m_rotation.RotateAxes(newX.Unit(), newY.Unit(), newZ.Unit());
177 TVector3 rotated_vector =
m_rotation * vector.Vect();
179 return TLorentzVector(rotated_vector, vector[3]);
184 TMatrixD extendedrot(4, 4);
186 for (
int i = 0; i < 3; ++i)
187 for (
int j = 0; j < 3; ++j)
189 extendedrot(3, 3) = 1;
191 TMatrixFSym tmp_matrix(matrix);
192 return tmp_matrix.Similarity(extendedrot);
197 TMatrixD rotmatrix(3, 3);
198 for (
int i = 0; i < 3; ++i)
199 for (
int j = 0; j < 3; ++j)
202 TMatrixFSym tmp_matrix(matrix);
203 return tmp_matrix.Similarity(rotmatrix);
207 rotationframe(newX, newY, newZ)
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in cms frame.
virtual TLorentzVector getMomentum(const TLorentzVector &vector) const override
Get Lorentz vector in cms frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in cms frame.
virtual TVector3 getVertex(const TVector3 &vector) const override
Get vertex 3-vector in cms frame.
PCmsLabTransform m_transform
Lab to CMS Transform.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rotation frame.
virtual TLorentzVector getMomentum(const TLorentzVector &vector) const override
Get Lorentz vector in rotation frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rotation frame.
CMSRotationFrame(const TVector3 &newX, const TVector3 &newY, const TVector3 &newZ)
Create new rotation frame.
RotationFrame rotationframe
Rotationframe.
CMSFrame cmsframe
CMSFrame.
virtual TVector3 getVertex(const TVector3 &vector) const override
Get vertex 3-vector in rotation frame.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in lab frame.
virtual TLorentzVector getMomentum(const TLorentzVector &vector) const override
Get Lorentz vector in lab frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in lab frame.
virtual TVector3 getVertex(const TVector3 &vector) const override
Get vertex 3-vector in lab frame.
Class to store reconstructed particles.
Abstract base class of all reference frames.
static std::stack< const ReferenceFrame * > m_reference_frames
Stack of current rest frames.
static const ReferenceFrame & GetCurrent()
Get current rest frame.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rest frame.
virtual TLorentzVector getMomentum(const TLorentzVector &vector) const override
Get Lorentz vector in rest frame System.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rest frame.
TVector3 m_boost
boost of RF relative to the lab frame
TLorentzRotation m_lab2restframe
Lorentz transformation connecting lab and rest frame.
RestFrame(const Particle *particle)
Create new rest frame.
virtual TVector3 getVertex(const TVector3 &vector) const override
Get vertex 3-vector in rest frame system.
TVector3 m_displacement
displacement of RF origin in th lab frame
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rotation frame.
virtual TLorentzVector getMomentum(const TLorentzVector &vector) const override
Get Lorentz vector in rotation frame.
RotationFrame(const TVector3 &newX, const TVector3 &newY, const TVector3 &newZ)
Create new rotation frame.
TRotation m_rotation
Rotation.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rotation frame.
virtual TVector3 getVertex(const TVector3 &vector) const override
Get vertex 3-vector in rotation frame.
Abstract base class for different kinds of events.