From 736e80ce31228b0194363018c3d58e5be8ef1bc5 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Thu, 6 Apr 2023 18:18:53 +0200
Subject: [PATCH] don't create a scan just to obtain n

---
 GUI/Model/Device/GrazingScanItem.cpp | 5 +++++
 GUI/Model/Device/GrazingScanItem.h   | 2 ++
 GUI/Model/Device/InstrumentItems.cpp | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/GUI/Model/Device/GrazingScanItem.cpp b/GUI/Model/Device/GrazingScanItem.cpp
index a1fbf456ad1..aaefaf38847 100644
--- a/GUI/Model/Device/GrazingScanItem.cpp
+++ b/GUI/Model/Device/GrazingScanItem.cpp
@@ -148,6 +148,11 @@ double GrazingScanItem::scaleFactor() const
     return Units::deg;
 }
 
+int GrazingScanItem::nBins() const
+{
+    return alphaAxisItem()->binCount();
+}
+
 BasicAxisItem* GrazingScanItem::alphaAxisItem() const
 {
     return m_currentAxisIsUniformAxis ? m_uniformAlphaAxis.get() : m_pointwiseAlphaAxis.get();
diff --git a/GUI/Model/Device/GrazingScanItem.h b/GUI/Model/Device/GrazingScanItem.h
index 95cf371eda3..db24c63cb01 100644
--- a/GUI/Model/Device/GrazingScanItem.h
+++ b/GUI/Model/Device/GrazingScanItem.h
@@ -36,6 +36,8 @@ public:
 
     double scaleFactor() const override;
 
+    int nBins() const;
+
     //! The currently selected axis
     BasicAxisItem* alphaAxisItem() const;
 
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index ae2b4d6b8f6..2cdf4d054bf 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -575,7 +575,7 @@ OffspecInstrumentItem::OffspecInstrumentItem()
 
 std::vector<int> OffspecInstrumentItem::shape() const
 {
-    return {(int)createScan()->nScan(), detectorItem()->ySize()};
+    return {scanItem()->grazingScanItem()->nBins(), detectorItem()->ySize()};
 }
 
 void OffspecInstrumentItem::updateToRealData(const RealItem* dataItem)
-- 
GitLab