source: Sophya/trunk/SophyaProg/Tests/tspm.cc@ 606

Last change on this file since 606 was 606, checked in by ansari, 26 years ago

Amelioration test spheres - Reza 20/11/99

File size: 3.7 KB
RevLine 
[542]1#include <iostream.h>
2#include "sambainit.h"
3#include "spheregorski.h"
[606]4#include "spherethetaphi.h"
[542]5
6#include "tod.h"
7#include "timing.h"
8
[606]9template <class T>
10void MeanSig(PixelMap<T> const & map, double& gmoy, double& gsig)
11{
12 gmoy=0.;
13 gsig = 0.;
14 double valok;
15 for(int k=0; k<map.NbPixels(); k++) {
16 valok = map(k);
17 gmoy += valok; gsig += valok*valok;
18 }
19 gmoy /= (double)map.NbPixels();
20 gsig = gsig/(double)map.NbPixels() - gmoy*gmoy;
21 if (gsig >= 0.) gsig = sqrt(gsig);
22}
[542]23
24int main(int narg, char* arg[])
25{
26 double teta,phi;
[606]27 double gmoy, gsig;
28
[542]29 PeidaInit();
30 InitTim(); // Initializing the CPU timer
31 if ((narg > 1) && (strcmp(arg[1],"-h") == 0) ) {
[606]32 cout << " tspm [Gorski_M=32] [M_TetaPhi=64] : Spherical Map Test " << endl;
[542]33 exit(0);
34 }
35
36 int m=32;
37 if (narg >1) m = atoi(arg[1]);
38 cout << " ===== Gorski Spherical Map Test M= " << m << endl;
39
40 SphereGorski<double> sph(m);
41
42 cout << "Filling spherical map NPixels= " << sph.NbPixels() << endl;
43 for (int j=0;j<sph.NbPixels();j++)
44 {
45 sph.PixThetaPhi(j,teta,phi);
46 sph(j)= 0.2* cos(3.*teta)*sin(8*phi);
47 }
48 PrtTim("End of Fill ");
49
50 // Computing mean and sigma on the sphere
[606]51 MeanSig(sph, gmoy, gsig);
52 cout << "SphereGorski<double> Mean= " << gmoy << " Sigma = " << gsig << endl;
[542]53 PrtTim("End of Mean-Sig ");
54
55// Writing to a PPF file
56 {
57 POutPersist s("sphg.ppf");
[606]58 FIO_SphereGorski<double> fiog(&sph) ;
[542]59 fiog.Write(s);
[606]60 cout << "SphereGorski<double> written to sphg.ppf " << endl;
[542]61 }
62
63 // Reading from the file
64 {
65 FIO_SphereGorski<double> fiog("sphg.ppf");
[575]66 SphereGorski<double> sph2 = fiog;
[542]67 PrtTim("End of Write/Read ");
68
[606]69 cout << " Spherical map from file sphg.ppf NPixels= " << sph2.NbPixels() << endl;
70
[542]71 int ndiff = 0;
72 for(int k=0; k<sph2.NbPixels(); k++) {
[606]73// if ((sph2(k)-sph(k)) > 1.e-49) {
74 if ( sph2(k) != sph(k) ) {
75 ndiff++;
76 if (ndiff < 20) cout << "!!!Diff: K= " << k << " SPH2= " << sph2(k) << " SPH= " << sph(k) << endl;
77 }
[542]78 }
[606]79 MeanSig(sph, gmoy, gsig);
[542]80 cout << "SphMapFromFile Mean= " << gmoy << " Sigma = " << gsig << endl;
81 cout << " NDiff = " << ndiff << " (should be zero = 0) " << endl;
82 PrtTim("End of Mean-Sig ");
83 }
84
[606]85
86 int mt=64;
87 if (narg > 2) mt = atoi(arg[2]);
88 cout << "\n ===== ThetaPhi Spherical Map Test MT= " << mt << endl;
89
90 SphereThetaPhi<float> spht(m);
91
92 cout << "Filling spherical map NPixels= " << spht.NbPixels() << endl;
93 for (int j=0;j<spht.NbPixels();j++)
94 {
95 spht.PixThetaPhi(j,teta,phi);
96 spht(j)= 0.5* cos(5.*teta)*sin(10.*phi);
97 }
98 PrtTim("End of Fill ");
99
100 // Computing mean and sigma on the sphere
101 MeanSig(spht, gmoy, gsig);
102 cout << "SphereThetaPhi<float> Mean= " << gmoy << " Sigma = " << gsig << endl;
103 PrtTim("End of Mean-Sig ");
104
105// Writing to a PPF file
106 {
107 POutPersist s("spht.ppf");
108 FIO_SphereThetaPhi<float> fiog(spht) ;
109 fiog.Write(s);
110 cout << "SphereThetaPhi<float> written to spht.ppf " << endl;
111 }
112
113 // Reading from the file
114 {
115 FIO_SphereThetaPhi<float> fiog("spht.ppf");
116 SphereThetaPhi<float> sph2 = fiog;
117 PrtTim("End of Write/Read ");
118
119 cout << " Spherical map from file sph.ppf NPixels= " << sph2.NbPixels() << endl;
120
121 int ndiff = 0;
122 for(int k=0; k<sph2.NbPixels(); k++) {
123// if ((sph2(k)-sph(k)) > 1.e-49) {
124 if ( sph2(k) != spht(k) ) {
125 ndiff++;
126 if (ndiff < 20) cout << "!!!Diff: K= " << k << " SPH2= " << sph2(k) << " SPH= " << sph(k) << endl;
127 }
128 }
129 MeanSig(sph, gmoy, gsig);
130 cout << "SphMapFromFile Mean= " << gmoy << " Sigma = " << gsig << endl;
131 cout << " NDiff = " << ndiff << " (should be zero = 0) " << endl;
132 PrtTim("End of Mean-Sig ");
133 }
134
[542]135 cout << " ===== Fin de TSPM_Test ======== " << endl;
136 return 0;
137}
Note: See TracBrowser for help on using the repository browser.