[2219] | 1 | //#define TOISEQBUFFERED
|
---|
| 2 |
|
---|
| 3 | #include <unistd.h>
|
---|
| 4 | #include "toi.h"
|
---|
| 5 | #include "fitstoirdr.h"
|
---|
| 6 | #include "fitstoiwtr.h"
|
---|
| 7 | #include "fitsspherehealpix.h"
|
---|
| 8 | #include "sambainit.h"
|
---|
| 9 | #include <stdexcept>
|
---|
| 10 |
|
---|
| 11 | void usage(void);
|
---|
| 12 | void usage(void) {
|
---|
| 13 | cout<<"map_comp [-h] fitsphere1 fitshere2 fitsphere2w fitsout"<<endl;
|
---|
| 14 | return;
|
---|
| 15 | }
|
---|
| 16 |
|
---|
| 17 | ////////////////////////////////////////////////////////////////
|
---|
| 18 | int main(int narg, char** arg) {
|
---|
| 19 |
|
---|
| 20 |
|
---|
| 21 | //-- Decodage arguments
|
---|
| 22 |
|
---|
| 23 | if(optind+3>=narg) {usage(); exit(2);}
|
---|
| 24 | string const fitsphere1 = arg[optind];
|
---|
| 25 | string const fitsphere2 = arg[optind+1];
|
---|
| 26 | string const fitsphere2w = arg[optind+2];
|
---|
| 27 | string const fitsphout = arg[optind+3];
|
---|
| 28 |
|
---|
| 29 | cout<<">>>> map_comp:"<<endl
|
---|
| 30 | <<"Fits OutFile "<<fitsphout<<endl
|
---|
| 31 | <<"Fits Healpix Spheres "<<fitsphere1<< " " <<fitsphere2<< " " << fitsphere2w <<endl;
|
---|
| 32 |
|
---|
| 33 | SophyaInit();
|
---|
| 34 |
|
---|
| 35 | //--------------------------------------------------------------------
|
---|
| 36 | try {
|
---|
| 37 | //--------------------------------------------------------------------
|
---|
| 38 |
|
---|
| 39 |
|
---|
| 40 | // Lecture de la sphere Healpix
|
---|
| 41 | SphereHEALPix<r_8> sph1,sph2,sph2w,sphdiff;
|
---|
| 42 | FitsInFile sfits1(fitsphere1);
|
---|
| 43 | sfits1 >> sph1;
|
---|
| 44 | cout<<"SphereHEALPix: Type de map : "<<sph1.TypeOfMap()<<endl
|
---|
| 45 | <<" Nombre de pixels : "<<sph1.NbPixels()<<endl;
|
---|
| 46 | FitsInFile sfits2(fitsphere2);
|
---|
| 47 | sfits2 >> sph2;
|
---|
| 48 | cout<<"SphereHEALPix: Type de map : "<<sph2.TypeOfMap()<<endl
|
---|
| 49 | <<" Nombre de pixels : "<<sph2.NbPixels()<<endl;
|
---|
| 50 |
|
---|
| 51 | if((sph1.TypeOfMap() != sph2.TypeOfMap()) || (sph1.NbPixels() !=sph2.NbPixels())) {
|
---|
| 52 | cout << " Maps differ " << endl;
|
---|
| 53 | exit(-1);
|
---|
| 54 | }
|
---|
| 55 | FitsInFile sfits2w(fitsphere2w);
|
---|
| 56 | sfits2w >> sph2w;
|
---|
| 57 | cout<<"SphereHEALPix: Type de map : "<<sph2w.TypeOfMap()<<endl
|
---|
| 58 | <<" Nombre de pixels : "<<sph2w.NbPixels()<<endl;
|
---|
| 59 | if((sph2w.TypeOfMap() != sph2.TypeOfMap()) || (sph2w.NbPixels() !=sph2.NbPixels())) {
|
---|
| 60 | cout << " Maps differ" << endl;
|
---|
| 61 | exit(-1);
|
---|
| 62 | }
|
---|
| 63 | int nlat = sph1.SizeIndex();
|
---|
| 64 | int npix = sph1.NbPixels();
|
---|
| 65 | // Creation de la sphere Healpix
|
---|
| 66 | SphereHEALPix<r_8>* sph = new SphereHEALPix<r_8>(nlat);
|
---|
| 67 | cout<<"SphereHEALPix: Type de map : "<<sph->TypeOfMap()<<endl
|
---|
| 68 | <<" Nombre de pixels : "<<sph->NbPixels()<<endl
|
---|
| 69 | <<" Nlat : "<<sph->SizeIndex()<<endl;
|
---|
| 70 |
|
---|
| 71 |
|
---|
| 72 | TArray<r_8> diff(npix);
|
---|
| 73 | // for (int j=0;j<npix;j++) {cout << j << " " << sph1.PixVal(j)<<endl;}
|
---|
| 74 | int nok=0;
|
---|
| 75 |
|
---|
| 76 | for (int i=0;i<npix;i++) if ((sph2w.PixVal(i) > 0) && (sph1.PixVal(i) > -999.)) {
|
---|
| 77 | diff[i] = sph1.PixVal(i) - sph2.PixVal(i);
|
---|
| 78 | sph->PixVal(i)=diff[i];
|
---|
| 79 | nok ++;
|
---|
| 80 | } else sph->PixVal(i)=-99999999.;
|
---|
| 81 |
|
---|
| 82 | r_8 min,max;
|
---|
| 83 | diff.MinMax(min,max);
|
---|
| 84 | cout << " MinMax = " << min << " " << max << endl;
|
---|
| 85 | cout << " Mean = " << diff.Sum()/npix << endl;
|
---|
| 86 | cout << " Var = " << diff.SumX2()/npix << endl;
|
---|
| 87 | cout << "Values computed on " << double(nok)/npix*100. << "% of the map" << endl;
|
---|
| 88 |
|
---|
| 89 | // Ecriture de la sphere Healpix sur fits
|
---|
| 90 | {
|
---|
| 91 | FitsOutFile sfits(fitsphout,FitsFile::clear);
|
---|
| 92 | cout<<"tsttoi2map: Creating sphere fits file "<<fitsphout<<endl;
|
---|
| 93 | sfits << *sph;
|
---|
| 94 | }
|
---|
| 95 |
|
---|
| 96 |
|
---|
| 97 | //--------------------------------------------------------------------
|
---|
| 98 | } catch (PThrowable & exc) {
|
---|
| 99 | cout<<"\ntstmap2toi: Catched Exception \n"<<(string)typeid(exc).name()
|
---|
| 100 | <<" - Msg= "<<exc.Msg()<<endl;
|
---|
| 101 | } catch (const std::exception & sex) {
|
---|
| 102 | cout<<"\ntstmap2toi: Catched std::exception \n"
|
---|
| 103 | <<(string)typeid(sex).name()<<endl;
|
---|
| 104 | } catch (...) {
|
---|
| 105 | cout<<"\ntstmap2toi: some other exception was caught ! "<<endl;
|
---|
| 106 | }
|
---|
| 107 | //--------------------------------------------------------------------
|
---|
| 108 |
|
---|
| 109 | exit(0);
|
---|
| 110 | }
|
---|