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 40 T& operator[](
size_t c) {
return buf[c] ; }
189 std::string mask_filename_;
194 enum anglekind_e { equatorial_angles=0, rectilinear=1, spherical_angles=2};
195 typedef int anglekind_t;
251 void setProjection(
const double paln,
252 const double inclination,
253 const double argument);
255 void setProjection(
const double distance,
257 const double inclination,
258 const double argument);
264 void distance(
double dist);
270 void dMax(
double dist);
277 void distance(
double dist,
const std::string &unit);
284 void inclination(
double);
291 void inclination(
double,
const std::string &unit);
295 void PALN(
double,
const std::string &unit);
297 void argument(
double);
299 void argument(
double,
const std::string &unit);
310 void freqObs(
double fo);
319 void freqObs(
double fo,
const std::string &unit);
324 double freqObs()
const ;
331 double freqObs(
const std::string &unit)
const;
342 void setObserverPos(
const double pos[4]);
343 void observerKind(
const std::string &kind);
344 std::string observerKind()
const;
345 void setFourVel(
const double coord[4]);
347 void setScreen1(
const double coord[4]);
349 void setScreen2(
const double coord[4]);
351 void setScreen3(
const double coord[4]);
361 int coordKind()
const;
367 double distance()
const;
373 double distance(
const std::string&)
const;
386 double inclination()
const;
393 double inclination(
const std::string&)
const;
396 double PALN(
const std::string&)
const;
397 double argument()
const;
398 double argument(
const std::string&)
const;
407 double time(
const std::string &)
const;
410 void time(
double,
const std::string &);
416 double fieldOfView()
const;
419 double fieldOfView(std::string
const &unit)
const;
422 void fieldOfView(
double);
425 void fieldOfView(
double,
const std::string &unit);
430 void alpha0(
double,
const std::string &unit);
432 double alpha0()
const;
434 double alpha0(std::string
const &unit)
const;
438 void delta0(
double,
const std::string &unit);
440 double delta0()
const;
442 double delta0(std::string
const &unit)
const;
446 void anglekind(std::string
const&);
447 std::string anglekind()
const;
450 size_t resolution()
const;
452 void resolution(
size_t);
459 void mask(
double const *
const mm,
size_t resolution=0);
462 double const * mask()
const ;
463 void maskFile(std::string
const &fname);
464 std::string maskFile()
const;
465 # ifdef GYOTO_USE_CFITSIO 468 void fitsReadMask(std::string
const &fname);
471 void fitsWriteMask(std::string
const &fname);
479 bool operator()(
size_t,
size_t);
494 void getObserverPos(
double dest[4])
const;
500 void getFourVel(
double dest[4])
const;
502 void fourVel(std::vector<double>
const &);
503 std::vector<double> fourVel()
const;
504 void screenVector1(std::vector<double>
const &);
505 std::vector<double> screenVector1()
const;
506 void screenVector2(std::vector<double>
const &);
507 std::vector<double> screenVector2()
const;
508 void screenVector3(std::vector<double>
const &);
509 std::vector<double> screenVector3()
const;
515 void getScreen1(
double dest[4])
const;
521 void getScreen2(
double dest[4])
const;
527 void getScreen3(
double dest[4])
const;
539 void getRayCoord(
double x,
double y,
double dest[8])
const;
550 void getRayCoord(
const size_t i,
const size_t j,
double dest[8])
const;
552 void coordToSky(
const double pos[4],
double dest[3])
const;
555 void coordToXYZ(
const double pos[4],
double dest[3])
const;
558 void computeBaseVectors() ;
563 std::ostream& print(std::ostream&)
const ;
564 std::ostream& printBaseVectors(std::ostream&)
const ;
587 #ifdef GYOTO_USE_XERCES 616 virtual void begin() =0;
618 virtual bool valid() =0;
620 virtual size_t size()=0;
622 virtual size_t operator*()
const ;
624 virtual double angle()
const ;
633 virtual size_t index()
const=0;
657 virtual void begin() =0;
659 virtual bool valid() =0;
661 virtual size_t size()=0;
676 virtual void begin();
677 virtual bool valid();
678 virtual size_t size();
694 virtual void begin();
695 virtual bool valid();
696 virtual size_t size();
704 virtual void begin();
705 virtual bool valid();
706 virtual size_t size();
712 const size_t mi_, ma_, d_, sz_;
716 Range(
size_t mi,
size_t ma,
size_t d);
721 size_t operator*()
const ;
722 virtual size_t index()
const ;
728 size_t const *
const indices_;
732 Indices (
size_t const*
const buf,
size_t sz);
737 size_t operator*()
const ;
738 virtual size_t index()
const ;
744 double const *
const buf_;
748 Angles (
double const*
const buf,
size_t sz);
753 double angle()
const ;
754 virtual size_t index()
const ;
769 double angle()
const ;
770 virtual size_t index()
const ;
1D specifier for an angle that is repeated.
Definition: GyotoScreen.h:758
SmartPointer< Spectrometer::Generic > spectro_
Gyoto::Spectrometer::Generic subclass instance used for quantities Spectrum and BinSpectrum.
Definition: GyotoScreen.h:221
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:83
double freq_obs_
Frequency at which the observer observes.
Definition: GyotoScreen.h:228
Reference-counting pointers.
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:76
A dummy, empty 2D set.
Definition: GyotoScreen.h:700
#define size_t
If not defined in <sys/types.h>.
Definition: GyotoConfig.h:354
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
1D coordinated specifier for a range
Definition: GyotoScreen.h:710
Definition: GyotoScreen.h:36
The camera with which the Astrobj is observed.
Definition: GyotoScreen.h:166
std::string observerkind_
What kind of observer are we considering? (At infinity, ZAMO...)
Definition: GyotoScreen.h:234
CoordType_e
Enum to specify whether a coordinate set (Coord1dSet or Coord2dSet) holds pixel values or angles...
Definition: GyotoScreen.h:596
Gyoto ubiquitous macros and typedefs.
Base class for metric description.
Property that can be set and got using standard methods.
Definition: GyotoProperty.h:533
anglekind_t anglekind_
Screen angles kind (0: equatorial, 1: spherical)
Definition: GyotoScreen.h:197
Spectroscopic capabilities of a Screen.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
1D specifier for an arbitrary pixel coordinate set.
Definition: GyotoScreen.h:726
Class containing arbitrary 2D-points.
Definition: GyotoScreen.h:685
Pointers performing reference counting.
Definition: GyotoProperty.h:41
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:78
double delta0_
Screen orientation (0,0) is right towards the BH.
Definition: GyotoScreen.h:215
const char *const prefix_
If non-NULL, cout j each tims it is incremented.
Definition: GyotoScreen.h:669
SmartPointer< Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoScreen.h:216
Class to specify a set of points on the Screen.
Definition: GyotoScreen.h:642
Object with properties.
Definition: GyotoObject.h:136
double alpha0_
Screen orientation (0,0) is right towards the BH.
Definition: GyotoScreen.h:214
1D specifier for an arbitrary angle coordinate set.
Definition: GyotoScreen.h:742
const CoordType_e kind
Whether this set holds pixels or angle specifications.
Definition: GyotoScreen.h:645
Class containing 2D-points organized in a grid.
Definition: GyotoScreen.h:665
const CoordType_e kind
Whether this specifier represents angles or pixels.
Definition: GyotoScreen.h:609
Set of 1-d coordinates: indices or angles.
Definition: GyotoScreen.h:606