CLHEP 2.0.4.7 Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

Parameter.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: Parameter.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $
00003 #include "CLHEP/GenericFunctions/Parameter.hh"
00004 
00005 namespace Genfun {
00006 PARAMETER_OBJECT_IMP(Parameter)
00007 
00008 Parameter::Parameter(std::string name, double value, double lowerLimit, double upperLimit):
00009   _name(name),_value(value),_lowerLimit(lowerLimit),_upperLimit(upperLimit),_sourceParameter(NULL)
00010 {
00011 } 
00012 
00013 Parameter::~Parameter() {
00014 }
00015 
00016 std::ostream & operator << ( std::ostream & o, const Parameter & p) {
00017   return o << p.getName()   << "\t" << " value = "
00018            << p.getValue()  << "\t" <<" limits: ["
00019            << p.getLowerLimit() << "," 
00020            << p.getUpperLimit() << "]" << std::endl; 
00021 }
00022 
00023 const std::string & Parameter::getName() const {
00024   return _name;
00025 }
00026 
00027 double Parameter::getValue() const
00028 {
00029   if (_sourceParameter) {
00030     return _sourceParameter->getValue();
00031   }
00032   else {
00033     return _value;
00034   }
00035 }
00036 
00037 double Parameter::getLowerLimit() const
00038 {
00039   if (_sourceParameter) {
00040     return -1E-100;
00041   }
00042   else {
00043     return _lowerLimit;
00044   }
00045 }
00046 
00047 double Parameter::getUpperLimit() const
00048 {
00049   if (_sourceParameter) {
00050     return 1E100;
00051   }
00052   else {
00053     return _upperLimit;
00054   }
00055 }
00056 
00057 void Parameter::setValue(double value)
00058 {
00059   if (_sourceParameter) {
00060     std::cerr
00061       << "Warning:  Parameter is connected.  Function has no effect."
00062       << std::endl;
00063   }
00064   else {
00065     _value=value;
00066   }
00067 }
00068 
00069 void Parameter::setLowerLimit(double lowerLimit)
00070 {
00071   if (_sourceParameter) {
00072     std::cerr
00073       << "Warning:  Parameter is connected.  Function has no effect."
00074       << std::endl;
00075   }
00076   else {
00077     _lowerLimit=lowerLimit;
00078   }
00079 }
00080 
00081 void Parameter::setUpperLimit(double upperLimit)
00082 {
00083   if (_sourceParameter) {
00084     std::cerr
00085       << "Warning:  Parameter is connected.  Function has no effect."
00086       << std::endl;
00087   }
00088   else {
00089     _upperLimit=upperLimit;
00090   }
00091 }
00092 
00093 void Parameter::connectFrom(const AbsParameter *  source)
00094 {
00095   const Parameter *sp = source->parameter();
00096   if (sp && sp->_sourceParameter) {
00097     connectFrom(sp->_sourceParameter);
00098   }
00099   else {
00100     _sourceParameter = source;
00101   }
00102 }
00103 
00104  
00105 Parameter::Parameter(const Parameter & right):
00106   _name(right._name),
00107   _value(right._value),
00108   _lowerLimit(right._lowerLimit),
00109   _upperLimit(right._upperLimit),
00110   _sourceParameter(right._sourceParameter)
00111 {
00112 }
00113   
00114 const Parameter & Parameter::operator=(const Parameter &right) {
00115   if (this != &right) { 
00116     _name=right._name;
00117     _value=right._value;
00118     _lowerLimit=right._lowerLimit;
00119     _upperLimit=right._upperLimit;
00120     _sourceParameter=right._sourceParameter;
00121   }
00122   return *this;
00123 }
00124 
00125 } // namespace Genfun

Generated on Thu Jul 1 22:02:30 2010 for CLHEP by  doxygen 1.4.7