Kariba
Loading...
Searching...
No Matches
Cyclosyn.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "Radiation.hpp"
4
5namespace kariba {
6
8class Cyclosyn : public Radiation {
9 protected:
10 double bfield; // Magnetic field in emitting region
11 double mass_gr; // Mass of the emitting particle
12 gsl_spline* syn_f;
13 gsl_interp_accel* syn_acc;
14 std::vector<double> cyclosyn_absorption_rate;
15
16 public:
17 ~Cyclosyn();
18 Cyclosyn(size_t size);
19
20 virtual double emis_integral(double nu, double gmin, double gmax, gsl_spline* eldis,
21 gsl_interp_accel* acc_eldis);
22 virtual double abs_integral(double nu, double gmin, double gmax, gsl_spline* eldis_diff,
23 gsl_interp_accel* acc_eldis_diff);
24
25 virtual void cycsyn_spectrum(double gmin, double gmax, gsl_spline* eldis,
26 gsl_interp_accel* acc_eldis, gsl_spline* eldis_diff,
27 gsl_interp_accel* acc_eldis_diff);
28
29 virtual double nu_syn(double gamma);
30 virtual double nu_syn();
31
32 virtual void set_frequency(double numin, double numax);
33 virtual void set_bfield(double b);
34 virtual void set_mass(double mass);
35
36 virtual void test();
37
38 const std::vector<double>& get_cyclosyn_absorption_rate() const { return cyclosyn_absorption_rate; }
39
40 friend double cyclosyn_kernel(double gamma, double nu, double b, gsl_spline* syn, gsl_interp_accel* acc_syn);
41 friend double cyclosyn_emis(double log_gamma, void* pars);
42 friend double cyclosyn_abs(double log_gamma, void* pars);
43};
44
45} // namespace kariba
Class synchrotron photons, inherited from Radiation.hpp.
Definition Cyclosyn.hpp:8
virtual double abs_integral(double nu, double gmin, double gmax, gsl_spline *eldis_diff, gsl_interp_accel *acc_eldis_diff)
Definition Cyclosyn.cpp:144
friend double cyclosyn_emis(double log_gamma, void *pars)
Single particle emissivity/absorption coefficient calculations.
Definition Cyclosyn.cpp:85
virtual void test()
Definition Cyclosyn.cpp:280
virtual double emis_integral(double nu, double gmin, double gmax, gsl_spline *eldis, gsl_interp_accel *acc_eldis)
Definition Cyclosyn.cpp:126
~Cyclosyn()
Definition Cyclosyn.cpp:27
gsl_interp_accel * syn_acc
Definition Cyclosyn.hpp:13
virtual double nu_syn()
Definition Cyclosyn.cpp:251
double mass_gr
Definition Cyclosyn.hpp:11
gsl_spline * syn_f
Definition Cyclosyn.hpp:12
friend double cyclosyn_abs(double log_gamma, void *pars)
Definition Cyclosyn.cpp:103
virtual void set_mass(double mass)
Method to set the particle mass.
Definition Cyclosyn.cpp:278
friend double cyclosyn_kernel(double gamma, double nu, double b, gsl_spline *syn, gsl_interp_accel *acc_syn)
Definition Cyclosyn.cpp:44
const std::vector< double > & get_cyclosyn_absorption_rate() const
Definition Cyclosyn.hpp:38
std::vector< double > cyclosyn_absorption_rate
Definition Cyclosyn.hpp:14
double bfield
Definition Cyclosyn.hpp:10
virtual void cycsyn_spectrum(double gmin, double gmax, gsl_spline *eldis, gsl_interp_accel *acc_eldis, gsl_spline *eldis_diff, gsl_interp_accel *acc_eldis_diff)
Comoving and observed specific luminosity for the input particle distribution.
Definition Cyclosyn.cpp:163
virtual void set_frequency(double numin, double numax)
Method to set up the frequency array over desired range.
Definition Cyclosyn.cpp:264
virtual void set_bfield(double b)
Method to set magnetic field.
Definition Cyclosyn.cpp:275
Base class for photon/neutrino distributions.
Definition Radiation.hpp:71
Definition BBody.hpp:5