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