diff --git a/DPPP_SageCal/include/DPPP_SageCal/SageCal.h b/DPPP_SageCal/include/DPPP_SageCal/SageCal.h index ee6744719aaf336194e1004dd6830292da1e9781..ca4516fa1b305eaa48ff67f3eff4aae3c4d182d0 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 94da5e6f3d6a691216a102e86d6a87da2d11e8e4..926e192910c2708f29f6b68acd9913e1a564b413 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;