Source
30
30
#define SYNTHESIS_BEAMSKYJONES_H
31
31
32
32
#include <casa/aips.h>
33
33
#include <casa/Containers/Block.h>
34
34
#include <casa/Exceptions/Error.h>
35
35
#include <measures/Measures/MDirection.h>
36
36
#include <measures/Measures.h>
37
37
#include <measures/Measures/Stokes.h>
38
38
#include <synthesis/TransformMachines/SkyJones.h>
39
39
#include <synthesis/TransformMachines/PBMath.h>
40
-
40
+
#include <msvis/MSVis/VisBufferUtil.h>
41
41
42
42
namespace casacore{
43
43
44
44
class ImageRegion;
45
45
}
46
46
47
47
namespace casa { //# NAMESPACE CASA - BEGIN
48
48
49
49
//#forward
50
50
class SkyModel;
120
120
casacore::Bool forward=true);
121
121
casacore::ImageInterface<casacore::Float>& apply(const casacore::ImageInterface<casacore::Float>& in,
122
122
casacore::ImageInterface<casacore::Float>& out,
123
123
const VisBuffer& vb, casacore::Int row);
124
124
125
125
casacore::ImageInterface<casacore::Float>& applySquare(const casacore::ImageInterface<casacore::Float>& in,
126
126
casacore::ImageInterface<casacore::Float>& out,
127
127
const VisBuffer& vb, casacore::Int row);
128
128
// </group>
129
129
130
-
// Apply Jones matrix to a sky component (and adjoint)
130
+
// Apply Jones matrix to a sky component (and adjoint)
131
+
//if fullspectral==True then the output skycomponent will have a TabularSpectrum
132
+
//Spectral Model which will be at all the channel frequencies available in the vb;
133
+
//when False the out SkyComponent is modified using the first channel frequency only.
134
+
//Thus dealing with the frequency dependence of the SkyJones.
131
135
// <group>
132
136
SkyComponent& apply(SkyComponent& in,
133
137
SkyComponent& out,
134
138
const VisBuffer& vb, casacore::Int row,
135
-
casacore::Bool forward = true);
139
+
casacore::Bool forward = true, casacore::Bool fullspectral=false);
136
140
SkyComponent& applySquare(SkyComponent& in,
137
141
SkyComponent& out,
138
-
const VisBuffer& vb, casacore::Int row);
142
+
const VisBuffer& vb, casacore::Int row, casacore::Bool fullspectral=false);
139
143
// </group>
140
144
141
145
// Understand if things have changed since last PB application
142
146
// <group>
143
147
144
148
// Reset to pristine state
145
149
virtual void reset();
146
150
147
151
// Has this operator changed since the last Application?
148
152
// (or more properly, since the last update() )
271
275
272
276
273
277
274
278
275
279
casacore::Int lastFieldId_p;
276
280
277
281
casacore::Int lastArrayId_p;
278
282
279
283
casacore::Int lastMSId_p;
280
284
285
+
casacore::Double lastTime_p;
281
286
BeamSquint::SquintType doSquint_p;
282
287
283
288
casacore::Double parallacticAngleIncrement_p; // a parallactic angle threshold
284
289
// beyond which the operator is considered to be
285
290
// changed (in radians)
286
291
casacore::Double skyPositionThreshold_p; // a sky position threshold beyond
287
292
// which the operator is considered to be changed
288
293
// (in radians)
289
294
casacore::Block<casacore::Double> lastParallacticAngles_p; // a cache of parallactic angles
290
295
// used when the operator was applied last time.
341
346
// for different feeds/antennae but -1 is used for query.
342
347
//
343
348
// It would be good to rename this function to indexBeams as this name
344
349
// is more appropriate.
345
350
//
346
351
casacore::Int indexTelescope(const casacore::String & compareTelescope,
347
352
const casacore::Int &compareAntenna=-1,
348
353
const casacore::Int &compareFeed=-1) const;
349
354
casacore::MDirection convertDir(const VisBuffer& vb, const casacore::MDirection& inDir, const casacore::MDirection::Types outType);
350
355
casacore::String telescope_p;
351
-
356
+
casacore::CountedPtr<VisBufferUtil> vbutil_p;
352
357
353
358
};
354
359
355
360
356
361
} //# NAMESPACE CASA - END
357
362
358
363
#endif
359
364