26 #ifndef __GyotoScreen_H_ 27 #define __GyotoScreen_H_ 32 #if defined HAVE_BOOST_ARRAY_HPP 33 # include <boost/array.hpp> 34 # define GYOTO_ARRAY boost::array 36 # include <boost/version.hpp> 37 # if BOOST_VERSION >= 106400 38 # include <boost/serialization/boost_array.hpp> 39 # include <boost/serialization/array_wrapper.hpp> 47 T& operator[](
size_t c) {
return buf[c] ; }
202 enum anglekind_e { equatorial_angles=0, rectilinear=1, spherical_angles=2};
203 typedef int anglekind_t;
246 GYOTO_OBJECT_THREAD_SAFETY;
279 void dMax(
double dist);
286 void distance(
double dist,
const std::string &unit);
304 void PALN(
double,
const std::string &unit);
308 void argument(
double,
const std::string &unit);
328 void freqObs(
double fo,
const std::string &unit);
340 double freqObs(
const std::string &unit)
const;
352 void observerKind(
const std::string &kind);
353 std::string observerKind()
const;
382 double distance(
const std::string&)
const;
405 double PALN(
const std::string&)
const;
407 double argument(
const std::string&)
const;
416 double time(
const std::string &)
const;
419 void time(
double,
const std::string &);
445 void dangle1(
double,
const std::string &unit);
449 double dangle1(std::string
const &unit)
const;
453 void dangle2(
double,
const std::string &unit);
457 double dangle2(std::string
const &unit)
const;
477 double const *
mask()
const ;
478 void maskFile(std::string
const &fname);
479 std::string maskFile()
const;
480 # ifdef GYOTO_USE_CFITSIO 517 void fourVel(std::vector<double>
const &);
518 std::vector<double> fourVel()
const;
519 void screenVector1(std::vector<double>
const &);
520 std::vector<double> screenVector1()
const;
521 void screenVector2(std::vector<double>
const &);
522 std::vector<double> screenVector2()
const;
523 void screenVector3(std::vector<double>
const &);
524 std::vector<double> screenVector3()
const;
554 void getRayCoord(
double x,
double y,
double dest[8])
const;
566 double Ephi[4],
double Etheta[4])
const;
577 void getRayCoord(
const size_t i,
const size_t j,
double dest[8])
const;
585 void coordToSky(
const double pos[4],
double dest[3],
bool geometrical=
false)
const;
593 void skyToCoord(
const double sky[3],
double dest[4],
bool geometrical=
false)
const;
595 void coordToXYZ(
const double pos[4],
double dest[3])
const;
603 std::ostream&
print(std::ostream&)
const ;
627 #ifdef GYOTO_USE_XERCES 656 virtual void begin() =0;
658 virtual bool valid() =0;
660 virtual size_t size()=0;
664 virtual double angle()
const ;
673 virtual size_t index()
const=0;
697 virtual void begin() =0;
699 virtual bool valid() =0;
701 virtual size_t size()=0;
717 virtual void begin();
718 virtual bool valid();
719 virtual size_t size();
735 virtual void begin();
736 virtual bool valid();
737 virtual size_t size();
745 virtual void begin();
746 virtual bool valid();
747 virtual size_t size();
753 const size_t mi_, ma_, d_, sz_;
757 Range(
size_t mi,
size_t ma,
size_t d);
763 virtual size_t index()
const ;
773 Indices (
size_t const*
const buf,
size_t sz);
780 virtual size_t index()
const ;
790 Angles (
double const*
const buf,
size_t sz);
796 double angle()
const ;
797 virtual size_t index()
const ;
812 double angle()
const ;
813 virtual size_t index()
const ;
1D specifier for an angle that is repeated.
Definition: GyotoScreen.h:801
double tobs_
Observing date in s.
Definition: GyotoScreen.h:180
size_t size()
Number of values in this container.
virtual ~Screen()
Destructor.
SmartPointer< Spectrometer::Generic > spectro_
Gyoto::Spectrometer::Generic subclass instance used for quantities Spectrum and BinSpectrum.
Definition: GyotoScreen.h:229
size_t operator*() const
Get size_t value currently pointed to.
double const * mask() const
Retrieve const pointer to mask_.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
int coordKind() const
Get coordinate kind.
void unmapPixUnit()
Unmap "pix" and "pixel" from unit system.
virtual GYOTO_ARRAY< size_t, 2 > operator*() const
Get pixel coordinates.
Screen * clone() const
Cloner.
virtual size_t index() const =0
Get index of value currently pointed to.
double ey_[3]
Sky coordinate of base Y vector.
Definition: GyotoScreen.h:214
virtual GYOTO_ARRAY< double, 2 > angles() const
Get angle coordinates.
void setObserverPos(const double pos[4])
Alternative way to set projection.
virtual GYOTO_ARRAY< size_t, 2 > operator*() const
Get pixel coordinates.
size_t operator*() const
Get size_t value currently pointed to.
size_t size()
Number of values in this container.
virtual size_t size()=0
Number of values in this container.
void setScreen1(const double coord[4])
Sets the screen vector e1.
double screen3_[4]
Screen e3 vector (normal)
Definition: GyotoScreen.h:220
double distance_
Distance to the observer in m.
Definition: GyotoScreen.h:199
virtual void begin()
Reset pointer.
void setScreen3(const double coord[4])
Sets the screen vector e3 (normal)
double dangle1() const
Get increment to first position angle.
double fourvel_[4]
Observer's 4-velocity.
Definition: GyotoScreen.h:217
virtual size_t operator*() const
Get size_t value currently pointed to.
double distance() const
Get distance from observer.
double freq_obs_
Frequency at which the observer observes.
Definition: GyotoScreen.h:236
Reference-counting pointers.
size_t size()
Number of values in this container.
virtual size_t index() const
Get index of value currently pointed to.
virtual GYOTO_ARRAY< double, 2 > angles() const
Get angle coordinates.
obskind_t observerkind_
What kind of observer are we considering? (At infinity, ZAMO...)
Definition: GyotoScreen.h:242
#define obskind_t
Type for observer kind.
Definition: GyotoDefs.h:554
A dummy, empty 2D set.
Definition: GyotoScreen.h:741
bool valid()
True if pointing to something, false if end has been reached.
#define size_t
If not defined in <sys/types.h>.
Definition: GyotoConfig.h:387
virtual size_t size()=0
Number of positions contained.
double dangle1_
Increment to first position angle of Screen; can be typically alpha if in Equatorial Angles...
Definition: GyotoScreen.h:222
double screen2_[4]
Screen e2 vector.
Definition: GyotoScreen.h:219
virtual Coord1dSet & operator++()=0
Increment iterator (point to next value)
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
void anglekind(int)
Set Screen::anglekind_.
double azimuthalFieldOfView() const
Get Screen::azimuthal_fov_.
Coord2dSet(CoordType_e k)
Set kind at initialisation.
virtual size_t size()
Number of positions contained.
virtual Coord2dSet & operator++()
Increment pointer.
1D coordinated specifier for a range
Definition: GyotoScreen.h:751
virtual void begin()
Reset pointer.
std::ostream & print(std::ostream &) const
Display.
double fov_
Field-of-view in rad.
Definition: GyotoScreen.h:181
virtual GYOTO_ARRAY< size_t, 2 > operator*() const
Get pixel coordinates.
double euler_[3]
Euler angles.
Definition: GyotoScreen.h:212
Definition: GyotoScreen.h:43
double argument() const
Get angle between line of nodes and X axis of object.
The camera with which the Astrobj is observed.
Definition: GyotoScreen.h:173
Range(size_t mi, size_t ma, size_t d)
Specify min, max and step of this range.
double dmax_
Maximum distance from which the photons are launched (geometrical units)
Definition: GyotoScreen.h:200
virtual Coord2dSet & operator++()
Increment pointer.
Coord1dSet & operator++()
Increment iterator (point to next value)
void setScreen2(const double coord[4])
Sets the screen vector e2.
virtual size_t index() const
Get index of value currently pointed to.
virtual bool valid()=0
True if pointing to something, false if end has been reached.
virtual ~Coord2dSet()
Virtual destructor.
double fieldOfView() const
Get Screen::fov_ in radians.
void mapPixUnit()
Map "pix" and "pixel" to angular pixel width in unit system.
std::string mask_filename_
Last read or written FITS file.
Definition: GyotoScreen.h:197
size_t npix_
Resolution in pixels.
Definition: GyotoScreen.h:184
void fitsWriteMask(std::string const &fname)
Save mask_ from FITS file.
Coord1dSet & operator++()
Increment iterator (point to next value)
CoordType_e
Enum to specify whether a coordinate set (Coord1dSet or Coord2dSet) holds pixel values or angles...
Definition: GyotoScreen.h:636
Gyoto ubiquitous macros and typedefs.
Base class for metric description.
Coord1dSet & operator++()
Increment iterator (point to next value)
double ez_[3]
Sky coordinate of base Z vector.
Definition: GyotoScreen.h:215
void getRayCoord(double x, double y, double dest[8]) const
Get 8-coordinate of Photon hitting screen from a given direction.
double dangle2() const
Get increment to second position angle.
void setProjection(const double paln, const double inclination, const double argument)
Set inclination etc.
char * prefix_
If non-NULL, cout j each tims it is incremented.
Definition: GyotoScreen.h:709
Property that can be set and got using standard methods.
Definition: GyotoProperty.h:607
void getScreen1(double dest[4]) const
Get copy of Screen::screen1_.
virtual bool valid()
Whether the end has not been passed.
anglekind_t anglekind_
Screen angles kind (0: equatorial, 1: spherical)
Definition: GyotoScreen.h:205
virtual void begin()
Reset pointer.
double azimuthal_fov_
Azimuthal field-of-view for Spherical Angles images. Maximal extent of image in the azimuthal b-angle...
Definition: GyotoScreen.h:182
void getObserverPos(double dest[4]) const
4-Position of the observer relative to the metric
void begin()
Reset specifier to point to the first value.
virtual size_t index() const
Get index of value currently pointed to.
Spectroscopic capabilities of a Screen.
void computeBaseVectors()
Compute base vectors according to projection parameters.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
virtual void begin()=0
Reset pointer.
double time() const
Get observing date in seconds.
void getRayTriad(double coord[8], double Ephi[4], double Etheta[4]) const
Get polarization triad.
Screen()
Default constructor.
void fitsReadMask(std::string const &fname)
Read mask_ from FITS file.
double angle() const
Get double value currently pointed to.
void getScreen3(double dest[4]) const
Get copy of Screen::screen3_.
1D specifier for an arbitrary pixel coordinate set.
Definition: GyotoScreen.h:767
Class containing arbitrary 2D-points.
Definition: GyotoScreen.h:726
Coord1dSet & operator++()
Increment iterator (point to next value)
Pointers performing reference counting.
Definition: GyotoProperty.h:45
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:80
virtual size_t size()
Number of positions contained.
virtual Coord2dSet & operator++()=0
Increment pointer.
void coordToXYZ(const double pos[4], double dest[3]) const
Convert 4-position to 3-cartesian coordinates.
bool operator()(size_t, size_t)
Whether this pixel should be ray-traced.
size_t resolution() const
Get Screen::npix_.
double ex_[3]
Sky coordinate of base X vector.
Definition: GyotoScreen.h:213
virtual ~Coord1dSet()
Virtual destructor.
void begin()
Reset specifier to point to the first value.
void getFourVel(double dest[4]) const
Get copy of Screen::fourvel_.
double screen1_[4]
Screen e1 vector.
Definition: GyotoScreen.h:218
virtual double angle() const
Get double value currently pointed to.
size_t size()
Number of values in this container.
double freqObs() const
Get freq_obs_.
double angle() const
Get double value currently pointed to.
virtual Coord2dSet & operator++()
Increment pointer.
virtual void begin()=0
Reset specifier to point to the first value.
void begin()
Reset specifier to point to the first value.
SmartPointer< Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoScreen.h:224
virtual bool valid()=0
Whether the end has not been passed.
bool valid()
True if pointing to something, false if end has been reached.
double PALN() const
Get position angle of the line of nodes.
void getScreen2(double dest[4]) const
Get copy of Screen::screen2_.
SmartPointer< Metric::Generic > metric() const
Get Screen::gg_.
virtual size_t size()
Number of positions contained.
Class to specify a set of points on the Screen.
Definition: GyotoScreen.h:682
double inclination() const
Get inclination relative to line-of-sight.
Coord1dSet(CoordType_e k)
Set kind during initialization.
void fillProperty(Gyoto::FactoryMessenger *fmp, Property const &p) const
Output a single Property to XML.
Object with properties.
Definition: GyotoObject.h:151
1D specifier for an arbitrary angle coordinate set.
Definition: GyotoScreen.h:784
const CoordType_e kind
Whether this set holds pixels or angle specifications.
Definition: GyotoScreen.h:685
bool valid()
True if pointing to something, false if end has been reached.
void begin()
Reset specifier to point to the first value.
void setFourVel(const double coord[4])
Sets the observer's 4-velocity.
virtual bool valid()
Whether the end has not been passed.
void coordToSky(const double pos[4], double dest[3], bool geometrical=false) const
Convert metric 4-position to sky 3-position.
virtual size_t index() const
Get index of value currently pointed to.
static SmartPointer< Screen > Subcontractor(FactoryMessenger *fmp)
Instanciate a Screen from XML entity.
double dangle2_
Increment to second position angle of Screen; can be typically delta if in Equatorial Angles...
Definition: GyotoScreen.h:223
void skyToCoord(const double sky[3], double dest[4], bool geometrical=false) const
Convert sky 3-position to metric 4-position.
Class containing 2D-points organized in a grid.
Definition: GyotoScreen.h:705
virtual bool valid()
Whether the end has not been passed.
SmartPointer< Spectrometer::Generic > spectrometer() const
Get Screen::spectro_.
double * mask_
Mask with 0 where the ray-tracing should not be performed.
Definition: GyotoScreen.h:189
double dMax() const
Get maximum ray-tracing distance.
std::ostream & printBaseVectors(std::ostream &) const
Debug helper.
const CoordType_e kind
Whether this specifier represents angles or pixels.
Definition: GyotoScreen.h:649
Set of 1-d coordinates: indices or angles.
Definition: GyotoScreen.h:646
bool valid()
True if pointing to something, false if end has been reached.