Index: trunk/MagicSoft/Mars/mhist/MHSigmaTheta.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHSigmaTheta.cc	(revision 4524)
+++ trunk/MagicSoft/Mars/mhist/MHSigmaTheta.cc	(revision 4584)
@@ -26,7 +26,8 @@
 //////////////////////////////////////////////////////////////////////////////
 //                                                                          //
-//  MHSigmaTheta (extension of Robert's MHSigmabarTheta)                    //
+//  MHSigmaTheta                                                            //
 //                                                                          //
-//  calculates - the 2D-histogram   sigmabar vs. Theta, and                 //
+//  calculates - the 2D-histogram   sigmabar vs. Theta (Inner), and         //
+//             - the 2D-histogram   sigmabar vs. Theta (Outer)              //
 //             - the 3D-histogram   sigma, pixel no., Theta                 //
 //             - the 3D-histogram   (sigma^2-sigmabar^2), pixel no., Theta  //
@@ -39,5 +40,5 @@
 
 #include "MTime.h"
-#include "MMcEvt.hxx"
+#include "MPointingPos.h"
 
 #include "MBinning.h"
@@ -46,4 +47,5 @@
 
 #include "MGeomCam.h"
+#include "MBlindPixels.h"
 
 #include "MPedPhotCam.h"
@@ -70,8 +72,14 @@
 
     fSigmaTheta.SetDirectory(NULL);
-    fSigmaTheta.SetName("2D-ThetaSigmabar");
+    fSigmaTheta.SetName("2D-ThetaSigmabar(Inner)");
     fSigmaTheta.SetTitle("2D: \\bar{\\sigma}, \\Theta");
     fSigmaTheta.SetXTitle("\\Theta [\\circ]");
-    fSigmaTheta.SetYTitle("Sigmabar");
+    fSigmaTheta.SetYTitle("Sigmabar(Inner) / SQRT(Area)");
+
+    fSigmaThetaOuter.SetDirectory(NULL);
+    fSigmaThetaOuter.SetName("2D-ThetaSigmabar(Outer)");
+    fSigmaThetaOuter.SetTitle("2D: \\bar{\\sigma}, \\Theta");
+    fSigmaThetaOuter.SetXTitle("\\Theta [\\circ]");
+    fSigmaThetaOuter.SetYTitle("Sigmabar(Outer) / SQRT(Area)");
 
     fSigmaPixTheta.SetDirectory(NULL);
@@ -80,5 +88,5 @@
     fSigmaPixTheta.SetXTitle("\\Theta [\\circ]");
     fSigmaPixTheta.SetYTitle("Pixel Id");
-    fSigmaPixTheta.SetZTitle("\\sigma");
+    fSigmaPixTheta.SetZTitle("Sigma");
 
     fDiffPixTheta.SetDirectory(NULL);
@@ -87,5 +95,5 @@
     fDiffPixTheta.SetXTitle("\\Theta [\\circ]");
     fDiffPixTheta.SetYTitle("Pixel Id");
-    fDiffPixTheta.SetZTitle("{\\sigma}^{2}-\\bar{\\sigma}^{2}");
+    fDiffPixTheta.SetZTitle("(Sigma2 - Sigmabar2)/Area");
 
     // Set default binning
@@ -102,7 +110,8 @@
     binspix.SetEdges(578, -0.5, 577.5);
 
-    SetBinning(&fSigmaTheta,    &binst, &binsb);
-    SetBinning(&fSigmaPixTheta, &binst, &binspix, &binsb);
-    SetBinning(&fDiffPixTheta,  &binst, &binspix, &binsd);
+    SetBinning(&fSigmaTheta,      &binst, &binsb);
+    SetBinning(&fSigmaThetaOuter, &binst, &binsb);
+    SetBinning(&fSigmaPixTheta,   &binst, &binspix, &binsb);
+    SetBinning(&fDiffPixTheta,    &binst, &binspix, &binsd);
 }
 
@@ -120,7 +129,7 @@
     }
 
-    fMcEvt = (MMcEvt*)plist->FindObject("MMcEvt");
-    if (!fMcEvt)
-        *fLog << warn << "MMcEvt not found... aborting." << endl;
+    fPointPos = (MPointingPos*)plist->FindObject("MPointingPos");
+    if (!fPointPos)
+        *fLog << warn << "MPointingPos not found... aborting." << endl;
 
 
@@ -132,4 +141,11 @@
     }
     fPed->InitSize(fCam->GetNumPixels());
+
+    
+    fBlindPix = (MBlindPixels*)plist->FindObject("MBlindPixels");
+    if (!fBlindPix)
+    {  
+       *fLog << err << "MBlindPixels not found... continue. " << endl; 
+    }
 
 
@@ -177,6 +193,7 @@
     if (binssigma)
     {
-        SetBinning(&fSigmaTheta, binstheta, binssigma);
-        SetBinning(&fSigmaPixTheta, binstheta, &binspix, binssigma);
+        SetBinning(&fSigmaTheta,      binstheta, binssigma);
+        SetBinning(&fSigmaThetaOuter, binstheta, binssigma);
+        SetBinning(&fSigmaPixTheta,   binstheta, &binspix, binssigma);
     }
 
@@ -191,13 +208,18 @@
 //  Fill the histograms
 //
+//  ignore pixels if they are unused or blind
+//
 Bool_t MHSigmaTheta::Fill(const MParContainer *par, const Stat_t w)
 {
-    Double_t theta = fMcEvt ? fMcEvt->GetTelescopeTheta()*kRad2Deg : 0;
+    Double_t theta = fPointPos->GetZd();
     fSigmabar->Calc(*fCam, *fPed, *fEvt);
-    Double_t mysig = fSigmabar->GetSigmabarInner();
-
-    //*fLog << "theta, mysig = " << theta << ",  " << mysig << endl;
+    Double_t mysig      = fSigmabar->GetSigmabarInner();
+    Double_t mysigouter = fSigmabar->GetSigmabarOuter();
+
+    //*fLog << "theta, mysig, mysigouter = " << theta << ",  " << mysig 
+    //      << ",  " << mysigouter << endl;
 
     fSigmaTheta.Fill(theta, mysig);
+    fSigmaThetaOuter.Fill(theta, mysigouter);
 
     const UInt_t npix = fEvt->GetNumPixels();
@@ -205,10 +227,24 @@
     for (UInt_t i=0; i<npix; i++)
     {
-        MCerPhotPix cerpix = (*fEvt)[i];
+        MCerPhotPix &cerpix = (*fEvt)[i];
+        const Int_t id = cerpix.GetPixId();
+
         if (!cerpix.IsPixelUsed())
-            continue;
-
-        const Int_t id = cerpix.GetPixId();
+	{
+          //*fLog << all << "MHSigmaTheta::Fill; unused pixel found, id = "
+          //      << id << endl;
+          continue;
+	}
+
         const MPedPhotPix &pix = (*fPed)[id];
+
+        if ( fBlindPix != NULL  &&  fBlindPix->IsBlind(id) )
+	{
+          // this should never occur, because blind pixels should have
+          // been set unused by MBlindPixelsCalc2::UnMap()
+          //*fLog << all << "MHSigmaTheta::Fill; blind pixel found which is used, id = "
+          //      << id << "... go to next pixel." << endl;
+	  continue;
+	}
 
         // ratio is the area of pixel 0 
@@ -219,5 +255,16 @@
         fSigmaPixTheta.Fill(theta, (Double_t)id, sigma*sqrt(ratio));
 
-        const Double_t diff = sigma*sigma*ratio - mysig*mysig;
+	Double_t diff;
+        if (ratio > 0.5)
+	{
+          // inner pixel
+          diff = sigma*sigma*ratio - mysig*mysig;
+	}
+        else
+	{
+          // outer pixel
+          diff = sigma*sigma*ratio - mysigouter*mysigouter;
+	}
+
         fDiffPixTheta.Fill(theta, (Double_t)id, diff);
     }
@@ -262,5 +309,5 @@
     AppendPad("");
 
-    pad->Divide(3, 2);
+    pad->Divide(3, 3);
 
     // draw the 2D histogram Sigmabar versus Theta
@@ -283,5 +330,5 @@
     h->SetTitle("\\sigma_{ped}^{2}-\\bar{\\sigma}_{ped}^{2} vs. \\Theta (all pixels)");
     h->SetXTitle("\\Theta [\\circ]");
-    h->SetYTitle("\\sigma_{ped}^{2}-\\bar{\\sigma}_{ped}^{2}");
+    h->SetYTitle("(Sigma2 - Sigmabar2) / Area");
     h->Draw("box");
     h->SetBit(kCanDelete);
@@ -293,5 +340,5 @@
     h->SetTitle("\\sigma_{ped} vs. \\Theta (all pixels)");
     h->SetXTitle("\\Theta [\\circ]");
-    h->SetYTitle("\\sigma_{ped}");
+    h->SetYTitle("Sigma");
     h->Draw("box");
     h->SetBit(kCanDelete);
@@ -313,5 +360,5 @@
     h->SetTitle("\\sigma_{ped}^{2}-\\bar{\\sigma}_{ped}^{2} vs. pixel Id (all  \\Theta)");
     h->SetXTitle("Pixel Id");
-    h->SetYTitle("\\sigma_{ped}^{2}-\\bar{\\sigma}_{ped}^{2}");
+    h->SetYTitle("Sigma2 - sigmabar2) / Area");
     h->Draw("box");
     h->SetBit(kCanDelete);
@@ -323,5 +370,5 @@
     h->SetTitle("\\sigma_{ped} vs. pixel Id (all  \\Theta)");
     h->SetXTitle("Pixel Id");
-    h->SetYTitle("\\sigma_{ped}");
+    h->SetYTitle("Sigma");
     h->Draw("box");
     h->SetBit(kCanDelete);
@@ -329,4 +376,7 @@
     pad->cd(4);
     fSigmaTheta.Draw(opt);
+
+    pad->cd(7);
+    fSigmaThetaOuter.Draw(opt);
 
     //pad->cd(8);
Index: trunk/MagicSoft/Mars/mhist/MHSigmaTheta.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHSigmaTheta.h	(revision 4524)
+++ trunk/MagicSoft/Mars/mhist/MHSigmaTheta.h	(revision 4584)
@@ -16,8 +16,9 @@
 class MGeomCam;
 class MCerPhotEvt;
-class MMcEvt;
+class MPointingPos;
 class MPedPhotCam;
 class MSigmabar;
 class MParList;
+class MBlindPixels;
 
 
@@ -29,8 +30,11 @@
     MCerPhotEvt    *fEvt;        //!
     MSigmabar      *fSigmabar;   //!
-    MMcEvt         *fMcEvt;      //!
- 
-    TH2D fSigmaTheta;    // 2D-distribution sigmabar versus Theta; 
-                         // sigmabar is the average pedestasl sigma in an event
+    MPointingPos   *fPointPos;   //!
+    MBlindPixels   *fBlindPix;   //!
+
+                           // sigmabar is the average pedestal sigma  
+    TH2D fSigmaTheta;      // 2D-distribution sigmabar versus Theta (Inner) 
+    TH2D fSigmaThetaOuter; // 2D-distribution sigmabar versus Theta (Outer) 
+
     TH3D fSigmaPixTheta; // 3D-distr.:Theta, pixel, pedestal sigma
     TH3D fDiffPixTheta;  // 3D-distr.:Theta, pixel, sigma^2-sigmabar^2
@@ -46,4 +50,7 @@
     const TH2D *GetSigmaTheta() { return &fSigmaTheta; }
     const TH2D *GetSigmaTheta() const { return &fSigmaTheta; }
+
+    const TH2D *GetSigmaThetaOuter() { return &fSigmaThetaOuter; }
+    const TH2D *GetSigmaThetaOuter() const { return &fSigmaThetaOuter; }
 
     const TH3D *GetSigmaPixTheta() { return &fSigmaPixTheta; }
