| [872] | 1 | //
 | 
|---|
 | 2 | // C++ Interface: STMathWrapper
 | 
|---|
 | 3 | //
 | 
|---|
 | 4 | // Description:
 | 
|---|
 | 5 | //
 | 
|---|
 | 6 | //
 | 
|---|
 | 7 | // Author: Malte Marquarding <Malte.Marquarding@csiro.au>, (C) 2006
 | 
|---|
 | 8 | //
 | 
|---|
 | 9 | // Copyright: See COPYING file that comes with this distribution
 | 
|---|
 | 10 | //
 | 
|---|
 | 11 | //
 | 
|---|
 | 12 | #ifndef ASAPSTMATHWRAPPER_H
 | 
|---|
 | 13 | #define ASAPSTMATHWRAPPER_H
 | 
|---|
| [49] | 14 | 
 | 
|---|
 | 15 | #include <vector>
 | 
|---|
 | 16 | #include <string>
 | 
|---|
 | 17 | 
 | 
|---|
| [872] | 18 | #include <casa/Utilities/CountedPtr.h>
 | 
|---|
| [49] | 19 | 
 | 
|---|
| [872] | 20 | #include "STMath.h"
 | 
|---|
 | 21 | #include "Scantable.h"
 | 
|---|
 | 22 | #include "ScantableWrapper.h"
 | 
|---|
| [49] | 23 | 
 | 
|---|
| [83] | 24 | namespace asap {
 | 
|---|
| [49] | 25 | 
 | 
|---|
| [872] | 26 | /**
 | 
|---|
 | 27 | Wrapper class to handle ScantableWrapper
 | 
|---|
| [49] | 28 | 
 | 
|---|
| [872] | 29 | @author Malte Marquarding
 | 
|---|
 | 30 | */
 | 
|---|
 | 31 | class STMathWrapper : public STMath {
 | 
|---|
 | 32 | public:
 | 
|---|
 | 33 |   STMathWrapper() {;}
 | 
|---|
| [1353] | 34 |   explicit STMathWrapper(bool insitu) : STMath(insitu) {;}
 | 
|---|
| [716] | 35 | 
 | 
|---|
| [872] | 36 |   virtual ~STMathWrapper() {;}
 | 
|---|
| [49] | 37 | 
 | 
|---|
| [872] | 38 |   ScantableWrapper
 | 
|---|
 | 39 |     average( const std::vector<ScantableWrapper>& in,
 | 
|---|
 | 40 |              const std::vector<bool>& mask,
 | 
|---|
 | 41 |              const std::string& weight,
 | 
|---|
| [977] | 42 |              const std::string& avmode )
 | 
|---|
| [872] | 43 |   {
 | 
|---|
 | 44 |     std::vector<casa::CountedPtr<Scantable> > sts;
 | 
|---|
| [996] | 45 |     for (unsigned int i=0; i<in.size(); ++i) sts.push_back(in[i].getCP());
 | 
|---|
| [978] | 46 |     return ScantableWrapper(STMath::average(sts, mask, weight, avmode));
 | 
|---|
| [872] | 47 |   }
 | 
|---|
| [1069] | 48 | 
 | 
|---|
| [940] | 49 |   ScantableWrapper
 | 
|---|
| [1069] | 50 |     averageChannel( const ScantableWrapper& in,
 | 
|---|
| [1078] | 51 |                     const std::string& mode = "MEDIAN",
 | 
|---|
 | 52 |                     const std::string& avmode = "NONE")
 | 
|---|
| [1069] | 53 |   {
 | 
|---|
| [1078] | 54 |     return ScantableWrapper(STMath::averageChannel(in.getCP(), mode, avmode));
 | 
|---|
| [1069] | 55 |   }
 | 
|---|
 | 56 | 
 | 
|---|
 | 57 |   ScantableWrapper
 | 
|---|
| [940] | 58 |     averagePolarisations( const ScantableWrapper& in,
 | 
|---|
 | 59 |                           const std::vector<bool>& mask,
 | 
|---|
 | 60 |                           const std::string& weight)
 | 
|---|
 | 61 |   { return ScantableWrapper(STMath::averagePolarisations(in.getCP(),mask, weight));}
 | 
|---|
| [107] | 62 | 
 | 
|---|
| [872] | 63 |   ScantableWrapper
 | 
|---|
| [1145] | 64 |     averageBeams( const ScantableWrapper& in,
 | 
|---|
 | 65 |                   const std::vector<bool>& mask,
 | 
|---|
 | 66 |                   const std::string& weight)
 | 
|---|
 | 67 | 
 | 
|---|
 | 68 |   { return ScantableWrapper(STMath::averageBeams(in.getCP(),mask, weight));}
 | 
|---|
 | 69 | 
 | 
|---|
 | 70 |   ScantableWrapper
 | 
|---|
| [872] | 71 |     unaryOperate( const ScantableWrapper& in, float val,
 | 
|---|
 | 72 |                   const std::string& mode, bool tsys=false )
 | 
|---|
 | 73 |   { return ScantableWrapper(STMath::unaryOperate(in.getCP(), val, mode, tsys)); }
 | 
|---|
| [49] | 74 | 
 | 
|---|
| [1308] | 75 |   ScantableWrapper binaryOperate( const ScantableWrapper& left,
 | 
|---|
 | 76 |                                   const ScantableWrapper& right,
 | 
|---|
 | 77 |                                   const std::string& mode)
 | 
|---|
 | 78 |   { return ScantableWrapper( STMath::binaryOperate( left.getCP(), right.getCP(),
 | 
|---|
 | 79 |                                                     mode ) ); }
 | 
|---|
 | 80 | 
 | 
|---|
 | 81 | 
 | 
|---|
| [1066] | 82 |   ScantableWrapper autoQuotient( const ScantableWrapper& in,
 | 
|---|
 | 83 |                                  const std::string& mode = "NEAREST",
 | 
|---|
 | 84 |                                  bool preserve = true )
 | 
|---|
 | 85 |   { return ScantableWrapper(STMath::autoQuotient(in.getCP(), mode, preserve)); }
 | 
|---|
 | 86 | 
 | 
|---|
 | 87 |   ScantableWrapper quotient( const ScantableWrapper& on,
 | 
|---|
 | 88 |                              const ScantableWrapper& off,
 | 
|---|
| [872] | 89 |                              bool preserve = true )
 | 
|---|
| [1066] | 90 |   { return ScantableWrapper( STMath::quotient( on.getCP(), off.getCP(),
 | 
|---|
 | 91 |                                                preserve ) ); }
 | 
|---|
| [151] | 92 | 
 | 
|---|
| [1388] | 93 |   ScantableWrapper dototalpower( const ScantableWrapper& calon,
 | 
|---|
 | 94 |                              const ScantableWrapper& caloff, casa::Float tcal= 0 )
 | 
|---|
 | 95 |   { return ScantableWrapper( STMath::dototalpower( calon.getCP(), caloff.getCP(), tcal ) ); }
 | 
|---|
 | 96 | 
 | 
|---|
 | 97 |   ScantableWrapper dosigref( const ScantableWrapper& sig,
 | 
|---|
 | 98 |                              const ScantableWrapper& ref,
 | 
|---|
 | 99 |                              int smoothref = 0, casa::Float tsysv=0.0, casa::Float tau=0.0)
 | 
|---|
 | 100 |   { return ScantableWrapper( STMath::dosigref( sig.getCP(), ref.getCP(), smoothref, tsysv, tau ) ); }
 | 
|---|
 | 101 | 
 | 
|---|
 | 102 |   ScantableWrapper donod( const ScantableWrapper& s,
 | 
|---|
 | 103 |                           const std::vector<int>& scans,
 | 
|---|
 | 104 |                           int smoothref = 0,
 | 
|---|
 | 105 |                           casa::Float tsysv=0.0, casa::Float tau=0.0, casa::Float tcal=0.0 )
 | 
|---|
 | 106 |   { return ScantableWrapper( STMath::donod( s.getCP(), scans, smoothref, tsysv, tau, tcal ) ); }
 | 
|---|
 | 107 | 
 | 
|---|
 | 108 |   ScantableWrapper dofs( const ScantableWrapper& s,
 | 
|---|
 | 109 |                          const std::vector<int>& scans,
 | 
|---|
 | 110 |                          int smoothref = 0,
 | 
|---|
 | 111 |                          casa::Float tsysv=0.0, casa::Float tau=0.0, casa::Float tcal=0.0 )
 | 
|---|
 | 112 |   { return ScantableWrapper( STMath::dofs( s.getCP(), scans, smoothref, tsysv, tau, tcal ) ); }
 | 
|---|
 | 113 | 
 | 
|---|
| [872] | 114 |   ScantableWrapper
 | 
|---|
 | 115 |     freqSwitch( const ScantableWrapper& in )
 | 
|---|
 | 116 |   { return ScantableWrapper(STMath::freqSwitch(in.getCP())); }
 | 
|---|
| [300] | 117 | 
 | 
|---|
| [872] | 118 |   std::vector<float> statistic(const ScantableWrapper& in,
 | 
|---|
 | 119 |                                const std::vector<bool>& mask,
 | 
|---|
 | 120 |                                const std::string& which)
 | 
|---|
 | 121 |   { return STMath::statistic(in.getCP(), mask, which); }
 | 
|---|
| [222] | 122 | 
 | 
|---|
| [872] | 123 |   ScantableWrapper bin( const ScantableWrapper& in, int width=5)
 | 
|---|
 | 124 |   { return ScantableWrapper(STMath::bin(in.getCP(), width)); }
 | 
|---|
| [228] | 125 | 
 | 
|---|
| [872] | 126 |   ScantableWrapper
 | 
|---|
 | 127 |     resample(const ScantableWrapper& in,
 | 
|---|
 | 128 |              const std::string& method, float width)
 | 
|---|
 | 129 |   { return ScantableWrapper(STMath::resample(in.getCP(), method, width)); }
 | 
|---|
| [262] | 130 | 
 | 
|---|
| [872] | 131 |   ScantableWrapper
 | 
|---|
 | 132 |     smooth(const ScantableWrapper& in, const std::string& kernel, float width)
 | 
|---|
 | 133 |   { return ScantableWrapper(STMath::smooth(in.getCP(), kernel, width)); }
 | 
|---|
| [457] | 134 | 
 | 
|---|
| [872] | 135 |   ScantableWrapper
 | 
|---|
 | 136 |     gainElevation(const ScantableWrapper& in,
 | 
|---|
 | 137 |                   const std::vector<float>& coeff,
 | 
|---|
 | 138 |                   const std::string& filename,
 | 
|---|
| [996] | 139 |                   const std::string& method)
 | 
|---|
| [503] | 140 | 
 | 
|---|
| [872] | 141 |   { return
 | 
|---|
 | 142 |       ScantableWrapper(STMath::gainElevation(in.getCP(), coeff, filename, method)); }
 | 
|---|
| [235] | 143 | 
 | 
|---|
| [872] | 144 |   ScantableWrapper
 | 
|---|
 | 145 |     convertFlux(const ScantableWrapper& in, float d,
 | 
|---|
 | 146 |                 float etaap, float jyperk)
 | 
|---|
 | 147 |   { return ScantableWrapper(STMath::convertFlux(in.getCP(), d, etaap, jyperk)); }
 | 
|---|
| [49] | 148 | 
 | 
|---|
| [872] | 149 |   ScantableWrapper opacity(const ScantableWrapper& in,
 | 
|---|
 | 150 |                                       float tau)
 | 
|---|
 | 151 |   { return ScantableWrapper(STMath::opacity(in.getCP(), tau)); }
 | 
|---|
| [49] | 152 | 
 | 
|---|
| [872] | 153 |   ScantableWrapper
 | 
|---|
 | 154 |     merge(const std::vector<ScantableWrapper >& in)
 | 
|---|
| [716] | 155 | 
 | 
|---|
| [872] | 156 |   {
 | 
|---|
 | 157 |     std::vector<casa::CountedPtr<Scantable> > sts;
 | 
|---|
| [996] | 158 |     for (unsigned int i=0; i<in.size(); ++i) sts.push_back(in[i].getCP());
 | 
|---|
| [872] | 159 |     return ScantableWrapper(STMath::merge(sts)); }
 | 
|---|
| [716] | 160 | 
 | 
|---|
| [912] | 161 |   ScantableWrapper rotateXYPhase( const ScantableWrapper& in, float angle)
 | 
|---|
 | 162 |   { return ScantableWrapper(STMath::rotateXYPhase(in.getCP(), angle)); }
 | 
|---|
 | 163 | 
 | 
|---|
 | 164 |   ScantableWrapper rotateLinPolPhase( const ScantableWrapper& in, float angle)
 | 
|---|
 | 165 |   { return ScantableWrapper(STMath::rotateLinPolPhase(in.getCP(), angle)); }
 | 
|---|
 | 166 | 
 | 
|---|
 | 167 |   ScantableWrapper invertPhase( const ScantableWrapper& in )
 | 
|---|
 | 168 |   { return ScantableWrapper(STMath::invertPhase(in.getCP())); }
 | 
|---|
 | 169 | 
 | 
|---|
 | 170 |   ScantableWrapper swapPolarisations( const ScantableWrapper& in )
 | 
|---|
 | 171 |   { return ScantableWrapper(STMath::swapPolarisations(in.getCP())); }
 | 
|---|
 | 172 | 
 | 
|---|
| [927] | 173 |   ScantableWrapper frequencyAlign( const ScantableWrapper& in,
 | 
|---|
 | 174 |                                    const std::string& refTime,
 | 
|---|
 | 175 |                                    const std::string& method  )
 | 
|---|
 | 176 |   { return ScantableWrapper(STMath::frequencyAlign(in.getCP())); }
 | 
|---|
 | 177 | 
 | 
|---|
| [992] | 178 |   ScantableWrapper convertPolarisation( const ScantableWrapper& in,
 | 
|---|
 | 179 |                                         const std::string& newtype )
 | 
|---|
 | 180 |   { return ScantableWrapper(STMath::convertPolarisation(in.getCP(),newtype)); }
 | 
|---|
| [1145] | 181 | 
 | 
|---|
| [1140] | 182 |   ScantableWrapper mxExtract( const ScantableWrapper& in,
 | 
|---|
 | 183 |                               const std::string& scantype="on" )
 | 
|---|
 | 184 |   { return ScantableWrapper(STMath::mxExtract(in.getCP(),scantype)); }
 | 
|---|
| [992] | 185 | 
 | 
|---|
| [1192] | 186 |   ScantableWrapper lagFlag( const ScantableWrapper& in,
 | 
|---|
| [1200] | 187 |                             double frequency, double width )
 | 
|---|
| [1192] | 188 |   { return ScantableWrapper(STMath::lagFlag(in.getCP(), frequency, width)); }
 | 
|---|
 | 189 | 
 | 
|---|
| [49] | 190 | };
 | 
|---|
 | 191 | 
 | 
|---|
| [872] | 192 | }
 | 
|---|
 | 193 | 
 | 
|---|
| [49] | 194 | #endif
 | 
|---|