From 7bb7ba8a77410e0a76356e93a1c20bd4423d74ee Mon Sep 17 00:00:00 2001
From: Tammo Jan Dijkema <dijkema@astron.nl>
Date: Mon, 26 Mar 2018 18:42:42 +0000
Subject: [PATCH] Task #11551: add write function

---
 DPPP_SageCal/include/DPPP_SageCal/SageCal.h |  2 ++
 DPPP_SageCal/src/SageCal.cc                 | 31 ++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/DPPP_SageCal/include/DPPP_SageCal/SageCal.h b/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
index ee6744719..ca4516fa1 100644
--- a/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
+++ b/DPPP_SageCal/include/DPPP_SageCal/SageCal.h
@@ -80,6 +80,8 @@ namespace LOFAR {
 
       void loadData(const DPBuffer&, Data::IOData&, double*);
 
+      void writeData(DPBuffer&, const Data::IOData&);
+
       //# Data members.
       DPInput*         _input;
       DPBuffer         _buffer;
diff --git a/DPPP_SageCal/src/SageCal.cc b/DPPP_SageCal/src/SageCal.cc
index 94da5e6f3..926e19291 100644
--- a/DPPP_SageCal/src/SageCal.cc
+++ b/DPPP_SageCal/src/SageCal.cc
@@ -67,7 +67,16 @@ namespace LOFAR {
     }
 
     SageCal::~SageCal()
-    {}
+    {
+      delete [] _iodata.u;
+      delete [] _iodata.v;
+      delete [] _iodata.w;
+      delete [] _iodata.x;
+      delete [] _iodata.xo;
+      delete [] _iodata.freqs;
+      delete [] _iodata.flag;
+      delete [] _iodata.NchanMS;
+    }
 
     DPStep::ShPtr SageCal::makeStep (DPInput* input,
                                     const ParameterSet& parset,
@@ -89,6 +98,7 @@ namespace LOFAR {
       _iodata.dec0 = ref_dir.getValue().get()[1];
 
       _iodata.Nms = 1;
+      _iodata.Nchan = info().nchan();
       try {
         _iodata.u=new double[_iodata.Nbase*_iodata.tilesz];
         _iodata.v=new double[_iodata.Nbase*_iodata.tilesz];
@@ -210,12 +220,29 @@ namespace LOFAR {
           }
           // For now, we just let sagecal believe all timeslots are good
           countgood++;
+          row0++;
         }
       }
 
       *fratio=(double)countbad/(double)(countgood+countbad);
     }
 
+    void SageCal::writeData(DPBuffer& buffer, const Data::IOData& iodata ) {
+      uint row0=0;
+
+      for (int time=0; time<1; time++) { // Todo: handle tilesz
+        for (int bl=0; bl<iodata.Nbase; ++bl) {
+          uint ant1 = info().getAnt1()[bl];
+          uint ant2 = info().getAnt2()[bl];
+          if (ant1==ant2) {
+            continue;
+          }
+
+          std::complex<float> *data = &(buffer.getData().data()[time*info().nbaselines()*4*info().nchan()+bl*4*info().nchan()]);
+        }
+      }
+    }
+
     bool SageCal::process (const DPBuffer& bufin)
     {
       _timer.start();
@@ -233,6 +260,8 @@ namespace LOFAR {
                                      _iodata.deltaf, _iodata.deltat, _iodata.dec0,
                                      Data::Nt, Data::DoSim);
 
+      //writeData(_buffer, _iodata);
+
       _timer.stop();
       getNextStep()->process(_buffer);
       return false;
-- 
GitLab