28 using namespace genie;
29 using namespace genie::flux;
36 <<
"Instantiating the GENIE HAKKM atmospheric neutrino flux driver";
42 GHAKKMAtmoFlux::~GHAKKMAtmoFlux()
64 <<
"HAKKM 3D flux: CosTheta bin " << i+1
90 <<
"HAKKM 3D flux: Phi bin " << i+1
113 double logEmax = TMath::Log10(1.);
114 double logEmin = TMath::Log10(0.1);
116 (logEmax - logEmin) /
121 fEnergyBins[i+1] = TMath::Power(10., logEmin + i*dlogE);
124 <<
"HAKKM 3D flux: Energy bin " << i+1
125 <<
": upper edge = " <<
fEnergyBins[i+1] <<
" GeV";
131 <<
"HAKKM 3D flux: Maximum energy = " <<
fMaxEv;
138 <<
"Loading HAKKM flux for neutrino: " << nu_pdg
139 <<
" from file: " << filename;
144 histo = myMapEntry->second;
147 LOG(
"Flux",
pERROR) <<
"Null flux histogram!";
151 ifstream flux_stream(filename.c_str(), ios::in);
153 LOG(
"Flux",
pERROR) <<
"Could not open file: " << filename;
162 while (!flux_stream.eof()) {
165 getline(flux_stream,comment);
166 LOG(
"Flux",
pDEBUG) <<
"Comment line from HAKKM input file: " << comment;
167 getline(flux_stream,comment);
168 LOG(
"Flux",
pDEBUG) <<
"Comment line from HAKKM input file: " << comment;
177 <<
"icostheta = " << icostheta <<
", iphi = " << iphi <<
" / "
180 <<
"The following set of (energy,flux) values corresponds to "
183 <<
" or [" << r2d *
fPhiBins[iphi-1] <<
", " << r2d *
fPhiBins[iphi] <<
"] deg) ";
195 flux_stream >> energy >> fnumu >> fnumubar >> fnue >> fnuebar;
204 if(nu_pdg ==
kPdgNuMu ) flux = fnumu;
206 if(nu_pdg ==
kPdgNuE ) flux = fnue;
209 <<
"Flux (nu_pdg = " << nu_pdg
210 <<
"; Ev = " << energy <<
" GeV / bin used = ["
212 <<
") = " << flux <<
" (m^2 sec sr GeV)^-1";
214 histo->SetBinContent(ienergy,icostheta,iphi,flux);
217 getline(flux_stream,comment);
double * fPhiBins
phi bins in input flux data files
unsigned int fNumEnergyBins
number of energy bins in input flux data files
const unsigned int kGHnd3DNumPhiBins
unsigned int fNumCosThetaBins
number of cos(theta) bins in input flux data files
bool FillFluxHisto(int nu_pdg, string filename)
const double kGHnd3DCosThetaMin
const unsigned int kGHnd3DNumLogEvBins
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
const double kGHnd3DCosThetaMax
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
const double kGHnd3DPhiMax
map< int, TH3D * > fRawFluxHistoMap
flux = f(Ev,cos8,phi) for each neutrino species
A driver for the HAKKM 3-D atmospheric neutrino flux (commonly known as the `Honda flux') ...
const unsigned int kGHnd3DNumCosThetaBins
A base class for the FLUKA, BGLRS and ATMNC atmo. nu. flux drivers. The driver depends on data files ...
double fMaxEv
maximum energy (in input flux files)
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
#define FLUXDRIVERREG4(_nsa, _nsb, _name, _fqname)
const double kGHnd3DPhiMin
const unsigned int kGHnd3DNumLogEvBinsPerDecade