Jpp master_rocky-44-g75b7c4f75
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 > 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.
 
void load (const char *const fileName)
 Load oscillation probability table from file.
 
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.
 
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.
 
std::istream & read (std::istream &in) override final
 Stream input.
 
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.
 

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.
 

Protected Attributes

JArray< NUMBER_OF_DIMENSIONS, argument_typebuffer
 

Private Attributes

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

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

◆ 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 }
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.
#define NOTICE(A)
Definition JMessage.hh:64
multifunction_type::multimap_type multimap_type
multifunction_type::result_type result_type
Exception for reading of file.
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).
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
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
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]);
455 return exp(lnFluxes[1]);
456 case TRACK_TYPE_NUE:
457 return exp(lnFluxes[2]);
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

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

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