94 #ifndef _GASTRO_FLUX_H_
95 #define _GASTRO_FLUX_H_
100 #include <TLorentzVector.h>
101 #include <TVector3.h>
102 #include <TRotation.h>
141 virtual bool End (
void) {
return false; }
142 virtual long int Index (
void) {
return -1; }
143 virtual void Clear (Option_t * opt);
152 void SetRelNuPopulations (
double nnue=1,
double nnumu=2,
double nnutau=0,
double nnuebar=1,
double nnumubar=2,
double nnutaubar=0);
203 bool SelectNuPdg (
bool weighted,
const map<int,double> & nupdgpdf,
int & nupdg,
double & wght);
204 bool SelectEnergy(
bool weighted, TH1D & log10epdf,
double log10emin,
double log10emax,
double & log10e,
double & wght);
205 bool SelectOrigin(
bool weighted, TH2D & opdf,
double & phi,
double & costheta,
double & wght);
211 bool Go(
double phi_start,
double costheta_start,
const TVector3 & detector_centre,
double detector_sz,
int nu_pdg,
double Ev);
253 void AddPointSource(
string name,
double ra,
double dec,
double rel_intensity);
272 #endif // _GASTRO_FLUX_H_
virtual const TLorentzVector & Momentum(void)
returns the flux neutrino 4-momentum
void ForceMinEnergy(double emin)
TLorentzVector fgP4
(current) generated nu 4-momentum
virtual void Clear(Option_t *opt)
reset state variables based on opt
double fDetSize
(config) detector: size (detector should be enclosed in sphere of this radius)
double fMinEvCut
(config) user-defined minimum energy cut
bool fGenWeighted
(config) generate a weighted or unweighted flux?
virtual double MaxEnergy(void)
declare the max flux neutrino energy that can be generated (for init. purposes)
void SetEnergyPowLawIdx(double n)
TRotation fRotTHz2User
(config) coord. system rotation: THZ -> Topocentric user-defined
double fMaxEvCut
(config) user-defined maximum energy cut
void SetUserCoordSystem(TRotation &rotation)
rotation Topocentric Horizontal -> User-defined Topocentric Coord System
const double kAstroDefMaxEv
void ForceMaxEnergy(double emax)
int NuPdgAtDetVolBoundary(void)
map< int, double > fRelNuPopulations
(config) relative neutrino populations
static constexpr double km
map< int, double > fPntSrcRelI
relative intensity
map< int, string > fPntSrcName
point source name
virtual bool GenerateNext(void)
generate the next flux neutrino (return false in err)
bool SelectNuPdg(bool weighted, const map< int, double > &nupdgpdf, int &nupdg, double &wght)
virtual const PDGCodeList & FluxParticles(void)
declare list of flux neutrinos that can be generated (for init. purposes)
double fPntSrcTotI
sum of all relative intensities
double fDetGeoDepth
(config) detector: depth from surface
TRotation fRotGEF2THz
(config) coord. system rotation: GEF translated to detector centre -> THZ
virtual double Weight(void)
returns the flux neutrino weight (if any)
static constexpr double GeV
void ResetSelection(void)
TVector3 & P3AtDetVolBoundary(void)
TH2D * fSolidAngleAcceptance
double fDetGeoLongitude
(config) detector: geographic longitude
TVector3 & X3AtDetVolBoundary(void)
bool SelectEnergy(bool weighted, TH1D &log10epdf, double log10emin, double log10emax, double &log10e, double &wght)
NuPropagator(double stepsz)
virtual long int Index(void)
returns corresponding index for current flux neutrino (e.g. for a flux ntuple returns the current ent...
double fDetGeoLatitude
(config) detector: geographic latitude
void SetDetectorPosition(double latitude, double longitude, double depth, double size)
void AddPointSource(string name, double ra, double dec, double rel_intensity)
unsigned int fSelSourceId
PDGCodeList * fPdgCList
declared list of neutrino pdg-codes that can be thrown by current instance
int fgPdgC
(current) generated nu pdg-code
virtual const TLorentzVector & Position(void)
returns the flux neutrino 4-position (note: expect SI rather than physical units) ...
bool SelectOrigin(bool weighted, TH2D &opdf, double &phi, double &costheta, double &wght)
bool Go(double phi_start, double costheta_start, const TVector3 &detector_centre, double detector_sz, int nu_pdg, double Ev)
virtual void GenerateWeighted(bool gen_weighted)
set whether to generate weighted or unweighted neutrinos
map< int, double > fPntSrcDec
declination
map< int, double > fPntSrcRA
right ascension
const int kAstroNCosThetaBins
const int kAstroNlog10EvBins
TLorentzVector fgX4
(current) generated nu 4-position
A base class for the concrete astrophysical neutrino flux drivers.
bool GenerateNext(void)
generate the next flux neutrino (return false in err)
const double kAstroDefMinEv
virtual bool End(void)
true if no more flux nu's can be thrown (eg reaching end of beam sim ntuples)
virtual int PdgCode(void)
returns the flux neutrino pdg code
void SetRelNuPopulations(double nnue=1, double nnumu=2, double nnutau=0, double nnuebar=1, double nnumubar=2, double nnutaubar=0)
double fgWeight
(current) generated nu weight
GENIE Interface for user-defined flux classes.