Gaudi Framework, version v23r2

Home   Generated: Thu Jun 28 2012
Public Types | Public Member Functions | Protected Types | Private Member Functions | Private Attributes

Genfun::GaudiMathImplementation::SimpleFunction Class Reference

#include <GaudiMath/Adapters.h>

Collaboration diagram for Genfun::GaudiMathImplementation::SimpleFunction:
Collaboration graph
[legend]

List of all members.

Public Types

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.
 SimpleFunction (Function2 func, const size_t dim)
 constructor from the simple function with array-like argument
 SimpleFunction (Function3 func, const size_t dim)
 constructor from the simple function with vector argument
 SimpleFunction (const SimpleFunction &)
 copy constructor
virtual ~SimpleFunction ()
 destructor
virtual unsigned int dimensionality () const
 dimensionality of the problem
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative?
virtual double operator() (double) const
 Function value.
virtual double operator() (const Argument &) const
 Function value.
virtual Genfun::Derivative partial (unsigned int i) const
 Derivatives.

Protected Types

enum  Case { TrivialArg, ArrayArg, VectorArg }

Private Member Functions

 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

Definition at line 205 of file FunAdapters.h.

Definition at line 206 of file FunAdapters.h.

Definition at line 207 of file FunAdapters.h.


Member Enumeration Documentation

Enumerator:
TrivialArg 
ArrayArg 
VectorArg 

Definition at line 209 of file FunAdapters.h.


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.

      : AbsFunction ()
      , m_case      ( SimpleFunction::TrivialArg )
      , m_DIM       ( 1    )
      , m_func1     ( func )
      , m_func2     ( 0    )
      , m_arg2      ( 0    )
      , m_func3     ( 0    )
      , m_arg3      (      )
    {}
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.

      : AbsFunction ()
      , m_case      ( SimpleFunction::ArrayArg  )
      , m_DIM       ( dim  )
      , m_func1     ( 0    )
      , m_func2     ( func )
      , m_arg2      ( 0    )
      , m_func3     ( 0    )
      , m_arg3      (      )
    {
      m_arg2 = new double[dim];
    }
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 right )

copy constructor

Definition at line 214 of file Adapter.cpp.

      : AbsFunction ()
      , m_case      ( right.m_case  )
      , m_DIM       ( right.m_DIM   )
      , m_func1     ( right.m_func1 )
      , m_func2     ( right.m_func2 )
      , m_arg2      ( 0             )
      , m_func3     ( right.m_func3 )
      , m_arg3      ( right.m_arg3  )
    {
      if (  0 != right.m_arg2 )
      {
        std::memcpy(m_arg2, right.m_arg2, m_DIM);
      }
    }
Genfun::GaudiMathImplementation::SimpleFunction::~SimpleFunction (  ) [virtual]

destructor

Definition at line 234 of file Adapter.cpp.

    { if( 0 != m_arg2 ) { delete m_arg2 ; m_arg2 = 0 ;} }
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction (  ) [private]

Member Function Documentation

virtual unsigned int Genfun::GaudiMathImplementation::SimpleFunction::dimensionality (  ) const [inline, virtual]

dimensionality of the problem

Definition at line 243 of file FunAdapters.h.

{ return m_DIM   ; }
virtual bool Genfun::GaudiMathImplementation::SimpleFunction::hasAnalyticDerivative (  ) const [inline, virtual]

Does this function have an analytic derivative?

Definition at line 245 of file FunAdapters.h.

{ return true    ; }
double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( const Argument &  argument ) const [virtual]

Function value.

Definition at line 280 of file Adapter.cpp.

    {
      double result = 0 ;
      switch ( m_case )
      {
      case TrivialArg  :
        result = (*m_func1) ( argument[0]  ) ; break ;
      case ArrayArg    :
        for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg2[i] = argument[i] ; }
        return (*m_func2)( m_arg2 ) ;        ; break ;
      case VectorArg   :
        for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg3[i] = argument[i] ; }
        result = (*m_func3) ( m_arg3 ) ; break ;
      default:
        break ;
      }
      return result ;
    }
double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( double  value ) const [virtual]

Function value.

Definition at line 255 of file Adapter.cpp.

    {
      double result = 0 ;
      switch ( m_case )
      {
      case TrivialArg  :
        result = (*m_func1) ( value  ) ; break ;
      case ArrayArg    :
        std::fill ( m_arg2 , m_arg2 + m_DIM , 0.0 );
        m_arg2[0] = value  ;
        result = (*m_func2) ( m_arg2 ) ; break ;
      case VectorArg   :
        std::fill ( m_arg3.begin () , m_arg3.end () , 0.0 );
        m_arg3[0] = value  ;
        result = (*m_func3) ( m_arg3 ) ; break ;
      default:
        break ;
      };
      return result ;
    }
SimpleFunction& Genfun::GaudiMathImplementation::SimpleFunction::operator= ( const SimpleFunction  ) [private]
Genfun::Derivative Genfun::GaudiMathImplementation::SimpleFunction::partial ( unsigned int  i ) const [virtual]

Derivatives.

Definition at line 241 of file Adapter.cpp.

    {
      if ( i >= m_DIM )
      {
        const AbsFunction& aux = GaudiMath::Constant( 0 , m_DIM ) ;
        return Genfun::FunctionNoop( &aux ) ;
      }
      const  AbsFunction& aux = GaudiMath::Derivative( *this , i ) ;
      return Genfun::FunctionNoop( &aux );
    }

Member Data Documentation

Definition at line 268 of file FunAdapters.h.

Definition at line 271 of file FunAdapters.h.

Definition at line 262 of file FunAdapters.h.

Definition at line 263 of file FunAdapters.h.

Definition at line 265 of file FunAdapters.h.

Definition at line 267 of file FunAdapters.h.

Definition at line 270 of file FunAdapters.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Thu Jun 28 2012 23:27:53 for Gaudi Framework, version v23r2 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004