Jpp  19.1.0
the software that should make you happy
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t > Class Template Referencefinal

Template definition for Honda flux table interpolator. More...

#include <JHondaFluxInterpolator.hh>

Inheritance diagram for JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >:
JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t > JLANG::JClonable< JClonable_t, JDerived_t > JEEP::JMessage< T > JTOOLS::JMultiMap< JFunction_t::argument_type, JFunction_t, JMaplist_t, JDistance< typename JFunction_t::argument_type > >

Classes

struct  JHondaFluxInterpolatorHelper
 Auxiliary class for I/O of Honda flux interpolator. More...
 

Public Types

enum  { NUMBER_OF_DIMENSIONS = multifunction_type::NUMBER_OF_DIMENSIONS }
 
typedef JMAPLIST< JEnergyFunctionalMap_t, JCoszFunctionalMap_t >::maplist JFunctionalMaplist_t
 
typedef JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t > interpolator_type
 
typedef JMultiFunction< JPhiFunction_t, JFunctionalMaplist_tmultifunction_type
 
typedef multifunction_type::abscissa_type abscissa_type
 
typedef multifunction_type::argument_type argument_type
 
typedef multifunction_type::result_type result_type
 
typedef multifunction_type::value_type value_type
 
typedef multifunction_type::multimap_type multimap_type
 
typedef multifunction_type::super_const_iterator super_const_iterator
 
typedef multifunction_type::super_iterator super_iterator
 
typedef multifunction_type::function_type function_type
 
typedef JRange< abscissa_typeJRange_t
 
enum  { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS }
 
typedef multimap_type::ordinate_type ordinate_type
 
typedef multimap_type::const_iterator const_iterator
 
typedef multimap_type::const_reverse_iterator const_reverse_iterator
 
typedef multimap_type::iterator iterator
 
typedef multimap_type::reverse_iterator reverse_iterator
 
typedef JClonable< JClonable_t >::clone_type clone_type
 

Public Member Functions

 JHondaFluxInterpolator ()
 Default constructor. More...
 
 JHondaFluxInterpolator (const char *fileName)
 Constructor. More...
 
void load (const char *const fileName)
 Load oscillation probability table from file. More...
 
bool is_valid () const override final
 Check whether this interpolator is valid. More...
 
double getFactor (const int type, const double log10E, const double costh, const double phi) const
 Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle. More...
 
double getFlux (const int type, const double log10E, const double costh, const double phi) const
 Get flux of given event. More...
 
double operator() (const int type, const double log10E, const double costh, const double phi) const
 Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle. More...
 
double getFactor (const Evt &evt) const override final
 Get flux of given event. More...
 
double getFlux (const Evt &event) const
 Get flux of given event. More...
 
JProperties getProperties (const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
 Get properties of this class. More...
 
JProperties getProperties (const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) const override final
 Get properties of this class. More...
 
std::istream & read (std::istream &in) override final
 Stream input. More...
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function. More...
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function. More...
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input. More...
 
void compile ()
 Compilation. More...
 
void setExceptionHandler (const typename function_type::supervisor_type &supervisor)
 Set the supervisor for handling of exceptions. More...
 
template<class ... Args>
result_type operator() (const Args &...args) const
 Multi-dimensional interpolation method call. More...
 
virtual clone_type clone () const override
 Get clone of this object. More...
 

Static Public Attributes

static int debug = 0
 debug level (default is off). More...
 

Protected Member Functions

template<unsigned int N, class __JAbscissa_t , class __JContents_t , template< class, class, class > class __JMap_t, class __JDistance_t >
void insert (const JMultiKey< N, argument_type > &key, const JHistogramMap< __JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t > &input)
 Insert multidimensional histogram at multidimensional key. More...
 
template<class __JElement_t , template< class, class > class __JContainer_t, class __JDistance_t >
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &input)
 Convert one-dimensional histogram to PDF and insert result at given multidimensional key. More...
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &key, const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Convert multidimensional histogram to PDF and insert result at given multidimensional key. More...
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, argument_typebuffer
 

Private Attributes

std::string table
 Table filename. More...
 
JRange_t coszRange
 Zenith angle range. More...
 
JRange_t phiRange
 Azimuth angle range [deg]. More...
 

Detailed Description

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
class JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >

Template definition for Honda flux table interpolator.

Definition at line 193 of file JHondaFluxInterpolator.hh.

Member Typedef Documentation

◆ JFunctionalMaplist_t

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef JMAPLIST<JEnergyFunctionalMap_t, JCoszFunctionalMap_t>::maplist JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JFunctionalMaplist_t

Definition at line 200 of file JHondaFluxInterpolator.hh.

◆ interpolator_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef JHondaFluxInterpolator<JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::interpolator_type

Definition at line 202 of file JHondaFluxInterpolator.hh.

◆ multifunction_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef JMultiFunction<JPhiFunction_t, JFunctionalMaplist_t> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::multifunction_type

Definition at line 203 of file JHondaFluxInterpolator.hh.

◆ abscissa_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::abscissa_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::abscissa_type

Definition at line 207 of file JHondaFluxInterpolator.hh.

◆ argument_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::argument_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::argument_type

Definition at line 208 of file JHondaFluxInterpolator.hh.

◆ result_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::result_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::result_type

Definition at line 209 of file JHondaFluxInterpolator.hh.

◆ value_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::value_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::value_type

Definition at line 210 of file JHondaFluxInterpolator.hh.

◆ multimap_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::multimap_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::multimap_type

Definition at line 212 of file JHondaFluxInterpolator.hh.

◆ super_const_iterator

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::super_const_iterator JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::super_const_iterator

Definition at line 214 of file JHondaFluxInterpolator.hh.

◆ super_iterator

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::super_iterator JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::super_iterator

Definition at line 215 of file JHondaFluxInterpolator.hh.

◆ function_type

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef multifunction_type::function_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::function_type

Definition at line 216 of file JHondaFluxInterpolator.hh.

◆ JRange_t

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
typedef JRange<abscissa_type> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JRange_t

Definition at line 218 of file JHondaFluxInterpolator.hh.

◆ ordinate_type

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::ordinate_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::ordinate_type
inherited

Definition at line 57 of file JMultiFunction.hh.

◆ const_iterator

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::const_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_iterator
inherited

Definition at line 60 of file JMultiFunction.hh.

◆ const_reverse_iterator

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::const_reverse_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::const_reverse_iterator
inherited

Definition at line 61 of file JMultiFunction.hh.

◆ iterator

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::iterator
inherited

Definition at line 62 of file JMultiFunction.hh.

◆ reverse_iterator

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
typedef multimap_type::reverse_iterator JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::reverse_iterator
inherited

Definition at line 63 of file JMultiFunction.hh.

◆ clone_type

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

Definition at line 61 of file JClonable.hh.

Member Enumeration Documentation

◆ anonymous enum

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
anonymous enum

◆ anonymous enum

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
anonymous enum
inherited
Enumerator
NUMBER_OF_DIMENSIONS 

Definition at line 49 of file JMultiFunction.hh.

49 { NUMBER_OF_DIMENSIONS = JMapLength<JMaplist_t>::value + JFunction_t::NUMBER_OF_DIMENSIONS };
Length of map list.
Definition: JMapList.hh:45

Constructor & Destructor Documentation

◆ JHondaFluxInterpolator() [1/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JHondaFluxInterpolator ( )
inline

Default constructor.

Definition at line 224 of file JHondaFluxInterpolator.hh.

224  :
225  table(),
226  coszRange(0.0, -1.0),
227  phiRange (0.0, -1.0)
228  {}
JRange_t phiRange
Azimuth angle range [deg].
JRange_t coszRange
Zenith angle range.
std::string table
Table filename.

◆ JHondaFluxInterpolator() [2/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JHondaFluxInterpolator ( const char *  fileName)
inline

Constructor.

Parameters
fileNameoscillation probability table filename

Definition at line 236 of file JHondaFluxInterpolator.hh.

236  :
238  {
239  this->load(fileName);
240  this->check_validity();
241  }
JHondaFluxInterpolator()
Default constructor.
void load(const char *const fileName)
Load oscillation probability table from file.

Member Function Documentation

◆ load()

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
void JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::load ( const char *const  fileName)
inline

Load oscillation probability table from file.

Parameters
fileNameoscillation probability table filename

Definition at line 249 of file JHondaFluxInterpolator.hh.

250  {
251  using namespace std;
252  using namespace JPP;
253 
254  try {
255 
256  NOTICE("Loading Honda flux table from file " << fileName << "... " << flush);
257 
258  multimap_type& zmap = static_cast<multimap_type&>(*this);
259 
260  ifstream ifs(fileName);
261 
262  JHondaAngularBinSpecs binspecs;
263 
264  for (string line; getline(ifs, line); ) {
265 
266  double energy = 0.0;
267 
268  result_type values;
269 
270  istringstream iss1(line);
271 
272  const double cosz = binspecs.coszRange.getCentralValue();
273  const double phi = binspecs.phiRange .getCentralValue();
274 
275  coszRange.include(cosz);
276  phiRange .include(phi);
277 
278  if (iss1 >> energy >> values) {
279 
280  const double log10E = log10(energy);
281 
282  for (typename result_type::iterator i = values.begin(); i != values.end(); ++i) {
283  *i = log(*i);
284  }
285 
286  zmap[log10E][cosz][phi] = values;
287 
288  } else {
289 
290  const size_t p1 = line.find (HONDA_BINSPECS_BEGIN);
291  const size_t p2 = line.rfind(HONDA_BINSPECS_END);
292 
293  if (p1 != string::npos && p2 != string::npos) {
294 
295  const string binspecstr = line.substr(p1 + 1, p2 - p1 - 1);
296 
297  istringstream iss2(binspecstr);
298 
299  iss2 >> binspecs;
300  }
301  }
302  }
303  }
304  catch(const exception& error) {
305  THROW(JFileReadException, "JHondaFluxInterpolator::load(): Error reading file " << fileName);
306  }
307  }
TPaveText * p1
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
#define NOTICE(A)
Definition: JMessage.hh:64
multifunction_type::result_type result_type
multifunction_type::multimap_type multimap_type
Exception for reading of file.
Definition: JException.hh:396
range_type & include(argument_type x)
Include given value to range.
Definition: JRange.hh:397
static const char HONDA_BINSPECS_END
static const char HONDA_BINSPECS_BEGIN
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
Definition: JString.hh:478
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JSTDTypes.hh:14
Auxiliary data structure for reading angular binning specifications of Honda flux table.
JHondaBinRange coszRange
Cosine zenith-angle range.
JHondaBinRange phiRange
Azimuthal angle range [deg].
double getCentralValue() const
Get central value of this range.

◆ is_valid()

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
bool JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::is_valid ( ) const
inlinefinaloverride

Check whether this interpolator is valid.

Returns
true if valid; else false

Definition at line 315 of file JHondaFluxInterpolator.hh.

316  {
317  return this->size() > 0 && coszRange.getLength() > 0.0 && phiRange.getLength() > 0.0;
318  }
T getLength() const
Get length (difference between upper and lower limit).
Definition: JRange.hh:289

◆ getFactor() [1/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
double JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getFactor ( const int  type,
const double  log10E,
const double  costh,
const double  phi 
) const
inline

Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle.

Parameters
typePDG particle type
log10Elogarithmic neutrino energy [GeV]
costhcosine zenith angle
phiazimuth angle (defined clockwise w.r.t. the North) [deg]
Returns
diffuse flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

< [–]

< [deg]

< Honda azimuth angle is defined counterclockwise w.r.t. the South
(c.f. arXiv:1102.2688), so a conversion is necessary.

Definition at line 330 of file JHondaFluxInterpolator.hh.

334  {
335  using namespace std;
336  using namespace JPP;
337 
338  static const double epsilon_costh = 1.0e-3; //!< [--]
339  static const double epsilon_phi = 1.0; //!< [deg]
340 
341  static const JRange_t mod(0.0, 360.0);
342 
343  const multifunction_type& function = static_cast<const multifunction_type&>(*this);
344 
345  const double _costh = min(max(costh, -1.0), 1.0);
346  const double _phi = mod.mod(180.0 - phi); //!< Honda azimuth angle is defined counterclockwise w.r.t. the South\n
347  //!< (c.f. arXiv:1102.2688), so a conversion is necessary.
348 
349  result_type lnFluxes;
350 
351  if (coszRange(_costh) && phiRange(_phi)) {
352 
353  lnFluxes = function(log10E, _costh, _phi);
354 
355  } else { // Perform linear extrapolation for edges of angular ranges
356 
357  if (_costh > coszRange.getUpperLimit() && phiRange(_phi)) {
358 
360  const abscissa_type x2 = coszRange.getUpperLimit() - epsilon_costh;
361 
362  const result_type& y1 = function(log10E, x1, _phi);
363  const result_type& y2 = function(log10E, x2, _phi);
364 
365  lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_costh - x1);
366 
367  } else if (_costh < coszRange.getLowerLimit() && phiRange(_phi)) {
368 
370  const abscissa_type x2 = coszRange.getLowerLimit() + epsilon_costh;
371 
372  const result_type& y1 = function(log10E, x1, _phi);
373  const result_type& y2 = function(log10E, x2, _phi);
374 
375  lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_costh - x1);
376 
377  } else if (coszRange(_costh) && _phi > phiRange.getUpperLimit()) {
378 
379  const abscissa_type x1 = phiRange.getUpperLimit();
380  const abscissa_type x2 = phiRange.getUpperLimit() - epsilon_costh;
381 
382  const result_type& y1 = function(log10E, _costh, x1);
383  const result_type& y2 = function(log10E, _costh, x2);
384 
385  lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_phi - x1);
386 
387  } else if (coszRange(_costh) && _phi < phiRange.getLowerLimit()) {
388 
389  const abscissa_type x1 = phiRange.getLowerLimit();
390  const abscissa_type x2 = phiRange.getLowerLimit() + epsilon_costh;
391 
392  const result_type& y1 = function(log10E, _costh, x1);
393  const result_type& y2 = function(log10E, _costh, x2);
394 
395  lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_phi - x1);
396 
397  } else if (_costh > coszRange.getUpperLimit() && _phi > phiRange.getUpperLimit()) {
398 
400  const abscissa_type c2 = coszRange.getUpperLimit() - epsilon_costh;
401 
403  const abscissa_type p2 = phiRange .getUpperLimit() - epsilon_phi;
404 
405  const result_type& y1 = function(log10E, c1, p1);
406  const result_type& y2 = function(log10E, c2, p2);
407 
408  lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
409 
410  } else if (_costh > coszRange.getUpperLimit() && _phi < phiRange.getUpperLimit()) {
411 
413  const abscissa_type c2 = coszRange.getUpperLimit() - epsilon_costh;
414 
416  const abscissa_type p2 = phiRange .getLowerLimit() + epsilon_phi;
417 
418  const result_type& y1 = function(log10E, c1, p1);
419  const result_type& y2 = function(log10E, c2, p2);
420 
421  lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
422 
423  } else if (_costh < coszRange.getLowerLimit() && phi > phiRange.getUpperLimit()) {
424 
426  const abscissa_type c2 = coszRange.getLowerLimit() + epsilon_costh;
427 
429  const abscissa_type p2 = phiRange .getUpperLimit() - epsilon_phi;
430 
431  const result_type& y1 = function(log10E, c1, p1);
432  const result_type& y2 = function(log10E, c2, p2);
433 
434  lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
435 
436  } else {
437 
439  const abscissa_type c2 = coszRange.getLowerLimit() + epsilon_costh;
440 
442  const abscissa_type p2 = phiRange .getLowerLimit() + epsilon_phi;
443 
444  const result_type& y1 = function(log10E, c1, p1);
445  const result_type& y2 = function(log10E, c2, p2);
446 
447  lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
448  }
449  }
450 
451  switch(type) {
452  case TRACK_TYPE_NUMU:
453  return exp(lnFluxes[0]);
454  case TRACK_TYPE_ANTINUMU:
455  return exp(lnFluxes[1]);
456  case TRACK_TYPE_NUE:
457  return exp(lnFluxes[2]);
458  case TRACK_TYPE_ANTINUE:
459  return exp(lnFluxes[3]);
460  default:
461  return 0.0;
462  }
463  }
TCanvas * c1
Global variables to handle mouse events.
multifunction_type::abscissa_type abscissa_type
JMultiFunction< JPhiFunction_t, JFunctionalMaplist_t > multifunction_type
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:202
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
@ TRACK_TYPE_ANTINUMU
@ TRACK_TYPE_ANTINUE
@ TRACK_TYPE_NUE
@ TRACK_TYPE_NUMU
Type definition of range.
Definition: JHead.hh:43

◆ getFlux() [1/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
double JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getFlux ( const int  type,
const double  log10E,
const double  costh,
const double  phi 
) const
inline

Get flux of given event.

Parameters
typePDG particle type
log10Elogarithmic neutrino energy [GeV]
costhcosine zenith angle
phiazimuth angle (defined clockwise w.r.t. the North) [deg]
Returns
diffuse flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

Definition at line 475 of file JHondaFluxInterpolator.hh.

479  {
480  return getFactor(type, log10E, costh, phi);
481  }
double getFactor(const int type, const double log10E, const double costh, const double phi) const
Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle.

◆ operator()() [1/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
double JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::operator() ( const int  type,
const double  log10E,
const double  costh,
const double  phi 
) const
inline

Get diffuse flux for given particle PDG-identifier, energy, cosine zenith angle and azimuth angle.

Parameters
typePDG particle type
log10Elogarithmic neutrino energy [GeV]
costhcosine zenith angle
phiazimuth angle (defined clockwise w.r.t. the North) [deg]
Returns
diffuse flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

Definition at line 493 of file JHondaFluxInterpolator.hh.

497  {
498  return getFactor(type, log10E, costh, phi);
499  }

◆ getFactor() [2/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
double JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getFactor ( const Evt evt) const
inlinefinaloverride

Get flux of given event.

Parameters
evtevent
Returns
flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

< The gSeaGen azimuth angle is defined clockwise w.r.t. the North (c.f. arXiv:2003.14040)

Definition at line 508 of file JHondaFluxInterpolator.hh.

509  {
510  const Trk& neutrino = get_neutrino(evt);
511 
512  const double log10E = log10(neutrino.E);
513  const double costh = neutrino.dir.z;
514 
515  //!< The gSeaGen azimuth angle is defined clockwise w.r.t. the North (c.f. arXiv:2003.14040)
516  const double phi = atan(neutrino.dir.y / neutrino.dir.x) * 180.0 / M_PI;
517 
518  return getFactor(neutrino.type, log10E, costh, phi);
519  }
const Trk & get_neutrino(const Evt &evt)
Get incoming neutrino.
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
double x
Definition: Vec.hh:14
double y
Definition: Vec.hh:14

◆ getFlux() [2/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
double JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getFlux ( const Evt event) const
inline

Get flux of given event.

Parameters
evtevent
Returns
flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

Definition at line 528 of file JHondaFluxInterpolator.hh.

529  {
530  return getFactor(event);
531  }

◆ getProperties() [1/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JProperties JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getProperties ( const JEquationParameters eqpars = JEvtWeightFactor::getEquationParameters())
inlinefinaloverride

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 539 of file JHondaFluxInterpolator.hh.

540  {
541  return JHondaFluxInterpolatorHelper(*this, eqpars);
542  }

◆ getProperties() [2/2]

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JProperties JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::getProperties ( const JEquationParameters eqpars = JEvtWeightFactor::getEquationParameters()) const
inlinefinaloverride

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 550 of file JHondaFluxInterpolator.hh.

551  {
552  return JHondaFluxInterpolatorHelper(*this, eqpars);
553  }

◆ read()

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
std::istream& JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::read ( std::istream &  in)
inlinefinaloverride

Stream input.

Parameters
ininput stream
Returns
input stream

Definition at line 562 of file JHondaFluxInterpolator.hh.

563  {
564  using namespace std;
565 
566  streampos pos = in.tellg();
567 
568  if (!(in >> table)) {
569 
570  in.clear();
571  in.seekg(pos);
572 
573  JProperties properties = getProperties();
574 
575  in >> properties;
576  }
577 
578  load(table.c_str());
579 
580  this->check_validity();
581 
582  return in;
583  }
JProperties getProperties(const JEquationParameters &eqpars=JEvtWeightFactor::getEquationParameters()) override final
Get properties of this class.
Utility class to parse parameter values.
Definition: JProperties.hh:501

◆ getMultiFunction() [1/2]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
const JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getMultiFunction ( ) const
inlineinherited

Get multidimensional function.

Returns
this multidimensional function

Definition at line 98 of file JMultiFunction.hh.

99  {
100  return static_cast<const JMultiFunction&>(*this);
101  }
Multidimensional interpolation method.

◆ getMultiFunction() [2/2]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JMultiFunction& JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::getMultiFunction ( )
inlineinherited

Get multidimensional function.

Returns
this multidimensional function

Definition at line 109 of file JMultiFunction.hh.

110  {
111  return static_cast<JMultiFunction&>(*this);
112  }

◆ insert() [1/5]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional function

Definition at line 121 of file JMultiFunction.hh.

122  {
123  copy(input, *this);
124  }
void copy(const T &input, T &output)
Copy of input to output.

◆ insert() [2/5]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input)
inlineinherited

Insert multidimensional input.

Parameters
inputmultidimensional histogram

Definition at line 133 of file JMultiFunction.hh.

134  {
135  this->insert(JMultiKey<0, argument_type>(), input);
136  }
void insert(const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
Insert multidimensional input.
Multidimensional key.
Definition: JMultiKey.hh:69

◆ insert() [3/5]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<unsigned int N, class __JAbscissa_t , class __JContents_t , template< class, class, class > class __JMap_t, class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< N, argument_type > &  key,
const JHistogramMap< __JAbscissa_t, __JContents_t, __JMap_t, __JDistance_t > &  input 
)
inlineprotectedinherited

Insert multidimensional histogram at multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 196 of file JMultiFunction.hh.

198  {
199  if (input.size() > 1) {
200 
201  for (auto j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
202 
203  const argument_type x = 0.5 * (i->getX() + j->getX());
204 
205  insert(JMultiKey<N+1, argument_type>(key, x), i->getY());
206  }
207  }
208  }
function_type::argument_type argument_type
int j
Definition: JPolint.hh:792

◆ insert() [4/5]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class __JElement_t , template< class, class > class __JContainer_t, class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const JHistogram1D< __JElement_t, __JContainer_t, __JDistance_t > &  input 
)
inlineprotectedinherited

Convert one-dimensional histogram to PDF and insert result at given multidimensional key.

Parameters
keymultidimensional key
inputhistogram

Definition at line 218 of file JMultiFunction.hh.

221  {
222  JFunction_t buffer;
223 
224  makePDF(input, buffer);
225 
226  multimap_type::insert(key, buffer);
227  }
JArray< NUMBER_OF_DIMENSIONS, argument_type > buffer
void makePDF(const JHistogram1D< JElement_t, JContainer_t, JDistance_t > &input, typename JMappable< JElement_t >::map_type &output)
Conversion of histogram to probability density function (PDF).

◆ insert() [5/5]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::insert ( const JMultiKey< JMapLength< JMaplist_t >::value, argument_type > &  key,
const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &  input 
)
inlineprotectedinherited

Convert multidimensional histogram to PDF and insert result at given multidimensional key.

Parameters
keymultidimensional key
inputmultidimensional histogram

Definition at line 237 of file JMultiFunction.hh.

239  {
240  JFunction_t buffer;
241 
242  makePDF(input, buffer);
243 
244  multimap_type::insert(key, buffer);
245  }

◆ compile()

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::compile ( )
inlineinherited

Compilation.

Definition at line 142 of file JMultiFunction.hh.

143  {
144  this->for_each(compiler);
145 
146  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
147  (*i).getValue().compile();
148  }
149  }
multimap_type::super_iterator super_iterator
JObject_t & for_each(JObject_t &object, JType< JTypeList< JHead_t, JTail_t > > typelist, const JTuple< T > &tuple)
For each data type method.
Definition: JTuple.hh:666
static const JCompiler compiler
Function object for functional object compilation.
Definition: JFunctional.hh:384

◆ setExceptionHandler()

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
void JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::setExceptionHandler ( const typename function_type::supervisor_type &  supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 157 of file JMultiFunction.hh.

158  {
159  this->for_each(supervisor);
160 
161  for (super_iterator i = this->super_begin(); i != this->super_end(); ++i) {
162  (*i).getValue().setExceptionHandler(supervisor);
163  }
164  }

◆ operator()() [2/2]

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
template<class ... Args>
result_type JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::operator() ( const Args &...  args) const
inlineinherited

Multi-dimensional interpolation method call.

Parameters
argscomma seperated list of abscissa values
Returns
function value

Definition at line 174 of file JMultiFunction.hh.

175  {
176  buffer.set(args...);
177 
178  return this->evaluate(buffer.data());
179  }
const_pointer data() const
Get pointer to data.
Definition: JArray.hh:284
JArray & set(const Args &...args)
Set array.
Definition: JArray.hh:199

◆ clone()

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

Member Data Documentation

◆ table

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
std::string JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::table
private

Table filename.

Definition at line 612 of file JHondaFluxInterpolator.hh.

◆ coszRange

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JRange_t JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::coszRange
private

Zenith angle range.

Definition at line 614 of file JHondaFluxInterpolator.hh.

◆ phiRange

template<class JPhiFunction_t = JConstantFunction1D<double, JArray<4, double> >, template< class, class, class > class JCoszFunctionalMap_t = JPolint1FunctionalMap, template< class, class, class > class JEnergyFunctionalMap_t = JPolint1FunctionalMap>
JRange_t JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::phiRange
private

Azimuth angle range [deg].

Definition at line 615 of file JHondaFluxInterpolator.hh.

◆ buffer

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
JArray<NUMBER_OF_DIMENSIONS, argument_type> JTOOLS::JMultiFunction< JFunction_t, JMaplist_t, JDistance_t >::buffer
mutableprotectedinherited

Definition at line 183 of file JMultiFunction.hh.

◆ debug

template<class T >
int JEEP::JMessage< T >::debug = 0
staticinherited

debug level (default is off).

Definition at line 45 of file JMessage.hh.


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