31 #ifndef __GyotoPolishDoughnut_H_
32 #define __GyotoPolishDoughnut_H_
35 namespace Astrobj {
class PolishDoughnut; }
36 class FactoryMessenger;
103 void operator=(const PolishDoughnut&) ;
108 double
getL0() const;
139 virtual void
setMetric(Gyoto::SmartPointer<Gyoto::Metric::Generic>);
147 int
Impact(Photon *ph, size_t index,
148 Astrobj::Properties *data);
156 int
Impact_(Photon *ph, size_t index,
157 Astrobj::Properties *data);
159 virtual double operator()(double const coord[4]) ;
164 #ifdef GYOTO_USE_XERCES
165 virtual void
fillElement(FactoryMessenger *fmp) const ;
176 virtual void
tell(Gyoto::Hook::Teller * msg);
177 virtual void
getVelocity(double const pos[4], double vel[4]) ;
190 size_t* chaninds, size_t nbnu,
191 double dsem, double *cph, double *co) const;
193 virtual double
emission(double nu_em, double dsem, double coord_ph[8],
194 double coord_obj[8]) const;
195 virtual void
emission(double Inu[], double nu_em[], size_t nbnu,
196 double dsem, double coord_ph[8],
197 double coord_obj[8]=NULL) const ;
200 double numax, double T_electron,
201 double n_e, double n_j,
202 double amplification,
204 int comptonorder) const;
207 double numax, double nu_0,
209 double amplification,
211 double alpha1, double alpha2,
212 double alpha3, double preff,
213 int comptonorder) const;
215 double
transmission(double nuem, double dsem, double coord_ph[8]) const ;
216 double
BBapprox(double nuem, double Te) const;
217 static double
funcxM(double alpha1, double alpha2, double alpha3, double xM);
222 double
potential(double r, double theta) const;
274 static double bessi0(
double xx);
275 static double bessi1(
double xx);
276 static double bessk0(
double xx);
277 static double bessk1(
double xx);
278 static double bessk(
int nn,
double xx);