icemc
Classes | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
SourceModel Class Reference

#include <source.hh>

Classes

struct  Restriction
 

Public Member Functions

 SourceModel (const char *model_name)
 
void setUpWeights (double t0, double t1, double minE=1e9, double maxE=1e12, int N=1e6)
 
void addSource (Source *source)
 
double getTimeWeight (double t, bool use_average_nonzero_flux=true) const
 
double getPerSourceTimeWeight (double t, int i, bool use_average_nonzero_flux=true) const
 
const char * getName () const
 
int getDirectionAndEnergy (Vector *nudir, double t, double &nuE, double minE=1e9, double maxE=1e12)
 
int getDirection (Vector &nudir, double t, double nuE=1e10)
 
TH1 * estimateFlux (double tmin, double tmax, double Emin, double Emax, int nbins=100, int Ntrials=1e6)
 
const SourcegetSource (int i) const
 
unsigned getNSources () const
 
virtual ~SourceModel ()
 
void computeFluxTimeChanges (std::vector< double > *changes) const
 

Static Public Member Functions

static SourceModelgetSourceModel (const char *key, Restriction r=Restriction())
 

Private Attributes

std::vector< Source * > sources
 
double weight_Emin
 
double weight_Emax
 
double average_flux
 
double average_nonzero_flux
 
std::vector< double > per_source_average_flux
 
std::vector< double > per_source_average_nonzero_flux
 
const char * name
 

Constructor & Destructor Documentation

◆ SourceModel()

SourceModel::SourceModel ( const char *  model_name)

◆ ~SourceModel()

SourceModel::~SourceModel ( )
virtual

Member Function Documentation

◆ addSource()

void SourceModel::addSource ( Source source)
inline

Add a source to our model. This class will then own the source (it will release its memory).

◆ computeFluxTimeChanges()

void SourceModel::computeFluxTimeChanges ( std::vector< double > *  changes) const

fills a vector with the times that sources turn on and off

◆ estimateFlux()

TH1 * SourceModel::estimateFlux ( double  tmin,
double  tmax,
double  Emin,
double  Emax,
int  nbins = 100,
int  Ntrials = 1e6 
)

◆ getDirection()

int SourceModel::getDirection ( Vector nudir,
double  t,
double  nuE = 1e10 
)
inline

Returns the index of the source used !

◆ getDirectionAndEnergy()

int SourceModel::getDirectionAndEnergy ( Vector nudir,
double  t,
double &  nuE,
double  minE = 1e9,
double  maxE = 1e12 
)

Returns the index of the source used !

◆ getName()

const char* SourceModel::getName ( ) const
inline

◆ getNSources()

unsigned SourceModel::getNSources ( ) const
inline

◆ getPerSourceTimeWeight()

double SourceModel::getPerSourceTimeWeight ( double  t,
int  i,
bool  use_average_nonzero_flux = true 
) const

◆ getSource()

const Source* SourceModel::getSource ( int  i) const
inline

◆ getSourceModel()

SourceModel * SourceModel::getSourceModel ( const char *  key,
SourceModel::Restriction  r = Restriction() 
)
static

Afterglow

◆ getTimeWeight()

double SourceModel::getTimeWeight ( double  t,
bool  use_average_nonzero_flux = true 
) const

◆ setUpWeights()

void SourceModel::setUpWeights ( double  t0,
double  t1,
double  minE = 1e9,
double  maxE = 1e12,
int  N = 1e6 
)

this must be called before asking for a time weight

Member Data Documentation

◆ average_flux

double SourceModel::average_flux
private

◆ average_nonzero_flux

double SourceModel::average_nonzero_flux
private

◆ name

const char* SourceModel::name
private

◆ per_source_average_flux

std::vector<double> SourceModel::per_source_average_flux
private

◆ per_source_average_nonzero_flux

std::vector<double> SourceModel::per_source_average_nonzero_flux
private

◆ sources

std::vector<Source*> SourceModel::sources
private

◆ weight_Emax

double SourceModel::weight_Emax
private

◆ weight_Emin

double SourceModel::weight_Emin
private

The documentation for this class was generated from the following files: