Ignore:
Timestamp:
03/19/04 16:56:19 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeCam.cc

    r3496 r3551  
    6565#include <TCanvas.h>
    6666#include <TPad.h>
     67#include <TText.h>
     68#include <TPaveText.h>
    6769
    6870#include "MLog.h"
     
    151153    fNumOuterPixels = 0;
    152154    fNumExcluded    = 0;
     155
     156    fAverageInnerSat            = 0;
     157    fAverageOuterSat            = 0; 
     158    fAverageInnerPixSigma       = 0.;
     159    fAverageOuterPixSigma       = 0.; 
     160    fAverageInnerPixSigmaErr    = 0.;
     161    fAverageOuterPixSigmaErr    = 0.; 
     162    fAverageInnerPixRelSigma    = 0.;
     163    fAverageOuterPixRelSigma    = 0.; 
     164    fAverageInnerPixRelSigmaErr = 0.;
     165    fAverageOuterPixRelSigmaErr = 0.; 
     166
    153167}
    154168
     
    169183  delete fAverageHiGainOuterPix;
    170184  delete fAverageLoGainOuterPix;
     185
    171186}
    172187
     
    542557    FinalizeLoGainHists(*fAverageLoGainOuterPix,*fCam->GetAverageOuterPix(),*fCam->GetAverageOuterBadPix());
    543558
    544     fCam->GetAverageInnerPix()->SetSigmaCharge   (fCam->GetAverageInnerPix()->GetSigmaCharge() 
    545                                                   *TMath::Sqrt((Float_t)fNumInnerPixels));
    546     fCam->GetAverageOuterPix()->SetSigmaCharge   (fCam->GetAverageOuterPix()->GetSigmaCharge()   
    547                                                   *TMath::Sqrt((Float_t)fNumOuterPixels));
    548     fCam->GetAverageInnerPix()->SetSigmaChargeErr(fCam->GetAverageInnerPix()->GetSigmaChargeErr()
    549                                                   *TMath::Sqrt((Float_t)fNumInnerPixels));
    550     fCam->GetAverageOuterPix()->SetSigmaChargeErr(fCam->GetAverageOuterPix()->GetSigmaChargeErr()
    551                                                   *TMath::Sqrt((Float_t)fNumOuterPixels));
    552    
     559    FinalizeAveragePix(*fCam->GetAverageInnerPix(),fNumInnerPixels,
     560                       fAverageInnerPixSigma, fAverageInnerPixSigmaErr,
     561                       fAverageInnerPixRelSigma, fAverageInnerPixRelSigmaErr,
     562                       fAverageInnerSat);
     563    FinalizeAveragePix(*fCam->GetAverageOuterPix(),fNumOuterPixels,
     564                       fAverageOuterPixSigma, fAverageOuterPixSigmaErr,
     565                       fAverageOuterPixRelSigma, fAverageOuterPixRelSigmaErr,
     566                       fAverageOuterSat);
     567
    553568    return kTRUE;
    554569}
     
    693708      }
    694709}   
     710
     711void MHCalibrationChargeCam::FinalizeAveragePix(MCalibrationChargePix &pix, Int_t npix,
     712                                                Float_t &sigma, Float_t &sigmaerr,
     713                                                Float_t &relsigma, Float_t &relsigmaerr,
     714                                                Bool_t &b)
     715{
     716
     717  if (pix.IsHiGainSaturation())
     718    b = kTRUE;
     719
     720  sigma    = pix.GetSigmaCharge    () * TMath::Sqrt((Float_t)npix);
     721  sigmaerr = pix.GetSigmaChargeErr () * TMath::Sqrt((Float_t)npix);
     722
     723  relsigma     = sigma / pix.GetMeanCharge();
     724
     725  relsigmaerr  = sigmaerr*sigmaerr / sigma / sigma;
     726  relsigmaerr += pix.GetMeanChargeErr()*pix.GetMeanChargeErr() / pix.GetMeanCharge() / pix.GetMeanCharge();
     727
     728  relsigmaerr *= relsigma;
     729  relsigmaerr  = TMath::Sqrt(relsigmaerr);
     730
     731  pix.SetSigmaCharge   (sigma);
     732  pix.SetSigmaChargeErr(sigmaerr);
     733
     734}
     735
    695736
    696737Bool_t MHCalibrationChargeCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
     
    729770  pad->cd(1);
    730771
    731   if (!fAverageHiGainInnerPix->IsEmpty())
    732     gPad->SetLogy();
    733772  fAverageHiGainInnerPix->Draw(opt);
     773 
     774  if (!fAverageInnerSat)
     775    DrawAverageSigma(fAverageInnerSat, 1,
     776                     fAverageInnerPixSigma, fAverageInnerPixSigmaErr,
     777                     fAverageInnerPixRelSigma, fAverageInnerPixRelSigmaErr);
    734778
    735779  pad->cd(2);
    736780
    737   if (!fAverageLoGainInnerPix->IsEmpty())
    738     gPad->SetLogy();
    739781  fAverageLoGainInnerPix->Draw(opt);
    740782
     783  if (fAverageInnerSat)
     784    DrawAverageSigma(fAverageInnerSat, 1,
     785                     fAverageInnerPixSigma, fAverageInnerPixSigmaErr,
     786                     fAverageInnerPixRelSigma, fAverageInnerPixRelSigmaErr);
     787
    741788  pad->cd(3);
    742789
    743   if (!fAverageHiGainOuterPix->IsEmpty())
    744     gPad->SetLogy();
    745790  fAverageHiGainOuterPix->Draw(opt);
    746791
     792  if (!fAverageOuterSat)
     793    DrawAverageSigma(fAverageOuterSat, 0,
     794                     fAverageOuterPixSigma, fAverageOuterPixSigmaErr,
     795                     fAverageOuterPixRelSigma, fAverageOuterPixRelSigmaErr);
     796
    747797  pad->cd(4);
    748798
    749   if (!fAverageLoGainOuterPix->IsEmpty())
    750     gPad->SetLogy();
    751799  fAverageLoGainOuterPix->Draw(opt);
    752800
    753 }
     801  if (fAverageOuterSat)
     802    DrawAverageSigma(fAverageOuterSat, 0,
     803                     fAverageOuterPixSigma, fAverageOuterPixSigmaErr,
     804                     fAverageOuterPixRelSigma, fAverageOuterPixRelSigmaErr);
     805}
     806
     807void MHCalibrationChargeCam::DrawAverageSigma(Bool_t sat, Bool_t inner,
     808                                              Float_t sigma, Float_t sigmaerr,
     809                                              Float_t relsigma, Float_t relsigmaerr) const
     810{
     811 
     812  if (sigma != 0)
     813    {
     814     
     815      TPad *newpad = new TPad("newpad","transparent",0,0,1,1);
     816      newpad->SetFillStyle(4000);
     817      newpad->Draw();
     818      newpad->cd();
     819     
     820      TPaveText *text = new TPaveText(sat? 0.1 : 0.35,0.7,sat ? 0.4 : 0.7,1.0);
     821      text->SetTextSize(0.07);
     822      const TString line1 = Form("%s%s%s",inner ? "Inner" : "Outer",
     823                                 " Pixels ", sat ? "Low Gain" : "High Gain");
     824      TText *txt1 = text->AddText(line1.Data());
     825      const TString line2 = Form("Sigma per Pixel: %2.2f #pm %2.2f",sigma,sigmaerr);
     826      TText *txt2 = text->AddText(line2.Data());
     827      const TString line3 = Form("Rel. Sigma per Pixel: %2.2f #pm %2.2f",relsigma,relsigmaerr);
     828      TText *txt3 = text->AddText(line3.Data());
     829      text->Draw("");
     830     
     831      text->SetBit(kCanDelete);
     832      txt1->SetBit(kCanDelete);
     833      txt2->SetBit(kCanDelete);
     834      txt3->SetBit(kCanDelete);
     835      newpad->SetBit(kCanDelete);
     836    }
     837}
     838
Note: See TracChangeset for help on using the changeset viewer.