LCOV - code coverage report
Current view: top level - synthesis/ImagerObjects - SynthesisUtilMethods.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 3 3 100.0 %
Date: 2025-08-21 08:01:32 Functions: 3 4 75.0 %

          Line data    Source code
       1             : //# SynthesisUtilMethods.h: Imager functionality sits here; 
       2             : //# Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003
       3             : //# Associated Universities, Inc. Washington DC, USA.
       4             : //#
       5             : //# This library is free software; you can redistribute it and/or modify it
       6             : //# under the terms of the GNU Library General Public License as published by
       7             : //# the Free Software Foundation; either version 2 of the License, or (at your
       8             : //# option) any later version.
       9             : //#
      10             : //# This library is distributed in the hope that it will be useful, but WITHOUT
      11             : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      12             : //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
      13             : //# License for more details.
      14             : //#
      15             : //# You should have received a copy of the GNU Library General Public License
      16             : //# along with this library; if not, write to the Free Software Foundation,
      17             : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
      18             : //#
      19             : //# Correspondence concerning AIPS++ should be addressed as follows:
      20             : //#        Internet email: casa-feedback@nrao.edu.
      21             : //#        Postal address: AIPS++ Project Office
      22             : //#                        National Radio Astronomy Observatory
      23             : //#                        520 Edgemont Road
      24             : //#
      25             : //# $Id$
      26             : 
      27             : #ifndef SYNTHESIS_SYNTHESISUTILS_H
      28             : #define SYNTHESIS_SYNTHESISUTILS_H
      29             : 
      30             : #include <casacore/casa/aips.h>
      31             : #include <casacore/casa/OS/Timer.h>
      32             : #include <casacore/casa/Containers/Record.h>
      33             : #include <casacore/ms/MeasurementSets/MeasurementSet.h>
      34             : #include <casacore/casa/Arrays/IPosition.h>
      35             : #include <casacore/casa/Quanta/Quantum.h>
      36             : #include <casacore/casa/Quanta/QuantumHolder.h>
      37             : #include <casacore/measures/Measures/MDirection.h>
      38             : #include <casacore/casa/Quanta/MVAngle.h>
      39             : #include <casacore/measures/Measures/MFrequency.h>
      40             : #include <casacore/casa/Utilities/DataType.h>
      41             : #include <stdcasa/StdCasa/CasacSupport.h>
      42             : #include <casacore/coordinates/Coordinates/Projection.h>
      43             : #include <casacore/coordinates/Coordinates/DirectionCoordinate.h>
      44             : #include <casacore/coordinates/Coordinates/SpectralCoordinate.h>
      45             : #include <casacore/coordinates/Coordinates/CoordinateSystem.h>
      46             : #include <casacore/scimath/Mathematics/GaussianBeam.h>
      47             : 
      48             : #include <msvis/MSVis/VisibilityIterator.h>
      49             : #include <msvis/MSVis/VisibilityIterator2.h>
      50             : //#include <synthesis/ImagerObjects/TmpSwitch.h>
      51             : 
      52             : namespace casa { //# NAMESPACE CASA - BEGIN
      53             : 
      54             :   class SynthesisParams;
      55             :   class SynthesisParamsImage;
      56             :   class SynthesisParamsSelect;
      57             :   
      58             :   class SynthesisUtilMethods
      59             :   {
      60             :   public:
      61             :     enum VBSTATES {NOVALIDROWS=-1};
      62             :     // Default constructor
      63             : 
      64             :     SynthesisUtilMethods();
      65             :     ~SynthesisUtilMethods();
      66             :     
      67             :     // All functions here are stand-alone, self-contained methods.
      68             :     
      69             :     
      70             :     // Partitioning syntax for Selection parameters
      71             :     //
      72             :     // casacore::Input casacore::Record (example) :
      73             :     //  { 'ms0' : { 'msname':xxx1, 'spw':yyy } ,
      74             :     //     'ms1' : { 'msname':xxx2, 'spw':yyy } }
      75             :     //
      76             :     //  Output casacore::Record (example for partitioning on spw) : 
      77             :     //  { '0' : { 'ms0' : { 'msname':xxx1, 'spw':yyy1 } ,
      78             :     //              'ms1' : { 'msname':xxx2, 'spw':yyy1 }    }
      79             :     //    '1' : { 'ms0' : { 'msname':xxx1, 'spw':yyy2 } ,
      80             :     //               'ms1' : { 'msname':xxx2, 'spw':yyy2 }   }   }
      81             :     
      82             :     // casacore::Data partitioning rules for CONTINUUM imaging
      83             :     casacore::Record continuumDataPartition(casacore::Record &selpars, const casacore::Int npart);
      84             :     
      85             :     // casacore::Data partitioning rules for CUBE imaging
      86             :     //uniform contiguous partition in frequency step
      87             :     // Note that the spw selection will have a "-1"
      88             :     //if there is no overlap in the data selection provided and 
      89             :     // frequency range provided
      90             :     static casacore::Record cubeDataPartition(const casacore::Record &selpars, const casacore::Int npart, const casacore::Double freqBeg, const casacore::Double freqEnd, const casacore::MFrequency::Types eltype=casacore::MFrequency::LSRK);
      91             : 
      92             :     // freqBeg and freqEnd are frequency range  of the sub image cubes defined in frame set here
      93             :     // number of partions is obviously the length of freqBeg and freqEnd 
      94             :     // Use this for non uniform width of imge frequencies
      95             :     static casacore::Record cubeDataPartition(const casacore::Record& selpars, const casacore::Vector<casacore::Double>& freqBeg, const casacore::Vector<casacore::Double>& freqEnd, const casacore::MFrequency::Types frame=casacore::MFrequency::LSRK);
      96             :     
      97             :     //casacore::CoordinateSystem and number of channels of original cube is passed in 
      98             :     //Output record is the ms's and data selection for each part.
      99             :     // also the casacore::Vector of outCsys and outnChan are the  coordinatesystems
     100             :     // and nchannel of the sub cube for each part.
     101             :     // The image is divided  in n part along spectral channel
     102             :     //now if one of the sub cube has no match the  the spw selection will have a "-1"
     103             :     //for that part. The caller will have to deal with that for load balancing etc..
     104             :     //  Output casacore::Record (example for partitioning on spw) : 
     105             :     //  { '0' : { 'ms0' : { 'msname':xxx1, 'spw': '0:5~10' } ,
     106             :     //              'ms1' : { 'msname':xxx2, 'spw':'0:20~25' },   
     107             :     //                 'nchan': 6, 
     108             :     //                 'coordsys': { A record of the coordinatesystem of subcube 0}}
     109             :     //    '1' : { 'ms0' : { 'msname':xxx1, 'spw':'0:9~14' } ,
     110             :     //               'ms1' : { 'msname':xxx2, 'spw':'0:24~29' },
     111             :     //               'nchan':6, 
     112             :     //                'coordsys': { A record of the coordinatesystem of subcube 1} }
     113             :     //   }
     114             :     // the coordsys keyed record can be use in casacore::CoordinateSystem:;restore to reconstrucr
     115             :     // it is the same as the parameter outCsys
     116             :     static casacore::Record cubeDataImagePartition(const casacore::Record & selpars, const casacore::CoordinateSystem&
     117             :                                     incsys, const casacore::Int npart, const casacore::Int nchannel, 
     118             :                                     casacore::Vector<casacore::CoordinateSystem>& outCsys,
     119             :                                     casacore::Vector<casacore::Int>& outnChan);
     120             : 
     121             :     // Image cube partitioning rules for CUBE imaging
     122             :     casacore::Record cubeImagePartition(casacore::Record &impars, casacore::Int npart);
     123             :     
     124             :     // Validate the supplied VB.  This currently only checks for the
     125             :     // existence of at least one non-flagged row and returns the index
     126             :     // of the first non-flagged row found. Otherwise returns
     127             :     // SynthesisUtilMethods::NOVALIDROWS. This static method is called
     128             :     // in the vis-iter loops to block invalid VBs from flowing down
     129             :     // the pipes.
     130             :     static casacore::Int validate(const VisBuffer& vb);
     131             :     static casacore::Int validate(const vi::VisBuffer2& vb);
     132             : 
     133             : 
     134             :     static casacore::Int getOptimumSize(const casacore::Int npix);
     135             : 
     136             :     static casacore::Bool fitPsfBeam(const casacore::String& imagename="", const casacore::Int nterms=1, const casacore::Float psfcutoff=0.35);
     137             : 
     138             :     ///The following 4 functions are for mtmfs via cube.
     139             :     //convert from/to cube to/from Taylor term images
     140             :     static casacore::Bool taylorCoeffsToCube(const casacore::String& cubename="",const casacore::String& mtname="",  const casacore::Int nterms=1, const casacore::String& reffreq="");
     141             :     static casacore::Bool cubeToTaylorSum(const casacore::String& cubename="",const casacore::String& mtname="",  const casacore::Int nterms=1, const casacore::String& reffreq="", const casacore::Int imtype=0, const casacore::Float pblimit=0.2);
     142             :     ///convert from/to cube pb to reference freq pb on the images
     143             :     static casacore::Bool removeFreqDepPB(const casacore::String& cubename="", const casacore::String& mtname="", const casacore::Float pblimit=0.2);
     144             :     static casacore::Bool applyFreqDepPB(const casacore::String& cubename="", const casacore::String& mtname="", const casacore::Float pblimit=0.2);
     145             : 
     146             :     static void getResource(casacore::String label="", casacore::String fname="");
     147             :     
     148             :     // return comprehensible direction string from given MDirection object
     149             :     static casacore::String asComprehensibleDirectionString(casacore::MDirection const &direction);
     150             : 
     151             :     // Advise the chanselection needed for the frequency range or
     152             :     // give the frequency range for a give spwselection
     153             :     // You need to specify the field_id for which this calculation is 
     154             :     // being done. 
     155             :     // getFreqRange=true then the freqrange in the frame and spwselection  you choose is 
     156             :     // returned in freqStart and freqEnd.
     157             :     casacore::Bool adviseChanSel(casacore::Double& freqStart,
     158             :                                  casacore::Double& freqEnd, 
     159             :                                  const casacore::Double& freqStep,
     160             :                                  const casacore::MFrequency::Types& freqframe,
     161             :                                  casacore::Vector<casacore::Int>& spw,
     162             :                                  casacore::Vector<casacore::Int>& start,
     163             :                                  casacore::Vector<casacore::Int>& nchan,
     164             :                                  const casacore::String& msname="",
     165             :                                  const casacore::String& ephemtab="",
     166             :                                  const casacore::Int fieldid=0,
     167             :                                  const casacore::Bool getFreqRange=false, 
     168             :                                  const casacore::String spwselection="");
     169             : 
     170             : 
     171             : 
     172             :     static casacore::Record fillWeightRecord(const casacore::String& type="natural", 
     173             :               const casacore::String& rmode="norm",
     174             :               const casacore::Quantity& noise=casacore::Quantity(0.0, "Jy"), 
     175             :               const casacore::Double robust=0.0,
     176             :               const casacore::Quantity& fieldofview=casacore::Quantity(0.0, "arcsec"),
     177             :               const casacore::Int npixels=0, 
     178             :               const casacore::Bool multiField=false,
     179             :               const casacore::Bool useCubeBriggs=false,
     180             :               const casacore::String& filtertype=casacore::String("Gaussian"),
     181             :               const casacore::Quantity& filterbmaj=casacore::Quantity(0.0,"deg"),
     182             :               const casacore::Quantity& filterbmin=casacore::Quantity(0.0,"deg"),
     183             :               const casacore::Quantity& filterbpa=casacore::Quantity(0.0,"deg"), const casacore::Double& fracBW=0.0);
     184             :     static void getFromWeightRecord( casacore::String& type,casacore::String& rmode,
     185             :                                 casacore::Quantity& noise,casacore::Double& robust,
     186             :                                 casacore::Quantity& fieldofview, casacore::Int& npixels,
     187             :                                 casacore::Bool& multiField,casacore::Bool& useCubeBriggs,
     188             :                                  casacore::String& filtertype,
     189             :                                  casacore::Quantity& filterbmaj,
     190             :                                  casacore::Quantity& filterbmin,
     191             :                                  casacore::Quantity& filterbpa, casacore::Double& fracBW, const casacore::Record& inrec);
     192             :     
     193             : 
     194             :   protected:
     195             :     static casacore::String mergeSpwSel(const casacore::Vector<casacore::Int>& fspw, const casacore::Vector<casacore::Int>& fstart, const casacore::Vector<casacore::Int>& fnchan, const casacore::Matrix<casacore::Int>& spwsel);
     196             : 
     197             :     static casacore::Vector<casacore::uInt> primeFactors(casacore::uInt n, casacore::Bool douniq=true);
     198             :     
     199             :   private:
     200             :     static casacore::String makeResourceFilename(int pid);
     201             : 
     202             :     static casacore::String g_hostname;
     203             :     static casacore::String g_startTimestamp;
     204             :     static const casacore::String g_enableOptMemProfile;
     205             : 
     206             :     static casacore::Int parseProcStatusLine(const std::string &str);    
     207             :     
     208             :   };
     209             : 
     210             :   class SynthesisParams
     211             :   {
     212             :   public:
     213         187 :     SynthesisParams(){};
     214         187 :     virtual ~SynthesisParams(){};
     215             :     ///As there is no state to copy
     216          34 :     virtual SynthesisParams& operator= (const SynthesisParams& /*other*/){ return *this;};
     217             :     virtual void fromRecord(const casacore::Record &inrec)=0;
     218             :     virtual void setDefaults()=0;
     219             :     virtual casacore::String verify()const =0 ;
     220             :     virtual casacore::Record toRecord() const =0;
     221             :   protected:
     222             :     // All return strings are error messages. Null if valid.
     223             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::String& val) const ;
     224             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Int& val) const ;
     225             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Float& val) const;
     226             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Bool& val) const ;
     227             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Vector<casacore::Int>& val) const;
     228             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Vector<casacore::Float>& val) const ;
     229             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Vector<casacore::String>& val) const ;
     230             :     casacore::String stringToQuantity(casacore::String instr, casacore::Quantity& qa) const;
     231             :     casacore::String stringToMDirection(casacore::String instr, casacore::MDirection& md) const ;
     232             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::Quantity& val) const;
     233             :     casacore::String readVal(const casacore::Record &rec, casacore::String id, casacore::MDirection& val) const ;
     234             :     // Others..
     235             :     casacore::String MDirectionToString(casacore::MDirection val) const;
     236             :     casacore::String QuantityToString(casacore::Quantity val) const;
     237             :     casacore::String recordQMToString(const casacore::Record &rec) const ;
     238             :   };
     239             : 
     240             :   class SynthesisParamsSelect : public SynthesisParams
     241             : {
     242             : public:
     243             : 
     244             :   SynthesisParamsSelect();
     245             :   SynthesisParamsSelect(const SynthesisParamsSelect& other);
     246             :   ~SynthesisParamsSelect();
     247             : 
     248             :   //copy semantics
     249             :   virtual SynthesisParamsSelect& operator=(const SynthesisParamsSelect& other);
     250             :   void fromRecord(const casacore::Record &inrec);
     251             :   void setDefaults();
     252             :   casacore::String verify() const;
     253             :   casacore::Record toRecord() const;
     254             : 
     255             :   casacore::String msname, spw, freqbeg, freqend;
     256             :   casacore::MFrequency::Types freqframe;
     257             :   casacore::String field, antenna, timestr, scan, obs, state, uvdist,taql,intent;
     258             :   casacore::Bool usescratch,readonly,incrmodel;
     259             : 
     260             :   casacore::String datacolumn;
     261             : 
     262             : };
     263             : 
     264             : 
     265             :  
     266             :   class SynthesisParamsImage: public SynthesisParams {
     267             :   public:
     268             : 
     269             :     SynthesisParamsImage();
     270             :     ~SynthesisParamsImage();
     271             : 
     272             :     void fromRecord(const casacore::Record &inrec) override;
     273             :     void fromRecord(const casacore::Record &inrec, const casacore::Bool isSingledish); 
     274             :     void setDefaults();
     275             : 
     276             :     //need to explicitly declare an = operator if private variables contains arrays
     277             :     SynthesisParamsImage& operator=(const SynthesisParamsImage& other);
     278             :   
     279             :     casacore::String verify() const override;
     280             :     casacore::String verify(const casacore::Bool isSingledish) const;
     281             :     casacore::Record toRecord()const ;
     282             : 
     283             :   
     284             :   // Generate casacore::Coordinate System 
     285             :   casacore::CoordinateSystem buildCoordinateSystem(ROVisibilityIterator* rvi);
     286             : 
     287             :     casacore::CoordinateSystem buildCoordinateSystem(vi::VisibilityIterator2& vi2,
     288             :                const std::map<casacore::Int, std::map<casacore::Int,
     289             :                casacore::Vector<casacore::Int> > >& chansel,
     290             :                casacore::Block<const casacore::MeasurementSet *> mss);
     291             : 
     292             :  
     293             :     casacore::CoordinateSystem buildCoordinateSystemCore(casacore::MeasurementSet& msobj, 
     294             :                casacore::Vector<casacore::Int> spwids, casacore::Int fld, 
     295             :                casacore::Double freqmin, casacore::Double freqmax, 
     296             :                casacore::Double datafstart, casacore::Double datafend);
     297             : 
     298             :     casacore::Vector<casacore::Int> decideNPolPlanes(const casacore::String& stokes) const;
     299             :     casacore::IPosition shp() const;
     300             :     casacore::Bool getImFreq(casacore::Vector<casacore::Double>& ChanFreq, casacore::Vector<casacore::Double>& ChanWidth, 
     301             :                casacore::Double& refPix, casacore::String& specmode,
     302             :                const casacore::MEpoch& obsEpoch, const casacore::MPosition& obsPosition,
     303             :                const casacore::Vector<casacore::Double>& dataChanFreqs,
     304             :                const casacore::Vector<casacore::Double>& dataFreqRes,
     305             :                const casacore::MFrequency::Types& dataFrame,
     306             :                const casacore::Quantity& qrestfreq, 
     307             :                const casacore::Double& freqmin, const casacore::Double& freqmax,
     308             :                const casacore::MDirection& phaseCenter);
     309             :     casacore::Double getCubeImageStartFreq();
     310             :     casacore::String findSpecMode(const casacore::String& mode) const;
     311             :     casacore::String MDopToVelString(casacore::Record &rec);
     312             :     casacore::Record getcsys() const;
     313             :     // check consistency of image parameters when csys record exists and update 
     314             :     // accordingly based on csys record 
     315             :     casacore::Record updateParams(const casacore::Record &impar);
     316             :     //get the moving source direction in frame requested
     317             :     casacore::MDirection getMovingSourceDir(const casacore::MeasurementSet& ms,
     318             :                const casacore::MEpoch& refEp, const casacore::MPosition& refpos,
     319             :                const casacore::MDirection::Types outframe);
     320             :   
     321             :     // Sky coordinates
     322             :     casacore::String imageName, stokes;
     323             :     casacore::Vector<casacore::String> startModel;
     324             :     casacore::Vector<casacore::Int> imsize;
     325             :     casacore::Vector<casacore::Quantity> cellsize;
     326             :     casacore::Projection projection;
     327             :     casacore::Bool useNCP;
     328             :     casacore::MDirection phaseCenter;
     329             :     casacore::Int phaseCenterFieldId;
     330             :     casacore::MPosition obslocation;
     331             :   
     332             :     // Stokes info
     333             :     casacore::Bool pseudoi;
     334             : 
     335             :     // Spectral coordinates ( TT : Add other params here  )
     336             :     casacore::Int nchan, nTaylorTerms, chanStart, chanStep;
     337             :     casacore::Quantity freqStart, freqStep, refFreq, velStart, velStep;
     338             :     casacore::MFrequency::Types freqFrame;
     339             :     casacore::MFrequency mFreqStart, mFreqStep;
     340             :     casacore::MRadialVelocity mVelStart, mVelStep;
     341             :     casacore::Vector<casacore::Quantity> restFreq;
     342             :     casacore::String start, step, frame, veltype, mode, reffreq, sysvel, sysvelframe;
     343             :     casacore::Quantity sysvelvalue;
     344             :   
     345             :     // private variable to store ref frame defined in casacore::Quantity or casacore::Measure 
     346             :     // in start or step parameters and veltype from measure (e.g. casacore::MDoppler)
     347             :     casacore::String qmframe, mveltype;
     348             :     casacore::String tststr;
     349             :     // for holding quantity or measure records
     350             :     casacore::Record startRecord, stepRecord, reffreqRecord, sysvelRecord, restfreqRecord;
     351             :     // optional coordsys record
     352             :     casacore::Record csysRecord, csys;
     353             :     casacore::Vector<casacore::Int> imshape;
     354             : 
     355             :     //freqframe coversion?
     356             :     casacore::Bool freqFrameValid;
     357             : 
     358             :     casacore::Bool overwrite;
     359             : 
     360             :     casacore::String deconvolver;
     361             :     //moving source
     362             :     // Moving phase center ? 
     363             :     casacore::Quantity distance;
     364             :     casacore::MDirection trackDir;
     365             :     casacore::Bool trackSource;
     366             :     casacore::String movingSource;
     367             :   };
     368             : 
     369             : 
     370             :   class SynthesisParamsGrid: public SynthesisParams
     371             : {
     372             : public:
     373             : 
     374             :   SynthesisParamsGrid();
     375             :   ~SynthesisParamsGrid();
     376             : 
     377             :   void fromRecord(const casacore::Record &inrec);
     378             :   void setDefaults();
     379             :   casacore::String verify() const;
     380             :   casacore::Record toRecord() const;
     381             : 
     382             :   casacore::String imageName;
     383             : 
     384             :   // FTMachine setup
     385             :   casacore::String gridder, ftmachine, convFunc, vpTable;
     386             :   casacore::Int wprojplanes;
     387             :   casacore::Bool useDoublePrec, useAutoCorr; 
     388             :   casacore::Float padding;
     389             : 
     390             :   // Facets for gridding.
     391             :   casacore::Int facets;
     392             : 
     393             :   // casacore::Cube chunks for gridding
     394             :   casacore::Int chanchunks;
     395             : 
     396             :   // Spectral axis interpolation
     397             :   casacore::String interpolation;
     398             : 
     399             :   // Moving phase center ? 
     400             :   casacore::Quantity distance;
     401             :   casacore::MDirection trackDir;
     402             :   casacore::Bool trackSource;
     403             :   casacore::String movingSource;
     404             :   
     405             :   // For wb-aprojection ftm.
     406             :   casacore::Bool aTermOn, psTermOn,mTermOn,wbAWP,usePointing, doPBCorr, conjBeams;
     407             :   casacore::String cfCache;
     408             :   casacore::Float computePAStep, rotatePAStep;
     409             : 
     410             :   // For single-dish imaging
     411             :   casacore::String pointingDirCol;
     412             :   casacore::String convertFirst;
     413             :   casacore::Float skyPosThreshold;
     414             :   casacore::Vector<casacore::Float> pointingOffsetSigDev;
     415             :   /* std::vector<float> pointingOffsetSigDev; */
     416             :   casacore::Int convSupport;
     417             :   casacore::Quantity truncateSize;
     418             :   casacore::Quantity gwidth;
     419             :   casacore::Quantity jwidth;
     420             :   casacore::Float minWeight;
     421             :   casacore::Bool clipMinMax;
     422             : 
     423             :   // Mapper Type.
     424             :   casacore::String mType;
     425             : 
     426             : };
     427             : 
     428             : 
     429             :   class SynthesisParamsDeconv: public SynthesisParams
     430             : {
     431             : public:
     432             : 
     433             :   SynthesisParamsDeconv();
     434             :   ~SynthesisParamsDeconv();
     435             : 
     436             :   void fromRecord(const casacore::Record &inrec);
     437             :   void setDefaults();
     438             :   casacore::String verify() const;
     439             :   casacore::Record toRecord() const;
     440             : 
     441             :   casacore::String imageName, algorithm;
     442             :   casacore::Vector<casacore::String> startModel;
     443             :   casacore::Int deconvolverId; // maybe remove ? It's only to tag summary info.
     444             :   casacore::Int nTaylorTerms; 
     445             :   casacore::Vector<casacore::Float> scales;
     446             :   casacore::Float scalebias;
     447             :   casacore::String maskString;
     448             :   casacore::String maskType;
     449             :   casacore::Vector<casacore::String> maskList;
     450             :   casacore::String autoMaskAlgorithm;
     451             :   casacore::Float pbMask;
     452             :   casacore::String maskThreshold;
     453             :   casacore::String maskResolution;
     454             :   casacore::Float fracOfPeak;
     455             :   casacore::Float maskResByBeam;
     456             :   casacore::Float sidelobeThreshold;
     457             :   casacore::Float noiseThreshold;
     458             :   casacore::Float lowNoiseThreshold;
     459             :   casacore::Float negativeThreshold;
     460             :   casacore::Float smoothFactor;
     461             :   casacore::Float minBeamFrac;
     462             :   casacore::Float cutThreshold;
     463             :   casacore::Int growIterations;
     464             :   casacore::Bool doGrowPrune;
     465             :   casacore::Float minPercentChange;
     466             :   casacore::Bool verbose;
     467             :   casacore::Bool fastnoise;
     468             :   casacore::Float nsigma;
     469             :   int nMask;
     470             :   bool autoAdjust;
     471             :   casacore::Float fusedThreshold;
     472             :   casacore::String specmode;
     473             :   casacore::Int largestscale;
     474             :   // task deconvolve needs to tell siimagestore that we don't need to check for the sumwt image
     475             :   casacore::Bool noRequireSumwt = casacore::False;
     476             : 
     477             :   // return dictionary size control
     478             :   casacore::Bool fullsummary;
     479             :  
     480             :   casacore::Bool interactive;
     481             : 
     482             :   casacore::GaussianBeam restoringbeam;
     483             :   casacore::String usebeam;
     484             : 
     485             :   };
     486             : 
     487             : 
     488             : } //# NAMESPACE CASA - END
     489             : 
     490             : #endif

Generated by: LCOV version 1.16