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

Updates bin values inside IntensityData to display current mask state. More...

Inheritance diagram for MaskResultsPresenter:
[legend]
Collaboration diagram for MaskResultsPresenter:
[legend]

Public Member Functions

 MaskResultsPresenter (QWidget *parent=0)
 
void resetContext ()
 
void setMaskContext (SessionModel *maskModel, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)
 
void updatePresenter (MaskEditorFlags::PresentationType mode)
 

Private Member Functions

void backup_data ()
 
OutputData< double > * createMaskPresentation () const
 Constructs OutputData which contains original intensity data except masked areas, and areas outside of ROI, where bin content is set to zero. More...
 
void setOriginalMode ()
 Restores original state of IntensityDataItem. More...
 
void setShowMaskMode ()
 Update IntensityDataItem in SessionModel to represent masked areas. More...
 

Private Attributes

std::unique_ptr< OutputData< double > > m_dataBackup
 
IntensityDataItemm_intensityDataItem
 
bool m_interpolation_flag_backup
 
QModelIndex m_maskContainerIndex
 
SessionModelm_maskModel
 

Detailed Description

Updates bin values inside IntensityData to display current mask state.

Returns IntensityData to original state when requested.

Definition at line 30 of file MaskResultsPresenter.h.

Constructor & Destructor Documentation

◆ MaskResultsPresenter()

MaskResultsPresenter::MaskResultsPresenter ( QWidget *  parent = 0)

Definition at line 23 of file MaskResultsPresenter.cpp.

24  : QObject(parent), m_interpolation_flag_backup(false)
25 {
26 }

Member Function Documentation

◆ backup_data()

void MaskResultsPresenter::backup_data ( )
private

Definition at line 79 of file MaskResultsPresenter.cpp.

80 {
84 }
OutputData< double > * getOutputData()
Definition: DataItem.h:36
static const QString P_IS_INTERPOLATED
std::unique_ptr< OutputData< double > > m_dataBackup
IntensityDataItem * m_intensityDataItem
OutputData * clone() const
Definition: OutputData.h:259
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References OutputData< T >::clone(), SessionItem::getItemValue(), DataItem::getOutputData(), m_dataBackup, m_intensityDataItem, m_interpolation_flag_backup, and IntensityDataItem::P_IS_INTERPOLATED.

Referenced by setShowMaskMode().

Here is the call graph for this function:

◆ createMaskPresentation()

OutputData< double > * MaskResultsPresenter::createMaskPresentation ( ) const
private

Constructs OutputData which contains original intensity data except masked areas, and areas outside of ROI, where bin content is set to zero.

Definition at line 89 of file MaskResultsPresenter.cpp.

90 {
91  // Requesting mask information
92  std::unique_ptr<RegionOfInterest> roi;
93  DetectorMask detectorMask;
94  for (int i_row = m_maskModel->rowCount(m_maskContainerIndex); i_row > 0; --i_row) {
95  QModelIndex itemIndex = m_maskModel->index(i_row - 1, 0, m_maskContainerIndex);
96  if (MaskItem* maskItem = dynamic_cast<MaskItem*>(m_maskModel->itemForIndex(itemIndex))) {
97  if (maskItem->modelType() == "RegionOfInterest") {
98  double xlow = maskItem->getItemValue(RectangleItem::P_XLOW).toDouble();
99  double ylow = maskItem->getItemValue(RectangleItem::P_YLOW).toDouble();
100  double xup = maskItem->getItemValue(RectangleItem::P_XUP).toDouble();
101  double yup = maskItem->getItemValue(RectangleItem::P_YUP).toDouble();
102  roi.reset(new RegionOfInterest(*m_intensityDataItem->getOutputData(), xlow, ylow,
103  xup, yup));
104  } else {
105  std::unique_ptr<IShape2D> shape(maskItem->createShape());
106  bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
107  detectorMask.addMask(*shape.get(), mask_value);
108  }
109  }
110  }
111 
112  if (!detectorMask.hasMasks() && !roi)
113  return 0;
114 
116  detectorMask.initMaskData(*result);
117 
118  for (size_t i = 0; i < result->getAllocatedSize(); ++i) {
119  if (detectorMask.isMasked(i))
120  (*result)[i] = 0.0;
121  if (roi && !roi->isInROI(i))
122  (*result)[i] = 0.0;
123  }
124 
125  return result;
126 }
Collection of detector masks.
Definition: DetectorMask.h:28
bool isMasked(size_t index) const
bool hasMasks() const
returns true if has masks
Definition: DetectorMask.h:52
void addMask(const IShape2D &shape, bool mask_value)
Add mask to the stack of detector masks.
void initMaskData(const IDetector2D &detector)
Init the map of masks for the given detector plane.
A base class for all mask items.
Definition: MaskItems.h:31
static const QString P_MASK_VALUE
Definition: MaskItems.h:33
size_t getAllocatedSize() const
Returns total size of data buffer (product of bin number in every dimension).
Definition: OutputData.h:59
static const QString P_XUP
Definition: MaskItems.h:43
static const QString P_YLOW
Definition: MaskItems.h:42
static const QString P_YUP
Definition: MaskItems.h:44
static const QString P_XLOW
Definition: MaskItems.h:41
Defines rectangular area for the detector which will be simulated/fitted.
SessionItem * itemForIndex(const QModelIndex &index) const
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const
virtual int rowCount(const QModelIndex &parent) const

References DetectorMask::addMask(), OutputData< T >::clone(), OutputData< T >::getAllocatedSize(), DataItem::getOutputData(), DetectorMask::hasMasks(), SessionModel::index(), DetectorMask::initMaskData(), DetectorMask::isMasked(), SessionModel::itemForIndex(), m_intensityDataItem, m_maskContainerIndex, m_maskModel, MaskItem::P_MASK_VALUE, RectangleItem::P_XLOW, RectangleItem::P_XUP, RectangleItem::P_YLOW, RectangleItem::P_YUP, and SessionModel::rowCount().

Referenced by setShowMaskMode().

Here is the call graph for this function:

◆ resetContext()

void MaskResultsPresenter::resetContext ( )

Definition at line 37 of file MaskResultsPresenter.cpp.

38 {
39  setMaskContext(nullptr, QModelIndex(), nullptr);
40 }
void setMaskContext(SessionModel *maskModel, const QModelIndex &maskContainerIndex, IntensityDataItem *intensityItem)

References setMaskContext().

Here is the call graph for this function:

◆ setMaskContext()

void MaskResultsPresenter::setMaskContext ( SessionModel maskModel,
const QModelIndex &  maskContainerIndex,
IntensityDataItem intensityItem 
)

Definition at line 28 of file MaskResultsPresenter.cpp.

31 {
32  m_maskModel = maskModel;
33  m_maskContainerIndex = maskContainerIndex;
34  m_intensityDataItem = intensityItem;
35 }

References m_intensityDataItem, m_maskContainerIndex, and m_maskModel.

Referenced by resetContext(), and MaskEditorCanvas::setMaskContext().

◆ setOriginalMode()

void MaskResultsPresenter::setOriginalMode ( )
private

Restores original state of IntensityDataItem.

Definition at line 70 of file MaskResultsPresenter.cpp.

71 {
72  if (m_dataBackup) {
76  }
77 }
void setOutputData(OutputData< double > *data) override
The given pointer becomes owned by this class!!
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References m_dataBackup, m_intensityDataItem, m_interpolation_flag_backup, IntensityDataItem::P_IS_INTERPOLATED, SessionItem::setItemValue(), and IntensityDataItem::setOutputData().

Referenced by updatePresenter().

Here is the call graph for this function:

◆ setShowMaskMode()

void MaskResultsPresenter::setShowMaskMode ( )
private

Update IntensityDataItem in SessionModel to represent masked areas.

Corresponding bins of OutputData will be put to zero.

Definition at line 57 of file MaskResultsPresenter.cpp.

58 {
59  if (OutputData<double>* maskedData = createMaskPresentation()) {
60  backup_data();
63  } else {
64  m_dataBackup.reset();
65  }
66 }
OutputData< double > * createMaskPresentation() const
Constructs OutputData which contains original intensity data except masked areas, and areas outside o...

References backup_data(), createMaskPresentation(), m_dataBackup, m_intensityDataItem, IntensityDataItem::P_IS_INTERPOLATED, SessionItem::setItemValue(), and IntensityDataItem::setOutputData().

Referenced by updatePresenter().

Here is the call graph for this function:

◆ updatePresenter()

void MaskResultsPresenter::updatePresenter ( MaskEditorFlags::PresentationType  mode)

Definition at line 42 of file MaskResultsPresenter.cpp.

43 {
44  if (!m_maskContainerIndex.isValid())
45  return;
46 
47  if (presentationType == MaskEditorFlags::MASK_PRESENTER) {
49  } else if (presentationType == MaskEditorFlags::MASK_EDITOR) {
51  }
52 }
void setShowMaskMode()
Update IntensityDataItem in SessionModel to represent masked areas.
void setOriginalMode()
Restores original state of IntensityDataItem.

References m_maskContainerIndex, MaskEditorFlags::MASK_EDITOR, MaskEditorFlags::MASK_PRESENTER, setOriginalMode(), and setShowMaskMode().

Referenced by MaskEditorCanvas::onPresentationTypeRequest().

Here is the call graph for this function:

Member Data Documentation

◆ m_dataBackup

std::unique_ptr<OutputData<double> > MaskResultsPresenter::m_dataBackup
private

Definition at line 50 of file MaskResultsPresenter.h.

Referenced by backup_data(), setOriginalMode(), and setShowMaskMode().

◆ m_intensityDataItem

IntensityDataItem* MaskResultsPresenter::m_intensityDataItem
private

◆ m_interpolation_flag_backup

bool MaskResultsPresenter::m_interpolation_flag_backup
private

Definition at line 51 of file MaskResultsPresenter.h.

Referenced by backup_data(), and setOriginalMode().

◆ m_maskContainerIndex

QModelIndex MaskResultsPresenter::m_maskContainerIndex
private

Definition at line 48 of file MaskResultsPresenter.h.

Referenced by createMaskPresentation(), setMaskContext(), and updatePresenter().

◆ m_maskModel

SessionModel* MaskResultsPresenter::m_maskModel
private

Definition at line 47 of file MaskResultsPresenter.h.

Referenced by createMaskPresentation(), and setMaskContext().


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