43 while ((el!=
nullptr) && (el!=frame)) {
44 el->transform(iclass, local);
62 if (ipar>=parvec.size()) {
63 throw std::runtime_error(
"Element::getParameter: Parameter exceeds parvec size "+std::to_string(ipar));
73 if (ipar>=parvec.size()) {
74 throw std::runtime_error(
"Element::setParameter: Parameter exceeds parvec size "+std::to_string(ipar));
84 for (
const auto& p : values) {
94 if (daughter->m_mother) {
95 throw std::runtime_error(
"Element has a defined mother already");
97 daughter->m_mother =
this;
107 using iter = daughterVec_t::iterator;
108 tree_t(iter it_, iter end_):
113 std::list<tree_t> dtree;
116 while (!dtree.empty()) {
117 auto& it = dtree.back().it;
118 if (it != dtree.back().end) {
121 dtree.emplace_back(el.m_daughters.begin(), el.m_daughters.end());
void traverseTree(const std::function< void(Element &)> &callback)
ParameterVector m_correctedPar
ParameterVector m_nominalPar
ElementModel::VectorSetRef VectorSetRef
void setParametersFromMap(ParameterClass iclass, const std::map< std::string, double > &values)
Element(std::unique_ptr< ElementModel > deformationModel)
std::unique_ptr< ElementModel > m_deformationModel
void setParameter(ParameterClass iclass, ipar_t ipar, double value)
Element * addDaughter(std::unique_ptr< Element > daughter)
daughterVec_t m_daughters
void transform(ParameterClass iclass, const VectorSetRef &local) const
void transformToFrame(ParameterClass iclass, const VectorSetRef &local, const Element *frame) const
ParameterVector & parameterVector(ParameterClass iclass)
ElementModel::ParameterVector ParameterVector
double getParameter(ParameterClass iclass, ipar_t ipar) const
ElementModel::ipar_t ipar_t
std::vector< double > parameters