Index: trunk/Cosmo/RadioBeam/mbeamcyl.cc
===================================================================
--- trunk/Cosmo/RadioBeam/mbeamcyl.cc	(revision 3184)
+++ trunk/Cosmo/RadioBeam/mbeamcyl.cc	(revision 3191)
@@ -7,5 +7,5 @@
 //=================================================
 
-MultiBeamCyl::MultiBeamCyl(int nr, int ns, double posy)
+MultiBeamCyl::MultiBeamCyl(int nr, int ns, double posx, double posy)
   : texact(ns) , tjitt(ns) , toffset(nr) ,
     signal(ns), sigjitt(ns) , gain(nr)
@@ -14,4 +14,5 @@
   NS = ns;
   posY = posy;
+  posX = posx;
 
   SetPrintLevel(0);
@@ -87,5 +88,6 @@
     // pas celle apres shift (freq-reduite)
     // lambda = c T = c/freq avec c = 1, dephasage = 2*pi*num*Da*sin(ang)/lambda
-    double dephasage = num*Da*sin(src->angX(is)) + posY*sin(src->angY(is)) ;
+    double dephasage = (posX+num*Da)*sin(src->angX(is)) + 
+    				posY*sin(src->angY(is)) ;
     dephasage *= (2*M_PI*(fr+freq0));
     // On ajoute alors la phase propre de chaque source
Index: trunk/Cosmo/RadioBeam/mbeamcyl.h
===================================================================
--- trunk/Cosmo/RadioBeam/mbeamcyl.h	(revision 3184)
+++ trunk/Cosmo/RadioBeam/mbeamcyl.h	(revision 3191)
@@ -31,5 +31,5 @@
   // ns = nb d'echantillons en temps de chaque paquet
   // posy = position spatiale en Y pour chaque cylindre (unite ou lambda=1 pour f=1)
- MultiBeamCyl(int nr=1024, int ns=4096, double posy=0.);
+ MultiBeamCyl(int nr=1024, int ns=4096, double posx=0., double posy=0.);
  ~MultiBeamCyl();
 
@@ -42,4 +42,5 @@
 
  inline double getCylinderYPos() { return posY; }
+ inline double getCylinderXPos() { return posX; }
  // Specification de la frequence de base f0 et espacement des recepteurs
  // freq_vrai = freq_BRSourceGen + f0
@@ -83,4 +84,5 @@
  int NR, NS;  // nb recepteurs, nb d'echantillons ds chaque paquet
  double posY;    // Position selon Y (E-O) de la ligne de recepteurs
+ double posX;    // Position selon X (N-S) de la ligne de recepteurs
 
  int PrtLev;   // Niveau de print de debug
Index: trunk/Cosmo/RadioBeam/multicyl.cc
===================================================================
--- trunk/Cosmo/RadioBeam/multicyl.cc	(revision 3184)
+++ trunk/Cosmo/RadioBeam/multicyl.cc	(revision 3191)
@@ -84,10 +84,11 @@
 void MultiCylinders::ReconstructSourceBox(int halfny, double stepangy)
 {
-
   ReconstructCylinderPlaneS(true);
   TMatrix< complex<r_4> > & mtx = GetCylinder(0).getRecSrcPlane(); 
   // boite 3D X:angX, Y:angY , Z: freq
   sa_size_t sz[5] = {0,0,0,0,0};
-  sz[0] = mtx.NCols();
+//  int nx=mtx.NCols();	// uncomment to go back to nxbin = nantenna
+  int nx=256;
+  sz[0] = nx;
   sz[1] = halfny*2+1;
   sz[2] = mtx.NRows();
@@ -113,13 +114,17 @@
 
       double facl = - 2*M_PI*frq*cyl.getCylinderYPos();  // attention au signe -
+//      double facl_x = - 2*M_PI*cyl.getCylinderXPos()/cyl.Da/(double)cyl.NR; 
+      double facl_x = - 2*M_PI*cyl.getCylinderXPos()/cyl.Da; 
       double dphi;
       complex< r_4 > phasefactor;
       int jyy = 0;
       for(int jy=-halfny; jy<=halfny; jy++) {  // Loop over Y angular steps
-	double dphi = facl * sin( (double)jy*stepangy );
-	phasefactor = complex< r_4 > ((r_4) cos(dphi) , (r_4) sin(dphi));
-	for(int ix=0; ix<sz[0]; ix++) {  // Loop over AngX directions
+	for(int ix=0; ix<nx; ix++) {  // Loop over AngX directions
+	  double dphi = facl * sin( (double)jy*stepangy )
+			+ facl_x*(double(ix)/double(nx)-1./2.);
+	  phasefactor = complex< r_4 > ((r_4) cos(dphi) , (r_4) sin(dphi));
 	  // sur recp : index ligne -> frequence  ,    index colonne -> angX ,
-	  box(ix, jyy, kf) += recp(kf, ix)*phasefactor;
+	  int ixx=(int)(ix*(double)cyl.NR/double(nx));
+	  box(ix, jyy, kf) += recp(kf, ixx)*phasefactor;
 	}  //  
 	jyy++;
Index: trunk/Cosmo/RadioBeam/multicyl.h
===================================================================
--- trunk/Cosmo/RadioBeam/multicyl.h	(revision 3184)
+++ trunk/Cosmo/RadioBeam/multicyl.h	(revision 3191)
@@ -34,6 +34,6 @@
 
  // Ajout d'un cylindre, en position posY
- inline int AddCylinder(double posy)
-   {  mCyl.push_back( new MultiBeamCyl(NR, NS, posy) ); return mCyl.size(); }
+ inline int AddCylinder(double posx, double posy)
+   {  mCyl.push_back( new MultiBeamCyl(NR, NS, posx, posy) ); return mCyl.size(); }
 
  MultiBeamCyl & GetCylinder(int i);
Index: trunk/Cosmo/RadioBeam/treccyl.cc
===================================================================
--- trunk/Cosmo/RadioBeam/treccyl.cc	(revision 3184)
+++ trunk/Cosmo/RadioBeam/treccyl.cc	(revision 3191)
@@ -70,5 +70,5 @@
 int act = 1;
 int ncyl = 5; 
-if (narg < 3) {
+if (narg < 2) {
   cout << "Usage: treccyl act ppfname [PrtLev=0] \n"
        << " -act= X ou XY5 ou XY12  (5 ou 12 cylindres) \n"
@@ -208,5 +208,6 @@
     for(int kkc=0; kkc<12; kkc++) {
       cout << "..." << kkc << " - mcyl.AddCylinder(posY= " << 5.*kkc << " )" << endl;
-      mcyl.AddCylinder(5.*kkc);
+      mcyl.AddCylinder(5.*kkc,5.*kkc);
+//      mcyl.AddCylinder(0.,5.*kkc);
     }
   }
@@ -216,5 +217,5 @@
     for(int kkc=0; kkc<5; kkc++) {
       cout << "..." << kkc << " - mcyl.AddCylinder(posY= " << posyc[kkc] << " )" << endl;
-      mcyl.AddCylinder(posyc[kkc]);
+      mcyl.AddCylinder(posyc[kkc],posyc[kkc]);
     }
   }
