Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JCALIBRATE::JParameter_t Class Reference

Auxiliary class for fit parameter with optional limits. More...

#include <JFitK40.hh>

Inheritance diagram for JCALIBRATE::JParameter_t:
JMATH::JMath< JFirst_t, JSecond_t >

Public Types

enum  FIT_t { FREE_t = 0 , FIXED_t }
 Fit options. More...
 
typedef JTOOLS::JRange< double > range_type
 Type definition for range of parameter values.
 

Public Member Functions

 JParameter_t ()
 Default constructor.
 
 JParameter_t (const double value, const range_type &range=range_type::DEFAULT_RANGE())
 Constructor.
 
JParameter_tnegate ()
 Negate parameter.
 
JParameter_tadd (const JParameter_t &parameter)
 Add parameter.
 
JParameter_tsub (const JParameter_t &parameter)
 Subtract parameter.
 
JParameter_tmul (const double factor)
 Scale parameter.
 
JParameter_tdiv (const double factor)
 Scale parameter.
 
JParameter_tmul (const JParameter_t &first, const JParameter_t &second)
 Scale parameter.
 
bool isFree () const
 Check if parameter is free.
 
bool isFixed () const
 Check if parameter is fixed.
 
bool isBound () const
 Check if parameter is bound.
 
void set ()
 Set current value.
 
void fix ()
 Fix current value.
 
double get () const
 Get value.
 
void set (const double value)
 Set value.
 
void setRange (const double xmin, const double xmax)
 Set range.
 
bool atLimit (const double precision) const
 Check if parameter is at limit;.
 
void fix (const double value)
 Fix value.
 
double getDerivative () const
 Get derivative of value.
 
double operator() () const
 Type conversion operator.
 
 operator double () const
 Type conversion operator.
 
JParameter_toperator= (double value)
 Assignment operator.
 
JFirst_t & mul (const JSecond_t &object)
 Multiply with object.
 

Public Attributes

double value = 0.0
 
FIT_t option = FREE_t
 
range_type range = range_type::DEFAULT_RANGE()
 

Friends

std::istream & operator>> (std::istream &in, JParameter_t &object)
 Read parameter from input stream.
 
std::ostream & operator<< (std::ostream &out, const JParameter_t &object)
 Write parameter to output stream.
 

Detailed Description

Auxiliary class for fit parameter with optional limits.

Definition at line 109 of file JFitK40.hh.

Member Typedef Documentation

◆ range_type

Type definition for range of parameter values.

Definition at line 125 of file JFitK40.hh.

Member Enumeration Documentation

◆ FIT_t

Fit options.

Enumerator
FREE_t 

free

FIXED_t 

fixed

Definition at line 116 of file JFitK40.hh.

116 {
117 FREE_t = 0, //!< free
118 FIXED_t //!< fixed
119 };

Constructor & Destructor Documentation

◆ JParameter_t() [1/2]

JCALIBRATE::JParameter_t::JParameter_t ( )
inline

Default constructor.

Definition at line 131 of file JFitK40.hh.

132 {
133 set(0.0);
134 }
void set()
Set current value.
Definition JFitK40.hh:271

◆ JParameter_t() [2/2]

JCALIBRATE::JParameter_t::JParameter_t ( const double value,
const range_type & range = range_type::DEFAULT_RANGE() )
inline

Constructor.

Parameters
valuevalue
rangerange

Definition at line 143 of file JFitK40.hh.

144 :
145 range(range)
146 {
147 set(value);
148 }

Member Function Documentation

◆ negate()

JParameter_t & JCALIBRATE::JParameter_t::negate ( )
inline

Negate parameter.

Returns
this parameter

Definition at line 156 of file JFitK40.hh.

157 {
158 set(-get());
159
160 return *this;
161 }
double get() const
Get value.
Definition JFitK40.hh:291

◆ add()

JParameter_t & JCALIBRATE::JParameter_t::add ( const JParameter_t & parameter)
inline

Add parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 170 of file JFitK40.hh.

171 {
172 set(get() + parameter.get());
173
174 return *this;
175 }

◆ sub()

JParameter_t & JCALIBRATE::JParameter_t::sub ( const JParameter_t & parameter)
inline

Subtract parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 184 of file JFitK40.hh.

185 {
186 set(get() - parameter.get());
187
188 return *this;
189 }

◆ mul() [1/3]

JParameter_t & JCALIBRATE::JParameter_t::mul ( const double factor)
inline

Scale parameter.

Parameters
factormultiplication factor
Returns
this parameter

Definition at line 198 of file JFitK40.hh.

199 {
200 set(get() * factor);
201
202 return *this;
203 }

◆ div()

JParameter_t & JCALIBRATE::JParameter_t::div ( const double factor)
inline

Scale parameter.

Parameters
factordivision factor
Returns
this parameter

Definition at line 212 of file JFitK40.hh.

213 {
214 set(get() / factor);
215
216 return *this;
217 }

◆ mul() [2/3]

JParameter_t & JCALIBRATE::JParameter_t::mul ( const JParameter_t & first,
const JParameter_t & second )
inline

Scale parameter.

Parameters
firstfirst parameter
secondsecond parameter
Returns
this parameter

Definition at line 227 of file JFitK40.hh.

228 {
229 set(first.get() * second.get());
230
231 return *this;
232 }

◆ isFree()

bool JCALIBRATE::JParameter_t::isFree ( ) const
inline

Check if parameter is free.

Returns
true if free; else false

Definition at line 240 of file JFitK40.hh.

241 {
242 return option == FREE_t;
243 }

◆ isFixed()

bool JCALIBRATE::JParameter_t::isFixed ( ) const
inline

Check if parameter is fixed.

Returns
true if fixed; else false

Definition at line 251 of file JFitK40.hh.

252 {
253 return option == FIXED_t;
254 }

◆ isBound()

bool JCALIBRATE::JParameter_t::isBound ( ) const
inline

Check if parameter is bound.

Returns
true if bound; else false

Definition at line 262 of file JFitK40.hh.

263 {
264 return range.is_valid();
265 }
bool is_valid() const
Check validity of range.
Definition JRange.hh:311

◆ set() [1/2]

void JCALIBRATE::JParameter_t::set ( )
inline

Set current value.

Definition at line 271 of file JFitK40.hh.

272 {
273 option = FREE_t;
274 }

◆ fix() [1/2]

void JCALIBRATE::JParameter_t::fix ( )
inline

Fix current value.

Definition at line 280 of file JFitK40.hh.

281 {
282 option = FIXED_t;
283 }

◆ get()

double JCALIBRATE::JParameter_t::get ( ) const
inline

Get value.

Returns
value

Definition at line 291 of file JFitK40.hh.

292 {
293 if (isBound())
294 return range.getLowerLimit() + 0.5 * range.getLength() * (sin(value) + 1.0);
295 else
296 return value;
297 }
bool isBound() const
Check if parameter is bound.
Definition JFitK40.hh:262
T getLength() const
Get length (difference between upper and lower limit).
Definition JRange.hh:289
T getLowerLimit() const
Get lower limit.
Definition JRange.hh:202

◆ set() [2/2]

void JCALIBRATE::JParameter_t::set ( const double value)
inline

Set value.

Parameters
valuevalue

Definition at line 305 of file JFitK40.hh.

306 {
307 if (isBound())
308 this->value = asin(2.0 * (range.constrain(value) - range.getLowerLimit()) / range.getLength() - 1.0);
309 else
310 this->value = value;
311
312 set();
313 }
T constrain(argument_type x) const
Constrain value to range.
Definition JRange.hh:350

◆ setRange()

void JCALIBRATE::JParameter_t::setRange ( const double xmin,
const double xmax )
inline

Set range.

Parameters
xminminimal value
xmaxmaximal value

Definition at line 322 of file JFitK40.hh.

323 {
324 const double x = get();
325
326 range = range_type(xmin, xmax);
327
328 set(x);
329 }
JTOOLS::JRange< double > range_type
Type definition for range of parameter values.
Definition JFitK40.hh:125

◆ atLimit()

bool JCALIBRATE::JParameter_t::atLimit ( const double precision) const
inline

Check if parameter is at limit;.

Parameters
precisionprecision
Returns
true if at limit; else false

Definition at line 338 of file JFitK40.hh.

339 {
340 if (isBound())
341 return (get() - range.getLowerLimit() <= precision ||
342 range.getUpperLimit() - get() <= precision);
343 else
344 return false;
345 }
T getUpperLimit() const
Get upper limit.
Definition JRange.hh:213

◆ fix() [2/2]

void JCALIBRATE::JParameter_t::fix ( const double value)
inline

Fix value.

Parameters
valuevalue

Definition at line 353 of file JFitK40.hh.

354 {
355 set(value);
356
357 fix();
358 }
void fix()
Fix current value.
Definition JFitK40.hh:280

◆ getDerivative()

double JCALIBRATE::JParameter_t::getDerivative ( ) const
inline

Get derivative of value.

Returns
derivative of value

Definition at line 366 of file JFitK40.hh.

367 {
368 if (isBound())
369 return 1.0 / (0.5 * range.getLength() * cos(value));
370 else
371 return 1.0;
372 }

◆ operator()()

double JCALIBRATE::JParameter_t::operator() ( ) const
inline

Type conversion operator.

Returns
value

Definition at line 380 of file JFitK40.hh.

381 {
382 return get();
383 }

◆ operator double()

JCALIBRATE::JParameter_t::operator double ( ) const
inline

Type conversion operator.

Returns
value

Definition at line 391 of file JFitK40.hh.

392 {
393 return get();
394 }

◆ operator=()

JParameter_t & JCALIBRATE::JParameter_t::operator= ( double value)
inline

Assignment operator.

Parameters
valuevalue
Returns
this parameter

Definition at line 403 of file JFitK40.hh.

404 {
405 set(value);
406
407 return *this;
408 }

◆ mul() [3/3]

template<class JFirst_t , class JSecond_t >
JFirst_t & JMATH::JMath< JFirst_t, JSecond_t >::mul ( const JSecond_t & object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355 {
356 return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357 }

Friends And Related Symbol Documentation

◆ operator>>

std::istream & operator>> ( std::istream & in,
JParameter_t & object )
friend

Read parameter from input stream.

Parameters
ininput stream
objectparameter
Returns
input stream

Definition at line 418 of file JFitK40.hh.

419 {
420 return in >> object.value;
421 }

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const JParameter_t & object )
friend

Write parameter to output stream.

Parameters
outoutput stream
objectparameter
Returns
output stream

Definition at line 431 of file JFitK40.hh.

432 {
433 using namespace std;
434
435 out << FIXED(12,6) << object.get() << ' '
436 << setw(5) << (object.isFixed() ? "fixed" : " ") << ' ';
437
438 if (object.isBound()) {
439 out << FIXED(12,6) << object.value << ' ';
440 out << FIXED(12,6) << object.range.getLowerLimit() << ' '
441 << FIXED(12,6) << object.range.getUpperLimit();
442 }
443
444 return out;
445 }
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448

Member Data Documentation

◆ value

double JCALIBRATE::JParameter_t::value = 0.0

Definition at line 448 of file JFitK40.hh.

◆ option

FIT_t JCALIBRATE::JParameter_t::option = FREE_t

Definition at line 449 of file JFitK40.hh.

◆ range

range_type JCALIBRATE::JParameter_t::range = range_type::DEFAULT_RANGE()

Definition at line 450 of file JFitK40.hh.


The documentation for this class was generated from the following file: