39 #ifndef _GATMO_FLUX_H_
40 #define _GATMO_FLUX_H_
46 #include <TLorentzVector.h>
47 #include <TRotation.h>
73 virtual bool End (
void) {
return false; }
74 virtual long int Index (
void) {
return -1; }
75 virtual void Clear (Option_t * opt);
79 double Enu (
void) {
return fgP4.Energy(); }
89 void SetRadii (
double Rlongitudinal,
double Rtransverse);
95 void AddFluxFile (
int neutrino_pdg,
string filename);
106 double GetFlux (
int flavour,
double energy);
107 double GetFlux (
int flavour,
double energy,
double costh);
108 double GetFlux (
int flavour,
double energy,
double costh,
double phi);
128 virtual bool FillFluxHisto (
int nu_pdg,
string filename) = 0;
163 #endif // _GATMO_FLUX_H_
int SelectNeutrino(double Ev, double costheta, double phi)
int fgPdgC
current generated nu pdg-code
vector< int > fFluxFlavour
input flux file for each neutrino species
map< int, TH3D * > fFluxHistoMap
flux = f(Ev,cos8,phi) for each neutrino species
double GetLongitudinalRadius(void)
double * fPhiBins
phi bins in input flux data files
vector< string > fFluxFile
input flux file for each neutrino species
unsigned int fNumEnergyBins
number of energy bins in input flux data files
double GetFluxSurfaceArea(void)
unsigned int fNumCosThetaBins
number of cos(theta) bins in input flux data files
TH3D * CreateNormalisedFluxHisto(TH3D *hist)
double fSpectralIndex
power law function used for weighted flux
TH3D * GetFluxHistogram(int flavour)
long int NFluxNeutrinos(void) const
Number of flux nu's generated. Not the same as the number of nu's thrown towards the geometry (if the...
long int fNNeutrinos
number of flux neutrinos thrown so far
void SetRadii(double Rlongitudinal, double Rtransverse)
double fRl
defining flux neutrino generation surface: longitudinal radius
bool fInitialized
flag to check that initialization is run
double GetTotalFluxInEnergyRange(void)
double GetFlux(int flavour)
virtual void GenerateWeighted(bool gen_weighted)
set whether to generate weighted or unweighted neutrinos
TRotation fRotTHz2User
coord. system rotation: THZ -> Topocentric user-defined
double GetTransverseRadius(void)
double fMinEvCut
user-defined cut: minimum energy
double fMaxEvCut
user-defined cut: maximum energy
void ForceMaxEnergy(double emax)
double fTotalFluxHistoIntg
fFluxSum2D integral
virtual double Weight(void)
returns the flux neutrino weight (if any)
virtual bool FillFluxHisto(int nu_pdg, string filename)=0
void SetSpectralIndex(double index)
bool fGenWeighted
generate a weighted or unweighted flux?
double * fCosThetaBins
cos(theta) bins in input flux data files
unsigned int fNumPhiBins
number of phi bins in input flux data files
double * fEnergyBins
energy bins in input flux data files
virtual double MaxEnergy(void)
declare the max flux neutrino energy that can be generated (for init. purposes)
virtual const TLorentzVector & Momentum(void)
returns the flux neutrino 4-momentum
double GetTotalFlux(void)
void SetUserCoordSystem(TRotation &rotation)
Rotation: Topocentric Horizontal -> User-defined Topocentric Coord System.
virtual long int Index(void)
returns corresponding index for current flux neutrino (e.g. for a flux ntuple returns the current ent...
virtual bool GenerateNext(void)
generate the next flux neutrino (return false in err)
TLorentzVector fgP4
current generated nu 4-momentum
virtual const PDGCodeList & FluxParticles(void)
declare list of flux neutrinos that can be generated (for init. purposes)
void ZeroFluxHisto(TH3D *hist)
map< int, TH3D * > fRawFluxHistoMap
flux = f(Ev,cos8,phi) for each neutrino species
double fRt
defining flux neutrino generation surface: transverse radius
void AddFluxFile(int neutrino_pdg, string filename)
virtual const TLorentzVector & Position(void)
returns the flux neutrino 4-position (note: expect SI rather than physical units) ...
TH3D * fTotalFluxHisto
flux = f(Ev,cos8,phi) summed over neutrino species
TH3D * CreateFluxHisto(string name, string title)
void ResetSelection(void)
virtual void Clear(Option_t *opt)
reset state variables based on opt
PDGCodeList * fPdgCList
input list of neutrino pdg-codes
bool GenerateNext_1try(void)
A base class for the FLUKA, BGLRS and ATMNC atmo. nu. flux drivers. The driver depends on data files ...
void ForceMinEnergy(double emin)
double fMaxEv
maximum energy (in input flux files)
TLorentzVector fgX4
current generated nu 4-position
virtual bool End(void)
true if no more flux nu's can be thrown (eg reaching end of beam sim ntuples)
double fWeight
current generated nu weight
GENIE Interface for user-defined flux classes.
virtual int PdgCode(void)
returns the flux neutrino pdg code