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

Parameter.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 // $Id: Parameter.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $
4 
5 namespace Genfun {
6 PARAMETER_OBJECT_IMP(Parameter)
7 
8 Parameter::Parameter(std::string name, double value, double lowerLimit, double upperLimit):
9  _name(name),_value(value),_lowerLimit(lowerLimit),_upperLimit(upperLimit),_sourceParameter(NULL)
10 {
11 }
12 
14 }
15 
16 std::ostream & operator << ( std::ostream & o, const Parameter & p) {
17  return o << p.getName() << "\t" << " value = "
18  << p.getValue() << "\t" <<" limits: ["
19  << p.getLowerLimit() << ","
20  << p.getUpperLimit() << "]" << std::endl;
21 }
22 
23 const std::string & Parameter::getName() const {
24  return _name;
25 }
26 
27 double Parameter::getValue() const
28 {
29  if (_sourceParameter) {
30  return _sourceParameter->getValue();
31  }
32  else {
33  return _value;
34  }
35 }
36 
38 {
39  if (_sourceParameter) {
40  return -1E-100;
41  }
42  else {
43  return _lowerLimit;
44  }
45 }
46 
48 {
49  if (_sourceParameter) {
50  return 1E100;
51  }
52  else {
53  return _upperLimit;
54  }
55 }
56 
57 void Parameter::setValue(double value)
58 {
59  if (_sourceParameter) {
60  std::cerr
61  << "Warning: Parameter is connected. Function has no effect."
62  << std::endl;
63  }
64  else {
65  _value=value;
66  }
67 }
68 
69 void Parameter::setLowerLimit(double lowerLimit)
70 {
71  if (_sourceParameter) {
72  std::cerr
73  << "Warning: Parameter is connected. Function has no effect."
74  << std::endl;
75  }
76  else {
77  _lowerLimit=lowerLimit;
78  }
79 }
80 
81 void Parameter::setUpperLimit(double upperLimit)
82 {
83  if (_sourceParameter) {
84  std::cerr
85  << "Warning: Parameter is connected. Function has no effect."
86  << std::endl;
87  }
88  else {
89  _upperLimit=upperLimit;
90  }
91 }
92 
94 {
95  const Parameter *sp = source->parameter();
96  if (sp && sp->_sourceParameter) {
97  connectFrom(sp->_sourceParameter);
98  }
99  else {
100  _sourceParameter = source;
101  }
102 }
103 
104 
106  AbsParameter(right),
107  _name(right._name),
108  _value(right._value),
109  _lowerLimit(right._lowerLimit),
110  _upperLimit(right._upperLimit),
111  _sourceParameter(right._sourceParameter)
112 {
113 }
114 
115 const Parameter & Parameter::operator=(const Parameter &right) {
116  if (this != &right) {
117  _name=right._name;
118  _value=right._value;
119  _lowerLimit=right._lowerLimit;
120  _upperLimit=right._upperLimit;
121  _sourceParameter=right._sourceParameter;
122  }
123  return *this;
124 }
125 
126 } // namespace Genfun
#define PARAMETER_OBJECT_IMP(classname)
virtual double getValue() const =0
const Parameter & operator=(const Parameter &right)
Definition: Parameter.cc:115
const std::string & getName() const
Definition: Parameter.cc:23
void setLowerLimit(double lowerLimit)
Definition: Parameter.cc:69
virtual double getValue() const
Definition: Parameter.cc:27
void connectFrom(const AbsParameter *source)
Definition: Parameter.cc:93
double getLowerLimit() const
Definition: Parameter.cc:37
void setUpperLimit(double upperLimit)
Definition: Parameter.cc:81
double getUpperLimit() const
Definition: Parameter.cc:47
virtual ~Parameter()
Definition: Parameter.cc:13
Parameter(std::string name, double value, double lowerLimit=-1e100, double upperLimit=1e100)
Definition: Parameter.cc:8
void setValue(double value)
Definition: Parameter.cc:57
std::ostream & operator<<(std::ostream &os, const Argument &a)