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  _name(right._name),
107  _value(right._value),
108  _lowerLimit(right._lowerLimit),
109  _upperLimit(right._upperLimit),
110  _sourceParameter(right._sourceParameter)
111 {
112 }
113 
114 const Parameter & Parameter::operator=(const Parameter &right) {
115  if (this != &right) {
116  _name=right._name;
117  _value=right._value;
118  _lowerLimit=right._lowerLimit;
119  _upperLimit=right._upperLimit;
120  _sourceParameter=right._sourceParameter;
121  }
122  return *this;
123 }
124 
125 } // namespace Genfun