BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DiffItemController Class Reference
Inheritance diagram for DiffItemController:
[legend]
Collaboration diagram for DiffItemController:
[legend]

Public Member Functions

 DiffItemController (const QString &data_type, QObject *parent)
 
 ~DiffItemController () override
 
DataItemdiffItem ()
 
JobItemjobItem ()
 
SessionModelmodel ()
 
void setJobItem (JobItem *job_item)
 
void subscribe ()
 
void unsubscribe ()
 
void updateDiffData ()
 

Private Attributes

JobItemm_current_item
 
DataItemm_diff_item
 
SessionModelm_private_model
 

Detailed Description

Definition at line 26 of file FitComparisonViewController.h.

Constructor & Destructor Documentation

◆ DiffItemController()

DiffItemController::DiffItemController ( const QString &  data_type,
QObject *  parent 
)

Definition at line 122 of file FitComparisonController.cpp.

123  : QObject(parent)
124  , m_current_item(nullptr)
125  , m_tempIntensityDataModel(new SessionModel("TempIntensityDataModel", this))
126  , m_diff_item(dynamic_cast<DataItem*>(m_tempIntensityDataModel->insertNewItem(data_type)))
127 {
129 }
#define ASSERT(condition)
Definition: Assert.h:31
Provides common functionality for IntensityDataItem and SpecularDataItem.
Definition: DataItem.h:29

References ASSERT, and m_diff_item.

◆ ~DiffItemController()

DiffItemController::~DiffItemController ( )
override

Definition at line 131 of file FitComparisonController.cpp.

132 {
133  unsubscribe();
134 }

References unsubscribe().

Here is the call graph for this function:

Member Function Documentation

◆ diffItem()

DataItem * DiffItemController::diffItem ( )
inline

Definition at line 34 of file FitComparisonViewController.h.

34 { return m_diff_item; }

References m_diff_item.

Referenced by FitComparison1DViewController::createDiffViewItem().

◆ jobItem()

JobItem* DiffItemController::jobItem ( )
inline

Definition at line 32 of file FitComparisonViewController.h.

32 { return m_current_item; }

References m_current_item.

◆ model()

SessionModel* DiffItemController::model ( )
inline

Definition at line 30 of file FitComparisonViewController.h.

30 { return m_private_model; }

References m_private_model.

Referenced by FitComparison1DViewController::createDiffViewItem().

◆ setJobItem()

void DiffItemController::setJobItem ( JobItem job_item)

Definition at line 126 of file FitComparisonViewController.cpp.

127 {
128  ASSERT(job_item);
129  if (m_current_item)
130  unsubscribe();
131  m_current_item = job_item;
132  subscribe();
133  updateDiffData();
134 }

References ASSERT, m_current_item, subscribe(), unsubscribe(), and updateDiffData().

Referenced by FitComparison1DViewController::setItem().

Here is the call graph for this function:

◆ subscribe()

void DiffItemController::subscribe ( )

Definition at line 167 of file FitComparisonController.cpp.

168 {
169  if (!m_current_item) {
170  ASSERT(false);
171  return;
172  }
173 
174  // on simulation data change
175  m_current_item->dataItem()->mapper()->setOnValueChange([this]() { updateDiffData(); }, this);
176 
177  // on diff item units change
179  [this](const QString& name) {
182  },
183  this);
184 }
virtual void updateAxesUnits(const InstrumentItem *instrument)=0
static const QString P_AXES_UNITS
Definition: DataItem.h:34
InstrumentItem * instrumentItem()
Definition: JobItem.cpp:224
DataItem * dataItem()
Definition: JobItem.cpp:118
void setOnValueChange(std::function< void(void)> f, const void *caller=0)
Definition: ModelMapper.cpp:30
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString const & name(EShape k)
Definition: particles.cpp:21

References ASSERT, JobItem::dataItem(), JobItem::instrumentItem(), m_current_item, m_diff_item, SessionItem::mapper(), RealSpace::Particles::name(), DataItem::P_AXES_UNITS, ModelMapper::setOnPropertyChange(), ModelMapper::setOnValueChange(), DataItem::updateAxesUnits(), and updateDiffData().

Referenced by FitComparisonController2D::DiffItemController::setItem(), and setJobItem().

Here is the call graph for this function:

◆ unsubscribe()

void DiffItemController::unsubscribe ( )

Definition at line 186 of file FitComparisonController.cpp.

187 {
188  if (!m_current_item)
189  return;
191  m_diff_item->mapper()->unsubscribe(this);
192  m_current_item = nullptr;
193 }
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
Definition: ModelMapper.cpp:98

References JobItem::dataItem(), m_current_item, m_diff_item, SessionItem::mapper(), and ModelMapper::unsubscribe().

Referenced by ~DiffItemController(), FitComparison1DViewController::clear(), FitComparisonController2D::DiffItemController::setItem(), and setJobItem().

Here is the call graph for this function:

◆ updateDiffData()

void DiffItemController::updateDiffData ( )

Definition at line 146 of file FitComparisonController.cpp.

147 {
149 
150  auto sim_data = m_current_item->dataItem();
151  auto real_data = m_current_item->realDataItem()->dataItem();
152  ASSERT(sim_data && real_data);
153 
154  if (!sim_data->getOutputData()) // job failed
155  return;
156 
158  *real_data->getOutputData())
159  .release());
160 }
virtual void setOutputData(OutputData< double > *data)=0
The given pointer becomes owned by this class!!
Definition: DataItem.cpp:24
RealDataItem * realDataItem()
Definition: JobItem.cpp:259
DataItem * dataItem()
std::unique_ptr< OutputData< double > > createRelativeDifferenceData(const OutputData< double > &data, const OutputData< double > &reference)
Definition: DataUtils.cpp:69

References ASSERT, DataUtils::createRelativeDifferenceData(), JobItem::dataItem(), RealDataItem::dataItem(), m_current_item, m_diff_item, JobItem::realDataItem(), and DataItem::setOutputData().

Referenced by FitComparisonController2D::DiffItemController::setItem(), setJobItem(), subscribe(), and FitComparison1DViewController::updateDiffData().

Here is the call graph for this function:

Member Data Documentation

◆ m_current_item

JobItem* DiffItemController::m_current_item
private

◆ m_diff_item

DataItem* DiffItemController::m_diff_item
private

◆ m_private_model

SessionModel* DiffItemController::m_private_model
private

Definition at line 40 of file FitComparisonViewController.h.

Referenced by model().


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