Index: /trunk/Cosmo/RadioBeam/interfconfigs.cc
===================================================================
--- /trunk/Cosmo/RadioBeam/interfconfigs.cc	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/interfconfigs.cc	(revision 3931)
@@ -267,4 +267,31 @@
 
 /* --Fonction -- */
+vector<Dish> CreateCrossConfig(double Ddish, double base, double Eta)
+{
+  vector<Dish>  vd;
+  int cnt=0;
+  EnumeratedSequence esx,esy;
+  esx = -6.,-2.,1.,3.,5.; 
+  esy = -5.,-1.,2.,4.,6.; 
+  
+  cnt++;
+  vd.push_back(Dish(cnt, 0., 0., Eta*Ddish));
+
+  for(int k=0; k<esx.Size(); k++) {
+    double fx=esx.Value(k);
+    cnt++;
+    vd.push_back(Dish(cnt, fx*base, 0., Eta*Ddish));
+  }
+  for(int k=0; k<esy.Size(); k++) {
+    double fy=esy.Value(k);
+    cnt++;
+    vd.push_back(Dish(cnt, 0., fy*base, Eta*Ddish));
+  }
+ cout << ">>>CreateCrossConfig(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
+ return vd;
+}
+
+
+/* --Fonction -- */
 vector<Dish> CreateDoubleHexagonConfig(double Ddish, double radius1, double radius2, double Eta)
 {
Index: /trunk/Cosmo/RadioBeam/interfconfigs.h
===================================================================
--- /trunk/Cosmo/RadioBeam/interfconfigs.h	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/interfconfigs.h	(revision 3931)
@@ -31,5 +31,7 @@
 				   double etaW=0.9, double etaRL=0.9, bool fgscid=true);
 
-// ASKPAP like - double hexagonal array of 12 dishes 
+// ASKPAP/MeerKAT - cross arranged array of 11 dishes 
+vector<Dish> CreateCrossConfig(double Ddish=12., double base=20., double Eta=0.95);  
+// ASKPAP/MeerKAT - double hexagonal array of 12 dishes 
 vector<Dish> CreateDoubleHexagonConfig(double Ddish=12., double radius1=60., double radius2=150., double Eta=0.95);  
 
Index: /trunk/Cosmo/RadioBeam/mdish.cc
===================================================================
--- /trunk/Cosmo/RadioBeam/mdish.cc	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/mdish.cc	(revision 3931)
@@ -211,7 +211,10 @@
   double sumw = 0.;
   for(int kt=0; kt<ntet_; kt++) 
-    for(int jp=0; jp<nphi_; jp++) 
+    for(int jp=0; jp<nphi_; jp++) {
       sumw += CumulResp(rd, (double)kt*dtet, (double)jp*dphi);
-
+      sumw += CumulResp(rd, (double)kt*dtet, -(double)jp*dphi);
+      sumw += CumulResp(rd, (double)kt*dtet, (double)jp*dphi+M_PI);
+      sumw += CumulResp(rd, (double)kt*dtet, -(double)jp*dphi-M_PI);
+    }
   double kx1 = DeuxPI*(dishes_[0].DiameterX())/lambda_;
   double ky1 = DeuxPI*(dishes_[0].DiameterY())/lambda_;
Index: /trunk/Cosmo/RadioBeam/pknoise.cc
===================================================================
--- /trunk/Cosmo/RadioBeam/pknoise.cc	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/pknoise.cc	(revision 3931)
@@ -5,6 +5,6 @@
     R. Ansari , C. Magneville - Juin 2010 
 
-  Usage:  pknoise Diameter/Four2DRespTableFile OutPPFName 
-                 [NGen=1] [S2Cut=100.] [z_redshift=0.7]
+  Usage:  pknoise pknoise [-parname value] Diameter/Four2DRespTableFile OutPPFName
+          -parname : -noise , -renmax , -scut , -ngen , -z , -prt 
 ---------------------------------------------------------------  */
 
@@ -38,5 +38,15 @@
 // ---------------------------------------------------------------------
 
-
+void Usage() 
+{
+  cout << " Usage:  pknoise [-parname value] Diameter/Four2DRespTableFile OutPPFName \n" 
+       << "    -noise NoiseLevel (default=1.) \n"
+       << "    -renmax MaxValue (default : Do NOT renormalize 2D response value \n"   
+       << "    -scut SCutValue (default=100.) \n"
+       << "    -ngen NGen (default=1) number of noise fourier amp generations \n"
+       << "    -z redshift (default=0.7) \n"
+       << "    -prt PrtLev,PrtModulo (default=0,10) " << endl;
+  return;
+}
 
 //-------------------------------------------------------------------------
@@ -46,6 +56,5 @@
 {
   if ( (narg<3)||((narg>1)&&(strcmp(arg[1],"-h")==0)) )  {
-    cout << " Usage:  pknoise Diameter/Four2DRespTableFile OutPPFName [RenormalizeMax]\n" 
-	 << "         [NGen=1] [S2Cut=100.] [z_redshift=0.7] [PrtLev,PrtModulo=0,10]" << endl;
+    Usage();
     return 1;
   }
@@ -61,33 +70,57 @@
   double DIAMETRE=100.;
   string resptblname;
-  if (isdigit(*arg[1])) {
+  double NoiseLevel=1.;
+  
+  bool fgrenorm=false;
+  double rmax=1.;
+  int NMAX = 1;
+  double SCut=0.;
+  double z_Redshift=0.7 ;  // 21 cm at z=0.7 -> 0.357 m  
+  int prtlev=0;
+  int prtmod=10;
+
+  int ka=1;
+  while (ka<(narg-1)) {
+    if (strcmp(arg[ka],"-noise")==0) {
+      NoiseLevel=atof(arg[ka+1]);
+      ka+=2;
+    }
+    else if (strcmp(arg[ka],"-renmax")==0) {
+      rmax=atof(arg[ka+1]);  fgrenorm=true;   ka+=2;
+    }
+    else if (strcmp(arg[ka],"-scut")==0) {
+      SCut=atof(arg[ka+1]);    ka+=2; 
+    }
+    else if (strcmp(arg[ka],"-ngen")==0) {
+      NMAX=atoi(arg[ka+1]);    ka+=2;
+    }
+    else if (strcmp(arg[ka],"-z")==0) {
+      z_Redshift=atof(arg[ka+1]);  ka+=2;
+    }
+    else if (strcmp(arg[ka],"-prt")==0) {
+      sscanf(arg[ka+1],"%d,%d",&prtlev,&prtmod);   ka+=2;
+    }
+    else break; 
+  }
+
+  if ((ka+1)>=narg) {
+    cout << " pknoise / Argument error " << endl;
+    Usage();
+    return 2;
+  }
+  if (isdigit(*arg[ka])) {
     fgresptbl=false;
-    DIAMETRE=atof(arg[1]);
+    DIAMETRE=atof(arg[ka]);
     sprintf(cbuff,"pknoise_Dish(%g m)", DIAMETRE);
   }
   else { 
-    resptblname=arg[1];
+    resptblname=arg[ka];
     fgresptbl=true;
-    sprintf(cbuff,"pknoise_RespTblName=%s", arg[1]);
+    sprintf(cbuff,"pknoise_RespTblName=%s", arg[ka]);
   }
   tits=cbuff;
-  string outfile = arg[2];  
+  string outfile = arg[ka+1];  
   if (outfile==".")  outfile = "pknoise.ppf";
-  bool fgrenorm=false;
-  double rmax=1.;
-  if (narg>3) {
-    rmax=atof(arg[3]);
-    fgrenorm=true;
-  }
-  int NMAX = 1;
-  if (narg>4) NMAX = atoi(arg[4]);
-  double SCut=0.;
-  if (narg>5) SCut = atof(arg[5]);
-  double z_Redshift=0.7 ;  // 21 cm at z=0.7 -> 0.357 m  
-  if (narg>6) z_Redshift = atof(arg[6]);
-  int prtlev=0;
-  int prtmod=10;
-  if (narg>7) sscanf(arg[7],"%d,%d",&prtlev,&prtmod);
-  //-- end command line arguments
+ //-- end command line arguments
   
   int rc = 1;  
Index: /trunk/Cosmo/RadioBeam/repicon.cc
===================================================================
--- /trunk/Cosmo/RadioBeam/repicon.cc	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/repicon.cc	(revision 3931)
@@ -44,7 +44,7 @@
   if (((narg>1)&&(strcmp(arg[1],"-h")==0))||(narg<3))  {
     cout << " Usage: repicon configId OutPPFName [z_redshift=0.7] [RenormalizeMax] \n" 
-	 << " configs: f4x4 , f8x8 , f20x20 Filled array of nxn dishes \n" 
+	 << " configs: f4x4 , f8x8 , f20x20 Filled array of nxn dishes (D=5m) \n" 
 	 << "          confA , confB, confC, confD : semi-filled array of dishes \n"
-	 << "          hex12 : ASKAP like double hexagonal array of dishes \n"
+	 << "          hex12,cross11 : ASKAP like double hexagonal (12xD=12m), cross config (11xD=12m) \n"
 	 << "          f3cyl, f8cyl , f3cylp, f8cylp : filled array of non perfect/perfect of n cylinders " << endl; 
     return 1;
@@ -131,4 +131,12 @@
       vdishes=CreateConfigD(Ddish, Eta);
     }
+    else if (config=="cross11") {
+      fgpoint=true;
+      Ddish = 12.;
+      double base=20.;
+      Eta=0.95;
+      D=250.;
+      vdishes=CreateCrossConfig(Ddish,base,Eta);
+    }
     else if (config=="hex12") {
       fgpoint=true;
@@ -136,6 +144,7 @@
       Eta=0.95;
       D=350.;
-      vdishes=CreateDoubleHexagonConfig();
-    }
+      vdishes=CreateDoubleHexagonConfig(Ddish);
+    }
+
     else {
       cout << " NON valid configuration option -> exit" << endl;
@@ -151,6 +160,6 @@
     MultiDish mdish(LAMBDA, LMAX, vdishes, fgnoauto);
     mdish.SetRespHisNBins(NRX,NRY); 
-    if (fgpoint) 
-      mdish.SetThetaPhiRange(M_PI/6.,12, M_PI/6., 12);
+    if (fgpoint)  // 23 degres : angle d'inclinaison de l'orbite terrestre
+      mdish.SetThetaPhiRange(Angle(23.,Angle::Degree).ToRadian(),10, M_PI/6., 15);
     cout << " repicon[2] : calling mdish.GetResponse() ..."<< endl;
 
Index: /trunk/Cosmo/RadioBeam/specpk.cc
===================================================================
--- /trunk/Cosmo/RadioBeam/specpk.cc	(revision 3930)
+++ /trunk/Cosmo/RadioBeam/specpk.cc	(revision 3931)
@@ -259,5 +259,5 @@
     }
   }
-  if (prtlev_>1) {
+  if ((prtlev_>1)||((prtlev_>0)&&(s2cut>1.e-9))) {
     cout << " Four3DPk::ComputePkCumul/Info : NModeOK=" << nmodeok << " / NMode=" << fourAmp.Size() 
 	 << " -> " << 100.*(double)nmodeok/(double)fourAmp.Size() << "%" << endl;
@@ -288,5 +288,5 @@
     if (igen==0) hnd = pkn3d.ComputePk(S2CUT);
     else pkn3d.ComputePkCumul(hnd,S2CUT);
-    if ((prtlev_>0)&&(((igen+1)%prtmodulo_)==0)) 
+    if ((prtlev_>0)&&(igen>0)&&(((igen-1)%prtmodulo_)==0)) 
       cout << " PkNoiseCalculator::Compute() - done igen=" << igen << " / MaxNGen=" << NGEN << endl;
   }
