00001
00002
00003
00004
00005
00006
00007
00008 #ifndef GLAST_SPECTRUM_H
00009 #define GLAST_SPECTRUM_H
00010
00011 #include <string>
00012 #include <utility>
00013 #include <vector>
00014
00015
00016 class HepRandomEngine;
00017
00018
00021 class Spectrum {
00022 public:
00023
00024
00025
00026
00027
00028
00029
00030 virtual float operator()(float )const{return 0;};
00031
00032
00033
00034
00035
00036
00037
00038
00039
00041 virtual const char * particleName()const=0;
00042
00044 virtual double flux ( ) const;
00045
00046
00048 virtual double solidAngle()const;
00049
00051 virtual void setPosition ( double lat, double lon , double time=0);
00052
00054 virtual std::string title()const=0;
00055
00058 float fraction(float energy);
00059
00060
00061
00062
00063
00064 virtual ~Spectrum();
00065
00066
00067 virtual std::pair<float,float> dir(float energy)const;
00068
00070 virtual double energySrc(HepRandomEngine* engine);
00071 virtual std::pair<double,double> dir(double energy, HepRandomEngine* engine);
00072
00073
00074 protected:
00075 Spectrum(const std::vector<float>& ){};
00076 Spectrum()
00077 : m_lat(0), m_lon(0), m_time(0){}
00078
00079
00080 virtual void parseParamList(std::string input, std::vector<float>& output) const;
00081
00082 double m_lat, m_lon;
00083 double m_time;
00084 };
00085
00086 #endif