Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
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 > JLANG::JObjectStreamIO< T > JEEP::JMessage< T > JTOOLS::JMultiMap< JAbscissa_t, JOrdinate_t, JMaplist_t, JDistance_t >

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.
 
 JHondaFluxInterpolator (const char *filename)
 Constructor.
 
 JHondaFluxInterpolator (const interpolator_type &interpolator)
 Copy constructor.
 
bool is_valid () const override final
 Check whether this interpolator is valid.
 
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.
 
double getFlux (const int type, const double log10E, const double costh, const double phi) const
 Get flux of given event.
 
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.
 
double getFactor (const Evt &evt) const override final
 Get flux of given event.
 
double getFlux (const Evt &event) const
 Get flux of given event.
 
void load ()
 Load Honda flux table.
 
void load (const char *table)
 Load Honda flux table.
 
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.
 
const JMultiFunctiongetMultiFunction () const
 Get multidimensional function.
 
JMultiFunctiongetMultiFunction ()
 Get multidimensional function.
 
template<class __JFunction_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiFunction< __JFunction_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
template<class JHistogram_t , class __JMaplist_t , class __JDistance_t >
void insert (const JMultiHistogram< JHistogram_t, __JMaplist_t, __JDistance_t > &input)
 Insert multidimensional input.
 
void compile ()
 Compilation.
 
void setExceptionHandler (const typename function_type::supervisor_type &supervisor)
 Set the supervisor for handling of exceptions.
 
template<class ... Args>
result_type operator() (const Args &...args) const
 Multi-dimensional interpolation method call.
 
virtual clone_type clone () const override
 Get clone of this object.
 
void store (const char *file_name) const
 Store to output file.
 

Static Public Attributes

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

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.
 
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.
 
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.
 

Private Attributes

JLoadProperty< interpolator_type, std::string > table
 Table filename.
 
JRange_t coszRange
 Zenith angle range.
 
JRange_t phiRange
 Azimuth angle range [deg].
 

Friends

std::ifstream & operator>> (std::ifstream &ifs, interpolator_type &interpolator)
 Read Honda atmospheric neutrino flux interpolator from file.
 

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 197 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>
JMAPLIST<JEnergyFunctionalMap_t,JCoszFunctionalMap_t>::maplist JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JFunctionalMaplist_t

Definition at line 205 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>
JHondaFluxInterpolator<JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::interpolator_type

Definition at line 207 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>
JMultiFunction<JPhiFunction_t, JFunctionalMaplist_t> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::multifunction_type

Definition at line 208 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>
multifunction_type::abscissa_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::abscissa_type

Definition at line 212 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>
multifunction_type::argument_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::argument_type

Definition at line 213 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>
multifunction_type::result_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::result_type

Definition at line 214 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>
multifunction_type::value_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::value_type

Definition at line 215 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>
multifunction_type::multimap_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::multimap_type

Definition at line 217 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>
multifunction_type::super_const_iterator JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::super_const_iterator

Definition at line 219 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>
multifunction_type::super_iterator JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::super_iterator

Definition at line 220 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>
multifunction_type::function_type JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::function_type

Definition at line 221 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>
JRange<abscissa_type> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::JRange_t

Definition at line 223 of file JHondaFluxInterpolator.hh.

◆ ordinate_type

template<class JFunction_t , class JMaplist_t , class JDistance_t = JDistance<typename JFunction_t::argument_type>>
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>>
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>>
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>>
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>>
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 >
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 };

Constructor & Destructor Documentation

◆ JHondaFluxInterpolator() [1/3]

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 229 of file JHondaFluxInterpolator.hh.

229 :
230 table (*this),
231 coszRange(0.0, -1.0),
232 phiRange (0.0, -1.0)
233 {}
JRange_t phiRange
Azimuth angle range [deg].
JRange_t coszRange
Zenith angle range.
JLoadProperty< interpolator_type, std::string > table
Table filename.

◆ JHondaFluxInterpolator() [2/3]

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
filenameHonda flux table filename

Definition at line 241 of file JHondaFluxInterpolator.hh.

241 :
242 table (*this, filename),
243 coszRange(0.0, -1.0),
244 phiRange (0.0, -1.0)
245 {
246 load();
247 }
void load()
Load Honda flux table.

◆ JHondaFluxInterpolator() [3/3]

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 interpolator_type & interpolator)
inline

Copy constructor.

Parameters
interpolatorHonda flux interpolator

Definition at line 255 of file JHondaFluxInterpolator.hh.

255 :
256 table (*this, interpolator.table.c_str()),
257 coszRange(interpolator.coszRange)
258 {
259 this->getMultiFunction() = interpolator.getMultiFunction();
260
261 this->compile();
262 }
void compile()
Compilation.
const JMultiFunction & getMultiFunction() const
Get multidimensional function.

Member Function Documentation

◆ 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 270 of file JHondaFluxInterpolator.hh.

271 {
272 return (!table.empty() ?
273 this->size() > 0 && coszRange.getLength() > 0.0 && phiRange.getLength() > 0.0 :
274 true);
275 }
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 287 of file JHondaFluxInterpolator.hh.

291 {
292 using namespace std;
293 using namespace JPP;
294
295 static const double epsilon_costh = 1.0e-3; //!< [--]
296 static const double epsilon_phi = 1.0; //!< [deg]
297
298 static const JRange_t mod(0.0, 360.0);
299
300 const multifunction_type& function = static_cast<const multifunction_type&>(*this);
301
302 const double _costh = min(max(costh, -1.0), 1.0);
303 const double _phi = mod.mod(180.0 - phi); //!< Honda azimuth angle is defined counterclockwise w.r.t. the South\n
304 //!< (c.f. arXiv:1102.2688), so a conversion is necessary.
305
306 result_type lnFluxes;
307
308 if (coszRange(_costh) && phiRange(_phi)) {
309
310 lnFluxes = function(log10E, _costh, _phi);
311
312 } else { // Perform linear extrapolation for edges of angular ranges
313
314 if (_costh > coszRange.getUpperLimit() && phiRange(_phi)) {
315
317 const abscissa_type x2 = coszRange.getUpperLimit() - epsilon_costh;
318
319 const result_type& y1 = function(log10E, x1, _phi);
320 const result_type& y2 = function(log10E, x2, _phi);
321
322 lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_costh - x1);
323
324 } else if (_costh < coszRange.getLowerLimit() && phiRange(_phi)) {
325
327 const abscissa_type x2 = coszRange.getLowerLimit() + epsilon_costh;
328
329 const result_type& y1 = function(log10E, x1, _phi);
330 const result_type& y2 = function(log10E, x2, _phi);
331
332 lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_costh - x1);
333
334 } else if (coszRange(_costh) && _phi > phiRange.getUpperLimit()) {
335
337 const abscissa_type x2 = phiRange.getUpperLimit() - epsilon_costh;
338
339 const result_type& y1 = function(log10E, _costh, x1);
340 const result_type& y2 = function(log10E, _costh, x2);
341
342 lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_phi - x1);
343
344 } else if (coszRange(_costh) && _phi < phiRange.getLowerLimit()) {
345
347 const abscissa_type x2 = phiRange.getLowerLimit() + epsilon_costh;
348
349 const result_type& y1 = function(log10E, _costh, x1);
350 const result_type& y2 = function(log10E, _costh, x2);
351
352 lnFluxes = y1 + ((y2 - y1) / (x2 - x1)) * (_phi - x1);
353
354 } else if (_costh > coszRange.getUpperLimit() && _phi > phiRange.getUpperLimit()) {
355
357 const abscissa_type c2 = coszRange.getUpperLimit() - epsilon_costh;
358
360 const abscissa_type p2 = phiRange .getUpperLimit() - epsilon_phi;
361
362 const result_type& y1 = function(log10E, c1, p1);
363 const result_type& y2 = function(log10E, c2, p2);
364
365 lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
366
367 } else if (_costh > coszRange.getUpperLimit() && _phi < phiRange.getUpperLimit()) {
368
370 const abscissa_type c2 = coszRange.getUpperLimit() - epsilon_costh;
371
373 const abscissa_type p2 = phiRange .getLowerLimit() + epsilon_phi;
374
375 const result_type& y1 = function(log10E, c1, p1);
376 const result_type& y2 = function(log10E, c2, p2);
377
378 lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
379
380 } else if (_costh < coszRange.getLowerLimit() && phi > phiRange.getUpperLimit()) {
381
383 const abscissa_type c2 = coszRange.getLowerLimit() + epsilon_costh;
384
386 const abscissa_type p2 = phiRange .getUpperLimit() - epsilon_phi;
387
388 const result_type& y1 = function(log10E, c1, p1);
389 const result_type& y2 = function(log10E, c2, p2);
390
391 lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
392
393 } else {
394
396 const abscissa_type c2 = coszRange.getLowerLimit() + epsilon_costh;
397
399 const abscissa_type p2 = phiRange .getLowerLimit() + epsilon_phi;
400
401 const result_type& y1 = function(log10E, c1, p1);
402 const result_type& y2 = function(log10E, c2, p2);
403
404 lnFluxes = y1 + ((y2 - y1) / (c2 - c1) / (p2 - p1)) * (_costh - p1) * (_phi - p1);
405 }
406 }
407
408 switch(type) {
409 case TRACK_TYPE_NUMU:
410 return exp(lnFluxes[0]);
412 return exp(lnFluxes[1]);
413 case TRACK_TYPE_NUE:
414 return exp(lnFluxes[2]);
416 return exp(lnFluxes[3]);
417 default:
418 return 0.0;
419 }
420 }
TCanvas * c1
Global variables to handle mouse events.
TPaveText * p1
multifunction_type::result_type result_type
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
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ 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 432 of file JHondaFluxInterpolator.hh.

436 {
437 return getFactor(type, log10E, costh, phi);
438 }
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 450 of file JHondaFluxInterpolator.hh.

454 {
455 return getFactor(type, log10E, costh, phi);
456 }

◆ 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 465 of file JHondaFluxInterpolator.hh.

466 {
467 const Trk& neutrino = get_neutrino(evt);
468
469 const double log10E = log10(neutrino.E);
470 const double costh = neutrino.dir.z;
471
472 //!< The gSeaGen azimuth angle is defined clockwise w.r.t. the North (c.f. arXiv:2003.14040)
473 const double phi = atan(neutrino.dir.y / neutrino.dir.x) * 180.0 / M_PI;
474
475 return getFactor(neutrino.type, log10E, costh, phi);
476 }
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
eventevent
Returns
flux [GeV^-1 * m^-2 * sr^-1 * s^-1]

Definition at line 485 of file JHondaFluxInterpolator.hh.

486 {
487 return getFactor(event);
488 }

◆ load() [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>
void JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::load ( )
inline

Load Honda flux table.

Definition at line 494 of file JHondaFluxInterpolator.hh.

495 {
496 using namespace std;
497 using namespace JPP;
498
499 if (!table.empty()) {
500
501 NOTICE("Loading Honda flux table from file " << table << "... " << flush);
502
504
505 this->check_validity();
506
507 NOTICE("OK" << endl);
508 }
509 }
#define NOTICE(A)
Definition JMessage.hh:64
void load(const char *file_name)
Load from input file.

◆ load() [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>
void JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::load ( const char * table)
inline

Load Honda flux table.

Parameters
tableHonda flux table filename

Definition at line 517 of file JHondaFluxInterpolator.hh.

518 {
519 this->table = table;
520
521 load();
522 }

◆ 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 530 of file JHondaFluxInterpolator.hh.

531 {
532 return JHondaFluxInterpolatorHelper(*this, eqpars);
533 }

◆ 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 541 of file JHondaFluxInterpolator.hh.

542 {
543 return JHondaFluxInterpolatorHelper(*this, eqpars);
544 }

◆ 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 }
JMultiFunction()
Default constructor.

◆ 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.

◆ 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 194 of file JMultiFunction.hh.

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

◆ 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 216 of file JMultiFunction.hh.

219 {
220 JFunction_t buffer;
221
222 makePDF(input, buffer);
223
224 multimap_type::insert(key, buffer);
225 }
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 235 of file JMultiFunction.hh.

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

◆ 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
static const JCompiler compiler
Function object for functional object compilation.
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

◆ 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 const JArray<NUMBER_OF_DIMENSIONS, argument_type> buffer(args...);
177
178 return this->evaluate(buffer.data());
179 }

◆ clone()

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

◆ store()

template<class T >
void JLANG::JObjectStreamIO< T >::store ( const char * file_name) const
inlineinherited

Store to output file.

Parameters
file_namefile name

Definition at line 41 of file JObjectStreamIO.hh.

42 {
43 JLANG::store<std::ofstream>(file_name, static_cast<const T&>(*this));
44 }
void store(const std::string &file_name, const T &object)
Store object to output file.
Definition JObjectIO.hh:68

Friends And Related Symbol Documentation

◆ operator>>

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::ifstream & operator>> ( std::ifstream & ifs,
interpolator_type & interpolator )
friend

Read Honda atmospheric neutrino flux interpolator from file.

Parameters
ifsinput file stream
interpolatorHonda flux interpolator
Returns
input file stream

Definition at line 554 of file JHondaFluxInterpolator.hh.

555 {
556 using namespace std;
557
558 multimap_type& zmap = static_cast<multimap_type&>(interpolator);
559
560 JHondaAngularBinSpecs binspecs;
561
562 for (string line; getline(ifs, line); ) {
563
564 double energy = 0.0;
565
566 result_type values;
567
568 istringstream iss1(line);
569
570 const double cosz = binspecs.coszRange.getCentralValue();
571 const double phi = binspecs.phiRange .getCentralValue();
572
573 interpolator.coszRange.include(cosz);
574 interpolator.phiRange .include(phi);
575
576 if (iss1 >> energy >> values) {
577
578 const double log10E = log10(energy);
579
580 for (typename result_type::iterator i = values.begin(); i != values.end(); ++i) {
581 *i = log(*i);
582 }
583
584 zmap[log10E][cosz][phi] = values;
585
586 } else {
587
588 const size_t p1 = line.find (HONDA_BINSPECS_BEGIN);
589 const size_t p2 = line.rfind(HONDA_BINSPECS_END);
590
591 if (p1 != string::npos && p2 != string::npos) {
592
593 const string binspecstr = line.substr(p1 + 1, p2 - p1 - 1);
594
595 istringstream iss2(binspecstr);
596
597 iss2 >> binspecs;
598 }
599 }
600 }
601
602 interpolator.compile();
603
604 return ifs;
605 }
multifunction_type::multimap_type multimap_type
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

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>
JLoadProperty<interpolator_type, std::string> JAANET::JHondaFluxInterpolator< JPhiFunction_t, JCoszFunctionalMap_t, JEnergyFunctionalMap_t >::table
private

Table filename.

Definition at line 634 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 636 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 637 of file JHondaFluxInterpolator.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: