Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

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.

00209 { TrivialArg , ArrayArg , VectorArg } ;


Constructor & Destructor Documentation

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

From CLHEP/GenericFunctions.

from CLHGEP/GenericFunctions

constructor from the trivial function

Parameters:
func pointer to trivial function

Definition at line 155 of file Adapter.cpp.

00156       : AbsFunction () 
00157       , m_case      ( SimpleFunction::TrivialArg )
00158       , m_DIM       ( 1    ) 
00159       , m_func1     ( func ) 
00160       , m_func2     ( 0    ) 
00161       , m_arg2      ( 0    ) 
00162       , m_func3     ( 0    ) 
00163       , m_arg3      (      ) 
00164     {}

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

constructor from the simple function with array-like argument

Parameters:
func pointer to trivial function
dim dimension of the argument

Definition at line 174 of file Adapter.cpp.

00176       : AbsFunction ()
00177       , m_case      ( SimpleFunction::ArrayArg  )
00178       , m_DIM       ( dim  ) 
00179       , m_func1     ( 0    )
00180       , m_func2     ( func ) 
00181       , m_arg2      ( 0    )
00182       , m_func3     ( 0    ) 
00183       , m_arg3      (      )
00184     {
00185       m_arg2 = new double[dim];
00186     }

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

constructor from the simple function with vector argument

Parameters:
func pointer to trivial function
dim dimension of the argument
Genfun::GaudiMathImplementation::SimpleFunction::SimpleFunction ( const SimpleFunction right  ) 

copy constructor

Definition at line 213 of file Adapter.cpp.

00214       : AbsFunction ()
00215       , m_case      ( right.m_case  )
00216       , m_DIM       ( right.m_DIM   )
00217       , m_func1     ( right.m_func1 )
00218       , m_func2     ( right.m_func2 )
00219       , m_arg2      ( 0             )
00220       , m_func3     ( right.m_func3 )
00221       , m_arg3      ( right.m_arg3  )
00222     {
00223       if (  0 != right.m_arg2 ) 
00224       {
00225         m_arg2 = new double[m_DIM] ;
00226         std::copy( right.m_arg2 , right.m_arg2 + m_DIM , m_arg2 );
00227       } 
00228     }

Genfun::GaudiMathImplementation::SimpleFunction::~SimpleFunction (  )  [virtual]

destructor

Definition at line 234 of file Adapter.cpp.

00235     { 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.

00243 { 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.

00245 { return true    ; }

double Genfun::GaudiMathImplementation::SimpleFunction::operator() ( const Argument &  argument  )  const [virtual]

Function value.

Definition at line 280 of file Adapter.cpp.

00281     {
00282       double result = 0 ;
00283       switch ( m_case ) 
00284       {
00285       case TrivialArg  : 
00286         result = (*m_func1) ( argument[0]  ) ; break ;
00287       case ArrayArg    :
00288         for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg2[i] = argument[i] ; }
00289         return (*m_func2)( m_arg2 ) ;        ; break ;
00290       case VectorArg   :
00291         for( size_t i = 0 ; i < m_DIM ; ++i ) { m_arg3[i] = argument[i] ; }
00292         result = (*m_func3) ( m_arg3 ) ; break ;        
00293       default:
00294         break ;
00295       }      
00296       return result ;
00297     }

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

Function value.

Definition at line 255 of file Adapter.cpp.

00256     {
00257       double result = 0 ;
00258       switch ( m_case ) 
00259       {
00260       case TrivialArg  : 
00261         result = (*m_func1) ( value  ) ; break ;
00262       case ArrayArg    :
00263         std::fill ( m_arg2 , m_arg2 + m_DIM , 0.0 );
00264         m_arg2[0] = value  ;
00265         result = (*m_func2) ( m_arg2 ) ; break ;
00266       case VectorArg   :
00267         std::fill ( m_arg3.begin () , m_arg3.end () , 0.0 );
00268         m_arg3[0] = value  ;
00269         result = (*m_func3) ( m_arg3 ) ; break ;
00270       default:
00271         break ;
00272       };
00273       return result ;
00274     }

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.

00242     {
00243       if ( i >= m_DIM ) 
00244       { 
00245         const AbsFunction& aux = GaudiMath::Constant( 0 , m_DIM ) ;
00246         return Genfun::FunctionNoop( &aux ) ;       
00247       }
00248       const  AbsFunction& aux = GaudiMath::Derivative( *this , i ) ;
00249       return Genfun::FunctionNoop( &aux );
00250     }


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 Wed Feb 9 16:33:43 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004