1#ifndef AMPGEN_MINUITPARAMETER_H
2#define AMPGEN_MINUITPARAMETER_H
18 MinuitParameter(
const std::string &
name,
const Flag &
flag,
const double &
mean,
const double &step,
const double &min = 0,
const double &max = 0);
19 MinuitParameter(
const std::string &
name,
const double &
mean,
const double &step,
const double &min = 0,
const double &max = 0);
26 const std::string &
name()
const;
37 void setInit(
const double &init,
const double &step = -1);
43 void setLimits(
const double &min,
const double &max);
45 void setResult(
double fitMean,
double fitErr,
double fitErrNeg,
double fitErrPos);
49 virtual double mean()
const;
63 std::cout <<
m_name <<
"proxies: ";
65 std::cout << std::endl;
86 if(m_parameter !=
nullptr) m_value = m_parameter->mean();
89 m_parameter = other.m_parameter;
90 m_value = other.m_value;
91 if(m_parameter !=
nullptr) m_parameter->subscribe(
this);
94 if(m_parameter !=
nullptr) m_parameter->unsubscribe(
this);
97 m_parameter = other.m_parameter;
98 m_value = other.m_value;
99 if(m_parameter !=
nullptr) m_parameter->subscribe(
this);
103 m_parameter = other.m_parameter;
104 m_value = other.m_value;
105 if(m_parameter !=
nullptr) m_parameter->subscribe(
this);
109 m_parameter = other.m_parameter;
110 m_value = other.m_value;
111 if(m_parameter !=
nullptr) m_parameter->subscribe(
this);
114 operator double()
const {
116 return m_parameter ==
nullptr ? m_value : m_parameter->
mean();
123 bool isValid()
const {
return m_parameter !=
nullptr; }
(Internal) class to aide in the resolution of the dependencies of expression trees.
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
std::string to_string(const ASTResolver *resolver=nullptr) const override
Called to convert the Expression tree into source code.
ExpressionParameter(const MinuitProxy &proxy)
complex_t operator()() const override
Evaluate the expression using the tree, will generally be very slow but ocassionally useful for debug...
void resolve(ASTResolver &resolver) const override
Resolve the dependencies of a tree using an ASTResolver, which keeps track of parameters,...
Virtual base class for other expression tree components.
virtual MinuitParameter clone() const
void setLimits(const double &min, const double &max)
friend class MinuitParameterSet
virtual ~MinuitParameter()
const std::string & name() const
void setFromMinuitState(const double *x)
void unsubscribe(MinuitProxy *sub)
void setCurrentFitVal(double cfv)
void subscribe(MinuitProxy *sub)
MinuitParameter(const std::string &name, const double &mean, const double &step, const double &min=0, const double &max=0)
std::set< MinuitProxy * > m_subscribers
MinuitParameter()=default
void setResult(double fitMean, double fitErr, double fitErrNeg, double fitErrPos)
MinuitParameter(const std::string &name, const Flag &flag, const double &mean, const double &step, const double &min=0, const double &max=0)
void setStepInit(const double &si)
virtual double mean() const
void print_proxies() const
void scaleStep(const double &sf)
void setInit(const double &init, const double &step=-1)
void setName(const std::string &name)
void setVal(const double &val)
void setMinuitIndex(const int &index)
MinuitProxy(MinuitProxy &&other)
MinuitProxy & operator=(const MinuitProxy &other)
MinuitProxy(MinuitParameter *param=nullptr, const double &value=0)
MinuitProxy(const MinuitProxy &other)
const MinuitParameter * parameter() const
friend class MinuitParameter
const MinuitParameter * operator->() const
MinuitProxy & operator=(MinuitProxy &other)
MinuitParameter * operator->()
MinuitParameter * parameter()
#define declare_enum(name,...)
std::complex< real_t > complex_t
std::ostream & operator<<(std::ostream &os, const CompiledExpressionBase &expression)