Ignore:
Timestamp:
01/24/04 01:52:51 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
File:
1 edited

Legend:

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

    r2885 r2904  
    4141#include <TCanvas.h>
    4242#include <TPaveText.h>
     43#include <TText.h>
    4344
    4445#include "MLog.h"
     
    5657      : fPixId(-1),
    5758        fTotalEntries(0),
    58         fHiGains(NULL),
    59         fLoGains(NULL),
     59        fHChargeHiGain(NULL), 
     60        fHTimeHiGain(NULL),
     61        fHChargevsNHiGain(NULL),
     62        fHChargeLoGain(NULL), 
     63        fHTimeLoGain(NULL),   
     64        fHChargevsNLoGain(NULL),
    6065        fChargeGausFit(NULL),
    6166        fTimeGausFit(NULL),
    6267        fHivsLoGain(NULL),
    6368        fFitLegend(NULL),
    64         fLowerFitRange(-2000.),
    65         fChargeFirstHiGain(-2000.5),
    66         fChargeLastHiGain(9999.5),
    67         fChargeNbinsHiGain(12000),
    68         fChargeFirstLoGain(-2000.5),
     69        fLowerFitRange(-100.),
     70        fChargeFirstHiGain(-100.5),
     71        fChargeLastHiGain(1999.5),
     72        fChargeNbinsHiGain(2100),
     73        fChargeFirstLoGain(-100.5),
    6974        fChargeLastLoGain(9999.5),
    70         fChargeNbinsLoGain(1200),
     75        fChargeNbinsLoGain(1010),
    7176        fChargeChisquare(-1.),
    7277        fChargeProb(-1.),
     
    8186        fTimeLowerFitRangeLoGain(0),
    8287        fTimeUpperFitRangeLoGain(0),
    83         fUseLoGain(kFALSE),
    84         fFitOK(kFALSE),
    8588        fOffset(0.),
    8689        fSlope(0.)
     
    111114    Int_t  ntbins = 16;
    112115
    113     fHTimeHiGain = new TH1I("HTimeHiGain","Distribution of Mean Arrival Hi Gain Times Pixel ",
     116    fHTimeHiGain = new TH1F("HTimeHiGain","Distribution of Mean Arrival Hi Gain Times Pixel ",
    114117                            ntbins,tfirst,tlast);
    115118    fHTimeHiGain->SetXTitle("Mean Arrival Times [Hi Gain FADC slice nr]");
     
    117120    fHTimeHiGain->SetDirectory(NULL);
    118121
    119     fHTimeLoGain = new TH1I("HTimeLoGain","Distribution of Mean Arrival Lo Gain Times Pixel ",
     122    fHTimeLoGain = new TH1F("HTimeLoGain","Distribution of Mean Arrival Lo Gain Times Pixel ",
    120123                            ntbins,tfirst,tlast);
    121124    fHTimeLoGain->SetXTitle("Mean Arrival Times [Lo Gain FADC slice nr]");
     
    170173    delete fHivsLoGain;
    171174
    172 
    173 }
    174 
    175 const Double_t MHCalibrationPixel::GetArea() const
    176 {
    177     return fChargeGausFit->GetParameter(0);
    178 }
    179 
    180 const Double_t MHCalibrationPixel::GetAreaErr() const
    181 {
    182     return fChargeGausFit->GetParError(0);
    183 }
    184 
    185 Bool_t MHCalibrationPixel::IsEmpty()
     175}
     176
     177Bool_t MHCalibrationPixel::IsEmpty() const
    186178{
    187179    return !(fHChargeHiGain->GetEntries() || fHChargeLoGain->GetEntries());
    188180}
    189  
     181
     182Bool_t MHCalibrationPixel::IsUseLoGain() const
     183{
     184  return TESTBIT(fFlags,kUseLoGain);
     185}
     186
     187Bool_t MHCalibrationPixel::IsFitOK() const
     188{
     189    return TESTBIT(fFlags,kFitOK);
     190}
     191
    190192Bool_t MHCalibrationPixel::FillChargeLoGain(Float_t q)
    191193{
     
    193195}
    194196
    195 Bool_t MHCalibrationPixel::FillTimeLoGain(Int_t t)
     197Bool_t MHCalibrationPixel::FillTimeLoGain(Float_t t)
    196198{
    197199    return (fHTimeLoGain->Fill(t)   > -1);
     
    205207Bool_t MHCalibrationPixel::FillChargeHiGain(Float_t q)
    206208{
    207     return (fHChargeHiGain->Fill(q)      > -1);
    208 }
    209 
    210 Bool_t MHCalibrationPixel::FillTimeHiGain(Int_t t)
    211 {
    212     return (fHTimeHiGain->Fill(t)        > -1);
     209    return (fHChargeHiGain->Fill(q) > -1);
     210}
     211
     212Bool_t MHCalibrationPixel::FillTimeHiGain(Float_t t)
     213{
     214    return (fHTimeHiGain->Fill(t) > -1);
    213215}
    214216
     
    285287
    286288
     289Bool_t MHCalibrationPixel::SetupFill(const MParList *plist)
     290{
     291 
     292  fHChargeHiGain->Reset();
     293  fHTimeHiGain->Reset();
     294  fHChargeLoGain->Reset();
     295  fHTimeLoGain->Reset();
     296
     297  return kTRUE;
     298}
     299
     300
    287301void MHCalibrationPixel::Reset()
    288302{
     
    293307
    294308  for (Int_t i = 0; i < 16; i++)
    295       fHTimeHiGain->SetBinContent(i, 1.e-20);
    296  
    297   fChargeLastHiGain     = 9999.5;
    298 
    299   fHChargeHiGain->GetXaxis()->SetRangeUser(0.,fChargeLastHiGain);
     309    fHTimeHiGain->SetBinContent(i, 1.e-20);
     310
     311  fChargeFirstHiGain    = -100.5;
     312  fChargeLastHiGain     = 1999.5;
     313
     314  fHChargeHiGain->GetXaxis()->UnZoom();
    300315
    301316 for (Int_t i = fHChargeLoGain->FindBin(fChargeFirstLoGain);
     
    306321      fHTimeLoGain->SetBinContent(i, 1.e-20);
    307322 
     323  fChargeFirstLoGain    = -100.5;
    308324  fChargeLastLoGain     = 9999.5;
    309325
    310   fHChargeLoGain->GetXaxis()->SetRangeUser(0.,fChargeLastLoGain);
     326  fHChargeLoGain->GetXaxis()->UnZoom();
    311327
    312328  return;
     
    319335  if (fHChargeHiGain->Integral() > fHChargeLoGain->Integral())
    320336    {
    321       fUseLoGain = kFALSE;
     337      CLRBIT(fFlags,kUseLoGain);
    322338      return kFALSE;
    323339    }
    324340  else
    325341    {
    326       fUseLoGain = kTRUE;
     342      SETBIT(fFlags,kUseLoGain);
    327343      return kTRUE;
    328344    }
    329345}
    330346
    331 void MHCalibrationPixel::SetPointInGraph(Float_t qhi,Float_t qlo)
     347Bool_t MHCalibrationPixel::FillPointInGraph(Float_t qhi,Float_t qlo)
    332348{
    333349
     
    337353  fHiGains->AddAt(qhi,fTotalEntries-1);
    338354  fLoGains->AddAt(qlo,fTotalEntries-1);
     355
     356  return kTRUE;
    339357
    340358}
     
    350368  fFitLegend = new TPaveText(0.05,0.05,0.95,0.95);
    351369
    352   if (fFitOK)
     370  if (IsFitOK())
    353371      fFitLegend->SetFillColor(80);
    354372  else
     
    360378  const TString line1 =
    361379    Form("Mean: Q_{#mu} = %2.2f #pm %2.2f",fChargeMean,fChargeMeanErr);
    362 
    363   fFitLegend->AddText(line1);
    364 
     380  TText *t1 = fFitLegend->AddText(line1);
     381  t1->SetBit(kCanDelete);
    365382
    366383  const TString line4 =
    367384    Form("Sigma: #sigma_{Q} = %2.2f #pm %2.2f",fChargeSigma,fChargeSigmaErr);
    368 
    369   fFitLegend->AddText(line4);
    370 
     385  TText *t2 =  fFitLegend->AddText(line4);
     386  t2->SetBit(kCanDelete);
    371387
    372388  const TString line7 =
    373389    Form("#chi^{2} / N_{dof}: %4.2f / %3i",fChargeChisquare,fChargeNdf);
    374 
    375   fFitLegend->AddText(line7);
    376 
     390  TText *t3 =  fFitLegend->AddText(line7);
     391  t3->SetBit(kCanDelete);
    377392
    378393  const TString line8 =
    379394    Form("Probability: %4.3f ",fChargeProb);
    380 
    381   fFitLegend->AddText(line8);
    382 
    383   if (fFitOK)
    384     fFitLegend->AddText("Result of the Fit: OK");
     395  TText *t4 =  fFitLegend->AddText(line8);
     396  t4->SetBit(kCanDelete);
     397
     398  if (IsFitOK())
     399    {
     400      TText *t5 = fFitLegend->AddText("Result of the Fit: OK");
     401      t5->SetBit(kCanDelete);
     402    }
    385403  else
    386     fFitLegend->AddText("Result of the Fit: NOT OK");
    387 
     404    {
     405      TText *t6 = fFitLegend->AddText("Result of the Fit: NOT OK");
     406      t6->SetBit(kCanDelete);
     407    }
     408 
    388409  fFitLegend->SetBit(kCanDelete);
    389410  fFitLegend->Draw();
    390411
    391412}
     413
     414
     415TObject *MHCalibrationPixel::DrawClone(Option_t *option) const
     416{
     417
     418  gROOT->SetSelectedPad(NULL);
     419 
     420  MHCalibrationPixel *newobj = (MHCalibrationPixel*)Clone();
     421
     422  if (!newobj)
     423    return 0;
     424  newobj->SetBit(kCanDelete);
     425
     426
     427  if (strlen(option))
     428    newobj->Draw(option);
     429  else   
     430    newobj->Draw(GetDrawOption());
     431 
     432  return newobj;
     433}
     434 
    392435
    393436
     
    400443
    401444  if (!fHivsLoGain)
    402     FitHiGainvsLoGain();
     445   FitHiGainvsLoGain();
    403446     
    404447  gStyle->SetOptFit(0);
    405   gStyle->SetOptStat(1111111);
     448  gStyle->SetOptStat(111111);
     449 
     450  gROOT->SetSelectedPad(NULL);
    406451 
    407452  TCanvas *c = MakeDefCanvas(this,600,900);
    408  
    409   gROOT->SetSelectedPad(NULL);
    410453 
    411454  c->Divide(2,4);
     
    420463    gPad->SetLogy(0);
    421464
    422   fHChargeHiGain->DrawCopy(opt);
     465  fHChargeHiGain->Draw(opt);
    423466 
    424467  c->Modified();
    425468  c->Update();
    426469 
    427   if (fUseLoGain)
     470  if (IsUseLoGain())
    428471    {
    429472
     
    436479        gPad->SetLogy(0);
    437480
    438       fHChargeLoGain->DrawCopy(opt);
     481      fHChargeLoGain->Draw(opt);
    439482     
    440483      if (fChargeGausFit)
    441484        {
    442           if (fFitOK)
     485          if (IsFitOK())
    443486            fChargeGausFit->SetLineColor(kGreen);         
    444487          else
    445488            fChargeGausFit->SetLineColor(kRed);
    446489         
    447           fChargeGausFit->DrawCopy("same");
     490          fChargeGausFit->Draw("same");
    448491        }
    449492      c->Modified();
     
    453496      gROOT->SetSelectedPad(NULL);
    454497      gStyle->SetOptFit();
    455       fHivsLoGain->Draw("prof");
    456 
     498      if (fHivsLoGain)
     499        fHivsLoGain->Draw("prof");
    457500      gPad->Modified();
    458501      gPad->Update();
     
    466509      if (fChargeGausFit)
    467510        {
    468           if (fFitOK)
     511          if (IsFitOK())
    469512            fChargeGausFit->SetLineColor(kGreen);         
    470513          else
    471514            fChargeGausFit->SetLineColor(kRed);
    472515         
    473           fChargeGausFit->DrawCopy("same");
     516          fChargeGausFit->Draw("same");
    474517        }
    475518
     
    482525        gPad->SetLogy(0);
    483526     
    484       fHChargeLoGain->DrawCopy(opt);
     527      fHChargeLoGain->Draw(opt);
    485528      c->Modified();
    486529      c->Update();
     
    493536      gROOT->SetSelectedPad(NULL);
    494537      gStyle->SetOptFit();
    495       fHivsLoGain->Draw("prof");
     538      if (fHivsLoGain)
     539        fHivsLoGain->Draw("prof");
    496540      gPad->Modified();
    497541      gPad->Update();
     
    506550  gPad->SetTicks(); 
    507551  gPad->SetLogy(0);
    508   fHTimeHiGain->DrawCopy(opt);
     552  fHTimeHiGain->Draw(opt);
    509553  c->Modified();
    510554  c->Update();
    511555 
    512   if (fUseLoGain)
     556  if (IsUseLoGain())
    513557      {
    514558       
     
    516560        gPad->SetTicks();
    517561        gPad->SetLogy(0);
    518         fHTimeLoGain->DrawCopy(opt);
     562        fHTimeLoGain->Draw(opt);
    519563        c->Modified();
    520564        c->Update();
     
    527571              fTimeGausFit->SetLineColor(kGreen);
    528572           
    529             fTimeGausFit->DrawCopy("same");
     573            fTimeGausFit->Draw("same");
    530574            c->Modified();
    531575            c->Update();
     
    541585              fTimeGausFit->SetLineColor(kGreen);
    542586           
    543             fTimeGausFit->DrawCopy("same");
     587            fTimeGausFit->Draw("same");
    544588            c->Modified();
    545589            c->Update();
     
    549593        gPad->SetTicks();
    550594        gPad->SetLogy(0);
    551         fHTimeLoGain->DrawCopy(opt);   
     595        fHTimeLoGain->Draw(opt);       
    552596        c->Modified();
    553597        c->Update();
     
    559603    c->cd(7);
    560604    gPad->SetTicks();
    561     fHChargevsNHiGain->DrawCopy(opt);
     605    fHChargevsNHiGain->Draw(opt);
    562606    c->Modified();
    563607    c->Update();
     
    565609    c->cd(8);
    566610    gPad->SetTicks();
    567     fHChargevsNLoGain->DrawCopy(opt);
     611    fHChargevsNLoGain->Draw(opt);
    568612    c->Modified();
    569613    c->Update();
    570614
    571 
     615    return;
    572616}
    573617
     
    575619{
    576620
     621  *fLog << inf << "Fit Hi Gain vs Lo Gain " << endl;
     622
    577623  if (fHivsLoGain)
     624    return;
     625
     626  if ((!fHiGains) || (!fLoGains) || (fHiGains->GetSize() == 0) || (fLoGains->GetSize() == 0))
    578627    return;
    579628
     
    587636  titleHiLoGain += fPixId;
    588637  fHivsLoGain->SetName(titleHiLoGain.Data());
    589 
    590638 
    591639  for (Int_t i=0;i<fTotalEntries;i++)
    592640    fHivsLoGain->Fill(fHiGains->At(i),fLoGains->At(i),1);
    593641 
    594   fHivsLoGain->Fit("pol1","rq","",fHivsLoGain->GetMean()-2.5*fHivsLoGain->GetRMS(),fHivsLoGain->GetMean()+2.*fHivsLoGain->GetRMS());
     642  fHivsLoGain->Fit("pol1","rq","",fHivsLoGain->GetMean()-2.5*fHivsLoGain->GetRMS(),
     643                                  fHivsLoGain->GetMean()+2.0*fHivsLoGain->GetRMS());
    595644 
    596645  fOffset = fHivsLoGain->GetFunction("pol1")->GetParameter(0);
     
    772821  if (fChargeProb < gkProbLimit)
    773822    {
    774       *fLog << warn << "WARNING: Fit Probability " << fChargeProb
    775             << " is smaller than the allowed value: " << gkProbLimit << endl;
    776       fFitOK = kFALSE;
     823      //      *fLog << warn << "WARNING: Fit Probability " << fChargeProb
     824      //            << " is smaller than the allowed value: " << gkProbLimit << endl;
     825      CLRBIT(fFlags,kFitOK);
    777826      return kFALSE;
    778827    }
    779828 
    780   fFitOK = kTRUE;
     829  SETBIT(fFlags,kFitOK);
    781830  return kTRUE;
    782831}
     
    852901  if (fChargeProb < gkProbLimit)
    853902    {
    854       *fLog << warn << "WARNING: Fit Probability " << fChargeProb
    855             << " is smaller than the allowed value: " << gkProbLimit << endl;
    856       fFitOK = kFALSE;
     903      //      *fLog << warn << "WARNING: Fit Probability " << fChargeProb
     904      //            << " is smaller than the allowed value: " << gkProbLimit << endl;
     905      CLRBIT(fFlags,kFitOK);
    857906      return kFALSE;
    858907    }
    859908 
    860  
    861   fFitOK = kTRUE;
     909  SETBIT(fFlags,kFitOK);
    862910   
    863911  return kTRUE;
Note: See TracChangeset for help on using the changeset viewer.