class Rivet::Sphericity

Rivet::Sphericity

Calculate the sphericity event shape. More…

#include <Sphericity.hh>

Inherits from Rivet::AxesDefinition, Rivet::Projection, Rivet::ProjectionApplier

Public Functions

Name
Sphericity(double rparam =2.0)
Constructor.
Sphericity(const FinalState & fsp, double rparam =2.0)
DEFAULT_RIVET_PROJ_CLONE(Sphericity )
Clone on the heap.
voidclear()
Reset the projection.
doublesphericity() const
Sphericity.
doubletransSphericity() const
Transverse sphericity.
doubleplanarity() const
Planarity.
doubleaplanarity() const
Aplanarity.
const Vector3 &sphericityAxis() const
Sphericity axis.
const Vector3 &sphericityMajorAxis() const
Sphericity major axis.
const Vector3 &sphericityMinorAxis() const
Sphericity minor axis.
virtual const Vector3 &axis1() const
virtual const Vector3 &axis2() const
The 2nd most significant (“major”) axis.
virtual const Vector3 &axis3() const
The least significant (“minor”) axis.
doublelambda1() const
doublelambda2() const
doublelambda3() const
Vector3mkEigenVector(Matrix3 A, const double & lambda)
voidcalc(const FinalState & fs)
Manually calculate the sphericity, without engaging the caching system.
voidcalc(const Particles & particles)
Manually calculate the sphericity, without engaging the caching system.
voidcalc(const Jets & jets)
Manually calculate the sphericity, without engaging the caching system.
voidcalc(const vector< FourMomentum > & momenta)
Manually calculate the sphericity, without engaging the caching system.
voidcalc(const vector< Vector3 > & momenta)
Manually calculate the sphericity, without engaging the caching system.
virtual std::stringname() const
Get the name of the projection.
boolvalid() const
Get the state of the projetion.
boolfailed() const
Get the state of the projetion.
boolbefore(const Projection & p) const
virtual const std::set< PdgIdPair >beamPairs() const
Projection &addPdgIdPair(PdgId beam1, PdgId beam2)
std::set< ConstProjectionPtr >getProjections() const
Get the contained projections, including recursion.
boolhasProjection(const std::string & name) const
Does this applier have a projection registered under the name name?
template <typename PROJ >
const PROJ &
getProjection(const std::string & name) const
const Projection &getProjection(const std::string & name) const
template <typename PROJ >
const PROJ &
get(const std::string & name) const
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
applyProjection(const Event & evt, const Projection & proj) const
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
applyProjection(const Event & evt, const PROJ & proj) const
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
applyProjection(const Event & evt, const std::string & name) const
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
apply(const Event & evt, const Projection & proj) const
Apply the supplied projection on event evt (user-facing alias).
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
apply(const Event & evt, const PROJ & proj) const
Apply the supplied projection on event evt (user-facing alias).
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
apply(const Event & evt, const std::string & name) const
Apply the supplied projection on event evt (user-facing alias).
template
std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & >
apply(const std::string & name, const Event & evt) const
Apply the supplied projection on event evt (convenience arg-reordering alias).
voidmarkAsOwned() const
Mark this object as owned by a proj-handler.
virtual unique_ptr< Projection >clone() const =0
Clone on the heap.

Protected Functions

Name
virtual voidproject(const Event & e)
Perform the projection on the Event.
virtual CmpStatecompare(const Projection & p) const
Compare with other projections.
Log &getLog() const
Get a Log object based on the getName() property of the calling projection object.
voidsetName(const std::string & name)
Used by derived classes to set their name.
voidfail()
Set the projection in an unvalid state.
Cmp< Projection >mkNamedPCmp(const Projection & otherparent, const std::string & pname) const
Cmp< Projection >mkPCmp(const Projection & otherparent, const std::string & pname) const
ProjectionHandler &getProjHandler() const
Get a reference to the ProjectionHandler for this thread.
template <typename PROJ >
const PROJ &
declareProjection(const PROJ & proj, const std::string & name)
Register a contained projection.
template <typename PROJ >
const PROJ &
declare(const PROJ & proj, const std::string & name)
Register a contained projection (user-facing version)
template <typename PROJ >
const PROJ &
declare(const std::string & name, const PROJ & proj)
Register a contained projection (user-facing, arg-reordered version)

Additional inherited members

Public Functions inherited from Rivet::AxesDefinition

Name
virtual~AxesDefinition()
Virtual destructor.

Public Functions inherited from Rivet::Projection

Name
Projection()
The default constructor.
virtual~Projection()
The destructor.

Protected Functions inherited from Rivet::Projection

Name
virtual Projection &operator=(const Projection & )
Block Projection copying.

Friends inherited from Rivet::Projection

Name
classEvent
Event is a friend.
classCmp< Projection >
The Cmp specialization for Projection is a friend.

Public Functions inherited from Rivet::ProjectionApplier

Name
ProjectionApplier()
Constructor.
virtual~ProjectionApplier()

Detailed Description

class Rivet::Sphericity;

Calculate the sphericity event shape.

The sphericity tensor (or quadratic momentum tensor) is defined as [ S^{\alpha \beta} = \frac{\sum_i p_i^\alpha p_i^\beta}{\sum_i |\mathbf{p}_i|^2} ], where the Greek indices are spatial components and the Latin indices are used for sums over particles. From this, the sphericity, aplanarity and planarity can be calculated by combinations of eigenvalues.

Defining the three eigenvalues ( \lambda_1 \ge \lambda_2 \ge \lambda_3 ), with ( \lambda_1 + \lambda_2 + \lambda_3 = 1 ), the sphericity is [ S = \frac{3}{2} (\lambda_2 + \lambda_3) ]

The aplanarity is ( A = \frac{3}{2}\lambda_3 ) and the planarity is ( P = \frac{2}{3}(S-2A) = \lambda_2 - \lambda_3 ). The eigenvectors define a set of spatial axes comparable with the thrust axes, but more sensitive to high momentum particles due to the quadratic sensitivity of the tensor to the particle momenta.

Since the sphericity is quadratic in the particle momenta, it is not an infrared safe observable in perturbative QCD. This can be fixed by adding a regularizing power of (r) to the definition: [ S^{\alpha \beta} = \frac{\sum_i |\mathbf{p}_i|^{r-2} p_i^\alpha p_i^\beta} {\sum_i |\mathbf{p}_i|^r} ]

(r) is available as a constructor argument on this class and will be taken into account by the Cmp operation, so a single analysis can use several sphericity projections with different (r) values without fear of a clash.

Public Functions Documentation

function Sphericity

inline Sphericity(
    double rparam =2.0
)

Constructor.

function Sphericity

Sphericity(
    const FinalState & fsp,
    double rparam =2.0
)

function DEFAULT_RIVET_PROJ_CLONE

DEFAULT_RIVET_PROJ_CLONE(
    Sphericity 
)

Clone on the heap.

function clear

void clear()

Reset the projection.

function sphericity

inline double sphericity() const

Sphericity.

function transSphericity

inline double transSphericity() const

Transverse sphericity.

function planarity

inline double planarity() const

Planarity.

function aplanarity

inline double aplanarity() const

Aplanarity.

function sphericityAxis

inline const Vector3 & sphericityAxis() const

Sphericity axis.

function sphericityMajorAxis

inline const Vector3 & sphericityMajorAxis() const

Sphericity major axis.

function sphericityMinorAxis

inline const Vector3 & sphericityMinorAxis() const

Sphericity minor axis.

function axis1

inline virtual const Vector3 & axis1() const

Reimplements: Rivet::AxesDefinition::axis1

Axis accessors, in decreasing order of significance. The main axis.

function axis2

inline virtual const Vector3 & axis2() const

The 2nd most significant (“major”) axis.

Reimplements: Rivet::AxesDefinition::axis2

function axis3

inline virtual const Vector3 & axis3() const

The least significant (“minor”) axis.

Reimplements: Rivet::AxesDefinition::axis3

function lambda1

inline double lambda1() const

function lambda2

inline double lambda2() const

function lambda3

inline double lambda3() const

function mkEigenVector

Vector3 mkEigenVector(
    Matrix3 A,
    const double & lambda
)

function calc

void calc(
    const FinalState & fs
)

Manually calculate the sphericity, without engaging the caching system.

function calc

void calc(
    const Particles & particles
)

Manually calculate the sphericity, without engaging the caching system.

function calc

void calc(
    const Jets & jets
)

Manually calculate the sphericity, without engaging the caching system.

function calc

void calc(
    const vector< FourMomentum > & momenta
)

Manually calculate the sphericity, without engaging the caching system.

function calc

void calc(
    const vector< Vector3 > & momenta
)

Manually calculate the sphericity, without engaging the caching system.

This one actually does the calculation

function name

inline virtual std::string name() const

Get the name of the projection.

Reimplements: Rivet::ProjectionApplier::name

function valid

inline bool valid() const

Get the state of the projetion.

function failed

inline bool failed() const

Get the state of the projetion.

function before

bool before(
    const Projection & p
) const

Determine whether this object should be ordered before the object p given as argument. If p is of a different class than this, the before() function of the corresponding type_info objects is used. Otherwise, if the objects are of the same class, the virtual compare(const Projection &) will be returned.

function beamPairs

virtual const std::set< PdgIdPair > beamPairs() const

Todo: Remove the beam constraints system from projections.

Return the allowed beam pairs on which this projection can operate, not including recursion. Derived classes should ensure that all contained projections are registered in the _projections set for the beam constraint chaining to work.

function addPdgIdPair

inline Projection & addPdgIdPair(
    PdgId beam1,
    PdgId beam2
)

Todo: This deserves a better name!

Add a colliding beam pair.

function getProjections

inline std::set< ConstProjectionPtr > getProjections() const

Get the contained projections, including recursion.

function hasProjection

inline bool hasProjection(
    const std::string & name
) const

Does this applier have a projection registered under the name name?

function getProjection

template <typename PROJ >
inline const PROJ & getProjection(
    const std::string & name
) const

Todo: Add SFINAE to require that PROJ inherit from Projection

Get the named projection, specifying return type via a template argument.

function getProjection

inline const Projection & getProjection(
    const std::string & name
) const

Get the named projection (non-templated, so returns as a reference to a Projection base class).

function get

template <typename PROJ >
inline const PROJ & get(
    const std::string & name
) const

Todo: Add SFINAE to require that PROJ inherit from Projection

Get the named projection, specifying return type via a template argument (user-facing alias).

function applyProjection

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
    const Event & evt,
    const Projection & proj
) const

Deprecated:

Prefer the simpler apply<> form

Apply the supplied projection on event evt.

function applyProjection

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
    const Event & evt,
    const PROJ & proj
) const

Deprecated:

Prefer the simpler apply<> form

Apply the supplied projection on event evt.

function applyProjection

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
    const Event & evt,
    const std::string & name
) const

Deprecated:

Prefer the simpler apply<> form

Apply the named projection on event evt.

function apply

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
    const Event & evt,
    const Projection & proj
) const

Apply the supplied projection on event evt (user-facing alias).

function apply

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
    const Event & evt,
    const PROJ & proj
) const

Apply the supplied projection on event evt (user-facing alias).

function apply

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
    const Event & evt,
    const std::string & name
) const

Apply the supplied projection on event evt (user-facing alias).

function apply

template <typename PROJ  =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
    const std::string & name,
    const Event & evt
) const

Apply the supplied projection on event evt (convenience arg-reordering alias).

function markAsOwned

inline void markAsOwned() const

Mark this object as owned by a proj-handler.

function clone

virtual unique_ptr< Projection > clone() const =0

Clone on the heap.

Reimplements: Rivet::Beam::clone

Protected Functions Documentation

function project

virtual void project(
    const Event & e
)

Perform the projection on the Event.

Reimplements: Rivet::AxesDefinition::project

function compare

virtual CmpState compare(
    const Projection & p
) const

Compare with other projections.

Reimplements: Rivet::AxesDefinition::compare

function getLog

inline Log & getLog() const

Get a Log object based on the getName() property of the calling projection object.

function setName

inline void setName(
    const std::string & name
)

Used by derived classes to set their name.

function fail

inline void fail()

Set the projection in an unvalid state.

function mkNamedPCmp

Cmp< Projection > mkNamedPCmp(
    const Projection & otherparent,
    const std::string & pname
) const

Shortcut to make a named Cmp comparison with the *this object automatically passed as one of the parent projections.

function mkPCmp

Cmp< Projection > mkPCmp(
    const Projection & otherparent,
    const std::string & pname
) const

Note: Alias for mkNamedPCmp

Shortcut to make a named Cmp comparison with the *this object automatically passed as one of the parent projections.

function getProjHandler

inline ProjectionHandler & getProjHandler() const

Get a reference to the ProjectionHandler for this thread.

function declareProjection

template <typename PROJ >
inline const PROJ & declareProjection(
    const PROJ & proj,
    const std::string & name
)

Register a contained projection.

Todo: Add SFINAE to require that PROJ inherit from Projection

The type of the argument is used to instantiate a new projection internally: this new object is applied to events rather than the argument object. Hence you are advised to only use locally-scoped Projection objects in your Projection and Analysis constructors, and to avoid polymorphism (e.g. handling ConcreteProjection via a pointer or reference to type Projection) since this will screw up the internal type management.

function declare

template <typename PROJ >
inline const PROJ & declare(
    const PROJ & proj,
    const std::string & name
)

Register a contained projection (user-facing version)

Todo: Add SFINAE to require that PROJ inherit from Projection

function declare

template <typename PROJ >
inline const PROJ & declare(
    const std::string & name,
    const PROJ & proj
)

Register a contained projection (user-facing, arg-reordered version)

Todo: Add SFINAE to require that PROJ inherit from Projection


Updated on 2022-08-07 at 20:17:17 +0100