00001
00002
00003
00004
00005
00006
00010
00011
00012
00029 #ifndef ALBEDO_P_SPECTRUM_H
00030 #define ALBEDO_P_SPECTRUM_H
00031
00032 #include "flux/Spectrum.h"
00033 #include "facilities/Observer.h"
00034 #include <string>
00035
00036
00037 class AlbedoPSpectrum : public Spectrum
00038 {
00039
00040 public:
00041 AlbedoPSpectrum(const std::string& params);
00042
00043 virtual double calculate_rate(double old_rate);
00044
00046 virtual double flux() const;
00047
00049 virtual double solidAngle()const;
00050
00052 virtual float flux(float lat, float lon) const;
00053 virtual float flux(std::pair<double, double> coords) const;
00054
00056 virtual float operator() (float)const;
00057
00059 virtual void setPosition(float lat, float lon);
00060 virtual void setPosition(std::pair<double,double> coords);
00061 int askGPS();
00062
00064 virtual std::pair<float,float> dir(float energy)const;
00065
00066 virtual std::string title() const;
00067 virtual const char * particleName() const;
00068 inline const char * nameOf() const {return "AlbedoPSpectrum";}
00069
00070
00072 void setParticleName(std::string name);
00073
00074
00075 private:
00076
00077 void init(const std::vector<float>& params);
00078
00080 float m_flux;
00081
00082 std::string m_particle_name;
00083 ObserverAdapter< AlbedoPSpectrum > m_observer;
00084 void FitParams(const double lat, const double lon, double& alf1,
00085 double& alf2, double& emin, double& emax, double& v1, double& v2,
00086 double& Ejoin) const;
00087 };
00088
00089 #endif // ALBEDO_P_SPECTRUM_H
00090