28 #ifndef __GyotoAstrobj_H_
29 #define __GyotoAstrobj_H_
47 class FactoryMessenger;
76 (FactoryMessenger* fmp) {
78 #ifdef GYOTO_USE_XERCES
79 if (fmp) ao -> setParameters(fmp);
276 virtual void
metric(SmartPointer<Metric::Generic>) ;
289 virtual double
rMax();
290 virtual double
rMax() const;
298 virtual double
rMax(std::string const &unit);
299 virtual double
rMax(std::string const &unit) const;
306 virtual double
deltaMax(double coord[8]);
308 const std::string
kind() const;
316 virtual void
rMax(double val);
325 virtual void
rMax(double val, std::string const &unit);
340 void radiativeQ(bool flag);
341 bool radiativeQ() const ;
343 void redshift(bool flag);
344 bool redshift() const ;
358 #ifdef GYOTO_USE_XERCES
419 virtual int
Impact(Gyoto::Photon* ph, size_t index,
420 Astrobj::Properties *data=NULL) = 0 ;
436 double* coord_obj_hit, double dt,
437 Astrobj::Properties* data) const;
488 virtual double
emission(double nu_em, double dsem, double coord_ph[8],
489 double coord_obj[8]=NULL)
514 virtual void
emission(double Inu[], double nu_em[], size_t nbnu,
515 double dsem, double coord_ph[8],
516 double coord_obj[8]=NULL) const ;
519 virtual void radiativeQ(double Inu[], double Taunu[],
520 double nu_em[], size_t nbnu,
521 double dsem, double coord_ph[8],
522 double coord_obj[8]=NULL) const ;
536 double c_ph[8], double c_obj[8]=NULL) const;
545 size_t const * chaninds, size_t nbnu,
546 double dsem, double *cph, double *co) const;
558 virtual double
transmission(double nuem, double dsem, double coord[8]) const ;
614 int first_dmin_found;
643 double * impactcoords;
707 void
init(size_t nbnuobs=0);
728 void intensityConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
730 void intensityConverter(std::string);
732 void spectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
734 void spectrumConverter(std::string);
736 void binSpectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
738 void binSpectrumConverter(std::string);
int noredshift_
1 to impose redshift factor g = 1
Definition: GyotoAstrobj.h:219
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:83
virtual Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
virtual double deltaMax(double coord[8])
Get max step constraint for adaptive integration.
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.
bool opticallyThin() const
Query whether object is optically thin.
int radiativeq_
1 to use the new radiativeQ function (under dvp)
Definition: GyotoAstrobj.h:218
A null geodesic transporting light.
Definition: GyotoPhoton.h:52
Base class for metrics.
Definition: GyotoMetric.h:148
Reference-counting pointers.
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ν
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:76
SmartPointer< Gyoto::Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoAstrobj.h:202
const std::string kind() const
Get the kind of the Astrobj (e.g. "Star")
void init(char const *pluglist=NULL)
Initialise the various registers.
virtual double rMax()
Get maximal distance from center of coordinate system.
virtual double transmission(double nuem, double dsem, double coord[8]) const
Transmission: exp( αν * dsem )
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.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
virtual void setParameters(FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:73
SmartPointer< Gyoto::Astrobj::Generic > Subcontractor_t(Gyoto::FactoryMessenger *)
A function to build instances of a specific Astrobj::Generic sub-class.
Definition: GyotoAstrobj.h:62
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:78
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)=0
Does a photon at these coordinates impact the object?
bool flag_radtransf_
1 if radiative transfer inside Astrobj, else 0
Definition: GyotoAstrobj.h:216
virtual Generic * clone() const =0
Cloner.
Base class for astronomical object.
Definition: GyotoAstrobj.h:188
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Object with properties.
Definition: GyotoObject.h:136
Gyoto::Astrobj::Subcontractor_t * getSubcontractor(std::string name, int errmode=0)
Query the Astrobj register.
Observable properties of an Astronomical object.
Definition: GyotoAstrobj.h:591
Entry in a register (or a full register)
Definition: GyotoRegister.h:92