#include "pmixer.h"
#include "mapoperation.h"
/*! \ingroup PMixer
* \file tgsky.cc
* \brief \b PROGRAM \b tgsky
* \l Program which generates different types of random skies
*/
// ------------- Main program --------------
int main(int narg, char* arg[])
{
if ((narg < 5) || ((narg>1) && (strcmp(arg[1],"-h") == 0)) ) {
cout << " tgsky : Generation of random skies " << endl;
cout << " Usage: tgsky NSide TypSky Params FitsFileName [PPFName] " << endl;
cout << " - TypSky = 0 Params= m,sig , Gaussian(m,sig) " << endl;
cout << " - TypSky = 1 Params= m,sig , OOFNoise(sig) + m" << endl;
cout << " - TypSky = 2 Params= K,a,b,m K*cos(a*teta)*sin(b*phi)+m" << endl;
cout << " - TypSky = 3 Params= theta,phi DIPOLE" << endl;
exit(0);
}
try {
double teta,phi;
double gmoy=0., gsig=0.;
#if !defined(SunOS) || !defined(__GNUG__)
// ca se plante sur Sun !
SophyaInit();
#endif
InitTim(); // Initializing the CPU timer
int ns = atoi(arg[1]);
SphereHEALPix sph(ns);
cout << "Filling SphereHEALPix NSide= " << ns
<< " NPixels= " << sph.NbPixels() << endl;
int typ = atoi(arg[2]);
double m,s,a,b,K;
double Theta,Phi;
Theta = 0.;
Phi = 0.;
m = 0.;
s = 1.;
a = b = 1.;
K = 1.;
if ((typ < 0) || (typ > 3)) typ = 0;
if (typ < 2) {
sscanf(arg[3],"%lg,%lg",&m,&s);
cout << " TypSky= " << typ << " m= " << m << " sig= " << s << endl;
if (typ == 1) cout << " ---> OOFNoise() " << endl;
else cout << " ---> NoiseGenerator() " << endl;
}
else if(typ==2) {
sscanf(arg[3],"%lg,%lg,%lg,%lg",&K,&a,&b,&m);
cout << " TypSky= " << typ << " K= " << m << " a= " << a << " b="
<< b << " m= " << m << endl;
cout << " ---> K * cos(a*teta) * sin(b*teta) + m" << endl;
}
else if(typ==3) {
sscanf(arg[3],"%lg,%lg",&Theta,&Phi);
cout << " TypSky= " << typ << " Theta= " << Theta << " phi= " << Phi ;
cout << " ---> DIPOLE " << endl;
}
PrtTim("End of Init ");
if (typ == 2) {
for (int j=0;jNoise()+m;
delete ng;
}
PrtTim("End of Fill ");
// Computing mean and sigma on the sphere
MeanSig(sph.DataBlock(), gmoy, gsig);
cout << "SphereHEALPix Mean= " << gmoy << " Sigma = " << gsig << endl;
PrtTim("End of Mean-Sig ");
if (narg > 5) {
POutPersist s(arg[5]);
FIO_SphereHEALPix fiog(&sph) ;
fiog.Write(s);
cout << "SphereHEALPix written to POutPersist file"
<< (string)(arg[5]) << endl;
PrtTim("End of WritePPF ");
}
FitsIoServer fios;
fios.save(sph, arg[4]);
cout << "SphereHEALPix written to FITS file " << (string)(arg[4]) << endl;
PrtTim("End of WriteFITS ");
}
catch (PThrowable exc) {
cerr << " tgsky: Catched Exception - Msg= " << exc.Msg() << endl;
}
catch (...) {
cerr << " tgsky: Catched unknown exception (...) " << endl;
}
cout << " ============ End of tgsky program ======== " << endl;
return 0;
}