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 |
|
---|
20 | void setFrequency(double nu); // on definit la frequence en MHz
|
---|
21 | inline void setRedshift(double z) // on definit le redshift
|
---|
22 | { setFrequency(Freq021cm_Cst/(1+z)); }
|
---|
23 | inline void setLambda(double lam) // on definit la longueur d'onde en m
|
---|
24 | { setFrequency(SpeedOfLight_Cst/lam); }
|
---|
25 |
|
---|
26 | inline void setOmegaPix(double opix) // angle solide en steradian
|
---|
27 | { omegapix_ = opix; }
|
---|
28 | inline void setOmegaPixDeg2(double opix) // angle solide en Deg^2
|
---|
29 | { double cf=Angle(1.,Angle::Degree).ToRadian(); omegapix_ = opix*cf*cf; }
|
---|
30 | inline void setOmegaPixArcmin2(double opix) // angle solide en Arcmin^2
|
---|
31 | { double cf=Angle(1.,Angle::ArcMin).ToRadian(); omegapix_ = opix*cf*cf; }
|
---|
32 |
|
---|
33 | inline double getRedshift() { return z_; }
|
---|
34 | inline double getFrequency() { return freq_; }
|
---|
35 | inline double getLambda() { return lambda_; }
|
---|
36 |
|
---|
37 | inline double getOmegaPix() // angle solide en steradian
|
---|
38 | { return omegapix_; }
|
---|
39 | inline double getOmegaPixArcmin2() // angle solide en Arcmin^2
|
---|
40 | { double cf=Angle(1.,Angle::ArcMin).ToRadian(); return omegapix_/cf/cf; }
|
---|
41 | inline double getOmegaPixDeg2() // angle solide en Deg^2
|
---|
42 | { double cf=Angle(1.,Angle::Degree).ToRadian(); return omegapix_/cf/cf; }
|
---|
43 |
|
---|
44 | static double SpeedOfLight_Cst; // Speed of light m/sec
|
---|
45 | static double Freq021cm_Cst; // Speed of light m/sec
|
---|
46 | static double k_Boltzman_Cst; // Boltzmann constant (SI Units)
|
---|
47 |
|
---|
48 | double z_;
|
---|
49 | double freq_;
|
---|
50 | double lambda_;
|
---|
51 | double omegapix_;
|
---|
52 | };
|
---|
53 |
|
---|
54 | #endif
|
---|