diff --git a/CEP/DP3/DPPP/include/DPPP/StefCal.h b/CEP/DP3/DPPP/include/DPPP/StefCal.h index 234b0524d6fb875cd4680287fc4a8d536902243d..b8a7fa440e3bc431b3fe653cfc5366d1b8c7e9ea 100644 --- a/CEP/DP3/DPPP/include/DPPP/StefCal.h +++ b/CEP/DP3/DPPP/include/DPPP/StefCal.h @@ -52,6 +52,7 @@ namespace LOFAR { casa::Matrix<casa::DComplex> g; // Station, correlation casa::Array<casa::DComplex> vis; casa::Array<casa::DComplex> mvis; + uint savedNCr; // number of correlations stored (1,2 or 4) private: casa::Matrix<casa::DComplex> gx; @@ -61,7 +62,7 @@ namespace LOFAR { casa::Matrix<casa::DComplex> z; uint nSt; // number of stations - uint nCr; // number of correlations + uint nCr; // number of correlations (1 or 4) uint nUn; // number of unknowns uint nSp; // number that is two for scalarphase, one else uint _solInt; diff --git a/CEP/DP3/DPPP/src/GainCal.cc b/CEP/DP3/DPPP/src/GainCal.cc index 42f3734ac253bf84ba6cbbdcc4c9ab2acf2f7c06..c1f8925d662a31ba1295522b28d4aa2b7b77cbd9 100644 --- a/CEP/DP3/DPPP/src/GainCal.cc +++ b/CEP/DP3/DPPP/src/GainCal.cc @@ -411,12 +411,12 @@ namespace LOFAR { // Stefcal terminated (either by maxiter or by converging) // Let's save G... - Cube<DComplex> allg(info().antennaNames().size(), nCr, itsNFreqCells); + Cube<DComplex> allg(info().antennaNames().size(), iS[0].savedNCr, itsNFreqCells); for (uint freqCell=0; freqCell<itsNFreqCells; ++freqCell) { //cout<<endl<<"freqCell="<<freqCell<<", timeCell="<<itsTStep/itsSolInt<<", tstep="<<itsTStep<<endl; casa::Matrix<casa::DComplex> sol = iS[freqCell].getSolution(); for (uint st=0; st<info().antennaNames().size(); st++) { - for (uint cr=0; cr<nCr; ++cr) { + for (uint cr=0; cr<iS[0].savedNCr; ++cr) { allg(st,cr,freqCell)=sol(st,cr); } } diff --git a/CEP/DP3/DPPP/src/StefCal.cc b/CEP/DP3/DPPP/src/StefCal.cc index cd12aa8471a0cd627459d44a1a517c2410cc9eff..c7175bb3cf82d234aa9e723f78e86f84d81d8a02 100644 --- a/CEP/DP3/DPPP/src/StefCal.cc +++ b/CEP/DP3/DPPP/src/StefCal.cc @@ -65,14 +65,17 @@ namespace LOFAR { nUn=nSt; nCr=4; nSp=1; + savedNCr=4; } else if (_mode=="scalarphase") { nUn=nSt; nCr=1; nSp=2; + savedNCr=1; } else { // mode=="phaseonly", mode=="diagonal" nUn=nSt*2; nCr=1; nSp=1; + savedNCr=2; } g.resize(nUn,nCr); @@ -226,11 +229,7 @@ namespace LOFAR { casa::Matrix<casa::DComplex> StefCal::getSolution() { casa::Matrix<casa::DComplex> sol; - if (_mode=="diagonal" || _mode=="phaseonly") { - sol.resize(_antMap.size(), 2); - } else { - sol.resize(_antMap.size(), nCr); - } + sol.resize(_antMap.size(), savedNCr); uint sSt=0; // Index in stefcal numbering for (uint st=0; st<_antMap.size(); ++st) {