From b46db669c535531080ab32b13f2a637bd4d26ec1 Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <dijkema@astron.nl> Date: Fri, 13 Oct 2017 10:17:41 +0000 Subject: [PATCH] Task #11410: merge task branch, DPPP ApplyCal can now handle RotationMeasure:*:phase_center --- CEP/DP3/DPPP/src/OneApplyCal.cc | 40 +++++++++++++++++++++----------- CEP/DP3/DPPP/test/tApplyCal2.run | 34 +++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/CEP/DP3/DPPP/src/OneApplyCal.cc b/CEP/DP3/DPPP/src/OneApplyCal.cc index c602eece041..de6fe004cee 100644 --- a/CEP/DP3/DPPP/src/OneApplyCal.cc +++ b/CEP/DP3/DPPP/src/OneApplyCal.cc @@ -488,21 +488,34 @@ namespace LOFAR { } else { // Use ParmDB for (uint parmExprNum = 0; parmExprNum<itsParmExprs.size();++parmExprNum) { // parmMap contains parameter values for all antennas - parmMap = itsParmDB->getValuesMap( itsParmExprs[parmExprNum] + "*", + parmMap = itsParmDB->getValuesMap( itsParmExprs[parmExprNum] + "{:phase_center,}*", minFreq, maxFreq, freqInterval, bufStartTime-0.5*itsTimeInterval, itsLastTime, itsTimeInterval, true); + string parmExpr = itsParmExprs[parmExprNum]; + // Resolve {Common,}Bla to CommonBla or Bla if (!parmMap.empty() && - itsParmExprs[parmExprNum].find("{") != std::string::npos) { + parmExpr.find("{Common,}") != string::npos) { + // Take the name of the first parm, e.g. Bla:CS001, and remove the antenna name uint colonPos = (parmMap.begin()->first).find(":"); - itsParmExprs[parmExprNum] = (parmMap.begin()->first).substr(0, colonPos); + parmExpr = (parmMap.begin()->first).substr(0, colonPos); + } + + string name_postfix = ""; + // Remove :phase_center postfix + if (!parmMap.empty()) { + // Take the name of the first parm, e.g. Bla:CS001, and remove the antenna name + // If necessary, append :phase_center + if ((parmMap.begin()->first).find(":phase_center") != string::npos) { + name_postfix = ":phase_center"; + } } for (uint ant = 0; ant < numAnts; ++ant) { - parmIt = parmMap.find( - itsParmExprs[parmExprNum] + ":" + info().antennaNames()[ant]); + parmIt = parmMap.find(parmExpr + ":" + string(info().antennaNames()[ant]) + + name_postfix); if (parmIt != parmMap.end()) { parmvalues[parmExprNum][ant].swap(parmIt->second); @@ -511,24 +524,23 @@ namespace LOFAR { Array<double> defValues; double defValue; - if (itsParmDB->getDefValues(itsParmExprs[parmExprNum] + ":" + - info().antennaNames()[ant]).size()==1) { // Default for antenna - itsParmDB->getDefValues(itsParmExprs[parmExprNum] + ":" + - info().antennaNames()[ant]).get(0,defValues); + if (itsParmDB->getDefValues(parmExpr + ":" + + string(info().antennaNames()[ant]) + name_postfix).size()==1) { // Default for antenna + itsParmDB->getDefValues(string(itsParmExprs[parmExprNum]) + ":" + + string(info().antennaNames()[ant]) + name_postfix).get(0,defValues); ASSERT(defValues.size()==1); defValue=defValues.data()[0]; } - else if (itsParmDB->getDefValues(itsParmExprs[parmExprNum]).size() - == 1) { //Default value - itsParmDB->getDefValues(itsParmExprs[parmExprNum]).get(0,defValues); + else if (itsParmDB->getDefValues(parmExpr).size() == 1) { //Default value + itsParmDB->getDefValues(parmExpr).get(0,defValues); ASSERT(defValues.size()==1); defValue=defValues.data()[0]; - } else if (itsParmExprs[parmExprNum].substr(0,5)=="Gain:") { + } else if (parmExpr.substr(0,5)=="Gain:") { defValue=0.; } else { THROW (Exception, "No parameter value found for "+ - itsParmExprs[parmExprNum]+":"+info().antennaNames()[ant]); + parmExpr + ":" + string(info().antennaNames()[ant]) + name_postfix); } parmvalues[parmExprNum][ant].resize(tfDomainSize); diff --git a/CEP/DP3/DPPP/test/tApplyCal2.run b/CEP/DP3/DPPP/test/tApplyCal2.run index 72094bc40ed..6505b604075 100755 --- a/CEP/DP3/DPPP/test/tApplyCal2.run +++ b/CEP/DP3/DPPP/test/tApplyCal2.run @@ -109,3 +109,37 @@ eval $cmd $taqlexe 'select from tNDPPP-generic.MS where not(all(DATA~=9*DATA3))' > taql.out diff taql.out taql.ref || exit 1 +echo; echo "Testing RotationAngle:*:phase_center values" +rm -rf tApplyCal.parmdb +parmdbm <<EOL +open table="tApplyCal.parmdb" +add RotationMeasure:CS001HBA0:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS002HBA0:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS002HBA1:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS004HBA1:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS106HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS208HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS305HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS307HBA:phase_center values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +EOL +cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=rotationmeasure showcounts=false' +echo $cmd +eval $cmd + +echo; echo "Testing RotationAngle:* values" +rm -rf tApplyCal.parmdb +parmdbm <<EOL +open table="tApplyCal.parmdb" +add RotationMeasure:CS001HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS002HBA0 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS002HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:CS004HBA1 values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS106HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS208HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS305HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +add RotationMeasure:RS307HBA values=[3.,3.,3.,3.], domain=[10e6, 200e6, 4472025735, 4972025795], shape=[2,2], shape=[2,2] +EOL +cmd='NDPPP msin=tNDPPP-generic.MS msout=. msout.datacolumn=DATA3 steps=[applycal] applycal.parmdb=tApplyCal.parmdb applycal.correction=rotationmeasure showcounts=false' +echo $cmd +eval $cmd + -- GitLab