diff --git a/CEP/BB/BBS/src/BBSrun.cc b/CEP/BB/BBS/src/BBSrun.cc index 4395e80bf94da275dc1ca054d8098e59b5cf3958..c73f1f9d760cc8a005bd7963818710a1012d941b 100644 --- a/CEP/BB/BBS/src/BBSrun.cc +++ b/CEP/BB/BBS/src/BBSrun.cc @@ -55,6 +55,9 @@ void predict (Prediffer& prediffer, const MSDesc& msd, while (time < endTime) { prediffer.setWorkDomain (startChan, endChan, time, timeStep); prediffer.setStepProp (stepProp); +#ifdef EXPR_GRAPH + prediffer.writeExpressionGraph("expr_graph.dot", 0); +#endif prediffer.writePredictedData(); time += timeStep; } @@ -74,6 +77,20 @@ void subtract (Prediffer& prediffer, const MSDesc& msd, } } +void correct(Prediffer &prediffer, const MSDesc& msd, + const StepProp& stepProp, + double timeStep, int startChan, int endChan) +{ + double time = msd.startTime; + double endTime = msd.endTime; + while (time < endTime) { + prediffer.setWorkDomain (startChan, endChan, time, timeStep); + prediffer.setStepProp (stepProp); + prediffer.correctData(); + time += timeStep; + } +} + void solve (Prediffer& prediffer, const MSDesc& msd, const ParmDBMeta &historyPDM, const StepProp& stepProp, @@ -215,14 +232,15 @@ bool doIt (const string& parsetName) calcUVW); // Set strategy. StrategyProp stratProp; - stratProp.setAntennas (antennas); - stratProp.setCorr (corrs); - stratProp.setInColumn (columnNameIn); + stratProp.setAntennas(antennas); + stratProp.setCorr(corrs); + stratProp.setInColumn(columnNameIn); ASSERT (prediffer.setStrategyProp (stratProp)); // Fill step properties. StepProp stepProp; stepProp.setModel (StringUtil::split(instrumentModel,'.')); stepProp.setOutColumn (columnNameOut); + stepProp.setCorr(corrs); try { if (operation == "solve") { ASSERT (nrSolveInterval.size()==2); @@ -250,8 +268,13 @@ bool doIt (const string& parsetName) cout << "output column name : " << columnNameOut << endl; subtract (prediffer, msd, stepProp, timeDomainSize, startChan, endChan); + } else if (operation == "correct") { + cout << "input column name : " << columnNameIn << endl; + cout << "output column name : " << columnNameOut << endl; + correct (prediffer, msd, stepProp, + timeDomainSize, startChan, endChan); } else { - cout << "Only operations solve, predict, and subtract are valid" << endl; + cout << "Only operations predict, subtract, correct, and solve are valid" << endl; return 1; } } @@ -275,6 +298,11 @@ bool doIt (const string& parsetName) int main (int argc, const char* argv[]) { + INIT_LOGGER("BBSrun"); + +#ifdef EXPR_GRAPH + std::cout << "EXPR_GRAPH defined..." << std::endl; +#endif try { if (argc < 2) { cout << "Run as: BBSrun parset-name" << endl; diff --git a/CEP/BB/BBS/src/Makefile.am b/CEP/BB/BBS/src/Makefile.am index 6933becc0ec581e7d36d83d3548289a7031cb46e..1f59e1821762c006f0a0341288a017e00dafaccc 100644 --- a/CEP/BB/BBS/src/Makefile.am +++ b/CEP/BB/BBS/src/Makefile.am @@ -10,7 +10,8 @@ SolveProp.h \ StepProp.h \ StrategyProp.h \ ParmWriter.h \ -BBSTestLogger.h +BBSTestLogger.h \ +BBSKernelProcessControl.h pkginclude_MNSdir = $(pkgincludedir)/MNS pkginclude_MNS_HEADERS = \ @@ -77,6 +78,7 @@ StrategyProp.cc \ ParmData.cc \ ParmWriter.cc \ BBSTestLogger.cc \ +BBSKernelProcessControl.cc \ MNS/MeqBaseDFTPS.cc \ MNS/MeqBaseLinPS.cc \ MNS/MeqDFTPS.cc \ @@ -120,10 +122,14 @@ MNS/MeqStation.cc \ MNS/MeqStatUVW.cc \ MNS/MeqTabular.cc -bin_PROGRAMS = BBSrun +bin_PROGRAMS = BBSrun BBSKernel BBSrun_SOURCES = BBSrun.cc BBSrun_LDADD = libbbs.la BBSrun_DEPENDENCIES = libbbs.la $(LOFAR_DEPEND) +BBSKernel_SOURCES = BBSKernel.cc +BBSKernel_LDADD = libbbs.la +BBSKernel_DEPENDENCIES = libbbs.la $(LOFAR_DEPEND) + include $(top_srcdir)/Makefile.common diff --git a/CEP/BB/BBSKernel/src/BBSrun.cc b/CEP/BB/BBSKernel/src/BBSrun.cc index 4395e80bf94da275dc1ca054d8098e59b5cf3958..c73f1f9d760cc8a005bd7963818710a1012d941b 100644 --- a/CEP/BB/BBSKernel/src/BBSrun.cc +++ b/CEP/BB/BBSKernel/src/BBSrun.cc @@ -55,6 +55,9 @@ void predict (Prediffer& prediffer, const MSDesc& msd, while (time < endTime) { prediffer.setWorkDomain (startChan, endChan, time, timeStep); prediffer.setStepProp (stepProp); +#ifdef EXPR_GRAPH + prediffer.writeExpressionGraph("expr_graph.dot", 0); +#endif prediffer.writePredictedData(); time += timeStep; } @@ -74,6 +77,20 @@ void subtract (Prediffer& prediffer, const MSDesc& msd, } } +void correct(Prediffer &prediffer, const MSDesc& msd, + const StepProp& stepProp, + double timeStep, int startChan, int endChan) +{ + double time = msd.startTime; + double endTime = msd.endTime; + while (time < endTime) { + prediffer.setWorkDomain (startChan, endChan, time, timeStep); + prediffer.setStepProp (stepProp); + prediffer.correctData(); + time += timeStep; + } +} + void solve (Prediffer& prediffer, const MSDesc& msd, const ParmDBMeta &historyPDM, const StepProp& stepProp, @@ -215,14 +232,15 @@ bool doIt (const string& parsetName) calcUVW); // Set strategy. StrategyProp stratProp; - stratProp.setAntennas (antennas); - stratProp.setCorr (corrs); - stratProp.setInColumn (columnNameIn); + stratProp.setAntennas(antennas); + stratProp.setCorr(corrs); + stratProp.setInColumn(columnNameIn); ASSERT (prediffer.setStrategyProp (stratProp)); // Fill step properties. StepProp stepProp; stepProp.setModel (StringUtil::split(instrumentModel,'.')); stepProp.setOutColumn (columnNameOut); + stepProp.setCorr(corrs); try { if (operation == "solve") { ASSERT (nrSolveInterval.size()==2); @@ -250,8 +268,13 @@ bool doIt (const string& parsetName) cout << "output column name : " << columnNameOut << endl; subtract (prediffer, msd, stepProp, timeDomainSize, startChan, endChan); + } else if (operation == "correct") { + cout << "input column name : " << columnNameIn << endl; + cout << "output column name : " << columnNameOut << endl; + correct (prediffer, msd, stepProp, + timeDomainSize, startChan, endChan); } else { - cout << "Only operations solve, predict, and subtract are valid" << endl; + cout << "Only operations predict, subtract, correct, and solve are valid" << endl; return 1; } } @@ -275,6 +298,11 @@ bool doIt (const string& parsetName) int main (int argc, const char* argv[]) { + INIT_LOGGER("BBSrun"); + +#ifdef EXPR_GRAPH + std::cout << "EXPR_GRAPH defined..." << std::endl; +#endif try { if (argc < 2) { cout << "Run as: BBSrun parset-name" << endl; diff --git a/CEP/BB/BBSKernel/src/Makefile.am b/CEP/BB/BBSKernel/src/Makefile.am index 6933becc0ec581e7d36d83d3548289a7031cb46e..1f59e1821762c006f0a0341288a017e00dafaccc 100644 --- a/CEP/BB/BBSKernel/src/Makefile.am +++ b/CEP/BB/BBSKernel/src/Makefile.am @@ -10,7 +10,8 @@ SolveProp.h \ StepProp.h \ StrategyProp.h \ ParmWriter.h \ -BBSTestLogger.h +BBSTestLogger.h \ +BBSKernelProcessControl.h pkginclude_MNSdir = $(pkgincludedir)/MNS pkginclude_MNS_HEADERS = \ @@ -77,6 +78,7 @@ StrategyProp.cc \ ParmData.cc \ ParmWriter.cc \ BBSTestLogger.cc \ +BBSKernelProcessControl.cc \ MNS/MeqBaseDFTPS.cc \ MNS/MeqBaseLinPS.cc \ MNS/MeqDFTPS.cc \ @@ -120,10 +122,14 @@ MNS/MeqStation.cc \ MNS/MeqStatUVW.cc \ MNS/MeqTabular.cc -bin_PROGRAMS = BBSrun +bin_PROGRAMS = BBSrun BBSKernel BBSrun_SOURCES = BBSrun.cc BBSrun_LDADD = libbbs.la BBSrun_DEPENDENCIES = libbbs.la $(LOFAR_DEPEND) +BBSKernel_SOURCES = BBSKernel.cc +BBSKernel_LDADD = libbbs.la +BBSKernel_DEPENDENCIES = libbbs.la $(LOFAR_DEPEND) + include $(top_srcdir)/Makefile.common