| 1 | // Dominique YVON, CEA/DAPNIA/SPP 02/2000 | 
|---|
| 2 |  | 
|---|
| 3 | #ifndef CARTELOBE_SEEN | 
|---|
| 4 | #define CARTELOBE_SEEN | 
|---|
| 5 |  | 
|---|
| 6 | #include "abslobenopolar.h" | 
|---|
| 7 |  | 
|---|
| 8 | #define NRANSI | 
|---|
| 9 | #include "numrecipes.h" | 
|---|
| 10 | /* Les lobes cartographies ne presentant aucune symetrie spatialle, il est necessaire | 
|---|
| 11 | de connaitre l orientation du repere Ticra pour pouvoir calculer dans les lobes. | 
|---|
| 12 | Ceci est incompatible avec l'etablissement a priori de carte du ciel mesures. | 
|---|
| 13 | Il faut connaitre la strategie de scanning et alors reconstruire les cartes, bref | 
|---|
| 14 | faire tout le boulot. | 
|---|
| 15 | */ | 
|---|
| 16 |  | 
|---|
| 17 | class CarteLobe { | 
|---|
| 18 | /* les cartes de lobe centraux sont stockees selon les variables | 
|---|
| 19 | U=sin(alpha)cos(beta) | 
|---|
| 20 | V=sin(alpha)sin(beta)  ou alpha et beta sont les angle en coordonnees | 
|---|
| 21 | polaires dans le repere du logiciel TICRA | 
|---|
| 22 | Ce sont ces variables qu'il faut passer a la fonction Value pour obtenir | 
|---|
| 23 | une reponse coherente | 
|---|
| 24 | */ | 
|---|
| 25 | // On utilise les Numerical Recepies:gestions de tableau particulieres | 
|---|
| 26 | public: | 
|---|
| 27 | CarteLobe(char fileRoot[]="cartelobevide",double frequence=100.E9,int_4 NbPixelX=100, | 
|---|
| 28 | int_4 NbPixelY=100); | 
|---|
| 29 | virtual ~CarteLobe(); | 
|---|
| 30 | void FitsVisu(char FitsFile[],long NbX=300,long NbY=300); | 
|---|
| 31 | double Value(double UValue,double VValue) const ; | 
|---|
| 32 | // Retourne la valeur de la carte interpole en UValue (X) et en VValue(Y) | 
|---|
| 33 | // Echelle lineaire. | 
|---|
| 34 | double getFreq() const  { return freq;} | 
|---|
| 35 | void UVToAng(double U, double V, double& alpha, double& beta) const; | 
|---|
| 36 | //fonction ecrite dans la limite des petits angles | 
|---|
| 37 | double UCentre(){return (XMin+XMax)/2.;} | 
|---|
| 38 | double VCentre(){return (YMin+YMax)/2.;} | 
|---|
| 39 | void UBornes(double& UMin, double& UMax) const { | 
|---|
| 40 | UMin=(double)XMin; UMax=(double)XMax; return;} | 
|---|
| 41 | void VBornes(double& VMin, double& VMax) const { | 
|---|
| 42 | VMin=(double)YMin; VMax=(double)YMax; return;} | 
|---|
| 43 | double halfAngAperture(); | 
|---|
| 44 | inline double resol() {return resolution;} | 
|---|
| 45 | protected: | 
|---|
| 46 | //NumRecipes NR;  // pour avoir acces au librairies NR | 
|---|
| 47 | long NbPixX; | 
|---|
| 48 | long NbPixY; | 
|---|
| 49 | float *pAxeX; | 
|---|
| 50 | float *pAxeY; | 
|---|
| 51 |  | 
|---|
| 52 | float XMin, XMax; | 
|---|
| 53 | float YMin, YMax; | 
|---|
| 54 | float** pCarte;  // Pointeur sur la carte du lobe,facon NR | 
|---|
| 55 | // Les valeurs sont stockees en decibel | 
|---|
| 56 | double freq;     // Frequence a laquelle la carte du lobe a ete etablie | 
|---|
| 57 | double resolution; //Resolution angulaire de la carte de base | 
|---|
| 58 |  | 
|---|
| 59 | double CalcResol(); | 
|---|
| 60 | }; | 
|---|
| 61 |  | 
|---|
| 62 | #endif | 
|---|