diff --git a/tracy/tools/soltracy.cc b/tracy/tools/soltracy.cc
index 01edc4654001a6d35cf6d0b8bd6bafe478b6b793..700c31a380de5eea5863794f8f48fc40777639ff 100644
--- a/tracy/tools/soltracy.cc
+++ b/tracy/tools/soltracy.cc
@@ -43,10 +43,10 @@ extern bool  freq_map;
       start read in files and flags
   *************************************************************************/
   if (argc > 1){
-  read_script(argv[1], true);}
+    read_script(argv[1], true);}
   else{
-	  fprintf(stdout, "Not enough parameters\nSyntax is program parameterfile\n");
-	  return 1;
+       fprintf(stdout, "Not enough parameters\nSyntax is program parameterfile\n");
+       exit_(1);
   }
 
 
@@ -60,7 +60,16 @@ extern bool  freq_map;
   
   
   
-    // Flag factory
+  // Flag factory
+    
+  //set RF voltage  
+    if (RFvoltageFlag == true){
+       printf("\nSetting RF voltage:\n");
+       printf("    Old RF voltage is: %lf [MV]\n",get_RFVoltage(ElemIndex("cav"))/1e6);
+       set_RFVoltage(ElemIndex("cav"), RFvolt); 
+       printf("    New RF voltage is: %lf [MV]\n",get_RFVoltage(ElemIndex("cav"))/1e6);
+    }
+    
     
     // Chamber factory
   if (ChamberFlag == false)
@@ -95,15 +104,15 @@ extern bool  freq_map;
 
 
   if (FitTuneFlag == true){
-    fprintf(stdout, "\n Fitting tunes\n");
-    FitTune(ElemIndex("qp7"),ElemIndex("qp9"), targetnux, targetnuz);
+    fprintf(stdout, "\n Fitting tunes: %s %s, targetnux = %f, targetnuz = %f \n",qm1,qm2,targetnux,targetnuz);
+    FitTune(ElemIndex(qm1),ElemIndex(qm2), targetnux, targetnuz);
     Ring_GetTwiss(chroma=true, 0.0);  /* Compute and get Twiss parameters */
     printglob();                      /* print parameter list */
   }
 
   if (FitChromFlag == true){
-    fprintf(stdout, "\n Fitting chromaticities\n");
-    FitChrom(ElemIndex("sx9"),ElemIndex("sx10"), targetksix, targetksiz);
+    fprintf(stdout, "\n Fitting chromaticities: %s %s, targetksix = %f,  targetksiz = %f\n",sxm1,sxm2,targetksix,targetksiz);
+    FitChrom(ElemIndex(sxm1),ElemIndex(sxm2), targetksix, targetksiz);
     Ring_GetTwiss(chroma=true, 0.0);  /* Compute and get Twiss parameters */
     printglob();                      /* print parameter list */
   }
@@ -119,7 +128,7 @@ extern bool  freq_map;
 
   // add coupling by random rotating of the quadrupoles
   if (ErrorCouplingFlag == true){
-    SetErr();
+    SetErr(err_seed,err_rms);
     Ring_GetTwiss(chroma=true, 0.0);  /* Compute and get Twiss parameters */
     printlatt();                      /* dump linear lattice functions into "linlat.dat" */
     Coupling_Edwards_Teng();
@@ -129,6 +138,12 @@ extern bool  freq_map;
 
   // WARNING Fit tunes and chromaticities before applying errors !!!!
   //set multipoles in all magnets
+  // read multipole error from a file
+  if (ReadMultipoleFlag == true){
+      fprintf(stdout, "\n Read Multipoles file for lattice with thick sextupoles \n");
+      ReadFieldErr(multipole_file);
+  }
+  
   if (MultipoleFlag == true ){
     if (ThinsextFlag ==true){
       fprintf(stdout, "\n Setting Multipoles for lattice with thin sextupoles \n");
@@ -144,12 +159,16 @@ extern bool  freq_map;
     }
   }
 
+ //first print the full lattice with error as a flat file
+  prtmfile("flat_file_error.dat"); // writes flat file   /* very important file for debug*/
+  printlatt();  /* SOLEIL print out lattice functions */
+  printglob();
+  
  /******************************************************************************************/
  // COMPUTATION PART after setting the model
  /******************************************************************************************/
 
-  //first print the full lattice with error as a flat file
-  prtmfile("flat_file_error.dat"); // writes flat file   /* very important file for debug*/
+  
 
 // computes TuneShift with amplitudes
   if (AmplitudeTuneShiftFlag == true){
@@ -179,31 +198,19 @@ extern bool  freq_map;
 
  // Computes FMA
   if (FmapFlag == true){
-    if (ChamberFlag == true ){
-      if (ExperimentFMAFlag == true)
-          fmap( _FmapFlag_nxpoint, _FmapFlag_nypoint,
-          		_FmapFlag_nturn, _FmapFlag_xmax, _FmapFlag_ymax,
-          		_FmapFlag_delta, _FmapFlag_diffusion);
-    	  //fmap(40,12,258,-20e-3,5e-3,0.0,true); // for experimental
-      if (DetailedFMAFlag == true)
-      fmap( _FmapFlag_nxpoint, _FmapFlag_nypoint,
-          		_FmapFlag_nturn, _FmapFlag_xmax, _FmapFlag_ymax,
-          		_FmapFlag_delta, _FmapFlag_diffusion);
-      //  fmap(100,50,1026,20e-3,5e-3,0.0,true);
-      }
-      else{ // Utility
-        if (ExperimentFMAFlag == true)
 	fmap( _FmapFlag_nxpoint, _FmapFlag_nypoint,
           		_FmapFlag_nturn, _FmapFlag_xmax, _FmapFlag_ymax,
           		_FmapFlag_delta, _FmapFlag_diffusion);
-        if (DetailedFMAFlag == true)
-	fmap( _FmapFlag_nxpoint, _FmapFlag_nypoint,
-          		_FmapFlag_nturn, _FmapFlag_xmax, _FmapFlag_ymax,
-          		_FmapFlag_delta, _FmapFlag_diffusion);
-       //   fmap(200,100,1026,32e-3,7e-3,0.0,true);
       }
-  }
-  
+ 
+// Compute FMA dp 
+  if (FmapdpFlag == true){
+	fmapdp( _FmapdpFlag_nxpoint, _FmapdpFlag_nepoint,
+          		_FmapdpFlag_nturn, _FmapdpFlag_xmax, _FmapdpFlag_emax,
+          		_FmapdpFlag_z, _FmapdpFlag_diffusion);
+      }     
+      
+      
   if (CodeComparaisonFlag){
           fmap(200,100,1026,-32e-3,7e-3,0.0,true);
   }
@@ -214,7 +221,6 @@ extern bool  freq_map;
 	  _MomentumAccFlag_istart, _MomentumAccFlag_istop,
 	  _MomentumAccFlag_deltaminp, _MomentumAccFlag_deltamaxp, _MomentumAccFlag_nstepp,
 	  _MomentumAccFlag_deltaminn, _MomentumAccFlag_deltamaxn, _MomentumAccFlag_nstepn);
-	 // MomentumAcceptance(1L, 108L, 0.01, 0.05, 100L, -0.01, -0.05, 100L);
   }