diff --git a/GUI/coregui/Models/DetectorItems.cpp b/GUI/coregui/Models/DetectorItems.cpp index 4d82ba0cbe06943a29ae73102d0847bc7bd86e04..817ea8a0fcd4af5fa3adb32c1c473582c9ba5a56 100644 --- a/GUI/coregui/Models/DetectorItems.cpp +++ b/GUI/coregui/Models/DetectorItems.cpp @@ -30,7 +30,7 @@ const QString analyzer_transmission_tooltip = "Total transmission of the polariz } const QString DetectorItem::T_MASKS = "Masks"; -const QString DetectorItem::P_RESOLUTION_FUNCTION = "ResolutionFunctions"; +const QString DetectorItem::P_RESOLUTION_FUNCTION = "Resolution function"; const QString DetectorItem::P_ANALYZER_DIRECTION = "Analyzer direction"; const QString DetectorItem::P_ANALYZER_EFFICIENCY = "Analyzer efficiency"; const QString DetectorItem::P_ANALYZER_TOTAL_TRANSMISSION = "Total transmission"; diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp index 98b89e2776768399e8630c9c6f48c452b0025019..10e89f71edbda08d50d74ee720ac641890b7e124 100644 --- a/GUI/coregui/Models/TransformFromDomain.cpp +++ b/GUI/coregui/Models/TransformFromDomain.cpp @@ -244,29 +244,53 @@ void TransformFromDomain::setInstrumentDetectorFromSample(InstrumentItem* instru const GISASSimulation& simulation) { const IDetector2D* iDetector = simulation.getInstrument().getDetector(); + DetectorItem* detector_item; if(auto detector = dynamic_cast<const SphericalDetector*>(iDetector)) { instrumentItem->setDetectorGroup(Constants::SphericalDetectorType); - auto item = dynamic_cast<SphericalDetectorItem*> (instrumentItem->detectorItem()); + detector_item = instrumentItem->detectorItem(); + auto item = dynamic_cast<SphericalDetectorItem*>(detector_item); setItemFromSample(item, *detector); } - else if(auto detector = dynamic_cast<const RectangularDetector*>(iDetector)) { instrumentItem->setDetectorGroup(Constants::RectangularDetectorType); - auto item = dynamic_cast<RectangularDetectorItem*> (instrumentItem->detectorItem()); + detector_item = instrumentItem->detectorItem(); + auto item = dynamic_cast<RectangularDetectorItem*>(detector_item); setItemFromSample(item, *detector); - - Q_ASSERT(item); - setItemFromSample(item,* detector); } - else { throw GUIHelpers::Error( "TransformFromDomain::setInstrumentDetectorFromSample(DetectorItem*) -> Unknown detector type."); } + // detector resolution + if (const IDetectorResolution* p_resfunc = iDetector->detectorResolution()) { + if (const ConvolutionDetectorResolution* p_convfunc + = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) { + if (const ResolutionFunction2DGaussian* resfunc + = dynamic_cast<const ResolutionFunction2DGaussian*>( + p_convfunc->getResolutionFunction2D())) { + SessionItem* item + = detector_item->setGroupProperty(DetectorItem::P_RESOLUTION_FUNCTION, + Constants::ResolutionFunction2DGaussianType); + item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_X, + Units::rad2deg(resfunc->getSigmaX())); + item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_Y, + Units::rad2deg(resfunc->getSigmaY())); + } else { + throw GUIHelpers::Error("TransformFromDomain::setInstrumentDetectorFromSample(" + "InstrumentItem* instrumentItem, const GISASSimulation& " + "simulation) -> Error, unknown detector resolution " + "function"); + } + } else { + throw GUIHelpers::Error( + "TransformFromDomain::setInstrumentDetectorFromSample(InstrumentItem* " + "instrumentItem, const GISASSimulation& simulation) -> Error, not a " + "ConvolutionDetectorResolution function"); + } + } } - void TransformFromDomain::setItemFromSample(SphericalDetectorItem* detectorItem, const SphericalDetector& detector) { @@ -287,34 +311,6 @@ void TransformFromDomain::setItemFromSample(SphericalDetectorItem* detectorItem, alphaAxisItem->setItemValue(BasicAxisItem::P_NBINS, (int)alpha_axis.size()); alphaAxisItem->setItemValue(BasicAxisItem::P_MIN, Units::rad2deg(alpha_axis.getMin())); alphaAxisItem->setItemValue(BasicAxisItem::P_MAX, Units::rad2deg(alpha_axis.getMax())); - - // detector resolution - if (const IDetectorResolution* p_resfunc = detector.detectorResolution()) { - if (const ConvolutionDetectorResolution* p_convfunc - = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) { - if (const ResolutionFunction2DGaussian* resfunc - = dynamic_cast<const ResolutionFunction2DGaussian*>( - p_convfunc->getResolutionFunction2D())) { - SessionItem* item - = detectorItem->setGroupProperty(SphericalDetectorItem::P_RESOLUTION_FUNCTION, - Constants::ResolutionFunction2DGaussianType); - item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_X, - Units::rad2deg(resfunc->getSigmaX())); - item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_Y, - Units::rad2deg(resfunc->getSigmaY())); - } else { - throw GUIHelpers::Error("TransformFromDomain::setItemFromSample(" - "SphericalDetectorItem* detectorItem, const GISASSimulation " - "&simulation) -> Error, unknown detector resolution " - "function"); - } - } else { - throw GUIHelpers::Error( - "TransformFromDomain::setItemFromSample(SphericalDetectorItem " - "*detectorItem, const GISASSimulation& simulation) -> Error, not a " - "ConvolutionDetectorResolution function"); - } - } } @@ -385,37 +381,10 @@ void TransformFromDomain::setItemFromSample(RectangularDetectorItem* detectorIte "TransformFromDomain::setItemFromSample(RectangularDetectorItem* detectorItem " "Error. Unknown detector arrangement"); } - - // detector resolution - if (const IDetectorResolution* p_resfunc = detector.detectorResolution()) { - if (const ConvolutionDetectorResolution* p_convfunc - = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) { - if (const ResolutionFunction2DGaussian* resfunc - = dynamic_cast<const ResolutionFunction2DGaussian*>( - p_convfunc->getResolutionFunction2D())) { - SessionItem* item - = detectorItem->setGroupProperty(RectangularDetectorItem::P_RESOLUTION_FUNCTION, - Constants::ResolutionFunction2DGaussianType); - item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_X, - resfunc->getSigmaX()); - item->setItemValue(ResolutionFunction2DGaussianItem::P_SIGMA_Y, - resfunc->getSigmaY()); - } else { - throw GUIHelpers::Error("TransformFromDomain::setItemFromSample(" - "RectangularDetectorItem* detectorItem, const GISASSimulation " - "&simulation) -> Error, unknown detector resolution " - "function"); - } - } else { - throw GUIHelpers::Error( - "TransformFromDomain::setItemFromSample(RectangularDetectorItem " - "*detectorItem, const GISASSimulation& simulation) -> Error, not a " - "ConvolutionDetectorResolution function"); - } - } } -void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, const GISASSimulation& simulation) +void TransformFromDomain::setDetectorMasks(DetectorItem* detectorItem, + const GISASSimulation& simulation) { const IDetector2D* detector = simulation.getInstrument().getDetector(); if( (detector->getDetectorMask() && detector->getDetectorMask()->numberOfMasks()) ||