SatAndLight  2.2.2-hubble
Simulation toolkit for space telescopes
Loading...
Searching...
No Matches
SpecTime.h
Go to the documentation of this file.
1#ifndef __SpecTime__
2#define __SpecTime__
3
9#include <TF1.h>
10#include <TH2.h>
11#include <TGraphAsymmErrors.h>
12#include <TRandom3.h>
13#include "Extinction.h"
14
15using namespace std;
16
31class SpecTime: public Extinction{
32
33 public:
34
40
49 SpecTime(const int aNt, const double *aTimeBins,
50 const int aNe, const double *aEnergyBins);
51
53
65 SpecTime(const int aNt, const double aTimeMin, const double aTimeMax, const bool aUseTimeLog,
66 const int aNe, const double aEnergyMin, const double aEnergyMax, const bool aUseEnergyLog);
67
69
77 SpecTime(TH2D* aFlux, TH2D* aRate=NULL);
78
80
83 virtual ~SpecTime(void);
89
95 inline void SetPhotoElectricCrossSection(TGraph *aGraph){
96 delete photoelectric_xsec;
97 photoelectric_xsec = (TGraph*)aGraph->Clone("sp_xsec");
98 photoelectric_xsec->SetBit(TGraph::kIsSortedX);
99 };
100
102
113 void SetFlux(TH2D *aFlux, TGraph *aArea=NULL);
114
116
126 void ApplyExtinction(TGraph *aArea=NULL);
127
129
138 void MakeRate(const double aArea);
139
141
154 void MakeRate(TGraph *aArea);
155
157
170 int GetParticleN(const ULong64_t aTime, const UInt_t aDuration, const double aCosTheta=1.0);
171
173
176 inline double GetTimeMax(void){ return flux->GetXaxis()->GetBinUpEdge(flux->GetNbinsX()); };
177
179
182 inline double GetTimeMin(void){ return flux->GetXaxis()->GetBinLowEdge(1); };
183
185
197 TH1D* GetLightCurve(const double aEnergyMin=0.0, const double aEnergyMax=-1.0);
198
200
207 TH1D* GetMagnitude(TGraph *aEnergyTransmission);
208
210
219 double GetMagnitude(const double aTimeMin, const double aTimeMax, TGraph *aEnergyTransmission);
220
222
240 TH1D* GetSpectrum(const double aTimeMin=0.0, const double aTimeMax=-1.0, const bool aObserved=false);
241
243
255 void MakeUniform(const double aFlux, TGraph *aArea=NULL);
256
258
276 void MakeBandLimited(const double aFlux,
277 const double aEnergyMin, const double aEnergyMax,
278 TGraph *aArea=NULL);
279
281
301 void MakeExpDecayTime(const double aFlux, const double aTimeDecay,
302 const double aEnergyMin, const double aEnergyMax,
303 TGraph *aArea=NULL);
304
306
323 void MakeExpDecayEnergy(const double aFlux, const double aEnergyDecay,
324 TGraph *aArea=NULL);
325
327
346 void MakeGRBModel0(const double aFlux,
347 const double aTime0, const double aAlpha,
348 const double aEnergy0, const double aBeta,
349 TGraph *aArea=NULL);
350
352
375 void MakeGRBModel1(const double aFlux, const double aEnergy0,
376 const double aAlpha, const double aBeta,
377 TGraph *aArea=NULL);
378
380
438 void MakeGRBData(TH1D *aLightCurveExp,
439 const double aE1, const double aE2,
440 const double aPhotonIndex,
441 const double aNint, const double aNgal,
442 const double aZ, TGraph *aAreaExp,
443 TGraph *aArea=NULL);
444
446
452 double DrawEnergy(const double aTime);
453
455
460 inline TH2D* GetFlux(void){ return flux_x; };
461
463
467 inline TH2D* GetRate(void){ return rate; };
468
469 protected:
470
471 TH2D *flux;
472 TH2D *flux_x;
473 TH2D *rate;
474 TRandom3 *randgen;
475
476 private:
478 double **rate_cum;
479
480 void MakeCum(void);
481
482 void ConstructHistos(const int aNt, const double *aTimeBins,
483 const int aNe, const double *aEnergyBins);
484
485 ClassDef(SpecTime,0)
486};
487
488#endif
489
490
This module is used to model extinction processes.
Model extinction processes.
Definition Extinction.h:30
Astrophysical source spectra and light curves.
Definition SpecTime.h:31
void MakeCum(void)
Computes cumulative rate.
Definition SpecTime.cc:811
TH1D * GetLightCurve(const double aEnergyMin=0.0, const double aEnergyMax=-1.0)
Returns the source light curve between two energies.
Definition SpecTime.cc:310
double DrawEnergy(const double aTime)
Draws an energy value at a given time.
Definition SpecTime.cc:786
double GetTimeMax(void)
Returns the maximum time defining the SpecTime object.
Definition SpecTime.h:176
TH2D * rate
Source rate .
Definition SpecTime.h:473
virtual ~SpecTime(void)
SpecTime class destructor.
Definition SpecTime.cc:147
TH2D * GetRate(void)
Returns a pointer to the flux TH2D object.
Definition SpecTime.h:467
void MakeGRBModel0(const double aFlux, const double aTime0, const double aAlpha, const double aEnergy0, const double aBeta, TGraph *aArea=NULL)
Makes a SpecTime object using a GRB model (0).
Definition SpecTime.cc:582
void ConstructHistos(const int aNt, const double *aTimeBins, const int aNe, const double *aEnergyBins)
for constructors.
void MakeUniform(const double aFlux, TGraph *aArea=NULL)
Makes a uniform flux SpecTime object.
Definition SpecTime.cc:456
TH2D * GetFlux(void)
Returns a pointer to the flux TH2D object.
Definition SpecTime.h:460
void MakeGRBModel1(const double aFlux, const double aEnergy0, const double aAlpha, const double aBeta, TGraph *aArea=NULL)
Makes a SpecTime object using a GRB model (I).
Definition SpecTime.cc:615
void MakeGRBData(TH1D *aLightCurveExp, const double aE1, const double aE2, const double aPhotonIndex, const double aNint, const double aNgal, const double aZ, TGraph *aAreaExp, TGraph *aArea=NULL)
Makes a SpecTime object using GRB data.
Definition SpecTime.cc:654
int GetParticleN(const ULong64_t aTime, const UInt_t aDuration, const double aCosTheta=1.0)
Computes the number of particles generated between 2 times.
Definition SpecTime.cc:277
void MakeRate(const double aArea)
Computes the rate given a constant integration area.
Definition SpecTime.cc:231
void MakeExpDecayTime(const double aFlux, const double aTimeDecay, const double aEnergyMin, const double aEnergyMax, TGraph *aArea=NULL)
Makes a time exponential decay flux SpecTime object.
Definition SpecTime.cc:510
TH1D * GetMagnitude(TGraph *aEnergyTransmission)
Returns the magnitude light curve.
Definition SpecTime.cc:346
TRandom3 * randgen
Random generator.
Definition SpecTime.h:474
void ApplyExtinction(TGraph *aArea=NULL)
Applies extinction processes to the flux.
Definition SpecTime.cc:213
void SetFlux(TH2D *aFlux, TGraph *aArea=NULL)
Defines a new flux fonction.
Definition SpecTime.cc:160
double ** rate_cum
Cumulative rate (over ).
Definition SpecTime.h:478
TH2D * flux_x
Source flux after extinction.
Definition SpecTime.h:472
void SetPhotoElectricCrossSection(TGraph *aGraph)
Sets the photo-electric cross-section.
Definition SpecTime.h:95
void MakeBandLimited(const double aFlux, const double aEnergyMin, const double aEnergyMax, TGraph *aArea=NULL)
Makes a band-limited flux SpecTime object.
Definition SpecTime.cc:472
double GetTimeMin(void)
Returns the minimum time defining the SpecTime object.
Definition SpecTime.h:182
TH2D * flux
Source flux .
Definition SpecTime.h:471
void MakeExpDecayEnergy(const double aFlux, const double aEnergyDecay, TGraph *aArea=NULL)
Makes an energy exponential decay flux SpecTime object.
Definition SpecTime.cc:554
TGraph * photoelectric_xsec
Photo-electric cross-section.
Definition SpecTime.h:477
TH1D * GetSpectrum(const double aTimeMin=0.0, const double aTimeMax=-1.0, const bool aObserved=false)
Returns the source energy spectrum between two times.
Definition SpecTime.cc:412