Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-05-12 09:05:01

0001 // -*- C++ -*-
0002 #ifndef RIVET_AxesDefinition_HH
0003 #define RIVET_AxesDefinition_HH
0004 
0005 #include "Rivet/Projection.hh"
0006 #include "Rivet/Event.hh"
0007 
0008 namespace Rivet {
0009 
0010 
0011   /// @brief Base class for projections which define a spatial basis.
0012   ///
0013   /// A pure virtual interface for projections which define a set of 3
0014   /// basis vectors. This allows e.g. Thrust and Sphericity to be used
0015   /// interchangeably as defining bases for e.g. hemisphere mass and broadening
0016   /// calculations.
0017   ///
0018   /// @author Andy Buckley
0019   class AxesDefinition : public Projection {
0020   public:
0021 
0022     /// Virtual destructor.
0023     virtual ~AxesDefinition() { }
0024 
0025     /// Clone on the heap.
0026     virtual unique_ptr<Projection> clone() const = 0;
0027 
0028     /// @{ Axis accessors, in decreasing order of significance.
0029     /// The main axis.
0030     virtual const Vector3& axis1() const = 0;
0031     /// The 2nd most significant ("major") axis.
0032     virtual const Vector3& axis2() const = 0;
0033     /// The least significant ("minor") axis.
0034     virtual const Vector3& axis3() const = 0;
0035     /// @}
0036 
0037 
0038     /// Import to avoid warnings about overload-hiding
0039     using Projection::operator =;
0040 
0041   };
0042 
0043 
0044 }
0045 
0046 #endif