CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

HepTool::Evaluator Class Reference

#include <Evaluator.h>

Inheritance diagram for HepTool::Evaluator:

MyEvaluator List of all members.

Public Types

 OK
 WARNING_EXISTING_VARIABLE
 WARNING_EXISTING_FUNCTION
 WARNING_BLANK_STRING
 ERROR_NOT_A_NAME
 ERROR_SYNTAX_ERROR
 ERROR_UNPAIRED_PARENTHESIS
 ERROR_UNEXPECTED_SYMBOL
 ERROR_UNKNOWN_VARIABLE
 ERROR_UNKNOWN_FUNCTION
 ERROR_EMPTY_PARAMETER
 ERROR_CALCULATION_ERROR
enum  {
  OK, WARNING_EXISTING_VARIABLE, WARNING_EXISTING_FUNCTION, WARNING_BLANK_STRING,
  ERROR_NOT_A_NAME, ERROR_SYNTAX_ERROR, ERROR_UNPAIRED_PARENTHESIS, ERROR_UNEXPECTED_SYMBOL,
  ERROR_UNKNOWN_VARIABLE, ERROR_UNKNOWN_FUNCTION, ERROR_EMPTY_PARAMETER, ERROR_CALCULATION_ERROR
}

Public Member Functions

 Evaluator ()
 ~Evaluator ()
double evaluate (const char *expression)
int status () const
int error_position () const
void print_error () const
std::string error_name () const
void setVariable (const char *name, double value)
void setVariable (const char *name, const char *expression)
void setFunction (const char *name, double(*fun)())
void setFunction (const char *name, double(*fun)(double))
void setFunction (const char *name, double(*fun)(double, double))
void setFunction (const char *name, double(*fun)(double, double, double))
void setFunction (const char *name, double(*fun)(double, double, double, double))
void setFunction (const char *name, double(*fun)(double, double, double, double, double))
bool findVariable (const char *name) const
bool findFunction (const char *name, int npar) const
void removeVariable (const char *name)
void removeFunction (const char *name, int npar)
void clear ()
void setStdMath ()
void setSystemOfUnits (double meter=1.0, double kilogram=1.0, double second=1.0, double ampere=1.0, double kelvin=1.0, double mole=1.0, double candela=1.0)

Detailed Description

Evaluator of arithmetic expressions with an extendable dictionary. Example:
   #include "CLHEP/Evaluator/Evaluator.h"
   HepTool::Evaluator eval;
   eval.setStdMath();
   double res = eval.evaluate("sin(30*degree)");
   if (eval.status() != HepTool::Evaluator::OK) eval.print_error();

Author:
Evgeni Chernyaev <Evgueni.Tcherniaev@cern.ch>

Definition at line 26 of file Evaluator.h.


Member Enumeration Documentation

anonymous enum

List of possible statuses. Status of the last operation can be obtained with status(). In case if status() is an ERROR the corresponding error message can be printed with print_error().

See also:
status

error_position

print_error

Enumerator:
OK  Everything OK
WARNING_EXISTING_VARIABLE  Redefinition of existing variable
WARNING_EXISTING_FUNCTION  Redefinition of existing function
WARNING_BLANK_STRING  Empty input string
ERROR_NOT_A_NAME  Not allowed sysmbol in the name of variable or function
ERROR_SYNTAX_ERROR  Systax error
ERROR_UNPAIRED_PARENTHESIS  Unpaired parenthesis
ERROR_UNEXPECTED_SYMBOL  Unexpected sysbol
ERROR_UNKNOWN_VARIABLE  Non-existing variable
ERROR_UNKNOWN_FUNCTION  Non-existing function
ERROR_EMPTY_PARAMETER  Function call has empty parameter
ERROR_CALCULATION_ERROR  Error during calculation

Definition at line 39 of file Evaluator.h.


Constructor & Destructor Documentation

HepTool::Evaluator::Evaluator (  ) 

Constructor.

Definition at line 597 of file Evaluator.cc.

References OK, Struct::theExpression, Struct::thePosition, Struct::theResult, and Struct::theStatus.

HepTool::Evaluator::~Evaluator (  ) 

Destructor.

Definition at line 607 of file Evaluator.cc.


Member Function Documentation

void HepTool::Evaluator::clear (  ) 

Clear all settings.

Definition at line 763 of file Evaluator.cc.

References OK, Struct::theDictionary, Struct::theExpression, Struct::thePosition, Struct::theResult, and Struct::theStatus.

std::string HepTool::Evaluator::error_name (  )  const

get a string defining the error name

Definition at line 651 of file Evaluator.cc.

References ERROR_CALCULATION_ERROR, ERROR_EMPTY_PARAMETER, ERROR_NOT_A_NAME, ERROR_SYNTAX_ERROR, ERROR_UNEXPECTED_SYMBOL, ERROR_UNKNOWN_FUNCTION, ERROR_UNKNOWN_VARIABLE, ERROR_UNPAIRED_PARENTHESIS, and Struct::theStatus.

Referenced by eval(), and print_error().

int HepTool::Evaluator::error_position (  )  const

Returns position in the input string where the problem occured.

Definition at line 637 of file Evaluator.cc.

double HepTool::Evaluator::evaluate ( const char *  expression  ) 

Evaluates the arithmetic expression given as character string. The expression may consist of numbers, variables and functions separated by arithmetic (+, - , /, *, ^, **) and logical operators (==, !=, >, >=, <, <=, &&, ||).

Parameters:
expression input expression.
Returns:
result of the evaluation.
See also:
status

error_position

print_error

Reimplemented in MyEvaluator.

Definition at line 612 of file Evaluator.cc.

References Struct::theDictionary, Struct::theExpression, Struct::thePosition, Struct::theResult, Struct::theStatus, and WARNING_BLANK_STRING.

Referenced by eval(), and MyEvaluator::evaluate().

bool HepTool::Evaluator::findFunction ( const char *  name,
int  npar 
) const

Finds the function in the dictionary.

Parameters:
name name of the function to be unset.
npar number of parameters of the function.
Returns:
true if such a function exists, false otherwise.

Definition at line 733 of file Evaluator.cc.

References MAX_N_PAR, REMOVE_BLANKS, and Struct::theDictionary.

bool HepTool::Evaluator::findVariable ( const char *  name  )  const

Finds the variable in the dictionary.

Parameters:
name name of the variable.
Returns:
true if such a variable exists, false otherwise.

Definition at line 722 of file Evaluator.cc.

References REMOVE_BLANKS, and Struct::theDictionary.

void HepTool::Evaluator::print_error (  )  const

Prints error message if status() is an ERROR.

Definition at line 642 of file Evaluator.cc.

References error_name(), OK, and Struct::theStatus.

void HepTool::Evaluator::removeFunction ( const char *  name,
int  npar 
)

Removes the function from the dictionary.

Parameters:
name name of the function to be unset.
npar number of parameters of the function.

Definition at line 753 of file Evaluator.cc.

References MAX_N_PAR, REMOVE_BLANKS, and Struct::theDictionary.

void HepTool::Evaluator::removeVariable ( const char *  name  ) 

Removes the variable from the dictionary.

Parameters:
name name of the variable.

Definition at line 744 of file Evaluator.cc.

References REMOVE_BLANKS, and Struct::theDictionary.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)(double, double, double, double, double)  fun 
)

Adds to the dictionary a function with five parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 717 of file Evaluator.cc.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)(double, double, double, double)  fun 
)

Adds to the dictionary a function with four parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 713 of file Evaluator.cc.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)(double, double, double)  fun 
)

Adds to the dictionary a function with three parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 709 of file Evaluator.cc.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)(double, double)  fun 
)

Adds to the dictionary a function with two parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 705 of file Evaluator.cc.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)(double)  fun 
)

Adds to the dictionary a function with one parameter. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 701 of file Evaluator.cc.

void HepTool::Evaluator::setFunction ( const char *  name,
double(*)()  fun 
)

Adds to the dictionary a function without parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.

Parameters:
name function name.
fun pointer to the real function in the user code.

Definition at line 697 of file Evaluator.cc.

Referenced by setStdMath().

void HepTool::Evaluator::setStdMath (  ) 

Sets standard mathematical functions and constants.

Definition at line 31 of file setStdMath.cc.

References setFunction(), and setVariable().

Referenced by eval(), and MyEvaluator::MyEvaluator().

void HepTool::Evaluator::setSystemOfUnits ( double  meter = 1.0,
double  kilogram = 1.0,
double  second = 1.0,
double  ampere = 1.0,
double  kelvin = 1.0,
double  mole = 1.0,
double  candela = 1.0 
)

Sets system of units. Default is the SI system of units. To set the CGS (Centimeter-Gram-Second) system of units one should call: setSystemOfUnits(100., 1000., 1.0, 1.0, 1.0, 1.0, 1.0);

To set system of units accepted in the GEANT4 simulation toolkit one should call:

   setSystemOfUnits(1.e+3, 1./1.60217733e-25, 1.e+9, 1./1.60217733e-10,
                    1.0, 1.0, 1.0);

The basic units in GEANT4 are:

   millimeter              (millimeter = 1.)
   nanosecond              (nanosecond = 1.)
   Mega electron Volt      (MeV        = 1.)
   positron charge         (eplus      = 1.)
   degree Kelvin           (kelvin     = 1.)
   the amount of substance (mole       = 1.)
   luminous intensity      (candela    = 1.)
   radian                  (radian     = 1.)
   steradian               (steradian  = 1.)

Definition at line 10 of file setSystemOfUnits.cc.

References g(), and setVariable().

Referenced by eval().

void HepTool::Evaluator::setVariable ( const char *  name,
const char *  expression 
)

Adds to the dictionary a variable with an arithmetic expression assigned to it. If a variable with such a name already exist in the dictionary, then status will be set to WARNING_EXISTING_VARIABLE.

Parameters:
name name of the variable.
expression arithmetic expression.

Definition at line 691 of file Evaluator.cc.

void HepTool::Evaluator::setVariable ( const char *  name,
double  value 
)

Adds to the dictionary a variable with given value. If a variable with such a name already exist in the dictionary, then status will be set to WARNING_EXISTING_VARIABLE.

Parameters:
name name of the variable.
value value assigned to the variable.

Definition at line 688 of file Evaluator.cc.

Referenced by main(), setStdMath(), and setSystemOfUnits().

int HepTool::Evaluator::status (  )  const

Returns status of the last operation with the evaluator.

Definition at line 632 of file Evaluator.cc.

Referenced by eval(), MyEvaluator::evaluate(), and MyEvaluator::isOK().


The documentation for this class was generated from the following files:
Generated on 15 Nov 2012 for CLHEP by  doxygen 1.4.7