1 | // Dominique YVON, CEA/DAPNIA/SPP 02/2000
|
---|
2 |
|
---|
3 | #ifndef LightSrcSep_H
|
---|
4 | #define LightSrcSep_H
|
---|
5 |
|
---|
6 | #include "abslightsource.h"
|
---|
7 |
|
---|
8 | class LightSrcSep:public AbsLightSource {
|
---|
9 | friend class LSrcRadSpecSep;
|
---|
10 | public:
|
---|
11 | LightSrcSep(){LScrFSep=true; QPtSource=false;}
|
---|
12 | ~LightSrcSep() { }
|
---|
13 | virtual double powSpecDens(double theta,double phi,double freq){
|
---|
14 | // Return power density at coordinates (W/m2/Hz/St)
|
---|
15 | return spectre(freq)*powerDensAmpli(theta,phi);
|
---|
16 | }
|
---|
17 |
|
---|
18 | virtual double spectre(double frequence)=0;
|
---|
19 | // Return the frequency spectrum independent of coordinates
|
---|
20 | // should have no dimension
|
---|
21 | virtual double powerDensAmpli(double theta,double phi)=0;
|
---|
22 | // Return power density Amplidude at coordinates
|
---|
23 | // (W/m2/Hz/St)
|
---|
24 | protected:
|
---|
25 | };
|
---|
26 |
|
---|
27 | class LightSrcDiffBlackBody:public LightSrcSep {
|
---|
28 | // Classe mettant en oeuvre les sources parametrees
|
---|
29 | // Comme des ecarts de temperature a la tempe du CMB
|
---|
30 | // valable dans la limite des petits ecarts de tempe de TCMB
|
---|
31 | // DeltaT retourne la DTCMB apparente au point theta, phi.
|
---|
32 | public:
|
---|
33 | LightSrcDiffBlackBody() {
|
---|
34 | h_kT=6.626e-34/T_CMBR/1.38e-23; // Hz-1
|
---|
35 | Prefac=2*6.626e-34*6.626e-34/(9.e16*1.38e-23*T_CMBR*T_CMBR);
|
---|
36 | // 2*h2/(c2*k*TCMB2) ( W/m2/st/Hz^3/K) ou (J/m2/st/Hz^4/K)
|
---|
37 | }
|
---|
38 | virtual ~LightSrcDiffBlackBody() { };
|
---|
39 | protected:
|
---|
40 | double h_kT; // nanosecondes
|
---|
41 | double Prefac;
|
---|
42 | virtual double DeltaT(double theta,double phi)=0; // en Kelvin
|
---|
43 | virtual double spectre(double freq){ // Frequence en Hz
|
---|
44 | return pow(freq,4)*exp(h_kT*freq)/pow((exp(h_kT*freq)-1),2);
|
---|
45 | // Hz^4
|
---|
46 | }
|
---|
47 | virtual double powerDensAmpli(double theta,double phi){
|
---|
48 | // Return power density Amplidude at coordinates
|
---|
49 | // J/m2/st/Hz^4 ou W/m2/St/Hz^5
|
---|
50 | double PDens= Prefac*DeltaT(theta,phi);
|
---|
51 | return PDens;
|
---|
52 | }
|
---|
53 |
|
---|
54 | };
|
---|
55 |
|
---|
56 |
|
---|
57 | #endif |
---|