AxesDefinition.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_AxesDefinition_HH
00003 #define RIVET_AxesDefinition_HH
00004 
00005 #include "Rivet/Projection.hh"
00006 #include "Rivet/Event.hh"
00007 
00008 namespace Rivet {
00009 
00010   /**
00011     @brief A pure virtual interface for projections which define a set of 3
00012     basis vectors. This allows e.g. Thrust and Sphericity to be used
00013     interchangeably as defining bases for e.g. hemisphere mass and broadening
00014     calculations.
00015 
00016     @author Andy Buckley
00017    */
00018   class AxesDefinition : public Projection {
00019   public:
00020 
00021     /// Virtual destructor.
00022     virtual ~AxesDefinition() { }
00023 
00024     /// Clone on the heap.
00025     virtual const Projection* clone() const = 0;
00026 
00027     ///@{ Axis accessors, in decreasing order of significance.
00028     /// The main axis.
00029     virtual const Vector3& axis1() const = 0;
00030     /// The 2nd most significant ("major") axis.
00031     virtual const Vector3& axis2() const = 0;
00032     /// The least significant ("minor") axis.
00033     virtual const Vector3& axis3() const = 0;
00034     ///@}
00035 
00036   };
00037 
00038 }
00039 
00040 #endif