28 #ifndef __GyotoAstrobj_H_
29 #define __GyotoAstrobj_H_
77 ao -> setParameters(fmp);
96 #if defined GYOTO_USE_XERCES
288 virtual void
setMetric(SmartPointer<Metric::Generic>) ;
309 virtual double
getRmax(std::string unit);
311 const std::string
getKind() const;
320 virtual void
setRmax(double val);
329 virtual void
setRmax(double val, std::string unit);
392 #ifdef GYOTO_USE_XERCES
400 virtual void
fillElement(FactoryMessenger *fmp) const ;
462 virtual int
Impact(Gyoto::Photon* ph, size_t index,
463 Astrobj::Properties *data=NULL) = 0 ;
479 double* coord_obj_hit, double dt,
480 Astrobj::Properties* data) const;
531 virtual double
emission(double nu_em, double dsem, double coord_ph[8],
532 double coord_obj[8]=NULL)
557 virtual void
emission(double Inu[], double nu_em[], size_t nbnu,
558 double dsem, double coord_ph[8],
559 double coord_obj[8]=NULL) const ;
573 double c_ph[8], double c_obj[8]=NULL) const;
582 size_t const * chaninds, size_t nbnu,
583 double dsem, double *cph, double *co) const;
595 virtual double
transmission(double nuem, double dsem, double coord[8]) const ;
651 int first_dmin_found;
680 double * impactcoords;
740 void
init(size_t nbnuobs=0);
750 void setIntensityConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
752 void setIntensityConverter(std::string);
754 void setSpectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
756 void setSpectrumConverter(std::string);
758 void setBinSpectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
760 void setBinSpectrumConverter(std::string);
int rmax_set_
Never recompute rmax: it was externally set.
Definition: GyotoAstrobj.h:224
int flag_radtransf_
1 if radiative transfer inside Astrobj, else 0
Definition: GyotoAstrobj.h:232
virtual double integrateEmission(double nu1, double nu2, double dsem, double c_ph[8], double c_obj[8]=NULL) const
∫ν1ν2 Iν dν (or jν)
virtual void processHitQuantities(Photon *ph, double *coord_ph_hit, double *coord_obj_hit, double dt, Astrobj::Properties *data) const
Fills Astrobj::Properties.
void setFlag_radtransf(int flag)
Set whether the object is optically thin.
A null geodesic transporting light.
Definition: GyotoPhoton.h:51
Base class for metrics.
Definition: GyotoMetric.h:142
Reference-counting pointers.
int getFlag_radtransf() const
Query whether object is optically thin.
void Register(std::string name, Gyoto::Astrobj::Subcontractor_t *scp)
Make an Astrobj kind known to the Factory.
virtual double emission(double nu_em, double dsem, double coord_ph[8], double coord_obj[8]=NULL) const
Specific intensity Iν
virtual void unsetRmax()
Set rmax_set_ to 0.
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:75
virtual void setMetric(SmartPointer< Metric::Generic >)
Set the Metric Generic::gg_.
SmartPointer< Gyoto::Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoAstrobj.h:198
virtual void fillElement(FactoryMessenger *fmp) const
Fill XML section.
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:91
void init(char const *pluglist=NULL)
Initialise the various registers.
virtual double transmission(double nuem, double dsem, double coord[8]) const
Transmission: exp( αν * dsem )
const std::string kind_
Kind of object (e.g. "Star"...)
Definition: GyotoAstrobj.h:230
double rmax_
Maximum distance to the center of the coordinate system [geometrical units].
Definition: GyotoAstrobj.h:214
Gyoto ubiquitous macros and typedefs.
Compile-time configuration.
Gyoto::Register::Entry * Register_
The Astrobj register.
void initRegister()
Empty the Astrobj register.
virtual void setParameters(FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:72
SmartPointer< Gyoto::Astrobj::Generic > Subcontractor_t(Gyoto::FactoryMessenger *)
A function to build instances of a specific Astrobj::Generic sub-class.
Definition: GyotoAstrobj.h:61
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:79
virtual double getRmax()
Get maximal distance from center of coordinate system.
const std::string getKind() const
Get the kind of the Astrobj (e.g. "Star")
virtual SmartPointer< Metric::Generic > getMetric() const
Get the Metric Generic::gg_.
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)=0
Does a photon at these coordinates impact the object?
virtual Generic * clone() const =0
Cloner.
Base class for astronomical object.
Definition: GyotoAstrobj.h:187
virtual Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
virtual void setRmax(double val)
Set maximal distance from center of coordinate system.
Gyoto::Astrobj::Subcontractor_t * getSubcontractor(std::string name, int errmode=1)
Query the Astrobj register.
Observable properties of an Astronomical object.
Definition: GyotoAstrobj.h:628
virtual int setParameter(std::string name, std::string content, std::string unit)
Set parameter by name.
Entry in a register (or a full register)
Definition: GyotoRegister.h:95