50 void processInstrumentLink(
JobItem* jobItem);
53 void copyMasksToInstrument(
JobItem* jobItem);
56 void cropRealData(
JobItem* jobItem);
59 void createFitContainers(
JobItem* jobItem);
73 auto property_container =
77 property_container->addItem(job_item->
dataItem());
88 auto model = jobItem->
model();
90 multilayer->setItemName(
"MultiLayer");
96 std::map<MaterialItem*, QString> materials;
97 for (
auto property_item : multilayer->materialPropertyItems()) {
101 auto iter = materials.find(material);
102 if (iter == materials.end()) {
103 auto material_copy = container->insertCopy(material);
104 materials.insert({material, material_copy->
identifier()});
105 material_property.setIdentifier(material_copy->identifier());
107 material_property.setIdentifier(iter->second);
108 property_item->setValue(material_property.variant());
114 auto model = jobItem->
model();
116 copiedInstrument->setItemName(from->
modelType());
126 spec_to->beamItem()->updateFileName(
filename);
130 auto axis_origin = getPointwiseAxisItem(spec_from);
131 const QString current_axis_type = spec_from->beamItem()->inclinationAxisGroup()->currentType();
132 if (current_axis_type ==
"PointwiseAxis")
133 spec_to->beamItem()->updateToData(*axis_origin->axis(), axis_origin->getUnitsLabel());
134 else if (axis_origin->containsNonXMLData())
135 getPointwiseAxisItem(spec_to)->init(*axis_origin->axis(), axis_origin->getUnitsLabel());
147 ASSERT(isSpecularInstrument || isIntensityInstrument);
149 if (isSpecularInstrument)
151 else if (isIntensityInstrument)
155 "Unsupported instrument type");
167 processInstrumentLink(jobItem);
168 copyMasksToInstrument(jobItem);
172 cropRealData(jobItem);
176 createFitContainers(jobItem);
216 while (item && item->
modelType() !=
"JobItem")
218 return static_cast<const JobItem*
>(item);
222 void processInstrumentLink(
JobItem* jobItem)
226 throw GUIHelpers::Error(
"JobModelFunctions::processInstrumentLink() -> Error. No data.");
232 void copyMasksToInstrument(
JobItem* jobItem)
238 void cropRealData(
JobItem* jobItem)
245 std::unique_ptr<OutputData<double>> origData(intensityItem->
getOutputData()->
clone());
250 instrument->getDetector()->iterate(
260 void createFitContainers(
JobItem* jobItem)
265 if (fitSuiteItem !=
nullptr) {
266 throw GUIHelpers::Error(
"JobModel::createFitContainers() -> Error. Attempt to create "
267 "a second FitSuiteItem.");
274 if (parsContainerItem !=
nullptr) {
275 throw GUIHelpers::Error(
"JobModel::createFitContainers() -> Error. Attempt to create "
276 "a second FitParameterContainer.");
284 if (minimizerContainerItem !=
nullptr) {
285 throw GUIHelpers::Error(
"JobModel::createFitContainers() -> Error. Attempt to create "
286 "a second MinimizerContainer.");
#define ASSERT(condition)
Defines class Data1DViewItem.
Defines class DataPropertyContainer.
Defines DepthProbeInstrumentItem class.
Defines classes DetectorItems.
Defines DomainObjectBuilder namespace.
Defines FitParameterItems family of classes.
Defines class FitSuiteItem.
Defines class GUIHelpers functions.
Defines interface IDetector2D.
Defines InstrumentItems classes.
Defines class Instrument.
Defines class IntensityDataItem.
Defines auxiliary functions in ItemFileNameUtils namespace.
Defines class JobItemUtils.
Defines auxiliary functions in JobModelFunctions namespace.
Defines MaskItems classes.
Defines class MaskUnitsConverter.
Defines class MaterialItemContainer.
Defines class MaterialItemUtils.
Defines MinimizerItem class.
Defines class MultiLayerItem.
Defines pointwise axis item.
Defines class RealDataItem.
Defines class SpecularDataItem.
QVariant variant() const
Constructs variant enclosing given ComboProperty.
View model for 1D DataItem.
static const QString P_AXES_UNITS
static const QString T_DATA_PROPERTIES
OutputData< double > * getOutputData()
virtual void setOutputData(OutputData< double > *data)=0
The given pointer becomes owned by this class!!
void setFileName(const QString &filename)
The ExternalProperty class defines custom QVariant property to carry the text, color and an identifie...
QString identifier() const
static const QString T_FIT_PARAMETERS_CONTAINER
static const QString T_MINIMIZER
virtual std::unique_ptr< Instrument > createInstrument() const =0
virtual void importMasks(const MaskContainerItem *)
void updateDataRange()
Sets min,max values for z-axis, if axes is not locked, and ranges are not yet set.
static const QString T_DATAVIEW
static const QString T_SAMPLE
static const QString T_OUTPUT
InstrumentItem * instrumentItem()
static const QString T_FIT_SUITE
static const QString T_INSTRUMENT
RealDataItem * realDataItem()
static const QString T_REALDATA
static const QString T_MATERIAL_CONTAINER
static const QString P_INSTRUMENT_NAME
static const QString T_MATERIALS
static const QString P_MAGNETIZATION
The MinimizerContainerItem class holds collection of minimizers.
static const QString P_EXTERNAL_FIELD
OutputData * clone() const
Item for non-uniform axis with specified coordinates.
The RealDataItem class represents intensity data imported from file and intended for fitting.
MaskContainerItem * maskContainerItem()
Returns mask container item.
void setInstrumentId(const QString &id)
const OutputData< double > * nativeOutputData() const
void updateToInstrument(const InstrumentItem *instrument)
bool hasNativeData() const
void setNativeOutputData(OutputData< double > *data)
takes ownership of data
IntensityDataItem * intensityDataItem()
QString itemName() const
Get item name, return display name if no name is set.
QVariant value() const
Get value.
void setVisible(bool enabled)
Flags accessors.
bool setValue(QVariant value)
Set value, ensure that variant types match.
SessionItem * parent() const
Returns parent of this item.
SessionModel * model() const
Returns model of this item.
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
QString modelType() const
Get model type.
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.
SessionItem * getChildOfType(const QString &type) const
Returns the first child of the given type.
T * copyItem(const T *item_to_copy, SessionItem *new_parent=0, const QString &tag="")
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
An iterator for SimulationArea.
size_t detectorIndex() const
GroupItem * inclinationAxisGroup()
SpecularBeamItem * beamItem() const override
std::unique_ptr< IUnitConverter > createUnitConverter(const InstrumentItem *instrumentItem)
Creates a unit converter corresponding to the given instrument item.
std::string filename(const std::string &path)
Returns path without directory part ("Foo/Bar/Doz.int.gz" -> "Doz.int.gz")
QString instrumentDataFileName(const InstrumentItem &instrumentItem)
QString jobReferenceFileName(const JobItem &jobItem)
Constructs the name of the file with reference data.
QString jobNativeDataFileName(const JobItem &jobItem)
ComboProperty availableUnits(const IUnitConverter &converter)
void createDefaultDetectorMap(DataItem *intensityItem, const InstrumentItem *instrumentItem)
void setupJobItemForFit(JobItem *jobItem, const RealDataItem *realDataItem)
Setups JobItem for fit.
void setupJobItemInstrument(JobItem *jobItem, const InstrumentItem *from)
Properly copies instrument into job item.
void setupJobItemSampleData(JobItem *jobItem, const MultiLayerItem *sampleItem)
Properly copies sample and materials into JobItem.
const JobItem * findJobItem(const SessionItem *item)
Determines parenting JobItem of a given SessionItem.
void muteMagnetizationData(JobItem *jobItem)
void copyRealDataItem(JobItem *jobItem, const RealDataItem *realDataItem)
Copy RealDataItem to jobItem intended for fitting.
void initDataView(JobItem *jobItem)
Initializes Data1DViewItem and assigns it to the passed JobItem.
void setupJobItemOutput(JobItem *jobItem)
Setup items intended for storing results of the job.
MaterialItem * findMaterial(const ExternalProperty &material_property)