CLHEP 2.0.4.7 Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
#include <Evaluator.h>
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) |
#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();
Definition at line 26 of file Evaluator.h.
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().
Definition at line 39 of file Evaluator.h.
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.
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 (==, !=, >, >=, <, <=, &&, ||).
expression | input expression. |
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().
bool HepTool::Evaluator::findFunction | ( | const char * | name, | |
int | npar | |||
) | const |
Finds the function in the dictionary.
name | name of the function to be unset. | |
npar | number of parameters of the function. |
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.
name | name of the variable. |
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.
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.
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.
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.
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.
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.
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.
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.
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 33 of file setStdMath.cc.
References setFunction(), and setVariable().
Referenced by eval().
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 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.
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.
name | name of the variable. | |
value | value assigned to the variable. |
Definition at line 688 of file Evaluator.cc.
Referenced by 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().