Skip to content
Snippets Groups Projects
Commit 5b59701e authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

early cast to Instrument2DItem so that we can do w/o

InstrumentItem::createInstrument.
parent de36f573
No related branches found
No related tags found
1 merge request!231simplify Instrument, Beam, Detector API
......@@ -76,6 +76,11 @@ QVector<InstrumentItem*> InstrumentModel::instrumentItems() const
return topItems<InstrumentItem>();
}
QVector<Instrument2DItem*> InstrumentModel::instrument2DItems() const
{
return topItems<Instrument2DItem>();
}
InstrumentItem* InstrumentModel::findInstrumentById(const QString& instrumentId) const
{
for (auto instrument : instrumentItems())
......
......@@ -18,6 +18,7 @@
#include "GUI/Models/SessionModel.h"
class InstrumentItem;
class Instrument2DItem;
class InstrumentModel : public SessionModel {
Q_OBJECT
......@@ -30,7 +31,8 @@ public:
QVector<SessionItem*> nonXMLItems() const override;
virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0) override;
QVector<InstrumentItem*> instrumentItems() const;
QVector<InstrumentItem*> instrumentItems() const; // still needed?
QVector<Instrument2DItem*> instrument2DItems() const;
InstrumentItem* findInstrumentById(const QString& instrumentId) const;
bool instrumentExists(const QString& instrumentId) const;
......
......@@ -13,6 +13,7 @@
// ************************************************************************************************
#include "GUI/Models/JobItem.h"
#include "Base/Utils/Assert.h"
#include "GUI/Models/Data1DViewItem.h"
#include "GUI/Models/Error.h"
#include "GUI/Models/FitSuiteItem.h"
......@@ -243,6 +244,13 @@ InstrumentItem* JobItem::instrumentItem()
return dynamic_cast<InstrumentItem*>(getItem(T_INSTRUMENT));
}
Instrument2DItem* JobItem::instrument2DItem()
{
auto* result = dynamic_cast<Instrument2DItem*>(getItem(T_INSTRUMENT));
ASSERT(result);
return result;
}
InstrumentItem* JobItem::copyInstrumentIntoJob(const InstrumentItem* instrument)
{
return model()->copyItem(instrument, this, T_INSTRUMENT);
......
......@@ -23,6 +23,7 @@ class Data1DViewItem;
class FitParameterContainerItem;
class FitSuiteItem;
class InstrumentItem;
class Instrument2DItem;
class IntensityDataItem;
class MaterialItemContainer;
class MultiLayerItem;
......@@ -98,6 +99,7 @@ public:
MultiLayerItem* sampleItem();
MultiLayerItem* copySampleIntoJob(const MultiLayerItem* sample);
Instrument2DItem* instrument2DItem();
InstrumentItem* instrumentItem();
InstrumentItem* copyInstrumentIntoJob(const InstrumentItem* instrument);
......
......@@ -111,7 +111,7 @@ void GUI::Model::JobItemUtils::setIntensityItemCoords(DataItem* intensityItem,
}
void GUI::Model::JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem,
const InstrumentItem* instrumentItem)
const Instrument2DItem* instrumentItem)
{
const auto converter = instrumentItem->createCoordSystem();
auto output_data = converter->createOutputData(converter->defaultUnits());
......
......@@ -21,6 +21,7 @@
class DataItem;
class InstrumentItem;
class Instrument2DItem;
class JobItem;
class ISimulation;
class ICoordSystem;
......@@ -43,7 +44,7 @@ void setIntensityItemCoords(DataItem* intensityItem, const InstrumentItem* instr
void setIntensityItemCoords(DataItem* intensityItem, const ICoordSystem& converter);
void createDefaultDetectorMap(DataItem* intensityItem, const InstrumentItem* instrumentItem);
void createDefaultDetectorMap(DataItem* intensityItem, const Instrument2DItem* instrumentItem);
//! Sets simulation results into the DataItem
void setResults(DataItem* intensityItem, const ISimulation* simulation);
......
......@@ -233,10 +233,11 @@ void cropRealData(JobItem* jobItem)
std::unique_ptr<OutputData<double>> origData(intensityItem->getOutputData()->clone());
GUI::Model::JobItemUtils::createDefaultDetectorMap(intensityItem, jobItem->instrumentItem());
auto instrument_item = jobItem->instrument2DItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap(intensityItem, instrument_item);
auto instrument = jobItem->instrumentItem()->createInstrument();
instrument->getDetector()->iterateOverNonMaskedPoints([&](IDetector::const_iterator it) {
instrument_item->createInstrument()->getDetector()->iterateOverNonMaskedPoints(
[&](IDetector::const_iterator it) {
auto cropped_data = intensityItem->getOutputData();
(*cropped_data)[it.roiIndex()] = (*origData)[it.detectorIndex()];
});
......
......@@ -105,7 +105,7 @@ TEST_F(TestProjectDocument, test_projectDocumentWithData)
ASSERT(realData);
DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrumentItems().front());
intensityItem, models.instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz");
ProjectDocument document;
......
......@@ -177,7 +177,7 @@ TEST_F(TestSaveService, test_saveServiceWithData)
ASSERT(realData);
DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrumentItems().front());
intensityItem, models.instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz");
std::unique_ptr<ProjectDocument> document(new ProjectDocument);
......@@ -211,7 +211,7 @@ TEST_F(TestSaveService, test_autosaveEnabled)
RealDataItem* realData = GuiUnittestUtils::createRealData("RealData", *models.realDataModel());
DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrumentItems().front());
intensityItem, models.instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz");
std::unique_ptr<ProjectDocument> document(new ProjectDocument(projectFileName));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment