Jpp 21.0.0-rc.1-88-g0130508c4
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 116 of file JFitK40.hh.

Member Typedef Documentation

◆ range_type

Type definition for range of parameter values.

Definition at line 132 of file JFitK40.hh.

Member Enumeration Documentation

◆ FIT_t

Fit options.

Enumerator
FREE_t 

free

FIXED_t 

fixed

Definition at line 123 of file JFitK40.hh.

123 {
124 FREE_t = 0, //!< free
125 FIXED_t //!< fixed
126 };

Constructor & Destructor Documentation

◆ JParameter_t() [1/2]

JCALIBRATE::JParameter_t::JParameter_t ( )
inline

Default constructor.

Definition at line 138 of file JFitK40.hh.

139 {
140 set(0.0);
141 }
void set()
Set current value.
Definition JFitK40.hh:278

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

151 :
152 range(range)
153 {
154 set(value);
155 }

Member Function Documentation

◆ negate()

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

Negate parameter.

Returns
this parameter

Definition at line 163 of file JFitK40.hh.

164 {
165 set(-get());
166
167 return *this;
168 }
double get() const
Get value.
Definition JFitK40.hh:298

◆ add()

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

Add parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 177 of file JFitK40.hh.

178 {
179 set(get() + parameter.get());
180
181 return *this;
182 }

◆ sub()

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

Subtract parameter.

Parameters
parameterparameter
Returns
this parameter

Definition at line 191 of file JFitK40.hh.

192 {
193 set(get() - parameter.get());
194
195 return *this;
196 }

◆ mul() [1/3]

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

Scale parameter.

Parameters
factormultiplication factor
Returns
this parameter

Definition at line 205 of file JFitK40.hh.

206 {
207 set(get() * factor);
208
209 return *this;
210 }

◆ div()

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

Scale parameter.

Parameters
factordivision factor
Returns
this parameter

Definition at line 219 of file JFitK40.hh.

220 {
221 set(get() / factor);
222
223 return *this;
224 }

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

235 {
236 set(first.get() * second.get());
237
238 return *this;
239 }

◆ isFree()

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

Check if parameter is free.

Returns
true if free; else false

Definition at line 247 of file JFitK40.hh.

248 {
249 return option == FREE_t;
250 }

◆ isFixed()

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

Check if parameter is fixed.

Returns
true if fixed; else false

Definition at line 258 of file JFitK40.hh.

259 {
260 return option == FIXED_t;
261 }

◆ isBound()

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

Check if parameter is bound.

Returns
true if bound; else false

Definition at line 269 of file JFitK40.hh.

270 {
271 return range.is_valid();
272 }
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 278 of file JFitK40.hh.

279 {
280 option = FREE_t;
281 }

◆ fix() [1/2]

void JCALIBRATE::JParameter_t::fix ( )
inline

Fix current value.

Definition at line 287 of file JFitK40.hh.

288 {
289 option = FIXED_t;
290 }

◆ get()

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

Get value.

Returns
value

Definition at line 298 of file JFitK40.hh.

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

313 {
314 if (isBound())
315 this->value = asin(2.0 * (range.constrain(value) - range.getLowerLimit()) / range.getLength() - 1.0);
316 else
317 this->value = value;
318
319 set();
320 }
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 329 of file JFitK40.hh.

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

◆ relax()

void JCALIBRATE::JParameter_t::relax ( )
inline

Relax limits.

Definition at line 342 of file JFitK40.hh.

343 {
344 const double x = get();
345
347
348 set(x);
349 }
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 358 of file JFitK40.hh.

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

374 {
375 set(value);
376
377 fix();
378 }
void fix()
Fix current value.
Definition JFitK40.hh:287

◆ getDerivative()

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

Get derivative of value.

Returns
derivative of value

Definition at line 386 of file JFitK40.hh.

387 {
388 if (isBound())
389 return 1.0 / (0.5 * range.getLength() * cos(value));
390 else
391 return 1.0;
392 }

◆ operator()()

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

Type conversion operator.

Returns
value

Definition at line 400 of file JFitK40.hh.

401 {
402 return get();
403 }

◆ operator double()

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

Type conversion operator.

Returns
value

Definition at line 411 of file JFitK40.hh.

412 {
413 return get();
414 }

◆ operator=()

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

Assignment operator.

Parameters
valuevalue
Returns
this parameter

Definition at line 423 of file JFitK40.hh.

424 {
425 set(value);
426
427 return *this;
428 }

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

439 {
440 return in >> object.value;
441 }

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

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

◆ option

FIT_t JCALIBRATE::JParameter_t::option = FREE_t

Definition at line 467 of file JFitK40.hh.

◆ range

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

Definition at line 468 of file JFitK40.hh.


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