1 #ifndef _icemc_source_hh 2 #define _icemc_source_hh 53 double startTime = 0,
double endTime= 2147483647)
60 void setUpWeights(
double t0,
double t1,
double minE = 1e9,
double maxE=1e12,
int N = 1e6);
67 double getTimeWeight(
double t,
bool use_average_nonzero_flux =
true)
const;
75 TH1 *
estimateFlux (
double tmin,
double tmax,
double Emin,
double Emax,
int nbins = 100,
int Ntrials = 1e6);
98 virtual double getFlux(
double E,
double t)
const = 0;
99 virtual double getFluxBetween(
double Emin,
double Emax,
double t)
const = 0;
100 virtual double pickEnergy(
double Emin,
double Emax,
double t, TRandom * rng = gRandom)
const = 0;
138 virtual double getFlux(
double E,
double t)
const 139 { (void) t;
return A * TMath::Power(E,-
gamma) ; }
141 { (void) t;
return A * ( TMath::Power(Emin,-
gamma+1) / (
gamma-1) - TMath::Power(Emax,-
gamma+1) / (
gamma-1)); }
142 virtual double pickEnergy(
double Emin,
double Emax,
double t, TRandom * rng = gRandom)
const;
163 virtual double getFlux(
double E,
double t)
const 165 if (t < t0 || t >
t1){
return 0; }
167 else return A * TMath::Power(E,-
gamma) ;
171 if (t < t0 || t >
t1){
return 0; }
176 virtual double pickEnergy(
double Emin,
double Emax,
double t, TRandom * rng = gRandom)
const;
Definition: source.hh:132
ConstantExponentialSourceFlux(double gamma, double norm, double normE=1e5)
Definition: source.cc:586
int getDirectionAndEnergy(Vector *nudir, double t, double &nuE, double minE=1e9, double maxE=1e12)
Definition: source.cc:518
const char * getName() const
Definition: source.hh:118
virtual void getFluxTimeChanges(std::vector< double > *changes) const
Definition: source.hh:179
virtual double pickEnergy(double Emin, double Emax, double t, TRandom *rng=gRandom) const
Definition: source.cc:594
virtual ~SourceFlux()
Definition: source.hh:102
const char * getName() const
Definition: source.hh:70
This class represents a three-vector. Operators are overloaded to provide for the familiar operations...
Definition: vector.hh:27
static SourceModel * getSourceModel(const char *key, Restriction r=Restriction())
Definition: source.cc:99
virtual double pickEnergy(double Emin, double Emax, double t, TRandom *rng=gRandom) const =0
Definition: source.hh:156
const char * name
Definition: source.hh:90
virtual double getFlux(double E, double t) const
Definition: source.hh:138
const Source * getSource(int i) const
Definition: source.hh:76
virtual double getFlux(double E, double t) const
Definition: source.hh:163
double whichStartTime
Definition: source.hh:48
double RA
Definition: source.hh:128
virtual double getFlux(double E, double t) const =0
double getRA() const
Definition: source.hh:119
double gamma
Definition: source.hh:182
double dec
Definition: source.hh:128
virtual void getFluxTimeChanges(std::vector< double > *changes) const
Definition: source.hh:101
double getPerSourceTimeWeight(double t, int i, bool use_average_nonzero_flux=true) const
Definition: source.cc:685
virtual ~SourceModel()
Definition: source.cc:31
double A
Definition: source.hh:183
std::vector< double > per_source_average_nonzero_flux
Definition: source.hh:89
std::vector< double > per_source_average_flux
Definition: source.hh:88
int getDirection(Vector &nudir, double t, double nuE=1e10)
Definition: source.hh:74
const SourceFlux * getFlux() const
Definition: source.hh:122
SourceModel(const char *model_name)
Definition: source.cc:22
const char * whichSubtype
Definition: source.hh:46
Vector getDirection(double t) const
Definition: source.cc:567
double weight_Emin
Definition: source.hh:84
double gamma
Definition: source.hh:146
double getTimeWeight(double t, bool use_average_nonzero_flux=true) const
Definition: source.cc:693
double average_flux
Definition: source.hh:86
TH1 * estimateFlux(double tmin, double tmax, double Emin, double Emax, int nbins=100, int Ntrials=1e6)
Definition: source.cc:473
virtual double getFluxBetween(double Emin, double Emax, double t) const
Definition: source.hh:140
virtual ~Source()
Definition: source.hh:123
Restriction(double max_dec=30, const char *sources="All", const char *subtype="All", double startTime=0, double endTime=2147483647)
Definition: source.hh:52
double average_nonzero_flux
Definition: source.hh:87
TF1 f
Definition: source.hh:184
double maxDec
Definition: source.hh:50
const char * whichSources
Definition: source.hh:47
double whichEndTime
Definition: source.hh:49
TF1 f
Definition: source.hh:148
double A
Definition: source.hh:147
double cutoff
Definition: source.hh:186
virtual double pickEnergy(double Emin, double Emax, double t, TRandom *rng=gRandom) const
Definition: source.cc:618
double weight_Emax
Definition: source.hh:85
double t1
Definition: source.hh:185
virtual double getFluxBetween(double Emin, double Emax, double t) const
Definition: source.hh:169
double t0
Definition: source.hh:185
unsigned getNSources() const
Definition: source.hh:77
Source(const char *name, double RA, double dec, SourceFlux *flux)
Definition: source.cc:562
TimeWindowedExponentialSourceFlux(double t0, double t1, double gamma, double norm, double normE=0.1, double cutoff=0)
Definition: source.cc:610
void addSource(Source *source)
Definition: source.hh:65
SourceFlux * flux
Definition: source.hh:127
Definition: source.hh:111
virtual double getFluxBetween(double Emin, double Emax, double t) const =0
void computeFluxTimeChanges(std::vector< double > *changes) const
Definition: source.cc:502
virtual ~TimeWindowedExponentialSourceFlux()
Definition: source.hh:177
std::vector< Source * > sources
Definition: source.hh:83
double getDec() const
Definition: source.hh:120
std::string name
Definition: source.hh:126
virtual ~ConstantExponentialSourceFlux()
Definition: source.hh:143
static double fromString(const char *time)
Definition: source.cc:69
void setUpWeights(double t0, double t1, double minE=1e9, double maxE=1e12, int N=1e6)
Definition: source.cc:634