00001
00012 #ifndef GRB_PULSE_H
00013 #define GRB_PULSE_H
00014
00015 #include <vector>
00016
00017 class HepRandomEngine;
00018
00019
00020
00021 class GRBpulse
00022 {
00023 public:
00024
00028 GRBpulse();
00029
00033 ~GRBpulse();
00034
00035
00036
00037
00038 const std::vector<double> &tmax() const { return m_tmax; }
00039 const std::vector< std::vector<double> > &pulse() { return m_pulse; }
00040 const std::vector<long> &nphotpul() const { return m_nphotpul; }
00041 double univFWHM() const { return m_univFWHM; }
00042
00043
00044
00048 long data(HepRandomEngine *engine, const double ethres, const long nphoton,
00049 const int npuls, const double duration);
00050
00051 private:
00052
00053
00054 const std::vector<double> &litude() const { return m_amplitude; }
00055 const std::vector<double> &tdiff() const { return m_tdiff; }
00056 const std::vector<double> &sigma() const { return m_sigma; }
00057
00058
00073 long createSigmaTdiff(HepRandomEngine *engine);
00074
00078 void fillVector(std::vector<long> &ngtwid) const;
00079
00083 double getAlpha(const double value) const;
00084
00090 void getAmplitude(HepRandomEngine *engine, const int npuls);
00091
00095 void getNphotpul(const long nphoton, const int npuls);
00096
00100 void getPulse(const int npuls);
00101
00105 void getTmax(HepRandomEngine *engine, const int npuls, const double duration);
00106
00110 long index(HepRandomEngine *engine, const long diff, const long minval,
00111 const std::vector<long> &in) const;
00112
00116 void pickWidth(HepRandomEngine *engine, const double ethres,
00117 const double duration);
00118
00131 void universalWidth(HepRandomEngine *engine, const double ethres,
00132 const double duration, const long diff, const long minval,
00133 const std::vector<long> &in, const std::vector<double> &v);
00134
00135
00136
00137 std::vector<double> m_amplitude;
00138 std::vector<double> m_tdiff;
00139 std::vector<double> m_tmax;
00140 std::vector<double> m_sigma;
00141 std::vector< std::vector<double> > m_pulse;
00142 std::vector<long> m_nphotpul;
00143 double m_univFWHM;
00144 };
00145
00146 #endif // GRB_PULSE_H