File: AxesDefinition.hh

package info (click to toggle)
rivet 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 22,900 kB
  • sloc: cpp: 47,222; sh: 10,328; python: 6,469; ansic: 1,710; makefile: 1,221
file content (42 lines) | stat: -rw-r--r-- 1,040 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// -*- C++ -*-
#ifndef RIVET_AxesDefinition_HH
#define RIVET_AxesDefinition_HH

#include "Rivet/Projection.hh"
#include "Rivet/Event.hh"

namespace Rivet {

  /**
    @brief Base class for projections which define a spatial basis.

    A pure virtual interface for projections which define a set of 3
    basis vectors. This allows e.g. Thrust and Sphericity to be used
    interchangeably as defining bases for e.g. hemisphere mass and broadening
    calculations.

    @author Andy Buckley
   */
  class AxesDefinition : public Projection {
  public:

    /// Virtual destructor.
    virtual ~AxesDefinition() { }

    /// Clone on the heap.
    virtual const Projection* clone() const = 0;

    ///@{ Axis accessors, in decreasing order of significance.
    /// The main axis.
    virtual const Vector3& axis1() const = 0;
    /// The 2nd most significant ("major") axis.
    virtual const Vector3& axis2() const = 0;
    /// The least significant ("minor") axis.
    virtual const Vector3& axis3() const = 0;
    ///@}

  };

}

#endif