Index: trunk/MagicSoft/Cosy/Changelog
===================================================================
--- trunk/MagicSoft/Cosy/Changelog	(revision 4587)
+++ trunk/MagicSoft/Cosy/Changelog	(revision 4617)
@@ -1,3 +1,11 @@
                                                                   -*-*- END -*-*-
+
+ 2004/08/16 - Thomas Bretz
+
+   * tpoint/gui.C:
+     - implemented TGFSFileDialog for reading and writing bending.txt
+     - plot deviations vs Magnitude
+
+
 
  2004/08/12 - Thomas Bretz
Index: trunk/MagicSoft/Cosy/tpoint/gui.C
===================================================================
--- trunk/MagicSoft/Cosy/tpoint/gui.C	(revision 4587)
+++ trunk/MagicSoft/Cosy/tpoint/gui.C	(revision 4617)
@@ -41,4 +41,5 @@
     Double_t fRawEl;
 
+    Double_t fMag;
 public:
     Set(Double_t sel=0, Double_t saz=0, Double_t rel=0, Double_t raz=0) :
@@ -46,8 +47,9 @@
         fStarEl(sel*TMath::DegToRad()),
         fRawAz(raz*TMath::DegToRad()),
-        fRawEl(rel*TMath::DegToRad())
-    {
-    }
-
+        fRawEl(rel*TMath::DegToRad()), fMag(-25)
+    {
+    }
+
+    Double_t GetMag() const { return fMag; }
     Double_t GetResidual(Double_t *err=0) const
     {
@@ -102,4 +104,5 @@
         fRawAz  = set.fRawAz;
         fRawEl  = set.fRawEl;
+        fMag    = set.fMag;
     }
 
@@ -150,6 +153,12 @@
     } while (str[0]=='#');
 
-    Float_t v[4];
-    sscanf(str.Data(), "%f %f %f %f", v, v+1, v+2, v+3);
+    Float_t v[4], mag;
+    Int_t n = sscanf(str.Data(), "%f %f %f %f %*f %*f %*f %*f %*f %*f %f", v, v+1, v+2, v+3, &mag);
+    if (n<4)
+    {
+        cout << "Read: ERROR - Not enough numbers" << endl;
+        return fin;
+    }
+    set.fMag = n<5 ? -25 : mag;
 
     set.fStarAz = v[0]*TMath::DegToRad();
@@ -404,4 +413,7 @@
         TGraph graz;
         TGraph grzd;
+        TGraph grmag;
+        TGraph gmaz;
+        TGraph gmzd;
     
         gdaz.SetTitle(" \\Delta Az vs. Zd ");
@@ -411,6 +423,10 @@
         gzd.SetTitle(" \\Delta Zd vs. Zd ");
 
+        gmaz.SetTitle(" \\Delta Az vs. Mag ");
+        gmzd.SetTitle(" \\Delta Zd vs. Mag ");
+
         graz.SetTitle(" \\Delta vs. Az ");
         grzd.SetTitle(" \\Delta vs. Zd ");
+        grmag.SetTitle(" \\Delta vs. Mag ");
     
         TMinuit minuit(MBending::GetNumPar());  //initialize TMinuit with a maximum of 5 params
@@ -502,4 +518,10 @@
             gaz.SetPoint( i, za.Az(), dz);
             gzd.SetPoint( i, za.Zd(), set0.GetDZd());
+            if (set0.GetMag()>=-20)
+            {
+                grmag.SetPoint(i, set0.GetMag(), set0.GetResidual());
+                gmaz.SetPoint( i, set0.GetMag(), dz);
+                gmzd.SetPoint( i, set0.GetMag(), set0.GetDZd());
+            }
         }
     
@@ -577,15 +599,21 @@
         gdaz.SetMaximum(absmax1);
         gdzd.SetMaximum(absmax2);
+        gmaz.SetMaximum(absmax1);
+        gmzd.SetMaximum(absmax2);
         graz.SetMaximum(absmax3);
         grzd.SetMaximum(absmax3);
+        grmag.SetMaximum(absmax3);
         gaz.SetMinimum(-absmax1);
         gzd.SetMinimum(-absmax2);
         gdaz.SetMinimum(-absmax1);
         gdzd.SetMinimum(-absmax2);
+        gmaz.SetMinimum(-absmax1);
+        gmzd.SetMinimum(-absmax2);
         graz.SetMinimum(0);
         grzd.SetMinimum(0);
+        grmag.SetMinimum(0);
 
         c1=new TCanvas("CanvGraphs", "Graphs");
-        c1->Divide(2,3,0,0);
+        c1->Divide(3,3,0,0);
 
         TLine line;
@@ -615,6 +643,17 @@
         line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
         cout << "Mean dAz: " << g->GetMean(2) << " \xb1 " << g->GetRMS(2) <<  endl;
-    
+
         c1->cd(3);
+        gPad->SetBorderMode(0);
+        gPad->SetGridx();
+        gPad->SetGridy();
+        g=(TGraph*)gmaz.DrawClone("A*");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta Az [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+        line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+    
+        c1->cd(4);
         gPad->SetBorderMode(0);
         gPad->SetGridx();
@@ -629,5 +668,5 @@
         cout << endl;
     
-        c1->cd(4);
+        c1->cd(5);
         gPad->SetBorderMode(0);
         gPad->SetGridx();
@@ -640,5 +679,16 @@
         line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
 
-        c1->cd(5);
+        c1->cd(6);
+        gPad->SetBorderMode(0);
+        gPad->SetGridx();
+        gPad->SetGridy();
+        g=(TGraph*)gmzd.DrawClone("A*");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta Zd [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
+        line.DrawLine(g->GetXaxis()->GetXmin(), -360./16384, g->GetXaxis()->GetXmax(), -360./16384);
+
+        c1->cd(7);
         gPad->SetBorderMode(0);
         gPad->SetGridx();
@@ -650,5 +700,5 @@
         line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
     
-        c1->cd(6);
+        c1->cd(8);
         gPad->SetBorderMode(0);
         gPad->SetGridx();
@@ -660,4 +710,13 @@
         line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
 
+        c1->cd(9);
+        gPad->SetBorderMode(0);
+        gPad->SetGridx();
+        gPad->SetGridy();
+        g=(TGraph*)grmag.DrawClone("A*");
+        g->SetBit(kCanDelete);
+        g->GetHistogram()->SetXTitle("Mag");
+        g->GetHistogram()->SetYTitle("\\Delta [\\circ]");
+        line.DrawLine(g->GetXaxis()->GetXmin(),  360./16384, g->GetXaxis()->GetXmax(),  360./16384);
 
 
@@ -784,5 +843,5 @@
     //  Opens an open dialog
     //
-    TString OpenDialog()
+    TString OpenDialog(EFileDialogMode mode=kFDOpen)
     {
         static const char *gOpenTypes[] =
@@ -800,5 +859,5 @@
         fi.fIniDir    = StrDup(dir);
 
-        new TGFileDialog(fClient->GetRoot(), this, kFDOpen, &fi);
+        new TGFileDialog(fClient->GetRoot(), this, mode, &fi);
 
         if (!fi.fFilename)
@@ -833,9 +892,9 @@
                     return kTRUE;
                 case kTbLoad:
-                    fBending.Load("bending_new.txt");
+                    fBending.Load(OpenDialog());
                     DisplayBending();
                     return kTRUE;
                 case kTbSave:
-                    fBending.Save("bending_new.txt");
+                    fBending.Save(OpenDialog(kFDSave));
                     return kTRUE;
                 case kTbLoadStars:
@@ -1041,9 +1100,8 @@
         ((TGCheckButton*)fList->FindWidget(0))->SetState(kButtonDown);
         ((TGCheckButton*)fList->FindWidget(1))->SetState(kButtonDown);
-        ((TGCheckButton*)fList->FindWidget(3))->SetState(kButtonDown);
-        ((TGCheckButton*)fList->FindWidget(4))->SetState(kButtonDown);
-        ((TGCheckButton*)fList->FindWidget(5))->SetState(kButtonDown);
         ((TGCheckButton*)fList->FindWidget(6))->SetState(kButtonDown);
-        ((TGCheckButton*)fList->FindWidget(7))->SetState(kButtonDown);
+        ((TGCheckButton*)fList->FindWidget(10))->SetState(kButtonDown);
+        ((TGCheckButton*)fList->FindWidget(12))->SetState(kButtonDown);
+        ((TGCheckButton*)fList->FindWidget(17))->SetState(kButtonDown);
 
         SetWindowName("TPoint Fitting Window");
