Isis 3 Programmer Reference
Photometry.h
1 #ifndef Photometry_h
2 #define Photometry_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include <string>
11 #include <vector>
12 #include <gsl/gsl_errno.h>
13 #include <gsl/gsl_math.h>
14 #include <gsl/gsl_min.h>
15 #include <gsl/gsl_roots.h>
16 
17 namespace Isis {
18  class Pvl;
19  class PhotoModel;
20  class AtmosModel;
21  class NormModel;
35  class Photometry {
36  public:
37  Photometry(Pvl &pvl);
38  Photometry() {};
39  virtual ~Photometry();
40 
42  void Compute(double pha, double inc, double ema, double dn,
43  double &albedo, double &mult, double &base);
44  void Compute(double pha, double inc, double ema, double deminc,
45  double demema, double dn, double &albedo,
46  double &mult, double &base);
47 
49  virtual void SetPhotomWl(double wl);
50 
53  static void minbracket(double &xa, double &xb, double &xc, double &fa,
54  double &fb, double &fc, double Func(double par, void *params),
55  void *params);
56 
58  static int brentminimizer(double x_lower, double x_upper, gsl_function *Func,
59  double & x_minimum, double tolerance);
60 
63  static int brentsolver(double x_lo, double x_hi, gsl_function *Func, double tolerance, double &root);
64 
65  PhotoModel *GetPhotoModel() const {
66  return p_phtPmodel;
67  }
68 
69  AtmosModel *GetAtmosModel() const {
70  return p_phtAmodel;
71  }
72 
73  NormModel *GetNormModel() const {
74  return p_phtNmodel;
75  }
76 
77  protected:
78  AtmosModel *p_phtAmodel;
79  PhotoModel *p_phtPmodel;
80  NormModel *p_phtNmodel;
81  };
82 };
83 
84 #endif
Isis::PhotoModel
Definition: PhotoModel.h:41
Isis::Photometry::~Photometry
virtual ~Photometry()
Destroy Photometry object.
Definition: Photometry.cpp:51
Isis::Photometry::SetPhotomWl
virtual void SetPhotomWl(double wl)
Set the wavelength.
Definition: Photometry.cpp:73
Isis::AtmosModel
Isotropic atmos scattering model.
Definition: AtmosModel.h:60
Isis::Photometry::minbracket
static void minbracket(double &xa, double &xb, double &xc, double &fa, double &fb, double &fc, double Func(double par, void *params), void *params)
Double precision version of bracketing algorithm ported from Python. Solution bracketing for 1-D mini...
Definition: Photometry.cpp:213
Isis::Photometry::Compute
void Compute(double pha, double inc, double ema, double dn, double &albedo, double &mult, double &base)
Calculate the surface brightness.
Definition: Photometry.cpp:83
Isis::Pvl
Container for cube-like labels.
Definition: Pvl.h:119
Isis::Photometry
Definition: Photometry.h:35
Isis::NormModel
Definition: NormModel.h:36
Isis::Photometry::brentminimizer
static int brentminimizer(double x_lower, double x_upper, gsl_function *Func, double &x_minimum, double tolerance)
Brent's method 1-D minimization routine using GSL's r8Brent minimization Algorithm.
Definition: Photometry.cpp:174
Isis::Photometry::brentsolver
static int brentsolver(double x_lo, double x_hi, gsl_function *Func, double tolerance, double &root)
GSL's the Brent-Dekker method (Brent's method) combines an interpolation strategy with the bisection ...
Definition: Photometry.cpp:131
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16