28 #ifndef __GyotoPhoton_H_ 29 #define __GyotoPhoton_H_ 35 namespace Astrobj {
class Generic; }
114 Photon(Photon* orig, size_t i0, int dir, double step_max);
118 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
122 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
123 SmartPointer<Screen> screen, double d_alpha, double d_delta);
127 virtual double
getMass() const ;
130 void
astrobj(SmartPointer<Astrobj::Generic>);
136 void
metric(SmartPointer<Metric::Generic>);
140 void
spectrometer(SmartPointer<Spectrometer::Generic> spr);
175 SmartPointer<Astrobj::Generic> obj,
176 const double coord[8]) ;
198 SmartPointer<Astrobj::Generic> obj,
199 const double coord[8],
200 const double Ephi[4],
201 const double Etheta[4]) ;
216 SmartPointer<Astrobj::Generic> obj,
217 SmartPointer<Screen> screen,
227 int
hit(Astrobj::Properties *data=NULL);
247 double
findMin(Functor::Double_constDoubleArray* object,
248 double t1, double t2, double &tmin,
249 double threshold = DBL_MIN) ;
264 void
findValue(Functor::Double_constDoubleArray* object,
266 double tinside, double &toutside) ;
268 #ifdef GYOTO_USE_XERCES 310 virtual void
transmit(size_t i, double t);
313 virtual void
transfer(double * Inu, double * Qnu, double * Unu, double * Vnu,
314 double const * aInu, double const * aQnu,
315 double const * aUnu, double const * aVnu,
316 double const * rQnu, double const * rUnu, double const * rVnu) ;
354 virtual void transmit(
size_t i,
double t);
356 virtual void transfer(
double * Inu,
double * Qnu,
double * Unu,
double * Vnu,
357 double const * aInu,
double const * aQnu,
358 double const * aUnu,
double const * aVnu,
359 double const * rQnu,
double const * rUnu,
double const * rVnu) ;
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
int nb_cross_eqplane_
Nb of crossings of equatorial plane z=0, theta=pi/2.
Definition: GyotoPhoton.h:95
double freq_obs_
Photon's frequency in observer's frame.
Definition: GyotoPhoton.h:72
Timelike or null geodesics.
Definition: GyotoWorldline.h:238
virtual std::string className_l() const
"photon"
double * transmission_
Integrated optical transmissions.
Definition: GyotoPhoton.h:92
double getTransmissionMax() const
Get maximum transmission;.
SmartPointer< Spectrometer::Generic > spectro_
Observer's spectrometer.
Definition: GyotoPhoton.h:85
A null geodesic transporting light.
Definition: GyotoPhoton.h:52
Classes with an operator() method.
SmartPointer< Astrobj::Generic > astrobj() const
Get Photon::object_.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
void setInitialCondition(SmartPointer< Metric::Generic > gg, const double coord[8], const int dir, double const Ephi[4], double const Etheta[4])
Set or re-set the initial condition prior to integration.
double const * getTransmission() const
Get Photon::transmission_.
virtual void setParameters(FactoryMessenger *fmp)
Main loop for parsing Properties from XML description.
Photon * parent_
Parent Photon.
Definition: GyotoPhoton.h:350
Refine last step of integration in a Photon.
Definition: GyotoPhoton.h:348
virtual std::string className() const
"Photon"
void setInitialCondition(SmartPointer< Metric::Generic > gg, SmartPointer< Astrobj::Generic > obj, const double coord[8])
Set or re-set the initial condition prior to integration.
Gyoto ubiquitous macros and typedefs.
Timelike or null geodesics.
Base class for metric description.
virtual double getMass() const
Return 0.
int hit(Astrobj::Properties *data=NULL)
Integrate the geodesic.
double findMin(Functor::Double_constDoubleArray *object, double t1, double t2, double &tmin, double threshold=DBL_MIN)
Find minimum of photon–object distance.
void _allocateTransmission()
Allocate Photon::transmission_.
SmartPointer< Gyoto::Astrobj::Generic > object_
The astronomical target.
Definition: GyotoPhoton.h:66
#define GYOTO_WORLDLINE
Declare the Worldline interface wrappers.
Definition: GyotoWorldline.h:164
virtual void transfer(double *Inu, double *Qnu, double *Unu, double *Vnu, double const *aInu, double const *aQnu, double const *aUnu, double const *aVnu, double const *rQnu, double const *rUnu, double const *rVnu)
Perform one step of radiative transfer.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
double transmission_freqobs_
Integrated optical transmission.
Definition: GyotoPhoton.h:78
void resetTransmission()
Set transmission to 1 for each channel as well as scalar transmission.
Photon * clone() const
Cloner.
Pointers performing reference counting.
Definition: GyotoProperty.h:45
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:80
double freqObs() const
Get Photon::freq_obs__.
void findValue(Functor::Double_constDoubleArray *object, double value, double tinside, double &toutside)
Find date for which the photon is at a given distance from the object.
Object with properties.
Definition: GyotoObject.h:151
Description of the observer screen.
SmartPointer< Metric::Generic > metric() const
Get metric.
int nb_cross_eqplane() const
Get Photon::nb_cross_eqplane_.
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp, std::vector< std::string > const &plugin)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:76
virtual void transmit(size_t i, double t)
Update transmission in a given channel.
SmartPointer< Spectrometer::Generic > spectrometer() const
Get Photon::spectro_.