28 #ifndef __GyotoPhoton_H_
29 #define __GyotoPhoton_H_
35 namespace Astrobj {
class Generic; }
103 Photon(Photon* orig, size_t i0, int dir, double step_max);
107 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
111 Photon(SmartPointer<Metric::Generic> gg, SmartPointer<Astrobj::Generic> obj,
112 SmartPointer<Screen> screen, double d_alpha, double d_delta);
116 virtual double
getMass() const ;
119 void
astrobj(SmartPointer<Astrobj::Generic>);
124 void
spectrometer(SmartPointer<Spectrometer::Generic> spr);
138 void operator=(const Photon&) ;
152 SmartPointer<Astrobj::Generic> obj,
153 const double coord[8]) ;
166 SmartPointer<Astrobj::Generic> obj,
167 SmartPointer<Screen> screen,
177 int
hit(Astrobj::Properties *data=NULL);
197 double
findMin(Functor::Double_constDoubleArray* object,
198 double t1, double t2, double &tmin,
199 double threshold = DBL_MIN) ;
214 void
findValue(Functor::Double_constDoubleArray* object,
216 double tinside, double &toutside) ;
218 #ifdef GYOTO_USE_XERCES
263 virtual void
transmit(size_t i, double t);
301 virtual void transmit(
size_t i,
double t);
virtual std::string className_l() const
"photon"
double freq_obs_
Photon's frequency in observer's frame.
Definition: GyotoPhoton.h:67
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:51
double getTransmissionMax() const
Get maximum transmission;.
Timelike or null geodesics.
Definition: GyotoWorldline.h:81
double * transmission_
Integrated optical transmissions.
Definition: GyotoPhoton.h:87
SmartPointer< Spectrometer::Generic > spectro_
Observer's spectrometer.
Definition: GyotoPhoton.h:80
A null geodesic transporting light.
Definition: GyotoPhoton.h:51
Classes with an operator() method.
Photon * clone() const
Cloner.
void fillElement(FactoryMessenger *fmp) const
Write XML description.
SmartPointer< Spectrometer::Generic > spectrometer() const
Get Photon::spectro_.
virtual std::string className() const
"Photon"
Photon * parent_
Parent Photon.
Definition: GyotoPhoton.h:297
double const * getTransmission() const
Get Photon::transmission_.
Refine last step of integration in a Photon.
Definition: GyotoPhoton.h:295
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.
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:61
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:42
double transmission_freqobs_
Integrated optical transmission.
Definition: GyotoPhoton.h:73
void resetTransmission()
Set transmission to 1 for each channel as well as scalar transmission.
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:79
virtual double getMass() const
Return 0.
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.
Description of the observer screen.
static SmartPointer< Photon > Subcontractor(Gyoto::FactoryMessenger *)
Instanciate Photon from XML description.
virtual void transmit(size_t i, double t)
Update transmission in a given channel.
double freqObs() const
Get Photon::freq_obs__.
SmartPointer< Astrobj::Generic > astrobj() const
Get Photon::object_.