From f23c0dc37b40d486785035a4319f1bc0744ec08c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Offringa?= <offringa@astron.nl>
Date: Fri, 28 Jan 2011 16:44:54 +0000
Subject: [PATCH] Bug 1491: fixed an error message when no for each baseline is
 present

---
 CEP/DP3/AOFlagger/detectrfi.kdevelop              |  2 +-
 .../include/AOFlagger/msio/timefrequencydata.h    | 15 +++++++++++++--
 .../AOFlagger/rfi/strategy/setflaggingaction.h    |  3 +++
 .../AOFlagger/rfi/strategy/thresholdaction.h      | 13 ++++++-------
 4 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/CEP/DP3/AOFlagger/detectrfi.kdevelop b/CEP/DP3/AOFlagger/detectrfi.kdevelop
index 505bc9a525e..a192725b1bf 100644
--- a/CEP/DP3/AOFlagger/detectrfi.kdevelop
+++ b/CEP/DP3/AOFlagger/detectrfi.kdevelop
@@ -47,7 +47,7 @@
         <default/>
       </environments>
       <prio>0</prio>
-      <defaulttarget>aocopyallscript</defaulttarget>
+      <defaulttarget>rfigui</defaulttarget>
       <makeoptions>-s</makeoptions>
     </make>
     <blacklist/>
diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/msio/timefrequencydata.h b/CEP/DP3/AOFlagger/include/AOFlagger/msio/timefrequencydata.h
index 1cb50197569..d252c6137ab 100644
--- a/CEP/DP3/AOFlagger/include/AOFlagger/msio/timefrequencydata.h
+++ b/CEP/DP3/AOFlagger/include/AOFlagger/msio/timefrequencydata.h
@@ -582,13 +582,24 @@ class TimeFrequencyData
 			}
 		}
 
+		bool ContainsData() const
+		{
+			return _containsData;
+		}
+
 		size_t ImageWidth() const
 		{
-			return _images[0]->Width();
+			if(!_images.empty())
+				return _images[0]->Width();
+			else
+				return 0;
 		}
 		size_t ImageHeight() const
 		{
-			return _images[0]->Height();
+			if(!_images.empty())
+				return _images[0]->Height();
+			else
+				return 0;
 		}
 
 		enum PhaseRepresentation PhaseRepresentation() const
diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/setflaggingaction.h b/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/setflaggingaction.h
index 346b10f49fc..b177907a62e 100644
--- a/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/setflaggingaction.h
+++ b/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/setflaggingaction.h
@@ -60,6 +60,9 @@ namespace rfiStrategy {
 			}
 			virtual void Perform(class ArtifactSet &artifacts, class ProgressListener &)
 			{
+				if(!artifacts.ContaminatedData().ContainsData())
+					throw std::runtime_error("No baseline is loaded! This might mean you forgot to put a For Each Baseline action in front of everything, or you might have forgotten to open an MS.");
+
 				switch(_newFlagging)
 				{
 					default:
diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/thresholdaction.h b/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/thresholdaction.h
index 4efd41d1cf1..252c496725e 100644
--- a/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/thresholdaction.h
+++ b/CEP/DP3/AOFlagger/include/AOFlagger/rfi/strategy/thresholdaction.h
@@ -32,8 +32,6 @@ namespace rfiStrategy {
 			public:
 				ThresholdAction() : _baseSensitivity(1.0), _inTimeDirection(true), _inFrequencyDirection(true)
 				{
-					_thresholdConfig.InitializeLengthsDefault();
-					_thresholdConfig.InitializeThresholdsFromFirstThreshold(6.0L, ThresholdConfig::Rayleigh);
 				}
 				virtual std::string Description()
 				{
@@ -41,16 +39,18 @@ namespace rfiStrategy {
 				}
 				virtual void Perform(ArtifactSet &artifacts, class ProgressListener &)
 				{
+					ThresholdConfig thresholdConfig;
+					thresholdConfig.InitializeLengthsDefault();
+					thresholdConfig.InitializeThresholdsFromFirstThreshold(6.0L, ThresholdConfig::Rayleigh);
 					if(!_inTimeDirection)
-						_thresholdConfig.RemoveHorizontalOperations();
+						thresholdConfig.RemoveHorizontalOperations();
 					if(!_inFrequencyDirection)
-						_thresholdConfig.RemoveVerticalOperations();
+						thresholdConfig.RemoveVerticalOperations();
 					
 					TimeFrequencyData &contaminated = artifacts.ContaminatedData();
 					Mask2DPtr mask = Mask2D::CreateCopy(contaminated.GetSingleMask());
-					//_thresholdConfig.SetVerbose(true);
 					Image2DCPtr image = contaminated.GetSingleImage();
-					_thresholdConfig.Execute(image, mask, false, artifacts.Sensitivity() * _baseSensitivity);
+					thresholdConfig.Execute(image, mask, false, artifacts.Sensitivity() * _baseSensitivity);
 					contaminated.SetGlobalMask(mask);
 				}
 				num_t BaseSensitivity() const { return _baseSensitivity; }
@@ -66,7 +66,6 @@ namespace rfiStrategy {
 				bool FrequencyDirectionFlagging() const { return _inFrequencyDirection; }
 				void SetFrequencyDirectionFlagging(bool frequencyDirection) { _inFrequencyDirection = frequencyDirection; }
 			private:
-				ThresholdConfig _thresholdConfig;
 				num_t _baseSensitivity;
 				bool _inTimeDirection;
 				bool _inFrequencyDirection;
-- 
GitLab