Index: trunk/MagicSoft/Cosy/main/MBending.cc
===================================================================
--- trunk/MagicSoft/Cosy/main/MBending.cc	(revision 1808)
+++ trunk/MagicSoft/Cosy/main/MBending.cc	(revision 1810)
@@ -107,6 +107,6 @@
         if (str=="ECEC")   fEcec = val;
         if (str=="ACEC")   fAcec = val;
-        if (str=="MAGIC1") fMagic1 = val;
-        if (str=="MAGIC2") fMagic2 = val;
+        //if (str=="MAGIC1") fMagic1 = val;
+        //if (str=="MAGIC2") fMagic2 = val;
 
         fin >> val;
@@ -143,20 +143,20 @@
     fout << "S   00   000000   000000  0000000" << endl;
     fout << setprecision(8);
-    fout << " IA     " << -kRad2Deg*fIa   << " -1" << endl;
-    fout << " IE     " << -kRad2Deg*fIe   << " -1" << endl;
-    fout << " CA     " << -kRad2Deg*fNpae << " -1" << endl;
-    fout << " NPAE   " << -kRad2Deg*fCa   << " -1" << endl;
-    fout << " AN     " << -kRad2Deg*fAn   << " -1" << endl;
-    fout << " AW     " << -kRad2Deg*fAw   << " -1" << endl;
-    fout << " NRX    " << -kRad2Deg*fNrx  << " -1" << endl;
-    fout << " NRY    " << -kRad2Deg*fNry  << " -1" << endl;
-    fout << " CRX    " << -kRad2Deg*fCrx  << " -1" << endl;
-    fout << " CRY    " << -kRad2Deg*fCry  << " -1" << endl;
-    fout << " ECES   " << -kRad2Deg*fEces << " -1" << endl;
-    fout << " ACES   " << -kRad2Deg*fAces << " -1" << endl;
-    fout << " ECEC   " << -kRad2Deg*fEcec << " -1" << endl;
-    fout << " ACEC   " << -kRad2Deg*fAcec << " -1" << endl;
-    fout << " MAGIC1 " << -kRad2Deg*fMagic1 << " -1" << endl;
-    fout << " MAGIC2 " << -kRad2Deg*fMagic2 << " -1" << endl;
+    fout << " IA     " << kRad2Deg*fIa   << " -1" << endl;
+    fout << " IE     " << kRad2Deg*fIe   << " -1" << endl;
+    fout << " CA     " << kRad2Deg*fNpae << " -1" << endl;
+    fout << " NPAE   " << kRad2Deg*fCa   << " -1" << endl;
+    fout << " AN     " << kRad2Deg*fAn   << " -1" << endl;
+    fout << " AW     " << kRad2Deg*fAw   << " -1" << endl;
+    fout << " NRX    " << kRad2Deg*fNrx  << " -1" << endl;
+    fout << " NRY    " << kRad2Deg*fNry  << " -1" << endl;
+    fout << " CRX    " << kRad2Deg*fCrx  << " -1" << endl;
+    fout << " CRY    " << kRad2Deg*fCry  << " -1" << endl;
+    fout << " ECES   " << kRad2Deg*fEces << " -1" << endl;
+    fout << " ACES   " << kRad2Deg*fAces << " -1" << endl;
+    fout << " ECEC   " << kRad2Deg*fEcec << " -1" << endl;
+    fout << " ACEC   " << kRad2Deg*fAcec << " -1" << endl;
+    //fout << " MAGIC1 " << -kRad2Deg*fMagic1 << " -1" << endl;
+    //fout << " MAGIC2 " << -kRad2Deg*fMagic2 << " -1" << endl;
     fout << "END" << endl;
 }
@@ -173,4 +173,7 @@
     p += CEC;
 
+    //    const AltAz MAGIC(0, -fMagic1*tan(p.Alt())-fMagic2);
+    //    p += MAGIC;
+
     const AltAz CRX(-fCrx*sin(p.Az()-p.Alt()),  fCrx*cos(p.Az()-p.Alt())/cos(p.Alt()));
     const AltAz CRY(-fCry*cos(p.Az()-p.Alt()), -fCry*sin(p.Az()-p.Alt())/cos(p.Alt()));
@@ -183,6 +186,6 @@
     p += NRY;
 
-    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
-    p += MAGIC;
+    //    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
+    //    p += MAGIC;
 
     const AltAz AW( fAw*sin(p.Az()), -fAw*cos(p.Az())*tan(p.Alt()));
@@ -191,7 +194,6 @@
     p += AN;
 
-//    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
-//    p += MAGIC;
-
+    //    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
+    //    p += MAGIC;
 
     const AltAz CA(0, -fCa/cos(p.Alt()));
@@ -227,6 +229,6 @@
     p -= AW;
 
-    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
-    p -= MAGIC;
+    //    const AltAz MAGIC(-fMagic1*sin(p.Az()-fMagic2), 0);
+    //    p -= MAGIC;
 
     const AltAz NRY(fNry*cos(p.Alt()), -fNry*tan(p.Alt()));
@@ -285,23 +287,23 @@
         fEces =par[10]/kRad2Deg; // Elevation Centering Error (sin)
     case 10:
-        fCry  =par[9]/kRad2Deg;  // Alt/Az Coude Displacement (E-W)
+        fCry  =par[9] /kRad2Deg; // Alt/Az Coude Displacement (E-W)
     case 9:
-        fCrx  =par[8]/kRad2Deg;  // Alt/Az Coude Displacement (N-S)
+        fCrx  =par[8] /kRad2Deg; // Alt/Az Coude Displacement (N-S)
     case 8:
-        fNry  =par[7]/kRad2Deg;  // Nasmyth rotator displacement, vertical
+        fNry  =par[7] /kRad2Deg; // Nasmyth rotator displacement, vertical
     case 7:
-        fNrx  =par[6]/kRad2Deg;  // Nasmyth rotator displacement, horizontan
+        fNrx  =par[6] /kRad2Deg; // Nasmyth rotator displacement, horizontan
     case 6:
-        fAw   =par[5]/kRad2Deg;  // Azimuth Axis Misalignment (E-W)
+        fAw   =par[5] /kRad2Deg; // Azimuth Axis Misalignment (E-W)
     case 5:
-        fAn   =par[4]/kRad2Deg;  // Azimuth Axis Misalignment (N-S)
+        fAn   =par[4] /kRad2Deg; // Azimuth Axis Misalignment (N-S)
     case 4:
-        fCa   =par[3]/kRad2Deg;  // Left-Right Collimation Error
+        fCa   =par[3] /kRad2Deg; // Left-Right Collimation Error
     case 3:
-        fNpae =par[2]/kRad2Deg;  // Az-El Nonperpendicularity
+        fNpae =par[2] /kRad2Deg; // Az-El Nonperpendicularity
     case 2:
-        fIe   =par[1]/kRad2Deg;  // Index Error in Elevation
+        fIe   =par[1] /kRad2Deg; // Index Error in Elevation
     case 1:
-        fIa   =par[0]/kRad2Deg;  // Index Error in Azimuth
+        fIa   =par[0] /kRad2Deg; // Index Error in Azimuth
     }
 }
@@ -312,35 +314,35 @@
     {
     case 16:
-        par[15]=fMagic2*kRad2Deg; //
+        par[15]=kRad2Deg*fMagic2; //
     case 15:
-        par[14]=fMagic1*kRad2Deg; //
+        par[14]=kRad2Deg*fMagic1; //
     case 14:
-        par[13]=fAcec*kRad2Deg; // Azimuth Centering Error (cos)
+        par[13]=kRad2Deg*fAcec; // Azimuth Centering Error (cos)
     case 13:
-        par[12]=fEcec*kRad2Deg; // Elevation Centering Error (cos)
+        par[12]=kRad2Deg*fEcec; // Elevation Centering Error (cos)
     case 12:
-        par[11]=fAces*kRad2Deg; // Azimuth Centering Error (sin)
+        par[11]=kRad2Deg*fAces; // Azimuth Centering Error (sin)
     case 11:
-        par[10]=fEces*kRad2Deg; // Elevation Centering Error (sin)
+        par[10]=kRad2Deg*fEces; // Elevation Centering Error (sin)
     case 10:
-        par[9]=fCry*kRad2Deg; // Alt/Az Coude Displacement (E-W)
+        par[9] =kRad2Deg*fCry;  // Alt/Az Coude Displacement (E-W)
     case 9:
-        par[8]=fCrx*kRad2Deg; // Alt/Az Coude Displacement (N-S)
+        par[8] =kRad2Deg*fCrx;  // Alt/Az Coude Displacement (N-S)
     case 8:
-        par[7]=fNry*kRad2Deg; // Nasmyth rotator displacement, vertical
+        par[7] =kRad2Deg*fNry;  // Nasmyth rotator displacement, vertical
     case 7:
-        par[6]=fNrx*kRad2Deg; // Nasmyth rotator displacement, horizontan
+        par[6] =kRad2Deg*fNrx;  // Nasmyth rotator displacement, horizontan
     case 6:
-        par[5]=fAw*kRad2Deg; // Azimuth Axis Misalignment (E-W)
+        par[5] =kRad2Deg*fAw;   // Azimuth Axis Misalignment (E-W)
     case 5:
-        par[4]=fAn*kRad2Deg; // Azimuth Axis Misalignment (N-S)
+        par[4] =kRad2Deg*fAn;   // Azimuth Axis Misalignment (N-S)
     case 4:
-        par[3]=fCa*kRad2Deg; // Left-Right Collimation Error
+        par[3] =kRad2Deg*fCa;   // Left-Right Collimation Error
     case 3:
-        par[2]=fNpae*kRad2Deg; // Az-El Nonperpendicularity
+        par[2] =kRad2Deg*fNpae; // Az-El Nonperpendicularity
     case 2:
-        par[1]=fIe*kRad2Deg; // Index Error in Elevation
+        par[1] =kRad2Deg*fIe;   // Index Error in Elevation
     case 1:
-        par[0]=fIa*kRad2Deg; // Index Error in Azimuth
+        par[0] =kRad2Deg*fIa;   // Index Error in Azimuth
     }
 }
@@ -349,5 +351,5 @@
 {
     if (n<0)
-        n = m.GetNumPars();
+        n = 16;
 
     Int_t ierflg = 0;
@@ -357,50 +359,34 @@
     case 16:
         m.mnparm(15,"MAGIC2", fMagic2*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 15:
         m.mnparm(14,"MAGIC1", fMagic1*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 14:
         m.mnparm(13,"ACEC", fAcec*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 13:
         m.mnparm(12,"ECEC", fEcec*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 12:
         m.mnparm(11,"ACES", fAcec*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 11:
         m.mnparm(10,"ECES", fEcec*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 10:
         m.mnparm(9, "CRY",  fCry*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 9:
         m.mnparm(8, "CRX",  fCrx*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 8:
         m.mnparm(7, "NRY",  fNry*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 7:
         m.mnparm(6, "NRX",  fNrx*kRad2Deg,  1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 6:
         m.mnparm(5, "AW",   fAw*kRad2Deg,   1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 5:
         m.mnparm(4, "AN",   fAn*kRad2Deg,   1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 4:
         m.mnparm(3, "CA",   fCa*kRad2Deg,   1, -360, 360, ierflg);
-        // cout << "Init 3 CA:    " << fCa << endl;
     case 3:
         m.mnparm(2, "NPAE", fNpae*kRad2Deg, 1, -360, 360, ierflg);
-        // cout << "Init 2 NPAE:  " << fNpae << endl;
     case 2:
-        m.mnparm(1, "IE",   fIe*kRad2Deg,   1, -360, 360, ierflg);
-        // cout << "Init 1 IE:    " << fIe << endl;
+        m.mnparm(1, "IE",   fIe*kRad2Deg,   1,  -90,  90, ierflg);
     case 1:
         m.mnparm(0, "IA",   fIa*kRad2Deg,   1, -360, 360, ierflg);
-        // cout << "Init 0 IA:    " << fIa << endl;
     }
 }
@@ -408,5 +394,5 @@
 void MBending::GetMinuitParameters(TMinuit &m, Int_t n=-1)
 {
-    if (n<0)
+    if (n<0 || n>m.GetNumPars())
         n = m.GetNumPars();
 
@@ -465,5 +451,24 @@
     }
 }
-
+/*
+void FormatPar(TMinuit &m, Int_t n)
+{
+    Double_t par, err;
+    m.GetParameter(n, par, err);
+
+    int expp = (int)log10(par);
+    int expe = (int)log10(err);
+
+    if (err<2*pow(10, expe))
+        expe--;
+
+    Int_t exp = expe>expp ? expp : expe;
+
+    par = (int)(par/pow(10, exp)) * pow(10, exp);
+    err = (int)(err/pow(10, exp)) * pow(10, exp);
+
+    cout << par << " +- " << err << flush;
+}
+*/
 void MBending::PrintMinuitParameters(TMinuit &m, Int_t n=-1) const
 {
@@ -471,4 +476,6 @@
         n = m.GetNumPars();
 
+    cout << setprecision(3);
+
     Double_t par, err;
 
@@ -477,50 +484,50 @@
     case 16:
         m.GetParameter(15, par, err);
-        cout << " 15 MAGIC2: " << par << " +- " << err << endl;
+        cout << " 15 MAGIC2: " << setw(8) << par << " +- " << setw(4) <<  err << endl;
     case 15:
         m.GetParameter(14, par, err);
-        cout << " 14 MAGIC1: " << par << " +- " << err << endl;
+        cout << " 14 MAGIC1: " << setw(8) << par << " +- " << setw(4) <<  err << endl;
     case 14:
         m.GetParameter(13, par, err);
-        cout << " 13 ACEC: " << par << " +- " << err << endl;
+        cout << " 13 ACEC:   " << setw(8) << par << " +- " << setw(4) <<  err << "  Azimuth Centering Error (cos)" << endl;
     case 13:
         m.GetParameter(12, par, err);
-        cout << " 12 ECEC: " << par << " +- " << err << endl;
+        cout << " 12 ECEC:   " << setw(8) << par << " +- " << setw(4) <<  err << "  Elevation Centering Error (cos)" << endl;
     case 12:
         m.GetParameter(11, par, err);
-        cout << " 11 ACES: " << par << " +- " << err << endl;
+        cout << " 11 ACES:   " << setw(8) << par << " +- " << setw(4) <<  err << "  Azimuth Centering Error (sin)" << endl;
     case 11:
         m.GetParameter(10, par, err);
-        cout << " 10 ECES: " << par << " +- " << err << endl;
+        cout << " 10 ECES:   " << setw(8) << par << " +- " << setw(4) <<  err << "  Elevation Centering Error (sin)" << endl;
     case 10:
         m.GetParameter(9, par, err);
-        cout << "  9 CRY: " << par << " +- " << err << endl;
+        cout << "  9 CRY:    " << setw(8) << par << " +- " << setw(4) <<  err << "  Alt/Az Coude Displacement (E-W)" << endl;
     case 9:
         m.GetParameter(8, par, err);
-        cout << "  8 CRX: " << par << " +- " << err << endl;
+        cout << "  8 CRX:    " << setw(8) << par << " +- " << setw(4) <<  err << "  Alt/Az Coude Displacement (N-S)" << endl;
     case 8:
         m.GetParameter(7, par, err);
-        cout << "  7 NRY: " << par << " +- " << err << endl;
+        cout << "  7 NRY:    " << setw(8) << par << " +- " << setw(4) <<  err << "  Nasmyth rotator displacement, vertical" << endl;
     case 7:
         m.GetParameter(6, par, err);
-        cout << "  6 NRX: " << par << " +- " << err << endl;
+        cout << "  6 NRX:    " << setw(8) << par << " +- " << setw(4) <<  err << "  Nasmyth rotator displacement, horizontan" << endl;
     case 6:
         m.GetParameter(5, par, err);
-        cout << "  5 AW:  " << par << " +- " << err << endl;
+        cout << "  5 AW:     " << setw(8) << par << " +- " << setw(4) <<  err << "  Azimuth Axis Misalignment (E-W)" << endl;
     case 5:
         m.GetParameter(4, par, err);
-        cout << "  4 AN:  " << par << " +- " << err << endl;
+        cout << "  4 AN:     " << setw(8) << par << " +- " << setw(4) <<  err << "  Azimuth Axis Misalignment (N-S)" << endl;
     case 4:
         m.GetParameter(3, par, err);
-        cout << "  3 CA:  " << par << " +- " << err << endl;
+        cout << "  3 CA:     " << setw(8) << par << " +- " << setw(4) <<  err << "  Left-Right Collimation Error" << endl;
     case 3:
         m.GetParameter(2, par, err);
-        cout << "  2 NPAE:  " << par << " +- " << err << endl;
+        cout << "  2 NPAE:   " << setw(8) << par << " +- " << setw(4) <<  err << "  Az-El Nonperpendicularity" << endl;
     case 2:
         m.GetParameter(1, par, err);
-        cout << "  1 IE:  " << par << " +- " << err << endl;
+        cout << "  1 IE:     " << setw(8) << par << " +- " << setw(4) <<  err << "  Index Error Elevation (Offset)" << endl;
     case 1:
         m.GetParameter(0, par, err);
-        cout << "  0 IA:  " << par << " +- " << err << endl;
-    }
-}
+        cout << "  0 IA:     " << setw(8) << par << " +- " << setw(4) <<  err << "  Index Error Azimuth (Offset)" << endl;
+    }
+}
