11#include <Math/Rotation3D.h>
12#include <Math/Boost.h>
13#include <Math/Vector3D.h>
14#include <Math/Vector4D.h>
15#include <analysis/dataobjects/Particle.h>
16#include <analysis/utility/PCmsLabTransform.h>
36 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const = 0;
53 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const = 0;
145 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const override;
152 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const override;
187 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const override;
194 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const override;
223 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const override;
230 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const override;
259 explicit RotationFrame(
const ROOT::Math::XYZVector& newX,
const ROOT::Math::XYZVector& newY,
const ROOT::Math::XYZVector& newZ);
266 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const override;
273 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const override;
302 explicit CMSRotationFrame(
const ROOT::Math::XYZVector& newX,
const ROOT::Math::XYZVector& newY,
const ROOT::Math::XYZVector& newZ);
309 virtual ROOT::Math::XYZVector
getVertex(
const ROOT::Math::XYZVector& vector)
const override;
316 virtual ROOT::Math::PxPyPzEVector
getMomentum(
const ROOT::Math::PxPyPzEVector& vector)
const override;
343 template<
class ...Args>
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in cms frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in cms frame.
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const override
Get vertex 3-vector in cms frame.
PCmsLabTransform m_transform
Lab to CMS Transform.
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const override
Get Lorentz vector in cms frame.
Stack frame for cms and Rotation frame.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rotation frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rotation frame.
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const override
Get vertex 3-vector in rotation frame.
RotationFrame rotationframe
Rotationframe.
CMSFrame cmsframe
CMSFrame.
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const override
Get Lorentz vector in rotation frame.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in lab frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in lab frame.
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const override
Get vertex 3-vector in lab frame.
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const override
Get Lorentz vector in lab frame.
Class to store reconstructed particles.
TMatrixFSym getVertexErrorMatrix() const
Returns the 3x3 position error sub-matrix.
ROOT::Math::XYZVector getVertex() const
Returns vertex position (POCA for charged, IP for neutral FS particles)
ROOT::Math::PxPyPzEVector get4Vector() const
Returns Lorentz vector.
TMatrixFSym getMomentumErrorMatrix() const
Returns the 4x4 momentum error matrix.
Abstract base class of all reference frames.
virtual TMatrixFSym getVertexErrorMatrix(const Particle *particle) const
Wrapper for particles.
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const =0
Get vertex 3-vector in reference frame.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const =0
Get Vertex error matrix in reference frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const =0
Get Momentum error matrix in reference frame.
static std::stack< const ReferenceFrame * > m_reference_frames
Stack of current rest frames.
virtual TMatrixFSym getMomentumErrorMatrix(const Particle *particle) const
Wrapper for particles.
virtual ROOT::Math::PxPyPzEVector getMomentum(const Particle *particle) const
Wrapper for particles.
static void Pop()
Pop current rest frame.
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const =0
Get momentum 4-vector in reference frame.
virtual ROOT::Math::XYZVector getVertex(const Particle *particle) const
Wrapper for particles.
static const ReferenceFrame & GetCurrent()
Get current rest frame.
static void Push(const ReferenceFrame *frame)
Push rest frame of given particle.
Rest frame of a particle.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rest frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rest frame.
ROOT::Math::PxPyPzEVector m_momentum
momentum of RF in the lab frame
ROOT::Math::XYZVector m_displacement
displacement of RF origin in th lab frame
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const override
Get vertex 3-vector in rest frame system.
ROOT::Math::XYZVector m_boost
boost of RF relative to the lab frame
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const override
Get Lorentz vector in rest frame System.
ROOT::Math::Boost m_lab2restframe
Lorentz transformation connecting lab and rest frame.
Rotation frame around vector.
virtual TMatrixFSym getVertexErrorMatrix(const TMatrixFSym &matrix) const override
Get Vertex error matrix in rotation frame.
virtual TMatrixFSym getMomentumErrorMatrix(const TMatrixFSym &matrix) const override
Get Momentum error matrix in rotation frame.
virtual ROOT::Math::XYZVector getVertex(const ROOT::Math::XYZVector &vector) const override
Get vertex 3-vector in rotation frame.
ROOT::Math::Rotation3D m_rotation
Rotation.
virtual ROOT::Math::PxPyPzEVector getMomentum(const ROOT::Math::PxPyPzEVector &vector) const override
Get Lorentz vector in rotation frame.
A template class to apply the reference frame.
UseReferenceFrame(Args &&... params)
Constructor which applies the reference frame
T m_frame
the reference frame
Abstract base class for different kinds of events.