Kariba
Loading...
Searching...
No Matches
Powerlaw.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <iostream>
4
5#include <gsl/gsl_spline.h>
6
7#include "Particles.hpp"
8
9namespace kariba {
10
13class Powerlaw : public Particles {
14 protected:
15 double pspec, plnorm;
16 double pmin, pmax;
18
19 public:
20 Powerlaw(size_t size);
21
22 virtual void set_p(double min, double ucom, double bfield, double betaeff, double r,
23 double fsc);
24 virtual void set_p(double min, double gmax);
25 virtual void set_ndens();
26 virtual void set_pspec(double s1);
27 virtual void set_norm(double n);
28
29 virtual bool get_Efficiency() const { return isEfficient; }
30
31 virtual void cooling_steadystate(double ucom, double n0, double bfield, double r,
32 double tshift);
33 virtual double max_p(double ucom, double bfield, double betaeff, double r, double fsc);
34
35 // some functions for protons
36 virtual void set_energy(double gpmin, double fsc, double f_beta, double bfield, double r_g,
37 double z, double r, int infosw, double protdens, double nwind,
38 double Uradjet, const std::string& outputConfiguration,
39 const std::string& source);
40 virtual void check_secondary_charged_syn(double bfield, double gpmax);
41 virtual void ProtonTimescales(double& logdgp, double fsc, double f_beta, double bfield,
42 double gpmin, double& gpmax, double r_g, double z, double r,
43 int infosw, double nwind, double Uradjet,
44 const std::string& outputConfiguration,
45 const std::string& source);
46 virtual double sigma_pp(double Ep);
47 virtual double set_normprot(double nprot);
48 virtual void set_gdens(double& plfrac_p, double Up, double protdens);
49 virtual void set_gdens(double r, double protdens, double nwind, double bfield, double plfrac,
50 double Urad);
51 virtual void set_gdens_pdens(double r, double beta, double Ljet, double ep, double pspec,
52 double& protdens);
53
54 // secondary electrons from pp
55 virtual void set_pp_elecs(gsl_interp_accel* acc_Jp, gsl_spline* spline_Jp, double ntot_prot,
56 double nwind, double plfrac, double gammap_min, double gammap_max,
57 double bfield, double r);
58 // convert secondary electrons from pg from Neutrinos units proper units for
59 // synchrotron radiation
60 virtual void set_pg_electrons(const std::vector<double>& energy,
61 const std::vector<double>& density, double f_beta, double r,
62 double vol, double B);
63
64 // function for electrons from γγ annihilation
65 virtual void Qggeefunction(double r, double vol, double bfield, size_t phot_number,
66 const std::vector<double>& en_perseg,
67 const std::vector<double>& lum_perseg, double gmax);
68
69 virtual void test();
70};
71
72} // namespace kariba
Definition Particles.hpp:76
Definition Powerlaw.hpp:13
virtual void set_ndens()
Definition Powerlaw.cpp:51
virtual void set_gdens_pdens(double r, double beta, double Ljet, double ep, double pspec, double &protdens)
Definition Powerlaw.cpp:341
virtual void Qggeefunction(double r, double vol, double bfield, size_t phot_number, const std::vector< double > &en_perseg, const std::vector< double > &lum_perseg, double gmax)
Definition Powerlaw.cpp:538
virtual void set_pg_electrons(const std::vector< double > &energy, const std::vector< double > &density, double f_beta, double r, double vol, double B)
Definition Powerlaw.cpp:521
double plnorm
Definition Powerlaw.hpp:15
bool isEfficient
Proton acceleration.
Definition Powerlaw.hpp:17
double pmax
Definition Powerlaw.hpp:16
virtual void set_gdens(double &plfrac_p, double Up, double protdens)
Definition Powerlaw.cpp:377
double pmin
Definition Powerlaw.hpp:16
virtual void set_energy(double gpmin, double fsc, double f_beta, double bfield, double r_g, double z, double r, int infosw, double protdens, double nwind, double Uradjet, const std::string &outputConfiguration, const std::string &source)
Definition Powerlaw.cpp:152
double pspec
Definition Powerlaw.hpp:15
virtual void check_secondary_charged_syn(double bfield, double gpmax)
Definition Powerlaw.cpp:263
virtual double set_normprot(double nprot)
Definition Powerlaw.cpp:290
virtual void set_norm(double n)
Definition Powerlaw.cpp:62
virtual void ProtonTimescales(double &logdgp, double fsc, double f_beta, double bfield, double gpmin, double &gpmax, double r_g, double z, double r, int infosw, double nwind, double Uradjet, const std::string &outputConfiguration, const std::string &source)
Definition Powerlaw.cpp:181
virtual void cooling_steadystate(double ucom, double n0, double bfield, double r, double tshift)
Definition Powerlaw.cpp:82
virtual bool get_Efficiency() const
Definition Powerlaw.hpp:29
virtual void test()
simple method to check quantities.
Definition Powerlaw.cpp:649
virtual double sigma_pp(double Ep)
Definition Powerlaw.cpp:277
virtual void set_pspec(double s1)
methods to set the slope and normalization
Definition Powerlaw.cpp:60
virtual void set_p(double min, double ucom, double bfield, double betaeff, double r, double fsc)
Methods to set momentum/energy arrays.
Definition Powerlaw.cpp:25
virtual void set_pp_elecs(gsl_interp_accel *acc_Jp, gsl_spline *spline_Jp, double ntot_prot, double nwind, double plfrac, double gammap_min, double gammap_max, double bfield, double r)
Function that produces the secondary electrons from pp.
Definition Powerlaw.cpp:408
virtual double max_p(double ucom, double bfield, double betaeff, double r, double fsc)
Definition Powerlaw.cpp:136
Definition BBody.hpp:5
const std::array< double, N_ENERGY > energy
Definition EBL.cpp:38