28#ifndef __GyotoPhoton_H_
29#define __GyotoPhoton_H_
35 namespace Astrobj {
class Generic; }
45#include <eigen3/Eigen/Dense>
128 Photon(Photon* orig, size_t i0, int dir, double step_max);
132 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
136 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
137 SmartPointer<Screen> screen, double d_alpha, double d_delta);
150 void
metric(SmartPointer<Metric::Generic>);
189 SmartPointer<Astrobj::Generic> obj,
190 const double coord[8]) ;
212 SmartPointer<Astrobj::Generic> obj,
213 const double coord[8],
214 const double Ephi[4],
215 const double Etheta[4]) ;
230 SmartPointer<Astrobj::Generic> obj,
231 SmartPointer<Screen> screen,
241 int
hit(Astrobj::Properties *data=NULL);
261 double
findMin(Functor::Double_constDoubleArray* object,
262 double t1, double t2, double &tmin,
263 double threshold = DBL_MIN) ;
278 void
findValue(Functor::Double_constDoubleArray* object,
280 double tinside, double &toutside) ;
282#ifdef GYOTO_USE_XERCES
284 static
SmartPointer<Photon> Subcontractor(Gyoto::FactoryMessenger*);
350 virtual void
transmit(size_t i, Eigen::Matrix4d mat);
351 virtual void
transfer(double * Inu, double * Qnu, double * Unu, double * Vnu, Eigen::Matrix4d * Onu);
357 void _allocateTransmissionMatrix();
393 virtual void transmit(
size_t i, Eigen::Matrix4d mat);
395 virtual void transfer(
double * Inu,
double * Qnu,
double * Unu,
double * Vnu, Eigen::Matrix4d * Onu);
Gyoto ubiquitous macros and typedefs.
Classes with an operator() method.
Base class for metric description.
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition GyotoObject.h:99
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition GyotoObject.h:84
Description of the observer screen.
Timelike or null geodesics.
#define GYOTO_WORLDLINE
Declare the Worldline interface wrappers.
Definition GyotoWorldline.h:164
Object with properties.
Definition GyotoObject.h:152
Refine last step of integration in a Photon.
Definition GyotoPhoton.h:385
virtual void transmit(size_t i, Eigen::Matrix4d mat)
Update transmission Matrix both in *this and in *parent_.
virtual void transfer(double *Inu, double *Qnu, double *Unu, double *Vnu, Eigen::Matrix4d *Onu)
Perform one step of polarized radiative transfert and update transmission matrix.
Refined(Photon *parent, size_t i, int dir, double step_max)
Constructor.
virtual void transmit(size_t i, double t)
Update transmission both in *this and in *parent_.
Photon * parent_
Parent Photon.
Definition GyotoPhoton.h:387
A null geodesic transporting light.
Definition GyotoPhoton.h:57
virtual void transfer(double *Inu, double *Qnu, double *Unu, double *Vnu, Eigen::Matrix4d *Onu)
Perform one step of polarized radiative transfert and update transmission matrix.
double freq_obs_
Photon's frequency in observer's frame.
Definition GyotoPhoton.h:73
virtual std::string className_l() const
"photon"
void _allocateTransmission()
Allocate Photon::transmission_.
SmartPointer< Metric::Generic > metric() const
Get metric.
void resetTransmissionMatrix()
Set transmission matrix to identity matrix for each frequency.
Eigen::Matrix4d const * getTransmissionMatrix() const
Get Photon::transmissionMatrix_.
void resetTransmission()
Set transmission to 1 for each channel as well as scalar transmission.
SmartPointer< Spectrometer::Generic > spectrometer() const
Get Photon::spectro_.
Eigen::Matrix4d * transmissionMatrix_
Integrated optical transmission matrix (polarization)
Definition GyotoPhoton.h:109
int hit(Astrobj::Properties *data=NULL)
Integrate the geodesic.
virtual double getMass() const
Return 0.
int nb_cross_eqplane_
Nb of crossings of equatorial plane z=0, theta=pi/2.
Definition GyotoPhoton.h:102
Photon * clone() const
Cloner.
double getTransmissionMax() const
Get maximum transmission;.
Eigen::Matrix4d transmissionMatrix_freqobs_
Integrated optical transmission matrix (polarization)
Definition GyotoPhoton.h:85
void setInitialCondition(SmartPointer< Metric::Generic > gg, SmartPointer< Astrobj::Generic > obj, const double coord[8])
Set or re-set the initial condition prior to integration.
double transmission_freqobs_
Integrated optical transmission.
Definition GyotoPhoton.h:79
virtual void setParameters(FactoryMessenger *fmp)
Main loop for parsing Properties from XML description.
double * transmission_
Integrated optical transmissions.
Definition GyotoPhoton.h:99
virtual void transmit(size_t i, double t)
Update transmission in a given channel.
double freqObs() const
Get Photon::freq_obs__.
int nb_cross_eqplane() const
Get Photon::nb_cross_eqplane_.
SmartPointer< Spectrometer::Generic > spectro_
Observer's spectrometer.
Definition GyotoPhoton.h:92
virtual std::string className() const
"Photon"
SmartPointer< Astrobj::Generic > astrobj() const
Get Photon::object_.
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.
double findMin(Functor::Double_constDoubleArray *object, double t1, double t2, double &tmin, double threshold=DBL_MIN)
Find minimum of photon–object distance.
SmartPointer< Gyoto::Astrobj::Generic > object_
The astronomical target.
Definition GyotoPhoton.h:67
double const * getTransmission() const
Get Photon::transmission_.
Can be pointed to by a SmartPointer.
Definition GyotoSmartPointer.h:81
Pointers performing reference counting.
Definition GyotoSmartPointer.h:135
Timelike or null geodesics.
Definition GyotoWorldline.h:240
SmartPointer< Metric::Generic > metric() const
Get metric.
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.
Namespace for the Gyoto library.
Definition GyotoAstrobj.h:44