00001
00011 #ifndef GRBmanager_H
00012 #define GRBmanager_H
00013
00014 #include <vector>
00015 #include <string>
00016 #include <map>
00017 #include <cmath>
00018 #include "FluxSvc/ISpectrum.h"
00019 #include "facilities/Observer.h"
00020 #include "src/GPS.h"
00021 #include "CLHEP/Random/RandomEngine.h"
00022 #include "GRBSpectrum.h"
00023
00024 class ISpectrum;
00025
00026 class GRBmanager : public ISpectrum
00027 {
00028
00029 public:
00046 GRBmanager(const std::string& params);
00047
00048 virtual ~GRBmanager();
00051 double flux(double time)const;
00057 double interval(double time);
00059 inline double solidAngle() const{return 1.0;}
00061 inline std::pair<double,double>
00062 dir(double energy, HepRandomEngine* engine)
00063 {return m_GRB->dir(energy, engine);}
00065 float operator() (float u) const;
00067 double energySrc(HepRandomEngine*, double time);
00068
00069 std::string title() const {return "GRBmanager";}
00070 const char * particleName() const {return "gamma";}
00071 const char * nameOf() const {return "GRBmanager";}
00072
00079 float parseParamList(std::string input, int index);
00080
00081 private:
00082
00083 GRBSpectrum* m_GRB;
00084 const std::string& m_params;
00085 float m_FirstTime;
00086 float m_initialTime;
00087 float m_timeToWait;
00088 float m_endTime;
00089 };
00090 #endif