rivet is hosted by Hepforge, IPPP Durham
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 Base class for projections which define a spatial basis.
00012 
00013     A pure virtual interface for projections which define a set of 3
00014     basis vectors. This allows e.g. Thrust and Sphericity to be used
00015     interchangeably as defining bases for e.g. hemisphere mass and broadening
00016     calculations.
00017 
00018     @author Andy Buckley
00019    */
00020   class AxesDefinition : public Projection {
00021   public:
00022 
00023     /// Virtual destructor.
00024     virtual ~AxesDefinition() { }
00025 
00026     /// Clone on the heap.
00027     virtual const Projection* clone() const = 0;
00028 
00029     ///@{ Axis accessors, in decreasing order of significance.
00030     /// The main axis.
00031     virtual const Vector3& axis1() const = 0;
00032     /// The 2nd most significant ("major") axis.
00033     virtual const Vector3& axis2() const = 0;
00034     /// The least significant ("minor") axis.
00035     virtual const Vector3& axis3() const = 0;
00036     ///@}
00037 
00038   };
00039 
00040 }
00041 
00042 #endif