[3783] | 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 |
|
---|
| 12 | class H21Conversions {
|
---|
| 13 | public:
|
---|
| 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 |
|
---|
[3829] | 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 |
|
---|
[3783] | 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 |
|
---|
[3829] | 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.02581, double omegabaryon=0.0441, double h100=0.719, double fracHI=0.02);
|
---|
| 40 | inline void setFracHI(double fracHI=0.02) { fracHI_=fracHI; }
|
---|
| 41 |
|
---|
[3783] | 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 |
|
---|
[3829] | 53 |
|
---|
[3783] | 54 | static double SpeedOfLight_Cst; // Speed of light m/sec
|
---|
| 55 | static double Freq021cm_Cst; // Speed of light m/sec
|
---|
| 56 | static double k_Boltzman_Cst; // Boltzmann constant (SI Units)
|
---|
| 57 |
|
---|
| 58 | double z_;
|
---|
| 59 | double freq_;
|
---|
| 60 | double lambda_;
|
---|
| 61 | double omegapix_;
|
---|
[3829] | 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_;
|
---|
[3783] | 69 | };
|
---|
| 70 |
|
---|
| 71 | #endif
|
---|