Index: trunk/SophyaLib/Samba/localmap.cc
===================================================================
--- trunk/SophyaLib/Samba/localmap.cc	(revision 470)
+++ trunk/SophyaLib/Samba/localmap.cc	(revision 473)
@@ -89,5 +89,5 @@
 //++
 template<class T>
-LocalMap<T>::LocalMap(int_4 nx, int_4 ny) : nSzX_(nx), nSzY_(ny)
+LocalMap<T>::LocalMap(int nx, int ny) : nSzX_(nx), nSzY_(ny)
 //
 // Constructeur
@@ -155,5 +155,5 @@
 //++
 template<class T>
-void LocalMap<T>::ReSize(int_4 nx, int_4 ny) 
+void LocalMap<T>::ReSize(int nx, int ny) 
 //
 // Redimensionne l'espace de stokage des pixels
@@ -175,5 +175,5 @@
 //++
 template<class T>
-int_4 LocalMap<T>::NbPixels() const
+int LocalMap<T>::NbPixels() const
 //
 //    Retourne le nombre de pixels du découpage
@@ -185,5 +185,5 @@
 //++
 template<class T>
-T& LocalMap<T>::PixVal(int_4 k)
+T& LocalMap<T>::PixVal(int k)
 //
 //    Retourne la valeur du contenu du pixel d'indice k
@@ -203,5 +203,5 @@
 
 template<class T>
-T const& LocalMap<T>::PixVal(int_4 k) const
+T const& LocalMap<T>::PixVal(int k) const
 //
 //    Retourne la valeur du contenu du pixel d'indice k
@@ -220,5 +220,5 @@
 //++
 template<class T>
-int_4 LocalMap<T>::PixIndexSph(float theta, float phi) const
+int LocalMap<T>::PixIndexSph(double theta,double phi) const
 //
 //    Retourne l'indice du pixel vers lequel pointe une direction définie par 
@@ -234,16 +234,16 @@
 
   // theta et phi en coordonnees relatives (on se ramene a une situation par rapport au plan de reference)
-  float theta_aux=theta;
-  float phi_aux=phi;
+  double theta_aux= theta;
+  double phi_aux  = phi;
   UserToReference(theta_aux, phi_aux);
 
   // coordonnees dans le plan local en unites de pixels
-  float x,y;
-  AngleProjToPix(theta_aux, phi_aux, x, y);
-
-  float xmin= -x0_-0.5;
-  float xmax= xmin+nSzX_;
-  if((x >  xmax) || (x < xmin)) return(-1);
-  float xcurrent= xmin;
+  double x,y;
+  AngleProjToPix(theta_aux,phi_aux, x, y);
+
+  double xmin= -x0_-0.5;
+  double xmax= xmin+nSzX_;
+  if((x > xmax) || (x < xmin)) return(-1);
+  double xcurrent= xmin;
   for(i = 0; i < nSzX_; i++ ) 
     {
@@ -251,8 +251,8 @@
       if( x < xcurrent ) break;
     }
-  float ymin= -y0_-0.5;
-  float ymax= ymin+nSzY_;
+  double ymin= -y0_-0.5;
+  double ymax= ymin+nSzY_;
   if((y >  ymax) || (y < ymin)) return(-1);
-  float ycurrent= ymin;
+  double ycurrent= ymin;
   for(j = 0; j < nSzY_; j++ ) 
     {
@@ -265,5 +265,5 @@
 //++
 template<class T>
-void LocalMap<T>::PixThetaPhi(int_4 k, float& theta, float& phi) const
+void LocalMap<T>::PixThetaPhi(int k,double& theta,double& phi) const
 //
 //    Retourne les coordonnées (theta,phi) du milieu du pixel d'indice k
@@ -279,9 +279,9 @@
   Getij(k,i,j);
 
-  float X= float(i-x0_);
-  float Y= float(j-y0_);
+  double X= double(i-x0_);
+  double Y= double(j-y0_);
   // situation de ce pixel dans le plan de reference
-  float x= X*cos_angle_-Y*sin_angle_;
-  float y= X*sin_angle_+Y* cos_angle_;
+  double x= X*cos_angle_-Y*sin_angle_;
+  double y= X*sin_angle_+Y* cos_angle_;
   // projection sur la sphere
   PixProjToAngle(x, y, theta, phi);
@@ -292,5 +292,5 @@
 //++
 template<class T>
-r_8 LocalMap<T>::PixSolAngle(int_4 k) const
+double LocalMap<T>::PixSolAngle(int k) const
 //
 // Pixel Solid angle  (steradians)
@@ -301,41 +301,44 @@
   int i,j;
   Getij(k,i,j);
-  float X= float(i-x0_);
-  float Y= float(j-y0_);
-  float XR= X+float(i)*0.5;
-  float XL= X-float(i)*0.5;
-  float YU= Y+float(j)*0.5;
-  float YL= Y-float(j)*0.5;
+  double X= double(i-x0_);
+  double Y= double(j-y0_);
+  double XR= X+double(i)*0.5;
+  double XL= X-double(i)*0.5;
+  double YU= Y+double(j)*0.5;
+  double YL= Y-double(j)*0.5;
+
   // situation  dans le plan de reference
-  float x0= XL*cos_angle_-YL*sin_angle_;
-  float y0= XL*sin_angle_+YL*cos_angle_;
-  float xa= XR*cos_angle_-YL*sin_angle_;
-  float ya= XR*sin_angle_+YL*cos_angle_;
-  float xb= XL*cos_angle_-YU*sin_angle_;
-  float yb= XL*sin_angle_+YU*cos_angle_;
+  double x0= XL*cos_angle_-YL*sin_angle_;
+  double y0= XL*sin_angle_+YL*cos_angle_;
+  double xa= XR*cos_angle_-YL*sin_angle_;
+  double ya= XR*sin_angle_+YL*cos_angle_;
+  double xb= XL*cos_angle_-YU*sin_angle_;
+  double yb= XL*sin_angle_+YU*cos_angle_;
+
   // projection sur la sphere
-  float tet0,phi0,teta,phia,tetb,phib;
-  PixProjToAngle(x0, y0, tet0, phi0);
-  PixProjToAngle(xa, ya, teta, phia);
-  PixProjToAngle(xb, yb, tetb, phib);
+  double thet0,phi0,theta,phia,thetb,phib;
+  PixProjToAngle(x0, y0, thet0, phi0);
+  PixProjToAngle(xa, ya, theta, phia);
+  PixProjToAngle(xb, yb, thetb, phib);
+
   // angle solide
-  float sol= fabs((xa-x0)*(yb-y0)-(xb-x0)*(ya-y0));
-  return r_8(sol);
-}
-
-//++
-template<class T>
-void  LocalMap<T>::SetOrigin(float theta0, float phi0, float angle)
+  double sol= fabs((xa-x0)*(yb-y0)-(xb-x0)*(ya-y0));
+  return sol;
+}
+
+//++
+template<class T>
+void LocalMap<T>::SetOrigin(double theta0,double phi0,double angle)
 //
 // Fixe la repere de reference ( angles en degres) 
 //--
 {
-  theta0_= (double)theta0;
-  phi0_  = (double)phi0;
-  angle_ = (double)angle;
+  theta0_= theta0;
+  phi0_  = phi0;
+  angle_ = angle;
   x0_= nSzX_/2;
   y0_= nSzY_/2;
-  cos_angle_= cosdf(angle);
-  sin_angle_= sindf(angle);
+  cos_angle_= cos(angle*Pi/180.);
+  sin_angle_= sin(angle*Pi/180.);
   originFlag_= true; 
   cout << " LocalMap:: set origin 1 done" << endl;
@@ -344,16 +347,16 @@
 //++
 template<class T>
-void  LocalMap<T>::SetOrigin(float theta0, float phi0, int_4 x0, int_4 y0, float angle)
+void LocalMap<T>::SetOrigin(double theta0,double phi0,int x0,int y0,double angle)
 //
 // Fixe le repere de reference (angles en degres)  
 //--
 {
-  theta0_= (double)theta0;
-  phi0_  = (double)phi0;
-  angle_ = (double)angle;
+  theta0_= theta0;
+  phi0_  = phi0;
+  angle_ = angle;
   x0_= x0;
   y0_= y0;
-  cos_angle_= cosdf(angle);
-  sin_angle_= sindf(angle);
+  cos_angle_= cos(angle*Pi/180.);
+  sin_angle_= sin(angle*Pi/180.);
   originFlag_= true;
   cout << " LocalMap:: set origin 2 done" << endl;
@@ -362,19 +365,15 @@
 //++
 template<class T>
-void LocalMap<T>::SetSize(float angleX, float angleY)
+void LocalMap<T>::SetSize(double angleX,double angleY)
 //
 // Fixe l'extension de la carte (angles en degres)
 //--
 {
-  angleX_= (double)angleX;
-  angleY_= (double)angleY;
-
-  //tgAngleX_= T(tan(angleX*Pi/360.));
-  //tgAngleY_= T(tan(angleY*Pi/360.));
-
+  angleX_= angleX;
+  angleY_= angleY;
 
   // tangente de la moitie de l'ouverture angulaire totale
-  tgAngleX_= tand(0.5*angleX_);
-  tgAngleY_= tand(0.5*angleY_);
+  tgAngleX_= tan(0.5*angleX_*Pi/180.);
+  tgAngleY_= tan(0.5*angleY_*Pi/180.);
 
   extensFlag_= true;
@@ -391,5 +390,5 @@
   for(int m = 0; m < nPix_; m++) 
     {
-      float theta,phi;
+      double theta,phi;
       PixThetaPhi(m,theta,phi);
       sphere(theta,phi)= pixels_(m);
@@ -400,5 +399,5 @@
 //++
 template<class T>
-void LocalMap<T>::Getij(int k, int& i, int& j) const
+void LocalMap<T>::Getij(int k,int& i,int& j) const
 //
 //--
@@ -411,35 +410,32 @@
 //++
 template<class T>
-void  LocalMap<T>::ReferenceToUser(float &theta, float &phi) const
+void  LocalMap<T>::ReferenceToUser(double& theta,double& phi) const
 //
 // --     
 {
-  if(theta > (r_4)Pi || theta < 0.  || phi < 0. || phi >= 2*(r_4)Pi) 
-    {
-      //cout << " LocalMap::ReferenceToUser : exceptions  a mettre en place" <<endl;
-      //    THROW(out_of_range("LocalMap::PIxVal Pixel index out of range"));
+  if(theta > Pi || theta < 0. || phi < 0. || phi >= 2*Pi) 
+    {
       throw "LocalMap::ReferenceToUser (theta,phi) out of range"; 
     } 
 
-  //cout << " ReferenceToUser entree, t= " << theta << " phi= " << phi << endl;
-  theta= (r_4)theta0_*Pi/180.+theta-(r_4)Pi*0.5;
+  theta= theta0_*Pi/180.+theta-Pi*0.5;
   if(theta < 0.) 
     {
       theta= -theta;
-      phi += (r_4)Pi;
+      phi += Pi;
     } 
   else 
     {
-      if(theta > (r_4)Pi) 
+      if(theta > Pi) 
 	{
-	  theta= 2.*(r_4)Pi-theta;
-	  phi += (r_4)Pi;
+	  theta= 2.*Pi-theta;
+	  phi += Pi;
 	} 
     }
 
-  phi= (r_4)phi0_*Pi/180.+phi;
-  while(phi >= 2.*(r_4)Pi) phi-=2.*(r_4)Pi;
-
-  if(theta > (r_4)Pi || theta < 0.  || phi < 0. || phi >= 2*(r_4)Pi) 
+  phi= phi0_*Pi/180.+phi;
+  while(phi >= 2.*Pi) phi-= 2.*Pi;
+
+  if(theta > Pi || theta < 0. || phi < 0. || phi >= 2*Pi) 
     {
       cout <<  " LocalMap::ReferenceToUser : erreur bizarre dans le transfert a la carte utilisateur " << endl;
@@ -447,41 +443,40 @@
       exit(0);
     }
-  //cout << " ReferenceToUser sortie, t= " << theta << " phi= " << phi << endl;
-}
-
-//++
-template<class T>
-void  LocalMap<T>::UserToReference(float &theta, float &phi) const
+}
+
+//++
+template<class T>
+void  LocalMap<T>::UserToReference(double& theta,double& phi) const
 //
 // --     
 {
-  if(theta > (r_4)Pi || theta < 0.  || phi<0. || phi >= 2*(r_4)Pi ) 
-    {
-      cout << " LocalMap::UserToReference : exceptions  a mettre en place" <<endl;
-      //    THROW(out_of_range("LocalMap::PIxVal Pixel index out of range"));
+  if(theta > Pi || theta < 0. || phi < 0. || phi >= 2*Pi) 
+    {
+      cout<<" LocalMap::UserToReference: exceptions a mettre en place" <<endl;
+      // THROW(out_of_range("LocalMap::PIxVal Pixel index out of range"));
       throw "LocalMap::UserToReference (theta,phi) out of range"; 
     }
 
-  float phi1=phi-(r_4)phi0_*Pi/180.;
-  if(phi1 < 0.) phi1+=2.*(r_4)Pi;
-
-  float theta1= theta-(r_4)theta0_*Pi/180.+(r_4)Pi*0.5;
+  double phi1= phi-phi0_*Pi/180.;
+  if(phi1 < 0.) phi1+= 2.*Pi;
+
+  double theta1= theta-theta0_*Pi/180.+Pi*0.5;
   if(theta1 < 0.) 
     {
       theta= -theta1;
-      phi1+= (r_4)Pi;
+      phi1+= Pi;
     } 
   else
     { 
-      if(theta1 > (r_4)Pi) 
+      if(theta1 > Pi) 
 	{
-	  theta= 2.*(r_4)Pi-theta1;
-	  phi1+= (r_4)Pi;
+	  theta= 2.*Pi-theta1;
+	  phi1+= Pi;
 	}
     }
 
-  while(phi1 >= 2.*(r_4)Pi) phi1-=2.*(r_4)Pi;
+  while(phi1 >= 2.*Pi) phi1-= 2.*Pi;
   phi= phi1;
-  if(theta > (r_4)Pi || theta < 0.  || phi < 0. || phi >= 2*(r_4)Pi ) 
+  if(theta > Pi || theta < 0. || phi < 0. || phi >= 2*Pi) 
     {
       cout <<  " LocalMap::UserToReference : erreur bizarre dans le transfert a la carte de reference " << endl;
@@ -493,12 +488,12 @@
 //++
 template<class T>
-void LocalMap<T>::PixProjToAngle(float x, float y, float& theta, float& phi) const
-//
-// (x,y) representent les coordonnees en unites de pixels d'un point DANS  LE PLAN DE REFERENCE. 
+void LocalMap<T>::PixProjToAngle(double x,double y,double& theta,double& phi) const
+//
+// (x,y) representent les coordonnees en unites de pixels d'un point DANS LE PLAN DE REFERENCE. 
 // On recupere (theta,phi) par rapport au repere "absolu" theta=pi/2 et phi=0.
 //--
 {
-  theta= (r_4)Pi*0.5-atan(2*y*tgAngleY_/(float)nSzY_);
-  phi= atan2(2*x*tgAngleX_,(float)nSzX_);
+  theta= Pi*0.5-atan(2.*y*tgAngleY_/(double)nSzY_);
+  phi= atan2(2.*x*tgAngleX_,(double)nSzX_);
   if(phi < 0.) phi += DeuxPi;
 }
@@ -506,5 +501,5 @@
 //++
 template<class T>
-void LocalMap<T>::AngleProjToPix(float theta, float phi, float& x, float& y) const
+void LocalMap<T>::AngleProjToPix(double theta,double phi,double& x,double& y) const
 //
 // (theta,phi) par rapport au repere "absolu" theta=pi/2,phi=0. On recupere 
@@ -512,5 +507,5 @@
 //--
 {
-  if(phi >= (r_4)Pi) phi-= DeuxPi;
+  if(phi >= Pi) phi-= DeuxPi;
   //  y=0.5*mSzY_*cot(theta)/tgAngleY_;  $CHECK-REZA-04/99$
   y= 0.5*nSzY_/tan(theta)/tgAngleY_;  // ? cot = 1/tan ?  
@@ -606,13 +601,13 @@
     }
 
-  int_4 nSzX;
+  int nSzX;
   is.GetI4(nSzX);
   dobj->setSize_x(nSzX);
 
-  int_4 nSzY;
+  int nSzY;
   is.GetI4(nSzY);
   dobj->setSize_y(nSzY);
 
-  int_4 nPix;
+  int nPix;
   is.GetI4(nPix);
   dobj->setNbPixels(nPix);
@@ -624,16 +619,16 @@
     {
       cout<<" ReadSelf:: local mapping"<<endl;
-      int_4 x0, y0;
-      float theta, phi, angle;
+      int x0, y0;
+      double theta, phi, angle;
       is.GetI4(x0);
       is.GetI4(y0);
-      is.GetR4(theta);
-      is.GetR4(phi);
-      is.GetR4(angle);
+      is.GetR8(theta);
+      is.GetR8(phi);
+      is.GetR8(angle);
       dobj->SetOrigin(theta, phi, x0, y0, angle);
 
-      float angleX, angleY;
-      is.GetR4(angleX);
-      is.GetR4(angleY);
+      double angleX, angleY;
+      is.GetR8(angleX);
+      is.GetR8(angleY);
       dobj->SetSize(angleX, angleY);
     }
@@ -657,7 +652,7 @@
 
   char strg[256];
-  int_4 nSzX= dobj->Size_x();
-  int_4 nSzY= dobj->Size_y();
-  int_4 nPix= dobj->NbPixels();
+  int nSzX= dobj->Size_x();
+  int nSzY= dobj->Size_y();
+  int nPix= dobj->NbPixels();
  
   if(dobj->ptrInfo()) 
@@ -681,17 +676,17 @@
       string ss("local mapping is done");
       os.PutStr(ss);
-      int_4 x0, y0;
-      float theta, phi, angle;
+      int x0, y0;
+      double theta, phi, angle;
       dobj->Origin(theta, phi, x0, y0, angle);
       os.PutI4(x0);
       os.PutI4(y0);
-      os.PutR4(theta);
-      os.PutR4(phi);
-      os.PutR4(angle);
-
-      float angleX, angleY;
+      os.PutR8(theta);
+      os.PutR8(phi);
+      os.PutR8(angle);
+
+      double angleX, angleY;
       dobj->Aperture(angleX, angleY);
-      os.PutR4(angleX);
-      os.PutR4(angleY);
+      os.PutR8(angleX);
+      os.PutR8(angleY);
     }
   else
