00001 #ifndef GRBSpectrum_H
00002 #define GRBSpectrum_H
00003
00004 #include <vector>
00005 #include <string>
00006 #include <map>
00007 #include <cmath>
00008 #include "FluxSvc/ISpectrum.h"
00009 #include "facilities/Observer.h"
00010 #include "src/GPS.h"
00011 #include "CLHEP/Random/RandomEngine.h"
00012 #include "GRBSim.h"
00013
00025 class GRBSpectrum : public ISpectrum
00026 {
00027 friend class GRBmanager;
00028 public:
00048 GRBSpectrum(const std::string& params);
00049
00050 virtual ~GRBSpectrum()
00051 {
00052 delete m_grbsim;
00053 }
00057 double flux(double time)const;
00058
00064 double interval(double time);
00065
00067 inline std::pair<double,double>
00068 dir(double, HepRandomEngine*){return m_grbsim->GRBdir();}
00069
00073 float operator() (float u ) const ;
00082 double energySrc(HepRandomEngine* engine, double time);
00083
00084 std::string title() const {return "GRBSpectrum";}
00085
00086 const char * particleName() const {return "gamma";}
00087
00088 const char * nameOf() const {return "GRBSpectrum";}
00089
00090 private:
00091
00093 GRBSim* m_grbsim;
00094
00099 std::vector<double> m_spectrum;
00100 };
00101 #endif