28#ifndef __GyotoAstrobj_H_
29#define __GyotoAstrobj_H_
78 ao -> plugins(plugin) ;
79#ifdef GYOTO_USE_XERCES
80 if (fmp) ao -> setParameters(fmp);
104 std::vector<std::string> &plugin,
303 virtual void
metric(SmartPointer<Metric::Generic>) ;
325 virtual double
rMax(std::string const &unit);
326 virtual double
rMax(std::string const &unit) const;
335 const std::string
kind() const;
352 virtual void
rMax(double val, std::string const &unit);
369 void showshadow(bool flag);
370 bool showshadow() const ;
372 void redshift(bool flag);
373 bool redshift() const ;
387#ifdef GYOTO_USE_XERCES
451 virtual int
Impact(Gyoto::Photon* ph, size_t index,
452 Astrobj::Properties *data=NULL) = 0 ;
468 double const * coord_obj_hit, double dt,
469 Astrobj::Properties* data) const;
471 double* coord_obj_hit, double dt,
472 Astrobj::Properties* data) const = delete ;
523 virtual double
emission(double nu_em, double dsem, state_t const &coord_ph,
524 double const coord_obj[8]=NULL)
526 virtual double
emission(double nu_em, double dsem, double coord_ph[8],
527 double coord_obj[8]=NULL)
552 virtual void
emission(double Inu[], double const nu_em[], size_t nbnu,
553 double dsem, state_t const &coord_ph,
554 double const coord_obj[8]=NULL) const ;
555 virtual void
emission(double Inu[], double nu_em[], size_t nbnu,
556 double dsem, double coord_ph[8],
557 double coord_obj[8]=NULL) const = delete ;
563 double const nu_em[], size_t nbnu,
564 double dsem, state_t const &coord_ph,
565 double const coord_obj[8]=NULL) const ;
566 virtual void
radiativeQ(double Inu[], double Taunu[],
567 double nu_em[], size_t nbnu,
568 double dsem, double coord_ph[8],
569 double coord_obj[8]=NULL) const = delete ;
570 virtual void
radiativeQ(double *Inu, double *Qnu, double *Unu, double *Vnu,
571 double *alphaInu, double *alphaQnu,
572 double *alphaUnu, double *alphaVnu,
573 double *rQnu, double *rUnu, double *rVnu,
574 double const *nuem , size_t nbnu, double dsem,
576 double const *co) const ;
590 state_t const &c_ph, double const c_obj[8]=NULL) const;
593 double c_ph[8], double c_obj[8]=NULL) const=delete;
601 size_t const * chaninds, size_t nbnu,
602 double dsem, state_t const &cph, double const *co) const;
605 size_t const * chaninds, size_t nbnu,
606 double dsem, double *cph, double *co) const = delete;
618 virtual double
transmission(double nuem, double dsem, state_t const &coord_ph, double const coord_obj[8]) const ;
620 virtual double
transmission(double nuem, double dsem, state_t const &coord) const = delete;
621 virtual double
transmission(double nuem, double dsem, double coord[8]) const = delete;
677 int first_dmin_found;
710 double * impactcoords;
795 void intensityConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
797 void intensityConverter(std::string);
799 void spectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
801 void spectrumConverter(std::string);
803 void binSpectrumConverter(Gyoto::SmartPointer<Gyoto::Units::Converter>);
805 void binSpectrumConverter(std::string);
Compile-time configuration.
Gyoto ubiquitous macros and typedefs.
#define GYOTO_OBJECT
Declare class::properties and class::getProperties()
Definition: GyotoObject.h:84
#define GYOTO_OBJECT_ACCESSORS_UNIT(method)
Declare a quadruplet of accessors to double member that supports unit.
Definition: GyotoObject.h:70
Reference-counting pointers.
Base class for astronomical object.
Definition: GyotoAstrobj.h:199
int __defaultfeatures
Whether some virtual methods are implemented.
Definition: GyotoAstrobj.h:214
virtual double transmission(double nuem, double dsem, state_t const &coord_ph, double const coord_obj[8]) const
Transmission: exp( αν * dsem )
virtual void setParameters(FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
double deltamaxinsidermax_
Maximum Photon integration step inside rmax_ [geometrical units].
Definition: GyotoAstrobj.h:241
const std::string kind() const
Get the kind of the Astrobj (e.g. "Star")
virtual double integrateEmission(double nu1, double nu2, double dsem, state_t const &c_ph, double const c_obj[8]=NULL) const
∫ν1ν2 Iν dν (or jν)
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
bool flag_radtransf_
1 if radiative transfer inside Astrobj, else 0
Definition: GyotoAstrobj.h:243
int shadow_
1 to highlight the shadow region in the image
Definition: GyotoAstrobj.h:245
double rmax_
Maximum distance to the center of the coordinate system [geometrical units].
Definition: GyotoAstrobj.h:233
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)=0
Does a photon at these coordinates impact the object?
bool opticallyThin() const
Query whether object is optically thin.
virtual void radiativeQ(double Inu[], double Taunu[], double const nu_em[], size_t nbnu, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
emission and transmission together
virtual Generic * clone() const =0
Cloner.
virtual double emission(double nu_em, double dsem, state_t const &coord_ph, double const coord_obj[8]=NULL) const
Specific intensity Iν
virtual void processHitQuantities(Photon *ph, state_t const &coord_ph_hit, double const *coord_obj_hit, double dt, Astrobj::Properties *data) const
Fills Astrobj::Properties.
virtual double deltaMax(double coord[8])
Get max step constraint for adaptive integration.
virtual double rMax()
Get maximal distance from center of coordinate system.
virtual Gyoto::Quantity_t getDefaultQuantities()
Which quantities to compute if know was requested.
int noredshift_
1 to impose redshift factor g = 1
Definition: GyotoAstrobj.h:246
SmartPointer< Gyoto::Metric::Generic > gg_
The Metric in this end of the Universe.
Definition: GyotoAstrobj.h:221
Observable properties of an Astronomical object.
Definition: GyotoAstrobj.h:654
Factory / SmartPointee::Subcontractor_t interface.
Definition: GyotoFactoryMessenger.h:92
Base class for metrics.
Definition: GyotoMetric.h:162
Object with properties.
Definition: GyotoObject.h:152
A null geodesic transporting light.
Definition: GyotoPhoton.h:56
Entry in a register (or a full register)
Definition: GyotoRegister.h:117
Can be pointed to by a SmartPointer.
Definition: GyotoSmartPointer.h:81
SmartPointer< Gyoto::Astrobj::Generic > Subcontractor_t(Gyoto::FactoryMessenger *, std::vector< std::string > const &)
A function to build instances of a specific Astrobj::Generic sub-class.
Definition: GyotoAstrobj.h:62
Gyoto::Astrobj::Subcontractor_t * getSubcontractor(std::string name, std::vector< std::string > &plugin, int errmode=0)
Query the Astrobj register.
void initRegister()
Empty the Astrobj register.
SmartPointer< Astrobj::Generic > Subcontractor(FactoryMessenger *fmp, std::vector< std::string > const &plugin)
A template for Subcontractor_t functions.
Definition: GyotoAstrobj.h:76
void Register(std::string name, Gyoto::Astrobj::Subcontractor_t *scp)
Make an Astrobj kind known to the Factory.
Gyoto::Register::Entry * Register_
The Astrobj register.
void init(char const *pluglist=NULL)
Initialise the various registers.
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43
unsigned int Quantity_t
Type for observabke quantities.
Definition: GyotoDefs.h:76