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 ()
 destructor More...
 
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 ()
 
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
 
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 156 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 175 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 197 of file Adapter.cpp.

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

copy constructor

Definition at line 214 of file Adapter.cpp.

215  : AbsFunction ()
216  , m_case ( right.m_case )
217  , m_DIM ( right.m_DIM )
218  , m_func1 ( right.m_func1 )
219  , m_func2 ( right.m_func2 )
220  , m_arg2 ( 0 )
221  , m_func3 ( right.m_func3 )
222  , m_arg3 ( right.m_arg3 )
223  {
224  if ( 0 != right.m_arg2 )
225  {
226  std::memcpy(m_arg2, right.m_arg2, m_DIM);
227  }
228  }
Genfun::GaudiMathImplementation::SimpleFunction::~SimpleFunction ( )
virtual

destructor

Definition at line 234 of file Adapter.cpp.

235  { if( 0 != m_arg2 ) { delete m_arg2 ; m_arg2 = 0 ;} }
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 ( )
virtual
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 255 of file Adapter.cpp.

256  {
257  double result = 0 ;
258  switch ( m_case )
259  {
260  case TrivialArg :
261  result = (*m_func1) ( value ) ; break ;
262  case ArrayArg :
263  std::fill ( m_arg2 , m_arg2 + m_DIM , 0.0 );
264  m_arg2[0] = value ;
265  result = (*m_func2) ( m_arg2 ) ; break ;
266  case VectorArg :
267  std::fill ( m_arg3.begin () , m_arg3.end () , 0.0 );
268  m_arg3[0] = value ;
269  result = (*m_func3) ( m_arg3 ) ; break ;
270  default:
271  break ;
272  };
273  return result ;
274  }
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:37
double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( const Argument &  argument) const
virtual

Function value.

Definition at line 280 of file Adapter.cpp.

281  {
282  double result = 0 ;
283  switch ( m_case )
284  {
285  case TrivialArg :
286  result = (*m_func1) ( argument[0] ) ; break ;
287  case ArrayArg :
288  for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg2[i] = argument[i] ; }
289  return (*m_func2)( m_arg2 ) ; ; break ;
290  case VectorArg :
291  for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg3[i] = argument[i] ; }
292  result = (*m_func3) ( m_arg3 ) ; break ;
293  default:
294  break ;
295  }
296  return result ;
297  }
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 241 of file Adapter.cpp.

242  {
243  if ( i >= m_DIM )
244  {
245  const AbsFunction& aux = GaudiMath::Constant( 0 , m_DIM ) ;
246  return Genfun::FunctionNoop( &aux ) ;
247  }
248  const AbsFunction& aux = GaudiMath::Derivative( *this , i ) ;
249  return Genfun::FunctionNoop( &aux );
250  }
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
Definition: GaudiMath.h:31
list i
Definition: ana.py:128
Genfun::GaudiMathImplementation::Constant Constant
Definition: GaudiMath.h:29

Member Data Documentation

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: