Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JOSCPROB::JOscProbHelper Struct Reference

Helper class for oscillation probability calculators. More...

#include <JOscProbHelper.hh>

Inheritance diagram for JOSCPROB::JOscProbHelper:
JOSCPROB::JOscillogram

Public Types

typedef JOscProbInterface::JOscParameters_t JOscParameters_t
 
typedef JOscProbInterface::JOscParameterReferences_t JOscParameterReferences_t
 
typedef JOscProbInterface::JParameter_t JParameter_t
 
typedef JOscProbInterface::argument_type argument_type
 
typedef JOscProbInterface::value_type value_type
 
typedef std::shared_ptr< JOscProbInterfacepointer_type
 

Public Member Functions

 JOscProbHelper ()
 Default constructor.
 
 JOscProbHelper (const pointer_type &pOscProb)
 Copy constructor.
 
 JOscProbHelper (const JOscProbInterface &oscProb)
 Constructor.
 
void configure (const pointer_type &pOscProb)
 Configure oscillation probability function.
 
void configure (const JOscProbInterface &oscProb)
 Configure oscillation probability function.
 
JOscProbInterfacegetOscProbInterface () const
 Get reference to oscillation probability interface.
 
JOscParameterReferences_tgetParameters () const
 Get reference to oscillation parameters interface.
 
void set (const JOscParameters_t &parameters) const
 Set oscillation parameters.
 
void set (const std::string &name, const value_type &value) const
 Set value for a given oscillation parameter.
 
template<class ... Args>
void set (const std::string &name, const value_type &value, const Args &...args) const
 Set value for given list of oscillation parameters.
 
double getCosth (const double L) const
 Get cosine zenith angle for a given baseline.
 
double getBaseline (const double costh) const
 Get baseline for a given cosine zenith angle.
 
double getP (const JOscChannel &channel, const double energy, const double costh) const
 Get oscillation probability corresponding to given oscillation channel, neutrino energy and zenith angle.
 
double getP (const JOscParameters_t &parameters, const JOscChannel &channel, const double energy, const double costh) const
 Get oscillation probability for a given set of oscillation parameters
and a given oscillation channel.
 
double getP (const std::string &name, const double value, const JOscChannel &channel, const double E, const double costh) const
 Get oscillation probability for a given oscillation parameter
and a given oscillation channel.
 
template<class ... Args>
double getP (const std::string &name, const double value, const Args &...args) const
 Get oscillation probability for a given set of oscillation parameters
and a given oscillation channel.
 
JProperties getProperties (const JEquationParameters &eqpars=JOscProbInterface::getEquationParameters())
 Get properties of this class.
 
JProperties getProperties (const JEquationParameters &eqpars=JOscProbInterface::getEquationParameters()) const
 Get properties of this class.
 

Friends

std::istream & operator>> (std::istream &in, JOscProbHelper &object)
 Read from input.
 
std::ostream & operator<< (std::ostream &out, const JOscProbHelper &object)
 Write to output.
 

Detailed Description

Helper class for oscillation probability calculators.

Definition at line 30 of file JOscProbHelper.hh.

Member Typedef Documentation

◆ JOscParameters_t

◆ JOscParameterReferences_t

◆ JParameter_t

◆ argument_type

◆ value_type

◆ pointer_type

Definition at line 40 of file JOscProbHelper.hh.

Constructor & Destructor Documentation

◆ JOscProbHelper() [1/3]

JOSCPROB::JOscProbHelper::JOscProbHelper ( )
inline

Default constructor.

Definition at line 46 of file JOscProbHelper.hh.

47 {}

◆ JOscProbHelper() [2/3]

JOSCPROB::JOscProbHelper::JOscProbHelper ( const pointer_type & pOscProb)
inline

Copy constructor.

Parameters
pOscProbshared pointer to oscillation probability function

Definition at line 55 of file JOscProbHelper.hh.

55 :
56 pointer_type(pOscProb)
57 {}
std::shared_ptr< JOscProbInterface > pointer_type

◆ JOscProbHelper() [3/3]

JOSCPROB::JOscProbHelper::JOscProbHelper ( const JOscProbInterface & oscProb)
inline

Constructor.

Parameters
oscProboscillation probability function

Definition at line 65 of file JOscProbHelper.hh.

66 {
67 configure(oscProb);
68 }
void configure(const pointer_type &pOscProb)
Configure oscillation probability function.

Member Function Documentation

◆ configure() [1/2]

void JOSCPROB::JOscProbHelper::configure ( const pointer_type & pOscProb)
inline

Configure oscillation probability function.

Parameters
pOscProbshared pointer to oscillation probability function

Definition at line 76 of file JOscProbHelper.hh.

77 {
78 static_cast<pointer_type&>(*this) = pOscProb;
79 }

◆ configure() [2/2]

void JOSCPROB::JOscProbHelper::configure ( const JOscProbInterface & oscProb)
inline

Configure oscillation probability function.

Parameters
oscProboscillation probability function

Definition at line 87 of file JOscProbHelper.hh.

88 {
89 this->reset(oscProb.clone());
90 }
void reset(T &value)
Reset value.

◆ getOscProbInterface()

JOscProbInterface & JOSCPROB::JOscProbHelper::getOscProbInterface ( ) const
inline

Get reference to oscillation probability interface.

Returns
oscillation parameters

Definition at line 98 of file JOscProbHelper.hh.

99 {
100 using namespace JPP;
101
102 if (static_cast<const JOscProbHelper&>(*this)) {
103 return *(this->get());
104 } else {
105 THROW(JNullPointerException, "JOscProbHelper::getOscProbInterface(): Oscillation probability interface is not set.");
106 }
107 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for null pointer operation.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Helper class for oscillation probability calculators.

◆ getParameters()

JOscParameterReferences_t & JOSCPROB::JOscProbHelper::getParameters ( ) const
inline

Get reference to oscillation parameters interface.

Returns
reference to oscillation parameters interface

Definition at line 115 of file JOscProbHelper.hh.

116 {
118 }
JOscParameters_t & getParameters() const
Get reference to oscillation parameters interface.
JOscProbInterface & getOscProbInterface() const
Get reference to oscillation probability interface.

◆ set() [1/3]

void JOSCPROB::JOscProbHelper::set ( const JOscParameters_t & parameters) const
inline

Set oscillation parameters.

Parameters
parametersoscillation parameters

Definition at line 126 of file JOscProbHelper.hh.

127 {
128 return getParameters().set(parameters);
129 }
void set(const std::string &name, const value_type &value)
Set value for a given oscillation parameter.
JOscParameterReferences_t & getParameters() const
Get reference to oscillation parameters interface.

◆ set() [2/3]

void JOSCPROB::JOscProbHelper::set ( const std::string & name,
const value_type & value ) const
inline

Set value for a given oscillation parameter.

Parameters
nameparameter name
valueparameter value

Definition at line 138 of file JOscProbHelper.hh.

140 {
141 getParameters().set(name, value);
142 }

◆ set() [3/3]

template<class ... Args>
void JOSCPROB::JOscProbHelper::set ( const std::string & name,
const value_type & value,
const Args &... args ) const
inline

Set value for given list of oscillation parameters.

Parameters
nameparameter name
valueparameter value
argsremaining pairs of parameter names and values

Definition at line 153 of file JOscProbHelper.hh.

156 {
157 getParameters().set(name, value, args...);
158 }

◆ getCosth()

double JOSCPROB::JOscProbHelper::getCosth ( const double L) const
inline

Get cosine zenith angle for a given baseline.

Parameters
Lbaseline [km]
Returns
cosine zenith angle

Definition at line 167 of file JOscProbHelper.hh.

168 {
169 return getOscProbInterface().getCosth(L);
170 }
virtual double getCosth(const double L) const =0
Get cosine zenith angle for a given baseline.

◆ getBaseline()

double JOSCPROB::JOscProbHelper::getBaseline ( const double costh) const
inline

Get baseline for a given cosine zenith angle.

Parameters
costhcosine zenith angle
Returns
baseline [km]

Definition at line 179 of file JOscProbHelper.hh.

180 {
181 return getOscProbInterface().getBaseline(costh);
182 }
virtual double getBaseline(const double costh) const =0
Get baseline for a given cosine zenith angle.

◆ getP() [1/4]

double JOSCPROB::JOscProbHelper::getP ( const JOscChannel & channel,
const double energy,
const double costh ) const
inline

Get oscillation probability corresponding to given oscillation channel, neutrino energy and zenith angle.

Parameters
channeloscillation channel
energyneutrino energy [GeV]
costhcosine zenith angle
Returns
oscillation probability

Definition at line 194 of file JOscProbHelper.hh.

197 {
198 return getOscProbInterface().getP(channel, energy, costh);
199 }
virtual double getP(const JOscChannel &channel, const double E, const double costh) const =0
Get oscillation probability for a given oscillation channel.

◆ getP() [2/4]

double JOSCPROB::JOscProbHelper::getP ( const JOscParameters_t & parameters,
const JOscChannel & channel,
const double energy,
const double costh ) const
inline

Get oscillation probability for a given set of oscillation parameters
and a given oscillation channel.

Parameters
channeloscillation channel
parametersoscillation parameters
energyneutrino energy [GeV]
costhcosine zenith angle
Returns
oscillation probability

Definition at line 212 of file JOscProbHelper.hh.

216 {
217 return getOscProbInterface().getP(parameters, channel, energy, costh);
218 }

◆ getP() [3/4]

double JOSCPROB::JOscProbHelper::getP ( const std::string & name,
const double value,
const JOscChannel & channel,
const double E,
const double costh ) const
inline

Get oscillation probability for a given oscillation parameter
and a given oscillation channel.

Parameters
nameparameter name
valueparameter value
channeloscillation channel
Eneutrino energy [GeV]
costhcosine zenith angle
Returns
oscillation probability

Definition at line 232 of file JOscProbHelper.hh.

237 {
238 return getOscProbInterface().getP(name, value, channel, E, costh);
239 }

◆ getP() [4/4]

template<class ... Args>
double JOSCPROB::JOscProbHelper::getP ( const std::string & name,
const double value,
const Args &... args ) const
inline

Get oscillation probability for a given set of oscillation parameters
and a given oscillation channel.

Parameters
nameparameter name
valueparameter value
argsremaining arguments

Definition at line 251 of file JOscProbHelper.hh.

254 {
255 return getOscProbInterface().getP(name, value, args...);
256 }

◆ getProperties() [1/2]

JProperties JOSCPROB::JOscProbHelper::getProperties ( const JEquationParameters & eqpars = JOscProbInterface::getEquationParameters())
inline

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 264 of file JOscProbHelper.hh.

265 {
266 return getOscProbInterface().getProperties(eqpars);
267 }
virtual JProperties getProperties(const JEquationParameters &equation=JOscParameters_t::getEquationParameters())
Get properties of this class.

◆ getProperties() [2/2]

JProperties JOSCPROB::JOscProbHelper::getProperties ( const JEquationParameters & eqpars = JOscProbInterface::getEquationParameters()) const
inline

Get properties of this class.

Parameters
eqparsequation parameters

Definition at line 275 of file JOscProbHelper.hh.

276 {
277 return getOscProbInterface().getProperties(eqpars);
278 }

Friends And Related Symbol Documentation

◆ operator>>

std::istream & operator>> ( std::istream & in,
JOscProbHelper & object )
friend

Read from input.

Input syntax as follows:

      <oscprob_key>=<oscprob_value>[,<oscprob_key>=<oscprob_value>]...

      oscprob.<oscprob_key>=<oscprob_value>[,oscprob.<oscprob_key>=<oscprob_value>]...

      oscprob=<oscprob_file>

      <oscprob_file>

where

  • <oscprob_key> refers to an oscillation probability calculator configuration key;
  • <oscprob_value> to an oscillation probability calculator configuration value;
  • <oscprob_file> to an oscillation probability calculator configuration file with key-value pairs;
Parameters
ininput stream
objectobject
Returns
input stream

Definition at line 303 of file JOscProbHelper.hh.

304 {
305 using namespace std;
306 using namespace JPP;
307
308 static const char* KEYWORD = "oscprob";
309
310 if (!object) { return in; }
311
312 // Attempt to read oscillation probability calculator configuration directly as key-value pairs
313
314 JProperties properties1 = object.getProperties();
315
316 streampos pos = in.tellg();
317
318 in >> properties1;
319
320 if (!fail(in)) { return in; }
321
322 // Attempt to read oscillation probability calculator configuration from input file specified by equation
323
324 in.clear();
325 in.seekg(pos);
326
327 JProperties properties2 = properties1;
328
329 JEquation equation;
330 in >> equation;
331
332 if (equation.getKey() == KEYWORD && getFileStatus(equation.getValue().c_str())) {
333
334 properties2 = properties1;
335
336 properties2.getEndOfLine() += '\n';
337
338 ifstream ifs(equation.getValue().c_str());
339
340 ifs >> properties2;
341
342 ifs.close();
343
344 return in;
345 }
346
347 // Attempt to read oscillation probability calculator configuration as key-value pairs with separator
348
349 in.clear();
350 in.seekg(pos);
351
352 properties2.clear();
353
354 properties2[KEYWORD] = properties1;
355
356 in >> properties2;
357
358 if (!fail(in)) { return in; }
359
360 // Attempt to read oscillation probability calculator configuration from input file
361
362 in.clear();
363 in.seekg(pos);
364
365 std::string buffer;
366 in >> buffer;
367
368 if (getFileStatus(buffer.c_str())) {
369
370 ifstream ifs(buffer.c_str());
371
372 ifs >> object;
373
374 ifs.close();
375
376 } else {
377
378 in.clear();
379 in.seekg(pos);
380 }
381
382 return in;
383 }
Utility class to parse parameter values.
const std::string & getEndOfLine() const
Get end of line characters.
General purpose equation class.
Definition JEquation.hh:47
const std::string & getKey() const
Get key.
Definition JEquation.hh:163
const std::string & getValue() const
Get value.
Definition JEquation.hh:185
bool fail(std::istream &in)
Check for stream state.
Definition JParser.hh:98

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const JOscProbHelper & object )
friend

Write to output.

Parameters
outoutput stream
objectobject
Returns
output stream

Definition at line 393 of file JOscProbHelper.hh.

394 {
395 if (object) {
396 out << object.getProperties();
397 }
398
399 return out;
400 }

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