Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
JAANET::JOscFlux Struct Reference

Implementation of oscillated neutrino flux. More...

#include <JOscFlux.hh>

Inheritance diagram for JAANET::JOscFlux:
JLANG::JClonable< JClonable_t, JDerived_t > JAANET::JAtmosphericNeutrinoFlux

Classes

struct  JOscFluxHelper
 Auxiliary class for I/O of oscillated flux. More...
 

Public Types

typedef JClonable< JClonable_t >::clone_type clone_type
 

Public Member Functions

 JOscFlux (const JDiffuseFluxHelper &diffuseFlux, const JOscProbHelper &oscProb)
 Constructor.
 
const JOscProbHelpergetOscProb () const
 Get oscillation probability calculator.
 
void setOscProb (const JOscProbHelper oscProb)
 Set oscillation probability calculator.
 
const JDiffuseFluxHelpergetDiffuseFlux () const
 Get diffuse flux function.
 
void setDiffuseFlux (const JDiffuseFluxHelper flux)
 Set diffuse flux function.
 
bool is_valid () const override final
 Check whether this oscillated neutrino flux object is valid.
 
double getFactor (const Evt &evt) const override final
 Get flux for given event.
 
JProperties getProperties (const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
 Get properties of this class.
 
JProperties getProperties (const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) const override final
 Get properties of this class.
 
virtual clone_type clone () const override
 Get clone of this object.
 

Private Attributes

JOscProbHelper P
 Oscillation probability calculator.
 
JDiffuseFluxHelper F
 Diffuse flux function.
 

Detailed Description

Implementation of oscillated neutrino flux.

Definition at line 42 of file JOscFlux.hh.

Member Typedef Documentation

◆ clone_type

template<class JClonable_t , class JDerived_t >
JClonable<JClonable_t>::clone_type JLANG::JClonable< JClonable_t, JDerived_t >::clone_type
inherited

Definition at line 61 of file JClonable.hh.

Constructor & Destructor Documentation

◆ JOscFlux()

JAANET::JOscFlux::JOscFlux ( const JDiffuseFluxHelper & diffuseFlux,
const JOscProbHelper & oscProb )
inline

Constructor.

Parameters
diffuseFluxdiffuse flux function object
oscProboscillation probability function object

Definition at line 51 of file JOscFlux.hh.

52 :
53 P(oscProb),
54 F(diffuseFlux)
55 {
56 check_validity();
57 }
JOscProbHelper P
Oscillation probability calculator.
Definition JOscFlux.hh:240
JDiffuseFluxHelper F
Diffuse flux function.
Definition JOscFlux.hh:241

Member Function Documentation

◆ getOscProb()

const JOscProbHelper & JAANET::JOscFlux::getOscProb ( ) const
inline

Get oscillation probability calculator.

Returns
oscillation probability calculator

Definition at line 65 of file JOscFlux.hh.

66 {
67 return P;
68 }

◆ setOscProb()

void JAANET::JOscFlux::setOscProb ( const JOscProbHelper oscProb)
inline

Set oscillation probability calculator.

Parameters
oscProboscillation probability calculator.

Definition at line 76 of file JOscFlux.hh.

77 {
78 using namespace JPP;
79
80 if (oscProb) {
81 this->P = oscProb;
82 } else {
83 THROW(JNullPointerException, "JOscFlux::setOscProb(): Given oscillation probability calculator is invalid.");
84 }
85 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for null pointer operation.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ getDiffuseFlux()

const JDiffuseFluxHelper & JAANET::JOscFlux::getDiffuseFlux ( ) const
inline

Get diffuse flux function.

Returns
diffuse flux function

Definition at line 93 of file JOscFlux.hh.

94 {
95 return F;
96 }

◆ setDiffuseFlux()

void JAANET::JOscFlux::setDiffuseFlux ( const JDiffuseFluxHelper flux)
inline

Set diffuse flux function.

Parameters
fluxdiffuse flux function

Definition at line 104 of file JOscFlux.hh.

105 {
106 using namespace std;
107 using namespace JPP;
108
109 if (flux && flux->is_valid()) {
110 this->F = flux;
111 } else if (flux) {
112 THROW(JValueOutOfRange, "JOscFlux::setFlux(): Given flux function is invalid: " << endl << *flux);
113 } else {
114 THROW(JNullPointerException, "JOscFlux::setFlux(): Given flux function is invalid.");
115 }
116 }
Exception for accessing a value in a collection that is outside of its range.
Neutrino flux.
Definition JHead.hh:906

◆ is_valid()

bool JAANET::JOscFlux::is_valid ( ) const
inlinefinaloverride

Check whether this oscillated neutrino flux object is valid.

Returns
true if valid; else false

Definition at line 124 of file JOscFlux.hh.

125 {
126 return (P && F && F->is_valid());
127 }
bool is_valid() const
Check whether this event-weight factor is valid.

◆ getFactor()

double JAANET::JOscFlux::getFactor ( const Evt & evt) const
inlinefinaloverride

Get flux for given event.

Note that in this evaluation the zenith-angle is defined
with respect to the line of sight (i.e. a neutrino pointing straight at you
from the center of the Earth has $ cos(\theta) = -1.0 $).

Parameters
evtevent
Returns
flux $ \left[\mathrm{GeV}^{-1} \, \mathrm{m}^{-2} \, \mathrm{sr}^{-1} \, \mathrm{s}^{-1}\right] $

Definition at line 140 of file JOscFlux.hh.

141 {
142 using namespace JPP;
143
144 double flux = 0.0;
145
146 const Trk& neutrino = get_neutrino(evt);
147 const double costh = -neutrino.dir.z;
148
149 const int interactionType = evt.w2list[W2LIST_GSEAGEN_CC];
150
151 if (interactionType == (int) JInteractionTypeGENIE_t::WEAK_CHARGED_CURRENT) {
152
153 for (int i = 0; i != NUMBER_OF_OSCCHANNELS; ++i) {
154
155 const JOscChannel& channel = getOscChannel[i];
156
157 const int inType = ((int) channel.Cparity) * ((int) channel.in);
158 const int outType = ((int) channel.Cparity) * ((int) channel.out);
159
160 if (outType == neutrino.type) {
161
162 flux += ( F.getFlux(inType, log10(neutrino.E), costh) *
163 P.getP (channel, neutrino.E, costh) );
164 }
165 }
166
167 } else if (interactionType == (int) JInteractionTypeGENIE_t::WEAK_NEUTRAL_CURRENT) { // For NC events, the neutrino flavour is irrelevant
168
169 const int Cparity = (int) getChargeParity(neutrino);
170
171 flux += (F.getFlux(Cparity * TRACK_TYPE_NUE, log10(neutrino.E), costh) +
172 F.getFlux(Cparity * TRACK_TYPE_NUMU, log10(neutrino.E), costh) +
173 F.getFlux(Cparity * TRACK_TYPE_NUTAU, log10(neutrino.E), costh));
174 }
175
176 return flux;
177 }
@ WEAK_NEUTRAL_CURRENT
Weak neutral current interaction.
@ WEAK_CHARGED_CURRENT
Weak charged current interaction.
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino.
JChargeParity_t getChargeParity(const int pdgType)
Auxiliary function for retrieving the charge-parity of a given PDG type.
std::vector< double > w2list
MC: factors that make up w[1]=w2 (see e.g. Tag list or km3net-dataformat/definitions)
Definition Evt.hh:43
double getFlux(const int type, const double log10E, const double costh) const
Get flux for given particle PDG-identifier, energy and zenith-angle.
Neutrino oscillation channel.
JChargeParity_t Cparity
Charge-parity.
JFlavour_t in
Incoming flavour.
JFlavour_t out
Outcoming flavour.
double getP(const JOscChannel &channel, const double energy, const double costh) const
Get oscillation probability corresponding to given oscillation channel, neutrino energy and zenith an...
The Trk class represents a Monte Carlo (MC) particle as well as a reconstructed track/shower.
Definition Trk.hh:15
int type
MC: particle type in PDG encoding.
Definition Trk.hh:24
Vec dir
track direction
Definition Trk.hh:18
double E
Energy [GeV] (either MC truth or reconstructed)
Definition Trk.hh:20
double z
Definition Vec.hh:14
static const int W2LIST_GSEAGEN_CC
Charged current interaction flag.

◆ getProperties() [1/2]

JProperties JAANET::JOscFlux::getProperties ( const JEquationParameters & eqpars = JEvtWeightFactor::getEquationParameters())
inlinefinaloverride

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 185 of file JOscFlux.hh.

186 {
187 return JOscFluxHelper(*this, eqpars);
188 }

◆ getProperties() [2/2]

JProperties JAANET::JOscFlux::getProperties ( const JEquationParameters & eqpars = JEvtWeightFactor::getEquationParameters()) const
inlinefinaloverride

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 196 of file JOscFlux.hh.

197 {
198 return JOscFluxHelper(*this, eqpars);
199 }

◆ clone()

template<class JClonable_t , class JDerived_t >
virtual clone_type JLANG::JClonable< JClonable_t, JDerived_t >::clone ( ) const
inlineoverridevirtualinherited

Member Data Documentation

◆ P

JOscProbHelper JAANET::JOscFlux::P
private

Oscillation probability calculator.

Definition at line 240 of file JOscFlux.hh.

◆ F

JDiffuseFluxHelper JAANET::JOscFlux::F
private

Diffuse flux function.

Definition at line 241 of file JOscFlux.hh.


The documentation for this struct was generated from the following file: