#ifndef SYNTHESIS_CALIBRATER_H
#define SYNTHESIS_CALIBRATER_H
#include <casa/OS/Timer.h>
#include <casa/Containers/Record.h>
#include <ms/MeasurementSets/MeasurementSet.h>
#include <measures/Measures/MRadialVelocity.h>
#include <synthesis/MeasurementEquations/VisEquation.h>
#include <synthesis/MeasurementComponents/VisCal.h>
#include <synthesis/MeasurementComponents/SolvableVisCal.h>
#include <synthesis/MeasurementComponents/VisCalGlobals.h>
#include <casa/Logging/LogIO.h>
#include <casa/Logging/LogSink.h>
#include <ms/MeasurementSets/MSHistoryHandler.h>
#include <ms/MSSel/MSSelection.h>
#include <msvis/MSVis/VisibilityProcessing.h>
#include <msvis/MSVis/ViFrequencySelection.h>
#include <msvis/MSVis/SimpleSimVi2.h>
Calibrater(casacore::String msname);
Calibrater(const vi::SimpleSimVi2Parameters& ssvp);
static Calibrater* factory(casacore::Bool old=true);
static Calibrater* factory(casacore::String msname,casacore::Bool old=true);
virtual void selectvis(const casacore::String& time="",
const casacore::String& spw="",
const casacore::String& scan="",
const casacore::String& field="",
const casacore::String& intent="",
const casacore::String& obsIDs="",
const casacore::String& baseline="",
const casacore::String& uvrange="",
const casacore::String& chanmode="none",
const casacore::Int& nchan=1,
const casacore::Int& start=0,
const casacore::Int& step=1,
const casacore::MRadialVelocity& mStart=casacore::MRadialVelocity(),
const casacore::MRadialVelocity& mStep=casacore::MRadialVelocity(),
const casacore::String& msSelect="");