diff --git a/RTCP/Cobalt/CoInterface/src/Parset.cc b/RTCP/Cobalt/CoInterface/src/Parset.cc index f6a3a46b2c9bed8971df5e1c0589e5e3f57c7c81..82ca98c05a641d25ef43a380210a1d99ffbe8750 100644 --- a/RTCP/Cobalt/CoInterface/src/Parset.cc +++ b/RTCP/Cobalt/CoInterface/src/Parset.cc @@ -613,28 +613,6 @@ namespace LOFAR } - std::vector<double> Parset::subbandToFrequencyMapping() const - { - vector<double> freqs(nrSubbands()); - - for (unsigned subband = 0; subband < freqs.size(); ++subband) - freqs[subband] = settings.subbands[subband].centralFrequency; - - return freqs; - } - - - std::vector<unsigned> Parset::subbandToSAPmapping() const - { - vector<unsigned> saps(nrSubbands()); - - for (unsigned subband = 0; subband < saps.size(); ++subband) - saps[subband] = settings.subbands[subband].SAP; - - return saps; - } - - std::vector<double> Parset::centroidPos(const std::string &stations) const { std::vector<double> Centroid, posList, pos; @@ -687,12 +665,6 @@ namespace LOFAR { return settings.delayCompensation.referencePhaseCenter; } - - - std::vector<double> Parset::getPhaseCentreOf(const string &name) const - { - return settings.stations[stationIndex(name)].phaseCenter; - } /* std::vector<double> Parset::getPhaseCorrection(const string &name, char pol) const { @@ -790,20 +762,7 @@ namespace LOFAR std::string Parset::getAnaBeamDirectionType() const { - return settings.anaBeam.direction.type; - } - - - vector<unsigned> Parset::subbandToRSPboardMapping(const string &stationName) const - { - return settings.stations[stationIndex(stationName)].rspBoardMap; - } - - - vector<unsigned> Parset::subbandToRSPslotMapping(const string &stationName) const - { - return settings.stations[stationIndex(stationName)].rspSlotMap; - } + return settings.anaBeam.direction.type; } double Parset::getTime(const std::string &name, const std::string &defaultValue) const { @@ -858,16 +817,6 @@ namespace LOFAR return settings.stations[index].name; } - int Parset::stationIndex(const std::string &name) const - { - std::vector<std::string> names = allStationNames(); - for (unsigned i = 0; i < names.size(); i++) - if (names[i] == name) - return i; - - return -1; - } - std::vector<std::string> Parset::allStationNames() const { vector<string> names(nrStations()); @@ -1073,16 +1022,6 @@ namespace LOFAR return settings.correlator.nrChannels; } - vector<unsigned> Parset::subbandList() const - { - vector<unsigned> nrs(nrSubbands()); - - for (unsigned subband = 0; subband < nrs.size(); ++subband) - nrs[subband] = settings.subbands[subband].stationIdx; - - return nrs; - } - size_t Parset::nrSubbands() const { return settings.subbands.size(); @@ -1108,11 +1047,6 @@ namespace LOFAR return "ITRF"; } - double Parset::clockCorrectionTime(const std::string &station) const - { - return settings.stations[stationIndex(station)].clockCorrection; - } - bool Parset::correctBandPass() const { return settings.corrections.bandPass; diff --git a/RTCP/Cobalt/CoInterface/src/Parset.h b/RTCP/Cobalt/CoInterface/src/Parset.h index f5e96f5ee6b6124ff32e5a474ee9cc29c06e241c..8e9ed5b98d74b972a5bae93c5388ebc3cd7e32e0 100644 --- a/RTCP/Cobalt/CoInterface/src/Parset.h +++ b/RTCP/Cobalt/CoInterface/src/Parset.h @@ -510,10 +510,8 @@ namespace LOFAR bool delayCompensation() const; unsigned nrCalcDelays() const; bool correctClocks() const; - double clockCorrectionTime(const std::string &station) const; bool correctBandPass() const; std::string stationName(int index) const; - int stationIndex(const std::string &name) const; std::vector<std::string> allStationNames() const; bool outputCorrelatedData() const; @@ -563,14 +561,8 @@ namespace LOFAR double dispersionMeasure(unsigned beam = 0,unsigned pencil = 0) const; std::vector<std::string> TABStationList(unsigned beam = 0,unsigned pencil = 0, bool raw = false) const; - std::vector<unsigned> subbandList() const; size_t nrSubbands() const; - std::vector<unsigned> subbandToSAPmapping() const; - std::vector<double> subbandToFrequencyMapping() const; - std::vector<unsigned> subbandToRSPboardMapping(const std::string &stationName) const; - std::vector<unsigned> subbandToRSPslotMapping(const std::string &stationName) const; - double channel0Frequency( size_t subband ) const; bool realTime() const; diff --git a/RTCP/Cobalt/GPUProc/src/cuda/WorkQueues/CorrelatorWorkQueue.cc b/RTCP/Cobalt/GPUProc/src/cuda/WorkQueues/CorrelatorWorkQueue.cc index 7f07f905893882e66976edbb4040c1b55bcb3684..a358dc3e4ff8dd831068f0d0936f4fe4f3e9ac4f 100644 --- a/RTCP/Cobalt/GPUProc/src/cuda/WorkQueues/CorrelatorWorkQueue.cc +++ b/RTCP/Cobalt/GPUProc/src/cuda/WorkQueues/CorrelatorWorkQueue.cc @@ -311,7 +311,7 @@ namespace LOFAR if (ps.delayCompensation()) { - unsigned SAP = ps.subbandToSAPmapping()[subband]; + unsigned SAP = ps.settings.subbands[subband].SAP; // Only upload delays if they changed w.r.t. the previous subband. if ((int)SAP != prevSAP || (ssize_t)block != prevBlock) { diff --git a/RTCP/Cobalt/GPUProc/src/opencl/WorkQueues/CorrelatorWorkQueue.cc b/RTCP/Cobalt/GPUProc/src/opencl/WorkQueues/CorrelatorWorkQueue.cc index 6061bd114d2c043e981ef46c80814ef2f276a965..4ff1b52013e69095722006ac7e3b809e927f9510 100644 --- a/RTCP/Cobalt/GPUProc/src/opencl/WorkQueues/CorrelatorWorkQueue.cc +++ b/RTCP/Cobalt/GPUProc/src/opencl/WorkQueues/CorrelatorWorkQueue.cc @@ -412,7 +412,7 @@ namespace LOFAR // Moved from doWork() The delay data should be available before the kernels start. // Queue processed ordered. This could main that the transfer is not nicely overlapped - unsigned SAP = ps.subbandToSAPmapping()[subband]; + unsigned SAP = ps.settings.subbands[subband].SAP; // Only upload delays if they changed w.r.t. the previous subband if ((int)SAP != prevSAP || (ssize_t)block != prevBlock) { diff --git a/RTCP/Cobalt/OutputProc/src/MSWriterCorrelated.cc b/RTCP/Cobalt/OutputProc/src/MSWriterCorrelated.cc index f685cace959bea504edc183815987d349fb7aad5..337ce4398874ac41b04234a8bdf8d3c18dafaf58 100644 --- a/RTCP/Cobalt/OutputProc/src/MSWriterCorrelated.cc +++ b/RTCP/Cobalt/OutputProc/src/MSWriterCorrelated.cc @@ -81,10 +81,6 @@ namespace LOFAR baselineNames[bl++] = str(format("%s_%s") % stationNames[s1] % stationNames[s2]); #endif - const vector<unsigned> subbands = itsParset.subbandList(); - const vector<unsigned> SAPs = itsParset.subbandToSAPmapping(); - const vector<double> frequencies = itsParset.subbandToFrequencyMapping(); - itsConfiguration.add("fileFormat", "AIPS++/CASA"); itsConfiguration.add("filename", LOFAR::basename(msName)); itsConfiguration.add("size", "0"); @@ -94,12 +90,12 @@ namespace LOFAR itsConfiguration.add("startTime", parset.getString("Observation.startTime")); itsConfiguration.add("duration", "0"); itsConfiguration.add("integrationInterval", str(format("%f") % parset.IONintegrationTime())); - itsConfiguration.add("centralFrequency", str(format("%f") % (frequencies[subbandIndex]))); - itsConfiguration.add("channelWidth", str(format("%f") % (parset.channelWidth()))); + itsConfiguration.add("centralFrequency", str(format("%f") % parset.settings.subbands[subbandIndex].centralFrequency)); + itsConfiguration.add("channelWidth", str(format("%f") % parset.channelWidth())); itsConfiguration.add("channelsPerSubband", str(format("%u") % parset.nrChannelsPerSubband())); - itsConfiguration.add("stationSubband", str(format("%u") % subbands[subbandIndex])); + itsConfiguration.add("stationSubband", str(format("%u") % parset.settings.subbands[subbandIndex].stationIdx)); itsConfiguration.add("subband", str(format("%u") % subbandIndex)); - itsConfiguration.add("SAP", str(format("%u") % SAPs[subbandIndex])); + itsConfiguration.add("SAP", str(format("%u") % parset.settings.subbands[subbandIndex].SAP)); } diff --git a/RTCP/Cobalt/OutputProc/src/MSWriterDAL.cc b/RTCP/Cobalt/OutputProc/src/MSWriterDAL.cc index df7c1a993b47479c53ecf58777dfc99d7281c82c..31cf3f3e7d2ea1e8e70586f828de3c6ffe46bd34 100644 --- a/RTCP/Cobalt/OutputProc/src/MSWriterDAL.cc +++ b/RTCP/Cobalt/OutputProc/src/MSWriterDAL.cc @@ -123,12 +123,6 @@ namespace LOFAR unsigned nrBlocks = parset.nrBeamFormedBlocks(); unsigned nrSubbands = itsInfo.subbands.size(); const vector<unsigned> &subbandIndices = itsInfo.subbands; - const vector<unsigned> allSubbands = parset.subbandList(); - - vector<unsigned> subbands(nrSubbands, 0); // actual subbands written in this file - - for (unsigned sb = 0; sb < nrSubbands; sb++) - subbands[sb] = allSubbands[subbandIndices[sb]]; vector<string> stokesVars; vector<string> stokesVars_LTA; @@ -208,7 +202,9 @@ namespace LOFAR // contain frequencies from both the top and the bottom half-channel. double frequencyOffsetPPF = parset.nrChannelsPerSubband() > 1 ? 0.5 * channelBandwidth : 0.0; - const vector<double> subbandCenterFrequencies = parset.subbandToFrequencyMapping(); + vector<double> subbandCenterFrequencies(parset.nrSubbands()); + for(size_t sb = 0; sb < parset.nrSubbands(); ++sb) + subbandCenterFrequencies[sb] = parset.settings.subbands[sb].centralFrequency; double min_centerfrequency = *min_element( subbandCenterFrequencies.begin(), subbandCenterFrequencies.end() ); double max_centerfrequency = *max_element( subbandCenterFrequencies.begin(), subbandCenterFrequencies.end() ); @@ -541,10 +537,10 @@ namespace LOFAR ostringstream stationSubbandsStr; stationSubbandsStr << "["; - for (size_t i = 0; i < subbands.size(); ++i) { + for (size_t i = 0; i < nrSubbands; ++i) { if( i > 0 ) stationSubbandsStr << ", "; - stationSubbandsStr << str(format("%u") % subbands[i]); + stationSubbandsStr << str(format("%u") % parset.settings.subbands[subbandIndices[i]].stationIdx); } stationSubbandsStr << "]"; diff --git a/RTCP/Cobalt/OutputProc/src/MeasurementSetFormat.cc b/RTCP/Cobalt/OutputProc/src/MeasurementSetFormat.cc index 9752d13adb8701c67408e5d68647bb7ea3a62b1c..f45682d9dc42069b0a08fb45acdcfaa39f390915 100644 --- a/RTCP/Cobalt/OutputProc/src/MeasurementSetFormat.cc +++ b/RTCP/Cobalt/OutputProc/src/MeasurementSetFormat.cc @@ -170,8 +170,7 @@ namespace LOFAR } // Get subarray id (formerly known as beam). - const vector<unsigned> subbandToSAPmapping = itsPS.subbandToSAPmapping(); - int subarray = subbandToSAPmapping[subband]; + int subarray = itsPS.settings.subbands[subband].SAP; fillAntenna(antMPos); fillFeed(); @@ -392,7 +391,10 @@ namespace LOFAR timeRange[1] = itsStartTime + itsNrTimes * itsTimeStep; // Get minimum and maximum frequency. - vector<double> freqs = itsPS.subbandToFrequencyMapping(); + vector<double> freqs(itsPS.nrSubbands()); + for(size_t sb = 0; sb < itsPS.nrSubbands(); ++sb) + freqs[sb] = itsPS.settings.subbands[sb].centralFrequency; + ASSERT( freqs.size() > 0 ); double minFreq = *std::min_element( freqs.begin(), freqs.end() ); @@ -468,7 +470,7 @@ namespace LOFAR void MeasurementSetFormat::fillSpecWindow(unsigned subband) { - const double refFreq = itsPS.subbandToFrequencyMapping()[subband]; + const double refFreq = itsPS.settings.subbands[subband].centralFrequency; const size_t nchan = itsPS.nrChannelsPerSubband(); const double chanWidth = itsPS.channelWidth(); const double totalBW = nchan * chanWidth; diff --git a/RTCP/Cobalt/OutputProc/src/OutputThread.cc b/RTCP/Cobalt/OutputProc/src/OutputThread.cc index c7d8c734d81a3f83f6a3028f5e483c807fe2c8a3..c12de780ff21fbfaaec12aee22760c0bcb7da262 100644 --- a/RTCP/Cobalt/OutputProc/src/OutputThread.cc +++ b/RTCP/Cobalt/OutputProc/src/OutputThread.cc @@ -163,21 +163,15 @@ namespace LOFAR case CORRELATED_DATA: itsNrExpectedBlocks = itsParset.nrCorrelatedBlocks(); - { - const vector<unsigned> subbands = itsParset.subbandList(); - const vector<unsigned> SAPs = itsParset.subbandToSAPmapping(); - const vector<double> frequencies = itsParset.subbandToFrequencyMapping(); - - LOG_INFO_STR(itsLogPrefix << "Characteristics: " - << "SAP " << SAPs[itsStreamNr] - << ", subband " << subbands[itsStreamNr] - << ", centralfreq " << setprecision(8) << frequencies[itsStreamNr] / 1e6 << " MHz" - << ", duration " << setprecision(8) << itsNrExpectedBlocks * itsParset.IONintegrationTime() << " s" - << ", integration " << setprecision(8) << itsParset.IONintegrationTime() << " s" - << ", channels " << itsParset.nrChannelsPerSubband() - << ", channelwidth " << setprecision(8) << itsParset.channelWidth() / 1e3 << " kHz" - ); - } + LOG_INFO_STR(itsLogPrefix << "Characteristics: " + << "SAP " << itsParset.settings.subbands[itsStreamNr].SAP + << ", subband " << itsParset.settings.subbands[itsStreamNr].stationIdx + << ", centralfreq " << setprecision(8) << itsParset.settings.subbands[itsStreamNr].centralFrequency / 1e6 << " MHz" + << ", duration " << setprecision(8) << itsNrExpectedBlocks * itsParset.IONintegrationTime() << " s" + << ", integration " << setprecision(8) << itsParset.IONintegrationTime() << " s" + << ", channels " << itsParset.nrChannelsPerSubband() + << ", channelwidth " << setprecision(8) << itsParset.channelWidth() / 1e3 << " kHz" + ); break; case BEAM_FORMED_DATA: itsNrExpectedBlocks = itsParset.nrBeamFormedBlocks();