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] ; }
196 std::string mask_filename_;
201 enum anglekind_e { equatorial_angles=0, rectilinear=1, spherical_angles=2};
202 typedef int anglekind_t;
259 void setProjection(
const double paln,
260 const double inclination,
261 const double argument);
263 void setProjection(
const double distance,
265 const double inclination,
266 const double argument);
272 void distance(
double dist);
278 void dMax(
double dist);
285 void distance(
double dist,
const std::string &unit);
292 void inclination(
double);
299 void inclination(
double,
const std::string &unit);
303 void PALN(
double,
const std::string &unit);
305 void argument(
double);
307 void argument(
double,
const std::string &unit);
318 void freqObs(
double fo);
327 void freqObs(
double fo,
const std::string &unit);
332 double freqObs()
const ;
339 double freqObs(
const std::string &unit)
const;
350 void setObserverPos(
const double pos[4]);
351 void observerKind(
const std::string &kind);
352 std::string observerKind()
const;
353 void setFourVel(
const double coord[4]);
355 void setScreen1(
const double coord[4]);
357 void setScreen2(
const double coord[4]);
359 void setScreen3(
const double coord[4]);
369 int coordKind()
const;
375 double distance()
const;
381 double distance(
const std::string&)
const;
394 double inclination()
const;
401 double inclination(
const std::string&)
const;
404 double PALN(
const std::string&)
const;
405 double argument()
const;
406 double argument(
const std::string&)
const;
415 double time(
const std::string &)
const;
418 void time(
double,
const std::string &);
424 double fieldOfView()
const;
427 double fieldOfView(std::string
const &unit)
const;
430 void fieldOfView(
double);
433 void fieldOfView(
double,
const std::string &unit);
438 void alpha0(
double,
const std::string &unit);
440 double alpha0()
const;
442 double alpha0(std::string
const &unit)
const;
446 void delta0(
double,
const std::string &unit);
448 double delta0()
const;
450 double delta0(std::string
const &unit)
const;
454 void anglekind(std::string
const&);
455 std::string anglekind()
const;
458 size_t resolution()
const;
460 void resolution(
size_t);
467 void mask(
double const *
const mm,
size_t resolution=0);
470 double const * mask()
const ;
471 void maskFile(std::string
const &fname);
472 std::string maskFile()
const;
473 # ifdef GYOTO_USE_CFITSIO 476 void fitsReadMask(std::string
const &fname);
479 void fitsWriteMask(std::string
const &fname);
487 bool operator()(
size_t,
size_t);
502 void getObserverPos(
double dest[4])
const;
508 void getFourVel(
double dest[4])
const;
510 void fourVel(std::vector<double>
const &);
511 std::vector<double> fourVel()
const;
512 void screenVector1(std::vector<double>
const &);
513 std::vector<double> screenVector1()
const;
514 void screenVector2(std::vector<double>
const &);
515 std::vector<double> screenVector2()
const;
516 void screenVector3(std::vector<double>
const &);
517 std::vector<double> screenVector3()
const;
523 void getScreen1(
double dest[4])
const;
529 void getScreen2(
double dest[4])
const;
535 void getScreen3(
double dest[4])
const;
547 void getRayCoord(
double x,
double y,
double dest[8])
const;
558 void getRayCoord(
const size_t i,
const size_t j,
double dest[8])
const;
560 void coordToSky(
const double pos[4],
double dest[3])
const;
563 void coordToXYZ(
const double pos[4],
double dest[3])
const;
566 void computeBaseVectors() ;
571 std::ostream& print(std::ostream&)
const ;
572 std::ostream& printBaseVectors(std::ostream&)
const ;
595 #ifdef GYOTO_USE_XERCES 624 virtual void begin() =0;
626 virtual bool valid() =0;
628 virtual size_t size()=0;
630 virtual size_t operator*()
const ;
632 virtual double angle()
const ;
641 virtual size_t index()
const=0;
665 virtual void begin() =0;
667 virtual bool valid() =0;
669 virtual size_t size()=0;
684 virtual void begin();
685 virtual bool valid();
686 virtual size_t size();
702 virtual void begin();
703 virtual bool valid();
704 virtual size_t size();
712 virtual void begin();
713 virtual bool valid();
714 virtual size_t size();
720 const size_t mi_, ma_, d_, sz_;
724 Range(
size_t mi,
size_t ma,
size_t d);
729 size_t operator*()
const ;
730 virtual size_t index()
const ;
736 size_t const *
const indices_;
740 Indices (
size_t const*
const buf,
size_t sz);
745 size_t operator*()
const ;
746 virtual size_t index()
const ;
752 double const *
const buf_;
756 Angles (
double const*
const buf,
size_t sz);
761 double angle()
const ;
762 virtual size_t index()
const ;
777 double angle()
const ;
778 virtual size_t index()
const ;
1D specifier for an angle that is repeated.
Definition: GyotoScreen.h:766
SmartPointer< Spectrometer::Generic > spectro_
Gyoto::Spectrometer::Generic subclass instance used for quantities Spectrum and BinSpectrum.
Definition: GyotoScreen.h:228
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
double freq_obs_
Frequency at which the observer observes.
Definition: GyotoScreen.h:235
Reference-counting pointers.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
A dummy, empty 2D set.
Definition: GyotoScreen.h:708
#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:718
Definition: GyotoScreen.h:43
The camera with which the Astrobj is observed.
Definition: GyotoScreen.h:173
std::string observerkind_
What kind of observer are we considering? (At infinity, ZAMO...)
Definition: GyotoScreen.h:241
CoordType_e
Enum to specify whether a coordinate set (Coord1dSet or Coord2dSet) holds pixel values or angles...
Definition: GyotoScreen.h:604
Gyoto ubiquitous macros and typedefs.
Base class for metric description.
Property that can be set and got using standard methods.
Definition: GyotoProperty.h:607
anglekind_t anglekind_
Screen angles kind (0: equatorial, 1: spherical)
Definition: GyotoScreen.h:204
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:734
Class containing arbitrary 2D-points.
Definition: GyotoScreen.h:693
Pointers performing reference counting.
Definition: GyotoProperty.h:45
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:80
double delta0_
Screen orientation (0,0) is right towards the BH.
Definition: GyotoScreen.h:222
const char *const prefix_
If non-NULL, cout j each tims it is incremented.
Definition: GyotoScreen.h:677
SmartPointer< Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoScreen.h:223
Class to specify a set of points on the Screen.
Definition: GyotoScreen.h:650
Object with properties.
Definition: GyotoObject.h:151
double alpha0_
Screen orientation (0,0) is right towards the BH.
Definition: GyotoScreen.h:221
1D specifier for an arbitrary angle coordinate set.
Definition: GyotoScreen.h:750
const CoordType_e kind
Whether this set holds pixels or angle specifications.
Definition: GyotoScreen.h:653
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp, std::vector< std::string > const &plugin)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:76
Class containing 2D-points organized in a grid.
Definition: GyotoScreen.h:673
const CoordType_e kind
Whether this specifier represents angles or pixels.
Definition: GyotoScreen.h:617
Set of 1-d coordinates: indices or angles.
Definition: GyotoScreen.h:614