00001
00012 #ifndef GRBCONSTANTS_HH
00013 #define GRBCONSTANTS_HH 1
00014 #include <string>
00015 #include <cmath>
00016 #include "CLHEP/Random/RandomEngine.h"
00017
00026 namespace cst
00027 {
00028
00030
00032
00034
00036
00037
00038
00039
00041 const double st = 6.65225e-25;
00043 const double mu0 = 4.0*M_PI*1.0e-7;
00045 const double BQ = 4.413e+13;
00047 const double c = 2.98e+10;
00049 const double c2 = c*c;
00051 const double hplanck = 4.13567e-15;
00053 const double pi = 3.1415926535897932385;
00055 const double Hubble = 6.5e+1;
00057 const double wzel = 0.0;
00059 const double csi = 1.0;
00061 const double alphae = .5;
00063 const double alphab = .1;
00066 const double p = 2.5;
00068 const double viscosity = 0.0;
00070 const int nstep = 300;
00072 const int enstep = 50;
00074 const double enmin = 1.0e+3;
00076 const double enmax =1.0e+12;
00077
00078
00079
00088 const float flagIC = 1;
00096 const bool flagQG = false;
00102 const bool savef=false;
00104 const std::string paramFile= "GRBdata.txt";
00121 const std::string pulse_shape="agauss";
00122 }
00123
00124 class GRBConstants
00125 {
00126 public:
00127
00128 GRBConstants();
00129
00130 ~GRBConstants() { }
00131
00133 static void InitializeRandom(long seed = 0);
00134
00135 static HepRandomEngine* GetTheRandomEngine(long seed = 0);
00136
00138 int ReadParam();
00139
00141 void Print();
00142
00144 void Save(bool flag=false);
00145
00146
00160 inline void setEngineType(int value){m_engineType = value;}
00161
00163 inline int EngineType(){return m_engineType;}
00164
00166
00167
00168
00169
00170
00172
00173 inline int Nshock() {return m_nshock;}
00174
00175 inline void setNshock(int value=10){m_nshock = value;}
00176
00177 inline double Duration(){return m_duration;}
00178
00179 inline void setDuration(double value=0.4){m_duration = value;}
00180
00181 inline double RiseTime(){return m_rt;}
00182
00183 inline void setRiseTime(double value=0.4){m_rt = value;}
00184
00185 inline double DecayTime(){return m_dt;}
00186
00187 inline void setDecayTime(double value=0.4){m_dt = value;}
00188
00189 inline double PeakEnergy(){return m_peak;}
00190
00191 inline void setPeakEnergy(double value=0.4){m_peak = value;}
00199 inline void setShellType(int value){m_shellType = value;}
00200
00202 inline int ShellType(){return m_shellType;}
00203
00205
00206 inline double ShellRadius(){return m_d0;}
00207
00208 inline void setShellRadius(double value){m_d0 = value;}
00209
00211
00212 inline double JetRadius(){return m_r0;}
00213
00214 inline void setJetRadius(double value){m_r0 = value;}
00215
00216 inline double JetAngle(){return m_angle;}
00217
00218 inline void setJetAngle(double value){m_angle = M_PI/180. * value;}
00219
00221
00222 inline double Thickness(){return m_t0;}
00223
00224 inline void setThickness(double value){m_t0 = value;}
00225
00226 inline double Etot(){return m_etot;}
00227
00228 inline void setEtot(double value){m_etot = value;}
00229
00230 inline double GammaMin(){return m_g0;}
00231
00232 inline void setGammaMin(double value=100.0){m_g0 = value;}
00233
00234 inline double GammaMax(){return m_g1;}
00235
00236 inline void setGammaMax(double value=1000.0){m_g1 = value;}
00237
00238 inline double Redshift() {return m_redshift;}
00239
00240 inline void setRedshift(double value=1.0){m_redshift = value;}
00245 inline void setEnergyPh(double value=25.0e+3){m_enph = value;}
00246
00247 inline double EnergyPh(){return m_enph;}
00248
00249 double Distance();
00250
00251 inline std::string GetParamFile() {return m_paramFile;}
00252
00253 private:
00254 char* m_burst_type;
00255
00256 double m_d0;
00257 int m_nshock;
00258 double m_r0;
00259 double m_angle;
00260 double m_redshift;
00261 double m_etot;
00262 double m_g0,m_g1;
00263 double m_t0;
00264 double m_duration;
00265 double m_rt,m_dt,m_peak;
00266 double m_enph;
00267 std::string m_paramFile;
00268 int m_engineType;
00269 int m_shellType;
00270 };
00271
00272 #endif
00273
00274