Isis 3 Programmer Reference
Photometry.h
1#ifndef Photometry_h
2#define Photometry_h
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
17namespace 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
Isotropic atmos scattering model.
Definition AtmosModel.h:60
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...
virtual void SetPhotomWl(double wl)
Set the wavelength.
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.
void Compute(double pha, double inc, double ema, double dn, double &albedo, double &mult, double &base)
Calculate the surface brightness.
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 ...
virtual ~Photometry()
Destroy Photometry object.
Container for cube-like labels.
Definition Pvl.h:119
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16