Genfun::GaudiMathImplementation::SimpleFunction Class Reference

#include <GaudiMath/Adapters.h>

Inheritance diagram for Genfun::GaudiMathImplementation::SimpleFunction:
Collaboration diagram for Genfun::GaudiMathImplementation::SimpleFunction:

Public Types

typedef double(* Function1) (const double)
 
typedef double(* Function2) (const double *)
 
typedef double(* Function3) (const std::vector< double > &)
 
typedef double(* Function1) (const double)
 
typedef double(* Function2) (const double *)
 
typedef double(* Function3) (const std::vector< double > &)
 

Public Member Functions

 SimpleFunction (Function1 func)
 From CLHEP/GenericFunctions. More...
 
 SimpleFunction (Function2 func, const size_t dim)
 constructor from the simple function with array-like argument More...
 
 SimpleFunction (Function3 func, const size_t dim)
 constructor from the simple function with vector argument More...
 
 SimpleFunction (const SimpleFunction &)
 copy constructor More...
 
virtual ~SimpleFunction ()=default
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual double operator() (double) const
 Function value. More...
 
virtual double operator() (const Argument &) const
 Function value. More...
 
virtual Genfun::Derivative partial (unsigned int i) const
 Derivatives. More...
 
 SimpleFunction (Function1 func)
 From CLHEP/GenericFunctions. More...
 
 SimpleFunction (Function2 func, const size_t dim)
 constructor from the simple function with array-like argument More...
 
 SimpleFunction (Function3 func, const size_t dim)
 constructor from the simple function with vector argument More...
 
 SimpleFunction (const SimpleFunction &)
 copy constructor More...
 
virtual ~SimpleFunction ()=default
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual double operator() (double) const
 Function value. More...
 
virtual double operator() (const Argument &) const
 Function value. More...
 
virtual Genfun::Derivative partial (unsigned int i) const
 Derivatives. More...
 

Protected Types

enum  Case {
  TrivialArg, ArrayArg, VectorArg, TrivialArg,
  ArrayArg, VectorArg
}
 
enum  Case {
  TrivialArg, ArrayArg, VectorArg, TrivialArg,
  ArrayArg, VectorArg
}
 

Private Member Functions

 SimpleFunction ()
 
SimpleFunctionoperator= (const SimpleFunction &)
 
 SimpleFunction ()
 
SimpleFunctionoperator= (const SimpleFunction &)
 

Private Attributes

Case m_case
 
size_t m_DIM
 
Function1 m_func1
 
Function2 m_func2
 
std::unique_ptr< double[]> m_arg2
 
Function3 m_func3
 
std::vector< double > m_arg3
 

Detailed Description

Author
Ivan BELYAEV
Date
2003-08-31

Definition at line 202 of file FunAdapters.h.

Member Typedef Documentation

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function1) (const double)

Definition at line 205 of file FunAdapters.h.

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function1) (const double)

Definition at line 205 of file FunAdapters.h.

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function2) (const double *)

Definition at line 206 of file FunAdapters.h.

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function2) (const double *)

Definition at line 206 of file FunAdapters.h.

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function3) (const std::vector< double > &)

Definition at line 207 of file FunAdapters.h.

typedef double(* Genfun::GaudiMathImplementation::SimpleFunction::Function3) (const std::vector< double > &)

Definition at line 207 of file FunAdapters.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( SimpleFunction::Function1  func)

From CLHEP/GenericFunctions.

from CLHGEP/GenericFunctions

constructor from the trivial function

Parameters
funcpointer to trivial function

Definition at line 155 of file Adapter.cpp.

Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( SimpleFunction::Function2  func,
const size_t  dim 
)

constructor from the simple function with array-like argument

Parameters
funcpointer to trivial function
dimdimension of the argument

Definition at line 173 of file Adapter.cpp.

Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( SimpleFunction::Function3  func,
const size_t  dim 
)

constructor from the simple function with vector argument

constructor from the simple function with array-like argument

Parameters
funcpointer to trivial function
dimdimension of the argument

Definition at line 194 of file Adapter.cpp.

Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( const SimpleFunction right)

copy constructor

Definition at line 210 of file Adapter.cpp.

211  : AbsFunction ()
212  , m_case ( right.m_case )
213  , m_DIM ( right.m_DIM )
214  , m_func1 ( right.m_func1 )
215  , m_func2 ( right.m_func2 )
216  , m_func3 ( right.m_func3 )
217  , m_arg3 ( right.m_arg3 )
218  {
219  if ( right.m_arg2 )
220  {
221  m_arg2.reset( new double[m_DIM] );
222  std::copy_n(right.m_arg2.get(), m_DIM, m_arg2.get());
223  }
224  }
virtual Genfun::GaudiMathImplementation::SimpleFunction::~SimpleFunction ( )
virtualdefault
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( )
private
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( Function1  func)

From CLHEP/GenericFunctions.

constructor from the trivial function

Parameters
funcpointer to trivial function
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( Function2  func,
const size_t  dim 
)

constructor from the simple function with array-like argument

Parameters
funcpointer to trivial function
dimdimension of the argument
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( Function3  func,
const size_t  dim 
)

constructor from the simple function with vector argument

Parameters
funcpointer to trivial function
dimdimension of the argument
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( const SimpleFunction )

copy constructor

virtual Genfun::GaudiMathImplementation::SimpleFunction::~SimpleFunction ( )
virtualdefault
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( )
private

Member Function Documentation

virtual unsigned int Genfun::GaudiMathImplementation::SimpleFunction::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 243 of file FunAdapters.h.

virtual unsigned int Genfun::GaudiMathImplementation::SimpleFunction::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 243 of file FunAdapters.h.

virtual bool Genfun::GaudiMathImplementation::SimpleFunction::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 245 of file FunAdapters.h.

245 { return true ; }
virtual bool Genfun::GaudiMathImplementation::SimpleFunction::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 245 of file FunAdapters.h.

245 { return true ; }
virtual double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( double  ) const
virtual

Function value.

double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( double  value) const
virtual

Function value.

Definition at line 246 of file Adapter.cpp.

247  {
248  double result = 0 ;
249  switch ( m_case )
250  {
251  case TrivialArg :
252  result = (*m_func1) ( value ) ; break ;
253  case ArrayArg :
254  std::fill_n( m_arg2.get() , m_DIM , 0.0 );
255  m_arg2[0] = value ;
256  result = (*m_func2) ( m_arg2.get() ) ; break ;
257  case VectorArg :
258  std::fill ( m_arg3.begin () , m_arg3.end () , 0.0 );
259  m_arg3[0] = value ;
260  result = (*m_func3) ( m_arg3 ) ; break ;
261  default:
262  break ;
263  };
264  return result ;
265  }
GAUDI_API void fill(AIDA::IHistogram1D *histo, const double value, const double weight=1.0)
simple function to fill AIDA::IHistogram1D objects
Definition: Fill.cpp:36
double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( const Argument &  argument) const
virtual

Function value.

Definition at line 271 of file Adapter.cpp.

272  {
273  double result = 0 ;
274  switch ( m_case )
275  {
276  case TrivialArg :
277  result = (*m_func1) ( argument[0] ) ; break ;
278  case ArrayArg :
279  for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg2[i] = argument[i] ; }
280  return (*m_func2)( m_arg2.get() ) ; ; break ;
281  case VectorArg :
282  for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg3[i] = argument[i] ; }
283  result = (*m_func3) ( m_arg3 ) ; break ;
284  default:
285  break ;
286  }
287  return result ;
288  }
list i
Definition: ana.py:128
virtual double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( const Argument &  ) const
virtual

Function value.

SimpleFunction& Genfun::GaudiMathImplementation::SimpleFunction::operator= ( const SimpleFunction )
private
SimpleFunction& Genfun::GaudiMathImplementation::SimpleFunction::operator= ( const SimpleFunction )
private
virtual Genfun::Derivative Genfun::GaudiMathImplementation::SimpleFunction::partial ( unsigned int  i) const
virtual

Derivatives.

Genfun::Derivative Genfun::GaudiMathImplementation::SimpleFunction::partial ( unsigned int  i) const
virtual

Derivatives.

Definition at line 232 of file Adapter.cpp.

233  {
234  if ( i >= m_DIM )
235  {
236  const AbsFunction& aux = GaudiMath::Constant( 0 , m_DIM ) ;
237  return Genfun::FunctionNoop( &aux ) ;
238  }
239  const AbsFunction& aux = GaudiMath::Derivative( *this , i ) ;
240  return Genfun::FunctionNoop( &aux );
241  }
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
Definition: GaudiMath.h:29
list i
Definition: ana.py:128
Genfun::GaudiMathImplementation::Constant Constant
Definition: GaudiMath.h:27

Member Data Documentation

std::unique_ptr< double[]> Genfun::GaudiMathImplementation::SimpleFunction::m_arg2
private

Definition at line 268 of file FunAdapters.h.

std::vector< double > Genfun::GaudiMathImplementation::SimpleFunction::m_arg3
mutableprivate

Definition at line 271 of file FunAdapters.h.

Case Genfun::GaudiMathImplementation::SimpleFunction::m_case
private

Definition at line 262 of file FunAdapters.h.

size_t Genfun::GaudiMathImplementation::SimpleFunction::m_DIM
private

Definition at line 263 of file FunAdapters.h.

Function1 Genfun::GaudiMathImplementation::SimpleFunction::m_func1
private

Definition at line 265 of file FunAdapters.h.

Function2 Genfun::GaudiMathImplementation::SimpleFunction::m_func2
private

Definition at line 267 of file FunAdapters.h.

Function3 Genfun::GaudiMathImplementation::SimpleFunction::m_func3
private

Definition at line 270 of file FunAdapters.h.


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