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