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
5namespace Genfun {
7
8Parameter::Parameter(std::string name, double value, double lowerLimit, double upperLimit):
9 _name(name),_value(value),_lowerLimit(lowerLimit),_upperLimit(upperLimit),_sourceParameter(NULL)
10{
11}
12
15
16std::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
23const std::string & Parameter::getName() const {
24 return _name;
25}
26
27double 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
57void 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
69void 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
81void 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
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)