The NeutrinoFlux C++ class: a service for fluxes for weighting

 Authors and Mantained by:

Teresa Montaruli: teresa.montaruli@icecube.wisc.edu

Juan Carlos Diaz-Velez: juancarlos.diazvelez@icecube.wisc.edu

                                                                                                    People that contributed:

Erin Conrad: ecconrad@wisc.edu

Sujeet Akula: sakula@uwm.edu

Christine Lewis: christine.lewis@icecube.wisc.edu

Alessio Tamburro: alessio.tamburro@icecube.wisc.edu

 

Plots of atmospheric neutrino fluxes obtained using the NeutrinoFlux C++ class(*)  for “bartol” model and

different prompt models (see discussion and table below).

  

 

Plots of astrophysical neutrino fluxes obtained using NeutrinoFlux. For further details

see the discussion below.

 

 

NeutrinoFlux is a tool thought to evaluate the fluxes of neutrinos of any flavours at any energy value and (if needed) for any neutrino zenith angle.

This documentation is meant to explain the Fluxes and how to extract them.

The Doxigen documentation is available here.
The interfaces to IceTray for weighting purposes are developed by K. J. Meagher and OneWeight by C. Finley.
Few warnings are of relevance:


A polymorphic interface provides a common interface for 3 different kind of fluxes for the user convenence.
But it should be clear that while the conventional atmospheric neutrinos have a dependence on the zenith angle the other fluxes do not have it.


At the moment, this class can provide the user with the calculation of differential and integral fluxes of
atmospheric neutrinos (conventional neutrinos according to the models of Honda et al 2006, Bartol2004, HKKM2004 (obsolete, not recommended), and prompt neutrinos according to the models of Naumov RQPM/QGSM, Martin2003 and Costa2001) and with the calculation of diffuse and point-like fluxes of astrophysical neutrinos according to different theoretical models of emission from GRBs and AGNs. However, it can be used for every kind of fluxes!

It is warmly encouraged the use of the Bartol or the Honda 2006 fluxes (original tables for this last flux are much better than Bartol ones).

For prompt neutrinos a new model is available by R. Enberg, M.H. Reno and I. Sarcevic, PRD78 (2008) 043005. This is a pqcd model where parameters where changed so that the model is provided as a best prediction (std) and a max and min ones that provide the uncertainty. Some of the highest predictions (_opt models can be discarded since they seem really too optimistic!). Two models are available for nutau: Enberg et al and Martin (gbw).

Other tables could be implemented for atmospheric and astrophysical fluxes maintaining of course the structure required for the correct reading by the class. The class is completely independent from the ROOT framework.

There are two constructors in NeutrinoFlux according if the user wants to concentrate his/her study on the atmospheric or astrophysical neutrino fluxes.

 

 

The atmospheric neutrino fluxes.


AtmosphericNeutrinoFlux::AtmosphericNeutrinoFlux(string conv_model,string prompt_model) : conv_flux_(conv_model_nutype), prompt_flux_(prompt_model_nutype)

it should be used for getting an atmospheric conventional neutrinoflux summed to a promt neutrino flux.


If the user do not want to use one of the 2 contributions:

ConventionalNeutrinoFlux::ConventionalNeutrinoFlux(string model): model_(model_nutype)
PromptNeutrinoFlux::PromptNeutrinoFlux(string modelPrompt): model_(modelPrompt_nutype)

Flux model
modelConv (string type)
modelPrompt (string type)
Bartol 2004
bartol_numu, bartol_nue

HKKM2006
honda2006_numu,honda2006_nue

HKKM2004
honda_numu,honda_nue (only polynomium fit, obsolete)

Naumov/RQPM

naumov_rqpm_numu, naumov_rqpm_nue
Naumov/QGSM

naumov_qgsm_numu, naumov_qgsm_nue
Martin/KMS

martin_kms_numu, martin_kms_nue
Martin/MRS

martin_mrs_numu, martin_mrs_nue
Martin/GBW

martin_gbw_numu, martin_gbw_nue, martin_gbw_nutau
Enberg et al, 2008

sarcevic_std_numu, sarcevic_std_nue, sarcevic_min_numu, sarcevic_min_nue,
sarcevic_max_numu,sarcevic_max_nue, sarvevic_nutau
Costa 2001

pQCD_opt_numu, pQCD_opt_nue, pQCD_pes_numu, pQCD_opt_nue
RQPM_opt_numu, RQPM_opt_nue, RQPM_pes_numu, RQPM_pes_nue
QGSM_opt_numu, QGSM_opt_nue, QGSM_pes_numu, QGSM_pes_nue


 

When the constructor is initialized, it calls automatically two methods which open and read the tables of the parameters characterizing the models chosen by the user. These parameters were obtained previously by means of a polynomial 2-dimensional fitting of the original tables of different type of neutrinos and saved in files whom the constructor can read easily. The calculation of the fluxes requires either to call the method NeutrinoFlux::FluxAtmo(int neutType,  double  eNeut, double costheta),  to evaluate the differential flux at a given energy (in GeV) and cosine of the zenith angle and for a particular type of neutrino, or to call the method NeutrinoFlux::FluxAtmoInt(int neutType,  double  eNeut),  to evaluate the integral flux at a given energy (in GeV) and for a particular type of neutrino, that is a flux integrated over the lower hemisphere, so 2p steradians. The convention for the neutType variable is the same as that supported by IceTray, that is the user can assign the value 201 for ne, 202 for nmu, 204 for anti-ne and 205 for anti-nmu. A simple trial of the functionality of the class can be done having a look at the example below after having loaded a ROOT session.

 

Example of usage in ROOT for atmospheric neutrinos:
 

gSystem->Load("libneutrinoflux");

string conv_b = "bartol";
string prompt_r = "naumov_rqpm";
int neu_ty_numu = 202;
NeutrinoFlux *atmo_r = new AtmosphericNeutrinoFlux(conv_b, prompt_r);


similarly for an astrophysical flux:

NeutrinoFlux *microqso = new AstroNeutrinoFlux("CYGX1_mq");


NeutrinoFlux atmo;
atmo.NeutrinoFlux(“bartol”,”naumov_rqpm”);
Double_t t;
t = Atmo.FluxConv(204,100.,0.1);
cout << t << endl;

 

Bartol-Naumov/RQPM

 

nm

 


ne

 

 

Bartol-Naumov/QGSM

 

nm

 

 

ne

 

 

Honda -Naumov/RQPM

nm

 



ne

 

 

Honda -Naumov/QGSM

 

nm

 


ne

 

 

 

 

 

The astrophysical neutrino fluxes. The summary of names  see  this page.

 


The other constructor of the C++ NeutrinoFlux class which is required to evaluate
astrophysical neutrino fluxes is AstroNeutrinoFlux::AstroNeutrinoFlux(string modelname):model_(modelname)
 
for diffuse fluxes. The user assigns one of the model names below and the flux is returned in GeV-1 cm-2 s-1 sr-1. To get a flux the user must assign the energy value and (since NeutrinoFlux is polymorphic interface) the user should also provide a dummy value for cos(zenith).


The other contructor is
AstroPointNeutrinoFlux::AstroPointNeutrinoFlux(string modelname):
  model_(modelname) for point-like sources. The user can get the value of the declination using GetDecli and the valuse of the flux using GetFlux where again an energy value is needed and a dummy cos(zenith). The result is returned in  GeV-1 cm-2 s-1 according to the specific model chosen between the ones in the table.



In both cases for the astrophysical fluxes, when the constructor is initialized, it calls automatically the method which opens and reads the tables of the parameters characterizing the models chosen by the user. The considered astrophysical fluxes can be parametrized as a sum of power laws in a given energy intervals of the form

The A, B, C, D parameters can change in different energy intervals (for a maximum of 100 different intervals). Moreover the number of power laws that can be summed can vary from 1 to 100. Hence, the tables containing them have the following structure: the first number in the file is the number of lines or energy intervals (piece) and the following lines are

 

Emin

Emax

n. of par.

A

B

C

D

 

where Emin and Emax define the minimum and maximum energy for the particular interval of energy and n. of par. is the number of parameters in that interval. The tables of parameters for each model may contain more than 1 lines if the power laws varies in different energy intervals. If the user wants to implement his/her own model he/she should prepare a table of parameters in this format. The tables will have a number of lines equal to the energy intervals in which the flux has a different power law dependence.

 In the case of pointsources the first line in the data file is the declination of the source.


WARNING: these clusses can be called using only the neutrino (eg numu) but they return numu+anumu fluxes SO YOU DO NOT need to sum the GetFlux for numu and the one for anumu. Also most of these models where for no oscillations but some are including them so check the table here.