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 void set_p(double min, double ucom, double bfield, double betaeff, double r, double fsc);
23 void set_p(double min, double gmax);
24 void set_ndens();
25 void set_pspec(double s1);
26 void set_norm(double n);
27
28 bool get_Efficiency() const { return isEfficient; }
29
30 void cooling_steadystate(double ucom, double n0, double bfield, double r, double tshift);
31 double max_p(double ucom, double bfield, double betaeff, double r, double fsc);
32
33 // some functions for protons
34 void set_energy(double gpmin, double fsc, double f_beta, double bfield, double r_g, double z,
35 double r, int infosw, double protdens, double nwind, double Uradjet,
36 const std::string& outputConfiguration, const std::string& source);
37 void check_secondary_charged_syn(double bfield, double gpmax);
38 void ProtonTimescales(double& logdgp, double fsc, double f_beta, double bfield, double gpmin,
39 double& gpmax, double r_g, double z, double r, int infosw, double nwind,
40 double Uradjet, const std::string& outputConfiguration,
41 const std::string& source);
42 double sigma_pp(double Ep);
43 double set_normprot(double nprot);
44 void set_gdens(double& plfrac_p, double Up, double protdens);
45 void set_gdens(double r, double protdens, double nwind, double bfield, double plfrac,
46 double Urad);
47 void set_gdens_pdens(double r, double beta, double Ljet, double ep, double pspec,
48 double& protdens);
49
50 // secondary electrons from pp
51 void set_pp_elecs(gsl_interp_accel* acc_Jp, gsl_spline* spline_Jp, double ntot_prot,
52 double nwind, double plfrac, double gammap_min, double gammap_max,
53 double bfield, double r);
54 // convert secondary electrons from pg from Neutrinos units proper units for
55 // synchrotron radiation
56 void set_pg_electrons(const std::vector<double>& energy, const std::vector<double>& density,
57 double f_beta, double r, double vol, double B);
58
59 // function for electrons from γγ annihilation
60 void Qggeefunction(double r, double vol, double bfield, size_t phot_number,
61 const std::vector<double>& en_perseg, const std::vector<double>& lum_perseg,
62 double gmax);
63
64 void test();
65};
66
67} // namespace kariba
Definition Particles.hpp:76
Definition Powerlaw.hpp:13
void set_ndens()
Definition Powerlaw.cpp:51
void set_gdens_pdens(double r, double beta, double Ljet, double ep, double pspec, double &protdens)
Definition Powerlaw.cpp:341
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
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
void set_gdens(double &plfrac_p, double Up, double protdens)
Definition Powerlaw.cpp:377
double pmin
Definition Powerlaw.hpp:16
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
void check_secondary_charged_syn(double bfield, double gpmax)
Definition Powerlaw.cpp:263
double set_normprot(double nprot)
Definition Powerlaw.cpp:290
bool get_Efficiency() const
Definition Powerlaw.hpp:28
void set_norm(double n)
Definition Powerlaw.cpp:62
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
void cooling_steadystate(double ucom, double n0, double bfield, double r, double tshift)
Definition Powerlaw.cpp:82
void test()
simple method to check quantities.
Definition Powerlaw.cpp:649
double sigma_pp(double Ep)
Definition Powerlaw.cpp:277
void set_pspec(double s1)
methods to set the slope and normalization
Definition Powerlaw.cpp:60
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
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
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