Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
GIDI::Functions::XYs2d Class Reference

#include <GIDI.hpp>

Inheritance diagram for GIDI::Functions::XYs2d:

Public Member Functions

 XYs2d (Axes const &a_axes, ptwXY_interpolation a_interpolation, int a_index=0, double a_outerDomainValue=0.0)
 XYs2d (Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *a_parent)
 ~XYs2d ()
std::string interpolationQualifier () const
void setInterpolationQualifier (std::string a_interpolationQualifier)
double domainMin () const
double domainMax () const
double evaluate (double a_x2, double a_x1) const
std::vector< double > const & Xs () const
std::vector< Function1dForm * > const & function1ds () const
std::vector< Function1dForm * > & function1ds ()
void append (Function1dForm *a_function1d)
void toXMLList_func (GUPI::WriteInfo &a_writeInfo, std::string const &a_indent, bool a_embedded, bool a_inRegions) const
Public Member Functions inherited from GIDI::Functions::Function2dForm
 Function2dForm (std::string const &a_moniker, FormType a_type, ptwXY_interpolation a_interpolation, int a_index, double a_outerDomainValue)
 Function2dForm (std::string const &a_moniker, FormType a_type, Axes const &a_axes, ptwXY_interpolation a_interpolation, int a_index, double a_outerDomainValue)
 Function2dForm (Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, FormType a_type, Suite *a_suite=nullptr)
 Function2dForm (Function2dForm const &a_form)
 ~Function2dForm ()
Public Member Functions inherited from GIDI::Functions::FunctionForm
 FunctionForm (std::string const &a_moniker, FormType a_type, int a_dimension, ptwXY_interpolation a_interpolation, int a_index, double a_outerDomainValue)
 FunctionForm (std::string const &a_moniker, FormType a_type, int a_dimension, Axes const &a_axes, ptwXY_interpolation a_interpolation, int a_index, double a_outerDomainValue)
 FunctionForm (Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, FormType a_type, int a_dimension, Suite *a_suite=nullptr)
 FunctionForm (FunctionForm const &a_form)
 ~FunctionForm ()
FunctionFormoperator= (FunctionForm const &a_rhs)
int dimension () const
int index () const
double outerDomainValue () const
void setOuterDomainValue (double a_outerDomainValue)
Axes const & axes () const
Axesaxes ()
ptwXY_interpolation interpolation () const
void setInterpolation (ptwXY_interpolation a_interpolation)
std::string interpolationString () const
void toXMLList (GUPI::WriteInfo &a_writeInfo, std::string const &a_indent) const
Public Member Functions inherited from GIDI::Form
 Form (FormType a_type)
 Form (std::string const &a_moniker, FormType a_type, std::string const &a_label)
 Form (HAPI::Node const &a_node, SetupInfo &a_setupInfo, FormType a_type, Suite *a_suite=nullptr)
 Form (Form const &a_form)
virtual ~Form ()
Formoperator= (Form const &a_rhs)
Suiteparent () const
std::string const & label () const
void setLabel (std::string const &a_label)
virtual std::string actualMoniker () const
std::string const & keyName () const
void setKeyName (std::string const &a_keyName)
std::string const & keyValue () const
virtual void setKeyValue (std::string const &a_keyName) const
FormType type () const
Form const * sibling (std::string a_label) const
GUPI::AncestryfindInAncestry3 (LUPI_maybeUnused std::string const &a_item)
GUPI::Ancestry const * findInAncestry3 (LUPI_maybeUnused std::string const &a_item) const
std::string xlinkItemKey () const
Public Member Functions inherited from GUPI::Ancestry
 Ancestry (std::string const &a_moniker, std::string const &a_attribute="")
virtual ~Ancestry ()
Ancestryoperator= (Ancestry const &a_ancestry)
std::string const & moniker () const
void setMoniker (std::string const &a_moniker)
Ancestryancestor ()
Ancestry const * ancestor () const
void setAncestor (Ancestry *a_ancestor)
std::string attribute () const
Ancestryroot ()
Ancestry const * root () const
bool isChild (Ancestry *a_instance)
bool isParent (Ancestry *a_parent)
bool isRoot () const
AncestryfindInAncestry (std::string const &a_href)
Ancestry const * findInAncestry (std::string const &a_href) const
virtual AncestryfindInAncestry3 (std::string const &a_item)=0
virtual Ancestry const * findInAncestry3 (std::string const &a_item) const =0
virtual LUPI_HOST void serialize (LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
std::string toXLink () const
void printXML () const

Additional Inherited Members

Static Public Member Functions inherited from GUPI::Ancestry
static std::string buildXLinkItemKey (std::string const &a_name, std::string const &a_key)

Detailed Description

Class to store GNDS <XYs2d> node.

Definition at line 1539 of file GIDI.hpp.

Constructor & Destructor Documentation

◆ XYs2d() [1/2]

GIDI::Functions::XYs2d::XYs2d ( Axes const & a_axes,
ptwXY_interpolation a_interpolation,
int a_index = 0,
double a_outerDomainValue = 0.0 )
Parameters
a_axes[in] The axes to copy for this.
a_interpolation[in] The interpolation along the outer most independent axis and the dependent axis.
a_index[in] Currently not used.
a_outerDomainValue[in] If embedded in a higher dimensional function, the value of the domain of the next higher dimension.

Definition at line 28 of file GIDI_XYs2d.cc.

28 :
29 Function2dForm( GIDI_XYs2dChars, FormType::XYs2d, a_axes, a_interpolation, a_index, a_outerDomainValue ) {
30
31}
#define GIDI_XYs2dChars
Definition GIDI.hpp:300
Function2dForm(std::string const &a_moniker, FormType a_type, ptwXY_interpolation a_interpolation, int a_index, double a_outerDomainValue)
Definition GIDI_form.cc:476

Referenced by XYs2d(), and XYs2d().

◆ XYs2d() [2/2]

GIDI::Functions::XYs2d::XYs2d ( Construction::Settings const & a_construction,
HAPI::Node const & a_node,
SetupInfo & a_setupInfo,
Suite * a_parent )
Parameters
a_construction[in] Used to pass user options for parsing.
a_node[in] The HAPI::Node to be parsed and used to construct the XYs2d.
a_setupInfo[in] Information create my the Protare constructor to help in parsing.
a_parent[in] The parent GIDI::Suite.

Definition at line 41 of file GIDI_XYs2d.cc.

41 :
42 Function2dForm( a_construction, a_node, a_setupInfo, FormType::XYs2d, a_parent ),
43 m_interpolationQualifier( a_node.attribute_as_string( GIDI_interpolationQualifierChars ) ) {
44
45 if( a_setupInfo.m_formatVersion.format( ) != GNDS_formatVersion_1_10Chars ) {
46 data1dListParse( a_construction, a_node.child( GIDI_function1dsChars ), a_setupInfo, m_function1ds );
47 checkOuterDomainValues1d( m_function1ds, m_Xs );
48 return; // Need to add uncertainty parsing.
49 }
50
51 for( HAPI::Node child = a_node.first_child( ); !child.empty( ); child.to_next_sibling( ) ) {
52 std::string name( child.name( ) );
53
54 if( name == GIDI_axesChars ) continue;
55 if( name == GIDI_uncertaintyChars ) continue;
56
57 Function1dForm *_form = data1dParse( a_construction, child, a_setupInfo, nullptr );
58 if( _form == nullptr ) throw Exception( "XYs2d::XYs2d: data1dParse returned nullptr." );
59 if( m_Xs.size( ) > 0 ) {
60 if( _form->outerDomainValue( ) <= m_Xs[m_Xs.size( )-1] ) throw Exception( "XYs2d::XYs2d: next outerDomainValue <= current outerDomainValue." );
61 }
62 m_Xs.push_back( _form->outerDomainValue( ) );
63 m_function1ds.push_back( _form );
64 }
65
66}
#define GIDI_axesChars
Definition GIDI.hpp:382
#define GIDI_uncertaintyChars
Definition GIDI.hpp:389
#define GIDI_function1dsChars
Definition GIDI.hpp:387
#define GIDI_interpolationQualifierChars
Definition GIDI.hpp:435
#define GNDS_formatVersion_1_10Chars
Definition LUPI.hpp:48
const char * name(G4int ptype)
Functions::Function1dForm * data1dParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *parent)
void checkOuterDomainValues1d(std::vector< Functions::Function1dForm * > &a_functions, std::vector< double > &a_Xs)
void data1dListParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, std::vector< Functions::Function1dForm * > &a_function1ds)

◆ ~XYs2d()

GIDI::Functions::XYs2d::~XYs2d ( )

Definition at line 71 of file GIDI_XYs2d.cc.

71 {
72
73 for( std::vector<Function1dForm *>::iterator iter = m_function1ds.begin( ); iter < m_function1ds.end( ); ++iter ) delete *iter;
74}

Referenced by ~XYs2d().

Member Function Documentation

◆ append()

void GIDI::Functions::XYs2d::append ( Function1dForm * a_function1d)

Fills the argument a_writeInfo with the XML lines that represent this. Recursively enters each sub-node.

Parameters
a_function1d[in] The 1-d function to append to this.

Definition at line 131 of file GIDI_XYs2d.cc.

131 {
132
133 if( m_function1ds.size( ) > 0 ) {
134 if( a_function1d->outerDomainValue( ) <= m_Xs.back( ) ) Exception( "XYs2d::append: next outerDomainValue <= current outerDomainValue." );
135 }
136
137 m_Xs.push_back( a_function1d->outerDomainValue( ) );
138 m_function1ds.push_back( a_function1d );
139 a_function1d->setAncestor( this );
140}

Referenced by append(), and GIDI::Transporting::Fluxes_from_bdfls::get3dViaFID().

◆ domainMax()

double GIDI::Functions::XYs2d::domainMax ( ) const
virtual

Returns the domain maximum for the instance.

Returns
The domain maximum for the instance.

Implements GIDI::Functions::FunctionForm.

Definition at line 94 of file GIDI_XYs2d.cc.

94 {
95
96 if( m_Xs.size( ) == 0 ) throw Exception( "XYs2d::domainMax: XYs2d has no 1d-functions" );
97 return( m_Xs[m_Xs.size( )-1] );
98}

Referenced by domainMax().

◆ domainMin()

double GIDI::Functions::XYs2d::domainMin ( ) const
virtual

Returns the domain minimum for the instance.

Returns
The domain minimum for the instance.

Implements GIDI::Functions::FunctionForm.

Definition at line 82 of file GIDI_XYs2d.cc.

82 {
83
84 if( m_Xs.size( ) == 0 ) throw Exception( "XYs2d::domainMin: XYs2d has no 1d-functions" );
85 return( m_Xs[0] );
86}

Referenced by domainMin().

◆ evaluate()

double GIDI::Functions::XYs2d::evaluate ( double a_x2,
double a_x1 ) const
virtual

Returns the value of the function f(x2,x1) at the specified point a_x2 and a_x1.

Parameters
a_x2[in] The value of the x2 axis.
a_x1[in] The value of the x1 axis.
Returns
The value of the function evaluated at a_x2 and a_x1.

Implements GIDI::Functions::Function2dForm.

Definition at line 108 of file GIDI_XYs2d.cc.

108 {
109
110 if( m_Xs.size( ) == 0 ) throw Exception( "XYs2d::evaluate: XYs2d has no 1d functions." );
111
112 long iX2 = binarySearchVector( a_x2, m_Xs );
113
114 if( iX2 < 0 ) {
115 if( iX2 == -1 ) { /* x2 > last value of Xs. */
116 return( m_function1ds.back( )->evaluate( a_x1 ) );
117 }
118 return( m_function1ds[0]->evaluate( a_x1 ) ); /* x2 < first value of Xs. */
119 }
120
121// Currently does not interpolate;
122 return( m_function1ds[static_cast<std::size_t>( iX2 )]->evaluate( a_x1 ) );
123}
double evaluate(double a_x2, double a_x1) const
long binarySearchVector(double a_x, std::vector< double > const &a_Xs)
Definition GIDI_misc.cc:33

Referenced by evaluate().

◆ function1ds() [1/2]

std::vector< Function1dForm * > & GIDI::Functions::XYs2d::function1ds ( )
inline

Returns the value of the m_function1ds member.

Definition at line 1561 of file GIDI.hpp.

◆ function1ds() [2/2]

std::vector< Function1dForm * > const & GIDI::Functions::XYs2d::function1ds ( ) const
inline

Returns the value of the m_function1ds member.

Definition at line 1560 of file GIDI.hpp.

Referenced by GIDI::settingsFluxesFromFunction3d(), MCGIDI::Functions::XYs2d::XYs2d(), and MCGIDI::Probabilities::XYs2d::XYs2d().

◆ interpolationQualifier()

std::string GIDI::Functions::XYs2d::interpolationQualifier ( ) const
inline

Returns the value of the m_interpolationQualifier member.

Definition at line 1551 of file GIDI.hpp.

◆ setInterpolationQualifier()

void GIDI::Functions::XYs2d::setInterpolationQualifier ( std::string a_interpolationQualifier)
inline

Sets the m_interpolationQualifier member to a_interpolationQualifier.

Definition at line 1552 of file GIDI.hpp.

◆ toXMLList_func()

void GIDI::Functions::XYs2d::toXMLList_func ( GUPI::WriteInfo & a_writeInfo,
std::string const & a_indent,
bool a_embedded,
bool a_inRegions ) const
virtual

Fills the argument a_writeInfo with the XML lines that represent this. Recursively enters each sub-node.

Parameters
a_writeInfo[in/out] Instance containing incremental indentation and other information and stores the appended lines.
a_indent[in] The amount to indent this node.
a_embedded[in] If true, this function is embedded in a higher dimensional function.
a_inRegions[in] If true, this is in a Regions2d container.

Reimplemented from GIDI::Functions::FunctionForm.

Definition at line 151 of file GIDI_XYs2d.cc.

151 {
152
153 std::string indent2 = a_writeInfo.incrementalIndent( a_indent );
154 std::string attributes;
155
156 if( a_embedded ) {
158 else {
159 if( a_inRegions ) {
160 attributes = a_writeInfo.addAttribute( GIDI_indexChars, intToString( index( ) ) ); }
161 else {
162 if( label( ) != "" ) attributes = a_writeInfo.addAttribute( GIDI_labelChars, label( ) );
163 }
164 }
165
166 if( m_interpolationQualifier != "" ) attributes = a_writeInfo.addAttribute( GIDI_interpolationQualifierChars, m_interpolationQualifier );
167
168 a_writeInfo.addNodeStarter( a_indent, moniker( ), attributes );
169 if( !a_embedded ) axes( ).toXMLList( a_writeInfo, indent2 );
170
171 for( std::vector<Function1dForm *>::const_iterator iter = m_function1ds.begin( ); iter != m_function1ds.end( ); ++iter ) (*iter)->toXMLList_func( a_writeInfo, indent2, true, false );
172 a_writeInfo.addNodeEnder( moniker( ) );
173}
#define GIDI_outerDomainValueChars
Definition GIDI.hpp:436
#define GIDI_labelChars
Definition GIDI.hpp:438
#define GIDI_indexChars
Definition GIDI.hpp:437
void toXMLList(GUPI::WriteInfo &a_writeInfo, std::string const &a_indent="") const
Definition GIDI_axes.cc:113
std::string const & label() const
Definition GIDI.hpp:658
Axes const & axes() const
Definition GIDI.hpp:1012
double outerDomainValue() const
Definition GIDI.hpp:1010
std::string const & moniker() const
Definition GUPI.hpp:102
void addNodeEnder(std::string const &a_moniker)
Definition GUPI.hpp:59
std::string incrementalIndent(std::string const &indent)
Definition GUPI.hpp:52
void addNodeStarter(std::string const &indent, std::string const &a_moniker, std::string const &a_attributes="")
Definition GUPI.hpp:55
std::string addAttribute(std::string const &a_name, std::string const &a_value) const
Definition GUPI.hpp:60
std::string intToString(int a_value)
Definition GIDI_misc.cc:415
std::string doubleToShortestString(double a_value, int a_significantDigits=15, int a_favorEFormBy=0)
Definition LUPI_misc.cc:349

Referenced by toXMLList_func().

◆ Xs()

std::vector< double > const & GIDI::Functions::XYs2d::Xs ( ) const
inline

Returns the value of the m_Xs member.

Definition at line 1559 of file GIDI.hpp.


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