The class NeutrinoFlux
reads tables of parameters we extracted from fits of atmospheric
neutrino flux tables. The part below 700 GeV (this energy slightly
depends on the angle) we have used the original tables from MC
calculations (References in Teresa's
page) and for higher energies we use physics motivated functions
(read T. Gaisser textbook!) where we have derived the parameters by
fitting the MC tables between 700 GeV and 10 TeV. Normally the MCs run
out of statistics above 1 TeV so an physics motivated function is more
stable and allows to disentangle the contributions of parents decaying
(mainly kaons and some pions).
We use IceTray convention nue
= 66 anue = 67 numu = 68 anumu = 69 (for prompt nutau use 133 and 134
for anutau).
For atmospheric neutrinos the module returns values of the flux at
any energy (> 10 GeV) and cos(theta) between -1,1 (symmetry is
assumed at these energy between up and down atmospheric neutrino
fluxes). For prompt neutrinos numu, anumu, nue and anue are assumed to
beequal, nutau and anutau are different and equal between themselves,
but only one model from charm and beauty decays is considered. The
units of the diffuse fluxes are dN/dEdcos(theta) in
GeV^-1 cm^-2 s^-1 sr^-1 and of point-like source fluxes are GeV^-1
cm^-2 s^-1.
Notice the change in how to invoke the constructor in Nov 2007. Now
you need to specify not only the model name in the string but also the
kind of neutrino (numu for both Numu and NumuBar, Nue for both Nue and
NueBar and NuTau for both NuTau and NutauBar) for atmospheric
conventional and prompt neutrinos.
I3NuGenWeightingModule and OneWeight
make -f Makefile.standalone
Using the library in ROOT:
// Cint example gSystem->Load("libneutrinoflux.so");
ConventionalNeutrinoFlux convneutrinoflux(modelname_nutype);
//instantiate a new conventional neutrinoflux with modelname and add the neutrino type (_numu, _nue, _nutau) // After defining an object using the constructor specified in 1-a, use: double conv = convneutrinoflux.getFlux(neutType, E_neut, costheta);
// to return differential conventional neutrino fluxes in GeV^-1 cm^-2 s^-1 sr^-1 // neutType can be 66 (nue), 67 (anue), 68 (numu) or 69 (anumu) (IceTray convention) // E_neut can vary from 0. to whatever double value (physical dimension: GeV) // costheta can vary between -1. and 1. double convint = convneutrinoflux.getFluxIntegral(neutType, double E_neut);
// to return integrated conv. fluxes over the lower hemisphere (GeV^-1 cm^-2 s^-1) PromptNeutrinoFlux promptneutrinoflux(modelname);
double prompt = promptneutrinoflux.getFlux(neutType, E_neut, costheta);
// to return differential prompt neutrino fluxes in GeV^-1 cm^-2 s^-1 sr^-1 // The same specification for the input variables of case a) are valid double promptint = promptneutrinoflux.getFluxIntegral(neutType, E_neut);
// to return integrated prompt fluxes over the lower hemisphere (GeV^-1 cm^-2 s^-1) AtmosphericNeutrinoFlux atmoneutrinoflux(conv_model,prompt_model);
double atmo = atmoneutrinoflux.getFlux(neutType, E_neut, costheta);
// to return the complete differential spectrum including prompt and conventional // neutrinos in GeV^-1 cm^-2 s^-1 sr^-1 double atmoint = atmoneutrinoflux.getFluxIntegral(neutType, E_neut);
// to return the complete integrated spectrum including prompt and conventional // neutrinos in GeV^-1 cm^-2 s^-1 sr^-1 AstroNeutrinoFlux astroneutrinoflux(conv_model,prompt_model);
// After defining an object using the constructor specified in 1-b, use: double astro = astroneutrinoflux.getFlux(neutType, E_neut, costheta);
// to return diffuse (in GeV^-1 cm^-2 s^-1 sr^-1) or point-like (in // GeV^-1 cm^-2 s^-1) fluxes according if you read a table of diffuse // or point-like astrophysical flux // E can vary between 1. and 1.e12 GeV
------------------------------------------------------
|Parameters Error on the parameters (not used yet)|
| par[0] pare[0] |
| ........ ................ |
| par[14] pare[14] |
------------------------------------------------------