//# RFAFlagExaminer.cc: this defines RFAFlagExaminer
//# Copyright (C) 2000,2001,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//# $Id$
#include <flagging/Flagging/RFAFlagExaminer.h>
#include <casa/Exceptions/Error.h>
#include <casa/Arrays/ArrayMath.h>
#include <casa/Arrays/ArrayLogical.h>
#include <casa/Arrays/MaskedArray.h>
#include <casa/Arrays/MaskArrMath.h>
#include <casa/Quanta/Quantum.h>
#include <casa/Quanta/MVTime.h>
#include <casa/Logging/LogIO.h>
#include <msvis/MSVis/VisibilityIterator.h>
#include <msvis/MSVis/VisBuffer.h>
#include <casa/stdio.h>
#include <map>
#include <sstream>
#include <cassert>
namespace casa { //# NAMESPACE CASA - BEGIN
const casacore::Bool dbg3 = false;
// -----------------------------------------------------------------------
// RFAFlagExaminer constructor
// -----------------------------------------------------------------------
RFAFlagExaminer::RFAFlagExaminer ( RFChunkStats &ch,const casacore::RecordInterface &parm ) :
RFASelector(ch, parm)//,RFDataMapper(parm.asArrayString(RF_EXPR),parm.asString(RF_COLUMN))
{
if(dbg3) std::cout << __FILE__ << ":" << __func__ << "():" << __LINE__ << std::endl;
//desc_str = casacore::String("flagexaminer");
if(dbg3) std::cout<<"FlagExaminer constructor "<<std::endl;
totalflags = accumTotalFlags = 0;
totalcount = accumTotalCount = 0;
totalrowflags = accumTotalRowFlags = 0;
totalrowcount = accumTotalRowCount = 0;
//parseParm(parm);
os = casacore::LogIO(casacore::LogOrigin("RFAFlagExaminer", "RFAFlagExaminer", WHERE));
accumflags.clear();
accumtotal.clear();
// Handle in-row selections, the following is a
// copy-paste from RFASelector2
char s[256];
// parse input arguments: channels
if( parseRange(sel_chan,parm,RF_CHANS))
{
casacore::String sch;
for( casacore::uInt i=0; i<sel_chan.ncolumn(); i++)
{
sprintf(s,"%d:%d",sel_chan(0,i),sel_chan(1,i));
addString(sch,s,",");
}
addString(desc_str, casacore::String(RF_CHANS) + "=" +sch);
sel_chan(sel_chan>=0) += -(casacore::Int)indexingBase();
}
// parse input arguments: correlations
if( fieldType(parm,RF_CORR,casacore::TpString,casacore::TpArrayString))
{
casacore::String ss;
casacore::Vector<casacore::String> scorr( parm.asArrayString(RF_CORR)) ;
sel_corr.resize( scorr.nelements()) ;