source: Sophya/trunk/Cosmo/RadioBeam/radutil.h@ 4027

Last change on this file since 4027 was 4027, checked in by ansari, 14 years ago

Implementatiom prise en compte dA(z) ds la calcul de bruit Pnoise(k) - Reza 17/10/2011

File size: 2.8 KB
Line 
1// Classes to compute simple quantities for radio / 21 cm
2// R. Ansari - June 2010
3
4#ifndef RADUTIL_SEEN
5#define RADUTIL_SEEN
6
7#include "machdefs.h" // SOPHYA .h
8#include "sopnamsp.h" // SOPHYA .h
9
10#include "vector3d.h" // conversion d'angle
11
12class H21Conversions {
13public:
14 // redshift nul, angle solide du pixel en steradian
15 H21Conversions(double freq=0., double opix=1.e-5);
16
17 double toJansky(double temp); // Conversion d'une temperature (Kelvin) en jansky
18 double toKelvin(double jy); // Conversion de Jansky en temperature (Kelvin)
19
20 double Mean21cmTemperature_mK(); // Temperature moyenne de l'emission a 21 cm en mK
21 inline double T21cm_Kelvin() { return Mean21cmTemperature_mK()/1000.; }
22 inline double T21cm_mK() { return Mean21cmTemperature_mK(); }
23
24 void setFrequency(double nu); // on definit la frequence en MHz
25 inline void setRedshift(double z) // on definit le redshift
26 { setFrequency(Freq021cm_Cst/(1+z)); }
27 inline void setLambda(double lam) // on definit la longueur d'onde en m
28 { setFrequency(SpeedOfLight_Cst/lam); }
29
30 inline void setOmegaPix(double opix) // angle solide en steradian
31 { omegapix_ = opix; }
32 inline void setOmegaPixDeg2(double opix) // angle solide en Deg^2
33 { double cf=Angle(1.,Angle::Degree).ToRadian(); omegapix_ = opix*cf*cf; }
34 inline void setOmegaPixArcmin2(double opix) // angle solide en Arcmin^2
35 { double cf=Angle(1.,Angle::ArcMin).ToRadian(); omegapix_ = opix*cf*cf; }
36
37 // Definition des parametres cosmologiques utiles pour le calcul de la temperature d'emission a 21 cm
38 // retourne la valeur de OmegaLambda (univers plat)
39 double setCosmoParam(double omegamatter=0.2581, double omegabaryon=0.0441, double h100=0.719, double fracHI=0.02);
40 inline void setFracHI(double fracHI=0.02) { fracHI_=fracHI; }
41
42 inline double getRedshift() { return z_; }
43 inline double getFrequency() { return freq_; }
44 inline double getLambda() { return lambda_; }
45
46 inline double getOmegaPix() // angle solide en steradian
47 { return omegapix_; }
48 inline double getOmegaPixArcmin2() // angle solide en Arcmin^2
49 { double cf=Angle(1.,Angle::ArcMin).ToRadian(); return omegapix_/cf/cf; }
50 inline double getOmegaPixDeg2() // angle solide en Deg^2
51 { double cf=Angle(1.,Angle::Degree).ToRadian(); return omegapix_/cf/cf; }
52
53
54 static double SpeedOfLight_Cst; // Speed of light m/sec
55 static double Freq021cm_Cst; // 21 cm transition frequency in MHz
56 static double k_Boltzman_Cst; // Boltzmann constant (SI Units)
57
58 double z_;
59 double freq_;
60 double lambda_;
61 double omegapix_;
62
63 // Parametres cosmologiques pour calcul du coefficient de conversion Mass to T21
64 double OmegaMatter_;
65 double OmegaBaryons_;
66 double OmegaLambda_;
67 double h100_;
68 double fracHI_;
69};
70
71#endif
Note: See TracBrowser for help on using the repository browser.