11 #include <framework/datastore/RelationsObject.h>
12 #include <framework/logging/Logger.h>
14 #include <Math/Vector3D.h>
15 #include <Math/Vector4D.h>
16 #include <TLorentzVector.h>
68 for (
int i = 0; i < 3; i++)
86 B2ERROR(
"Invalid EigenVector number (n = " << i <<
"). You can set only 3 eigenvectors.");
99 B2ERROR(
"Invalid EigenVector number (n = " << i <<
"). You can set only 3 eigenvectors.");
111 if (order < 0 || order > 9)
112 B2ERROR(
"Invalid Fox-Wolfram moment order (n = " << order <<
"). The order must be in the [0,9] range.");
132 if (thrustAxis.R() < 1.E-10)
133 B2WARNING(
"The thrust axis you are trying to set has magnitude numerically compatible with 0.");
143 if (spherocityAxis.R() < 1.E-10)
144 B2WARNING(
"The spherocity axis you are trying to set has magnitude numerically compatible with 0.");
155 if (order < 0 || order > 9)
156 B2ERROR(
"Invalid harmonic moment order. It must be in the [0,9] range.");
168 if (order < 0 || order > 9)
169 B2ERROR(
"Invalid harmonic moment order. It must be in the [0,9] range.");
181 if (order < 0 || order > 9)
182 B2ERROR(
"Invalid Cleo cone order. It must be in the [0,9] range.");
194 if (order < 0 || order > 9)
195 B2ERROR(
"Invalid Cleo cone order. It must be in the [0,9] range.");
258 if (i < 0 || i > 2) {
259 B2ERROR(
"Invalid Eigenvalue number (n = " << i <<
"). There are only 3 eigenvalues...");
260 return std::numeric_limits<float>::quiet_NaN();
273 if (i < 0 || i > 2) {
274 B2ERROR(
"Invalid Eigenvalue number (n = " << i <<
"). There are only 3 eigenvalues...");
275 return ROOT::Math::XYZVector(std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(),
276 std::numeric_limits<float>::quiet_NaN());
290 if (order < 0 || order > 9) {
291 B2ERROR(
"Invalid Fox-Wolfram moment order. It must be in the [0,9] range.");
292 return std::numeric_limits<float>::quiet_NaN();
304 if (order < 0 || order > 9) {
305 B2ERROR(
"Invalid harmonic moment order. It must be in the [0,9] range.");
306 return std::numeric_limits<float>::quiet_NaN();
318 if (order < 0 || order > 9) {
319 B2ERROR(
"Invalid harmonic moment order. The order must be in the [0,9] range.");
320 return std::numeric_limits<float>::quiet_NaN();
333 if (order < 0 || order > 9) {
334 B2ERROR(
"Invalid CLEO cone order. The order must be in the [0,9] range.");
335 return std::numeric_limits<float>::quiet_NaN();
347 if (order < 0 || order > 9) {
348 B2ERROR(
"Invalid CLEO cone order. The order must be in the [0,9] range.");
349 return std::numeric_limits<float>::quiet_NaN();
Class for collecting the basic objects related to the event shape.
float getSphericityEigenvalue(short i) const
Returns the i-th sphericity matrix eigenvalue.
float getCleoConeThrust(short order) const
Returns the Cleo cone of a given order, calculated respect to the thrust axis.
float m_cleoConesCollision[10]
Cleo cones up to order 9, calculated respect to the collision axis.
ROOT::Math::XYZVector getSpherocityAxis() const
Returns the spherocity axis (normalized).
void setSphericityEigenvalue(short i, float eigenvalue)
Sets the i-th sphericity eigenvalue.
ROOT::Math::PxPyPzEVector m_backwardHemisphere4Momentum
Total 4-momentum of the particles in the backward hemisphere.
ROOT::Math::PxPyPzEVector getBackwardHemisphere4Momentum() const
Return the 4-momentum of the backward hemisphere, as defined by the thrust axis.
ROOT::Math::XYZVector getThrustAxis() const
Returns the thrust axis (normalized).
void setSpherocityAxis(ROOT::Math::XYZVector spherocityAxis)
Sets the spherocity axis, normalizing it.
float getThrust() const
Returns the thrust.
EventShapeContainer()
Default constructor, resets the sphericity matrix.
void setThrust(float thrust)
Sets the thrust of the event.
float getFWMoment(short order) const
Returns the Fox-Wolfram moment of a given order.
void setFWMoment(short order, float moment)
Sets the Fox-Wolfram (FW) moment of order n.
float m_harmonicMomentsCollision[10]
Harmonic moments up to order 9, calculated respect to the collision axis.
void setHarmonicMomentThrust(short order, float moment)
Sets the harmonic moment of order n, calculated using the thrust axis.
ROOT::Math::XYZVector getSphericityEigenvector(short i) const
Returns the i-th sphericity matrix eigenvector.
float m_thrust
Thrust value.
ROOT::Math::XYZVector m_sphericityEigenvector[3]
Sphericity tensor eigenvectors.
float getHarmonicMomentThrust(short order) const
Returns the harmonic moment of a given order, calculated respect to the thrust axis.
ROOT::Math::PxPyPzEVector getForwardHemisphere4Momentum() const
Returns the 4-momentum of the forward hemisphere, as defined by the thrust axis.
void setBackwardHemisphere4Momentum(ROOT::Math::PxPyPzEVector mom)
Sets the 4-momentum of the backward hemisphere, as defined by the thrust axis.
void setCleoConeThrust(short order, float moment)
Sets the Cleo cone of order n, calculated using the thrust axis.
void setSphericityEigenvector(short i, ROOT::Math::XYZVector eigenvector)
Sets the i-th sphericity eigenvector.
void setThrustAxis(ROOT::Math::XYZVector thrustAxis)
Sets the thrust axis, normalizing it.
void setCleoConeCollision(short order, float moment)
Sets the Cleo cone of order n, calculated using the collision axis.
float getCleoConeCollision(short order) const
Returns the Cleo cone of a given order, calculated respect to the beam axis.
void setHarmonicMomentCollision(short order, float moment)
Sets the harmonic moment of order n, calculated using the collision axis.
ROOT::Math::XYZVector m_thrustAxis
Thrust axis.
float getHarmonicMomentCollision(short order) const
Returns the harmonic moment of a given order, calculated respect to the beam axis.
float m_sphericityEigenvalue[3]
Sphericity tensor eigenvalues.
float m_cleoConesThrust[10]
Cleo cones up to order 9, calculated respect to the thrust axis.
float m_foxWolframMoments[10]
Fox Wolfram moments up to order 9.
ROOT::Math::PxPyPzEVector m_forwardHemisphere4Momentum
Total 4-momentum of the particles in the forward hemisphere.
void setForwardHemisphere4Momentum(ROOT::Math::PxPyPzEVector mom)
Sets the 4-momentum of the forward hemisphere, as defined by the thrust axis.
float m_harmonicMomentsThrust[10]
Harmonic moments up to order 9, calculated respect to the thrust axis.
ROOT::Math::XYZVector m_spherocityAxis
Spherocity axis.
Defines interface for accessing relations of objects in StoreArray.
ClassDef(RelationsInterface, 0)
defines interface for accessing relations of objects in StoreArray.
Abstract base class for different kinds of events.