CARMA C++
SolidAngle.h
Go to the documentation of this file.
1 // $Id: SolidAngle.h,v 1.1 2010/12/13 21:06:32 eml Exp $
2 
3 #ifndef SZA_UTIL_SOLIDANGLE_H
4 #define SZA_UTIL_SOLIDANGLE_H
5 
15 #include <iostream>
16 
17 #include "carma/szautil/ConformableQuantity.h"
18 #include "carma/szautil/Angle.h"
19 
20 namespace sza {
21  namespace util {
22 
23  class SolidAngle : public ConformableQuantity {
24  public:
25 
26  class Steradians {};
27  class SqArcMinutes {};
28 
32  SolidAngle();
33  SolidAngle(const Steradians& units, double sr);
34  SolidAngle(const SqArcMinutes& units, double sqarcmin);
35  SolidAngle(Angle& fwhm);
36  SolidAngle(Angle& fwhma, Angle& fwhmb);
37 
41  virtual ~SolidAngle();
42 
43  void initialize();
44 
45  void setSr(double sr);
46  void setSqArcMin(double sqarcmin);
47 
48  inline double sqArcMin() {
49  return sr_ * Angle::arcMinPerRad_ * Angle::arcMinPerRad_;
50  }
51 
52  inline double sqDegrees() {
53  return sr_ * Angle::degPerRad_ * Angle::degPerRad_;
54  }
55 
56  inline double sr() {
57  return sr_;
58  }
59 
60  private:
61 
62  double sr_;
63 
64  }; // End class SolidAngle
65 
66  } // End namespace util
67 } // End namespace sza
68 
69 
70 
71 #endif // End #ifndef SZA_UTIL_SOLIDANGLE_H