Jpp 21.0.0-rc.1
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 setLimits (const double xmin, const double xmax)
 Set limits.
 
void relax ()
 Relax limits.
 
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 113 of file JFitK40.hh.

Member Typedef Documentation

◆ range_type

Type definition for range of parameter values.

Definition at line 129 of file JFitK40.hh.

Member Enumeration Documentation

◆ FIT_t

Fit options.

Enumerator
FREE_t 

free

FIXED_t 

fixed

Definition at line 120 of file JFitK40.hh.

120 {
121 FREE_t = 0, //!< free
122 FIXED_t //!< fixed
123 };

Constructor & Destructor Documentation

◆ JParameter_t() [1/2]

JCALIBRATE::JParameter_t::JParameter_t ( )
inline

Default constructor.

Definition at line 135 of file JFitK40.hh.

136 {
137 set(0.0);
138 }
void set()
Set current value.
Definition JFitK40.hh:275

◆ 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 147 of file JFitK40.hh.

148 :
149 range(range)
150 {
151 set(value);
152 }

Member Function Documentation

◆ negate()

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

Negate parameter.

Returns
this parameter

Definition at line 160 of file JFitK40.hh.

161 {
162 set(-get());
163
164 return *this;
165 }
double get() const
Get value.
Definition JFitK40.hh:295

◆ add()

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

Add parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 174 of file JFitK40.hh.

175 {
176 set(get() + parameter.get());
177
178 return *this;
179 }

◆ sub()

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

Subtract parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 188 of file JFitK40.hh.

189 {
190 set(get() - parameter.get());
191
192 return *this;
193 }

◆ mul() [1/3]

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

Scale parameter.

Parameters
factormultiplication factor
Returns
this parameter

Definition at line 202 of file JFitK40.hh.

203 {
204 set(get() * factor);
205
206 return *this;
207 }

◆ div()

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

Scale parameter.

Parameters
factordivision factor
Returns
this parameter

Definition at line 216 of file JFitK40.hh.

217 {
218 set(get() / factor);
219
220 return *this;
221 }

◆ 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 231 of file JFitK40.hh.

232 {
233 set(first.get() * second.get());
234
235 return *this;
236 }

◆ isFree()

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

Check if parameter is free.

Returns
true if free; else false

Definition at line 244 of file JFitK40.hh.

245 {
246 return option == FREE_t;
247 }

◆ isFixed()

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

Check if parameter is fixed.

Returns
true if fixed; else false

Definition at line 255 of file JFitK40.hh.

256 {
257 return option == FIXED_t;
258 }

◆ isBound()

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

Check if parameter is bound.

Returns
true if bound; else false

Definition at line 266 of file JFitK40.hh.

267 {
268 return range.is_valid();
269 }
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 275 of file JFitK40.hh.

276 {
277 option = FREE_t;
278 }

◆ fix() [1/2]

void JCALIBRATE::JParameter_t::fix ( )
inline

Fix current value.

Definition at line 284 of file JFitK40.hh.

285 {
286 option = FIXED_t;
287 }

◆ get()

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

Get value.

Returns
value

Definition at line 295 of file JFitK40.hh.

296 {
297 if (isBound())
298 return range.getLowerLimit() + 0.5 * range.getLength() * (sin(value) + 1.0);
299 else
300 return value;
301 }
bool isBound() const
Check if parameter is bound.
Definition JFitK40.hh:266
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 309 of file JFitK40.hh.

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

◆ setLimits()

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

Set limits.

Parameters
xminminimal value
xmaxmaximal value

Definition at line 326 of file JFitK40.hh.

327 {
328 const double x = get();
329
330 range = range_type(xmin, xmax);
331
332 set(x);
333 }
JTOOLS::JRange< double > range_type
Type definition for range of parameter values.
Definition JFitK40.hh:129

◆ relax()

void JCALIBRATE::JParameter_t::relax ( )
inline

Relax limits.

Definition at line 339 of file JFitK40.hh.

340 {
341 const double x = get();
342
344
345 set(x);
346 }
static JRange< double, std::less< double > > DEFAULT_RANGE()
Definition JRange.hh:555

◆ 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 355 of file JFitK40.hh.

356 {
357 if (isBound())
358 return (get() - range.getLowerLimit() <= precision ||
359 range.getUpperLimit() - get() <= precision);
360 else
361 return false;
362 }
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 370 of file JFitK40.hh.

371 {
372 set(value);
373
374 fix();
375 }
void fix()
Fix current value.
Definition JFitK40.hh:284

◆ getDerivative()

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

Get derivative of value.

Returns
derivative of value

Definition at line 383 of file JFitK40.hh.

384 {
385 if (isBound())
386 return 1.0 / (0.5 * range.getLength() * cos(value));
387 else
388 return 1.0;
389 }

◆ operator()()

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

Type conversion operator.

Returns
value

Definition at line 397 of file JFitK40.hh.

398 {
399 return get();
400 }

◆ operator double()

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

Type conversion operator.

Returns
value

Definition at line 408 of file JFitK40.hh.

409 {
410 return get();
411 }

◆ operator=()

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

Assignment operator.

Parameters
valuevalue
Returns
this parameter

Definition at line 420 of file JFitK40.hh.

421 {
422 set(value);
423
424 return *this;
425 }

◆ 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 435 of file JFitK40.hh.

436 {
437 return in >> object.value;
438 }

◆ 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 448 of file JFitK40.hh.

449 {
450 using namespace std;
451
452 out << FIXED(12,6) << object.get() << ' '
453 << setw(5) << (object.isFixed() ? "fixed" : " ") << ' ';
454
455 if (object.isBound()) {
456 out << "[" << FIXED(12,6) << object.range.getLowerLimit() << "," << FIXED(12,6) << object.range.getUpperLimit() << "]";
457 }
458
459 return out;
460 }
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 463 of file JFitK40.hh.

◆ option

FIT_t JCALIBRATE::JParameter_t::option = FREE_t

Definition at line 464 of file JFitK40.hh.

◆ range

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

Definition at line 465 of file JFitK40.hh.


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