Program Listing for File efficiency.h¶
↰ Return to documentation for file (include/efficiency.h)
#ifndef EFFICIENCY_H
#define EFFICIENCY_H
#include <string>
#include <vector>
#include <map>
class Efficiency {
public:
Efficiency();
virtual ~Efficiency();
virtual std::vector<double> get_efficiency(int order, std::vector<double> &wavelength);
virtual std::vector<double> get_efficiency(int order, std::vector<double> &wavelength, int N);
private:
};
class ConstantEfficiency : public Efficiency {
public:
ConstantEfficiency(double efficiency);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength, int N);
private:
double eff;
};
class GratingEfficiency : public Efficiency {
public:
GratingEfficiency(double peak_efficiency, double alpha, double blaze, double gpmm);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength, int N);
private:
double peak_efficiency;
double alpha;
double blaze;
double gpmm;
double calc_eff(double scalingfactor, int order, double alpha, double blaze, double wl, double n);
};
class CSVEfficiency : public Efficiency {
public:
CSVEfficiency(std::string path);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength);
std::vector<double> get_efficiency(int order, std::vector<double> &wavelength, int N);
private:
std::vector<double> wl;
std::vector<double> ef;
std::map<double, double> data;
};
#endif // EFFICIENCY_H