BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitParameterHelper Class Reference

The FitParameterHelper class contains set of convenience static methods to handle various fitting items in given JobItem. More...

Static Public Member Functions

static void addToFitParameter (FitParameterContainerItem *container, ParameterItem *parameterItem, const QString &fitParName)
 Adds given parameterItem to the existing fit parameter with display name fitParName. More...
 
static void createFitParameter (FitParameterContainerItem *container, ParameterItem *parameterItem)
 Creates fit parameter from given ParameterItem, sets starting value to the value of ParameterItem, copies link. More...
 
static FitParameterItemgetFitParameterItem (FitParameterContainerItem *container, ParameterItem *parameterItem)
 Returns fFitParameterItem corresponding to given ParameterItem. More...
 
static QStringList getFitParameterNames (FitParameterContainerItem *container)
 Returns list of fit parameter display names. More...
 
static ParameterItemgetParameterItem (FitParameterContainerItem *container, const QString &link)
 Returns ParameterItem corresponding to given link. More...
 
static QString getParameterItemPath (const ParameterItem *parameterItem)
 return path to given item in the ParameterTreeContainer More...
 
static void removeFromFitParameters (FitParameterContainerItem *container, ParameterItem *parameterItem)
 Removes link to given parameterItem from fit parameters. More...
 

Detailed Description

The FitParameterHelper class contains set of convenience static methods to handle various fitting items in given JobItem.

Definition at line 27 of file FitParameterHelper.h.

Member Function Documentation

◆ addToFitParameter()

void FitParameterHelper::addToFitParameter ( FitParameterContainerItem container,
ParameterItem parameterItem,
const QString &  fitParName 
)
static

Adds given parameterItem to the existing fit parameter with display name fitParName.

If parameterItem is already linked with another fitParameter, it will be relinked

Definition at line 64 of file FitParameterHelper.cpp.

66 {
67  ASSERT(container);
68 
69  removeFromFitParameters(container, parameterItem);
70  for (auto fitPar : container->getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
71  if (fitPar->displayName() == fitParName) {
72  SessionItem* link = fitPar->model()->insertNewItem("FitParameterLink", fitPar);
74  break;
75  }
76  }
77 }
#define ASSERT(condition)
Definition: Assert.h:31
static const QString T_FIT_PARAMETERS
static void removeFromFitParameters(FitParameterContainerItem *container, ParameterItem *parameterItem)
Removes link to given parameterItem from fit parameters.
static QString getParameterItemPath(const ParameterItem *parameterItem)
return path to given item in the ParameterTreeContainer
static const QString P_LINK
QVector< SessionItem * > getItems(const QString &tag="") const
Returns vector of all items of given tag.
SessionModel * model() const
Returns model of this item.
Definition: SessionItem.cpp:66
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
SessionItem * insertNewItem(QString model_type, SessionItem *parent_item=nullptr, int row=-1, QString tag="")

References ASSERT, SessionItem::getItems(), getParameterItemPath(), SessionModel::insertNewItem(), SessionItem::model(), FitParameterLinkItem::P_LINK, removeFromFitParameters(), SessionItem::setItemValue(), and FitParameterContainerItem::T_FIT_PARAMETERS.

Referenced by FitParameterProxyModel::dropMimeData(), and FitParameterWidget::onAddToFitParAction().

Here is the call graph for this function:

◆ createFitParameter()

void FitParameterHelper::createFitParameter ( FitParameterContainerItem container,
ParameterItem parameterItem 
)
static

Creates fit parameter from given ParameterItem, sets starting value to the value of ParameterItem, copies link.

Definition at line 25 of file FitParameterHelper.cpp.

27 {
28  ASSERT(container);
29  ASSERT(parameterItem);
30 
31  removeFromFitParameters(container, parameterItem);
32 
33  auto model = container->model();
34  auto fitPar = model->insertItem<FitParameterItem>(container);
35  fitPar->setDisplayName("par");
36  auto link = model->insertItem<FitParameterLinkItem>(fitPar);
37  fitPar->setItemValue(FitParameterItem::P_START_VALUE, parameterItem->value());
38  link->setItemValue(FitParameterLinkItem::P_LINK, getParameterItemPath(parameterItem));
39 
40  fitPar->initMinMaxValues(parameterItem->linkedItem()->limits());
41 }
The FitParameterItem class represents a fit parameter in GUI.
static const QString P_START_VALUE
FitParameterItems is a collection of items to define fit parameters in GUI.
SessionItem * linkedItem()
Returns corresponding linked item in MultiLayerItem/IsntrumentItem.
QVariant value() const
Get value.
void setDisplayName(const QString &display_name)
Set display name.
RealLimits limits() const
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
Definition: SessionModel.h:125

References ASSERT, getParameterItemPath(), SessionModel::insertItem(), SessionItem::limits(), ParameterItem::linkedItem(), SessionItem::model(), FitParameterLinkItem::P_LINK, FitParameterItem::P_START_VALUE, removeFromFitParameters(), SessionItem::setDisplayName(), SessionItem::setItemValue(), and SessionItem::value().

Referenced by FitParameterProxyModel::dropMimeData(), and FitParameterWidget::onCreateFitParAction().

Here is the call graph for this function:

◆ getFitParameterItem()

FitParameterItem * FitParameterHelper::getFitParameterItem ( FitParameterContainerItem container,
ParameterItem parameterItem 
)
static

Returns fFitParameterItem corresponding to given ParameterItem.

Definition at line 81 of file FitParameterHelper.cpp.

83 {
84  ASSERT(container);
85  return container->fitParameterItem(getParameterItemPath(parameterItem));
86 }
FitParameterItem * fitParameterItem(const QString &link)
returns FitParameterItem for given link (path in model)

References ASSERT, FitParameterContainerItem::fitParameterItem(), and getParameterItemPath().

Referenced by FitParameterWidget::canCreateFitParameter(), FitParameterWidget::canRemoveFromFitParameters(), FitParameterWidget::onCreateFitParAction(), FitParameterWidget::onRemoveFromFitParAction(), and removeFromFitParameters().

Here is the call graph for this function:

◆ getFitParameterNames()

QStringList FitParameterHelper::getFitParameterNames ( FitParameterContainerItem container)
static

Returns list of fit parameter display names.

Definition at line 90 of file FitParameterHelper.cpp.

91 {
92  ASSERT(container);
93  QStringList result;
94  for (auto item : container->getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
95  result.append(item->displayName());
96  }
97  return result;
98 }

References ASSERT, SessionItem::getItems(), and FitParameterContainerItem::T_FIT_PARAMETERS.

Referenced by FitParameterWidget::initTuningWidgetContextMenu(), and FitParameterWidget::onAddToFitParAction().

Here is the call graph for this function:

◆ getParameterItem()

ParameterItem * FitParameterHelper::getParameterItem ( FitParameterContainerItem container,
const QString &  link 
)
static

Returns ParameterItem corresponding to given link.

Link is relative to ParameterContainerItem, so first we have to find it

Definition at line 114 of file FitParameterHelper.cpp.

116 {
117  SessionItem* cur = container;
118  while (cur && cur->modelType() != "JobItem") {
119  cur = cur->parent();
120  }
121  ASSERT(cur && cur->modelType() == "JobItem");
122  JobItem* jobItem = dynamic_cast<JobItem*>(cur);
123  ASSERT(jobItem);
124  return dynamic_cast<ParameterItem*>(
126 }
ParameterContainerItem * parameterContainerItem()
Definition: JobItem.cpp:240
The ParameterItem class represent a tuning value in a parameter tuning tree.
SessionItem * parent() const
Returns parent of this item.
Definition: SessionItem.cpp:73
QString modelType() const
Get model type.
SessionItem * getItemFromPath(const QString &relPath, const SessionItem *parent)
returns an item from relative path wrt to given parent
Definition: ModelPath.cpp:60

References ASSERT, ModelPath::getItemFromPath(), SessionItem::modelType(), JobItem::parameterContainerItem(), and SessionItem::parent().

Referenced by FitParameterProxyModel::dropMimeData(), and FitParameterWidget::onFitParametersSelectionChanged().

Here is the call graph for this function:

◆ getParameterItemPath()

QString FitParameterHelper::getParameterItemPath ( const ParameterItem parameterItem)
static

return path to given item in the ParameterTreeContainer

Definition at line 102 of file FitParameterHelper.cpp.

103 {
104  QString result = ModelPath::getPathFromIndex(parameterItem->index());
105  QString containerPrefix = "Parameter Container/";
106  int containerEnd = result.indexOf(containerPrefix) + containerPrefix.size();
107  result = result.mid(containerEnd);
108  return result;
109 }
QModelIndex index() const
Returns model index of this item.
Definition: SessionItem.cpp:80
QString getPathFromIndex(const QModelIndex &index)
Definition: ModelPath.cpp:19

References ModelPath::getPathFromIndex(), and SessionItem::index().

Referenced by addToFitParameter(), createFitParameter(), getFitParameterItem(), ParameterTuningModel::mimeData(), ParameterTreeUtils::parameterDictionary(), ParameterTreeUtils::parameterNameToLinkedItem(), and removeFromFitParameters().

Here is the call graph for this function:

◆ removeFromFitParameters()

void FitParameterHelper::removeFromFitParameters ( FitParameterContainerItem container,
ParameterItem parameterItem 
)
static

Removes link to given parameterItem from fit parameters.

Definition at line 45 of file FitParameterHelper.cpp.

47 {
48  FitParameterItem* fitParItem = getFitParameterItem(container, parameterItem);
49 
50  if (fitParItem) {
51  for (auto linkItem : fitParItem->getItems(FitParameterItem::T_LINK)) {
52  if (getParameterItemPath(parameterItem)
53  == linkItem->getItemValue(FitParameterLinkItem::P_LINK)) {
54  fitParItem->model()->removeRow(linkItem->index().row(), linkItem->index().parent());
55  break;
56  }
57  }
58  }
59 }
static FitParameterItem * getFitParameterItem(FitParameterContainerItem *container, ParameterItem *parameterItem)
Returns fFitParameterItem corresponding to given ParameterItem.
static const QString T_LINK

References getFitParameterItem(), SessionItem::getItems(), getParameterItemPath(), SessionItem::model(), FitParameterLinkItem::P_LINK, and FitParameterItem::T_LINK.

Referenced by addToFitParameter(), createFitParameter(), and FitParameterWidget::onRemoveFromFitParAction().

Here is the call graph for this function:

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