changed constructor and a few minor things
authorekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 May 2006 13:02:52 +0000 (13:02 +0000)
committerekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 May 2006 13:02:52 +0000 (13:02 +0000)
PWG0/CorrectionMatrix2D.cxx
PWG0/CorrectionMatrix2D.h

index 25cc10d..ce17450 100644 (file)
@@ -4,75 +4,71 @@
 ClassImp(CorrectionMatrix2D);
 
 //____________________________________________________________________
-CorrectionMatrix2D::CorrectionMatrix2D(Char_t* name) {
-
-  fName = TString(name);
-
-}
-//________________________________________________________________________
-void CorrectionMatrix2D::SetHist(Char_t* title ,Int_t nBinX, Float_t Xmin, Float_t Xmax,
-                                 Int_t nBinY, Float_t Ymin, Float_t Ymax) 
+CorrectionMatrix2D::CorrectionMatrix2D(Char_t* name, Char_t* title,
+                                      Int_t nBinX, Float_t Xmin, Float_t Xmax,
+                                      Int_t nBinY, Float_t Ymin, Float_t Ymax) 
+  : TNamed(name, title)
 {
-//Char_t* name , Chat_t* title ,   
 
-  hmeas  = new TH2F("meas",  Form("meas_%s",title), nBinX,Xmin,Xmax,nBinY,Ymin,Ymax);
-  hgene  = new TH2F("gene",  Form("gene_%s",title), nBinX,Xmin,Xmax,nBinY,Ymin,Ymax);
-  hcorr  = new TH2F("corr",  Form("corr_%s",title), nBinX,Xmin,Xmax,nBinY,Ymin,Ymax);
-  hratio = new TH2F("ratio", Form("ratio_%s",title), nBinX,Xmin,Xmax,nBinY,Ymin,Ymax);
+  fhMeas  = new TH2F(Form("meas_%s",name), Form("meas_%s",title),  nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
+  fhGene  = new TH2F(Form("gene_%s",name), Form("gene_%s",title),  nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
+  fhCorr  = new TH2F(Form("corr_%s",name), Form("corr_%s",title),  nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
+  fhRatio = new TH2F(Form("ratio_%s",name),Form("ratio_%s",title), nBinX, Xmin, Xmax, nBinY, Ymin, Ymax);
 }
 
-
-void CorrectionMatrix2D::SetHist(Char_t* title ,Int_t nBinX, Float_t *X,
-                                               Int_t nBinY, Float_t *Y) 
+//____________________________________________________________________
+CorrectionMatrix2D::CorrectionMatrix2D(Char_t* name,Char_t* title, 
+                                      Int_t nBinX, Float_t *X, Int_t nBinY, Float_t *Y) 
+  : TNamed(name, title)
 {
-
-  hmeas  = new TH2F("meas",  Form("meas_%s",title), nBinX,X,nBinY,Y);
-  hgene  = new TH2F("gene",  Form("gene_%s",title), nBinX,X,nBinY,Y);
-  hcorr  = new TH2F("corr",  Form("corr_%s",title), nBinX,X,nBinY,Y);
-  hratio = new TH2F("ratio", Form("ratio_%s",title),nBinX,X,nBinY,Y);
-  
+  fhMeas  = new TH2F(Form("meas_%s",name), Form("meas_%s",title),  nBinX, X, nBinY, Y);
+  fhGene  = new TH2F(Form("gene_%s",name), Form("gene_%s",title),  nBinX, X, nBinY, Y);
+  fhCorr  = new TH2F(Form("corr_%s",name), Form("corr_%s",title),  nBinX, X, nBinY, Y);
+  fhRatio = new TH2F(Form("ratio_%s",name),Form("ratio_%s",title), nBinX, X, nBinY, Y);
 }
 
 
+//____________________________________________________________________
+CorrectionMatrix2D::~CorrectionMatrix2D() {
+  // Destructor
+  //
+  if (fhMeas)  delete fhMeas;
+  if (fhGene)  delete fhCorr;
+  if (fhRatio) delete fhRatio;
+  if (fhCorr)  delete fhCorr;
+}
 
-//________________________________________________________________________
-void CorrectionMatrix2D::SetHistTitle(Char_t* titleX, Char_t* titleY) 
-{
-  hmeas ->SetXTitle(titleX);  hmeas ->SetYTitle(titleY); 
-  hgene ->SetXTitle(titleX);  hgene ->SetYTitle(titleY); 
-  hcorr ->SetXTitle(titleX);  hcorr ->SetYTitle(titleY); 
-  hratio->SetXTitle(titleX);  hratio->SetYTitle(titleY); 
 
+//________________________________________________________________________
+void CorrectionMatrix2D::SetAxisTitles(Char_t* titleX, Char_t* titleY) 
+{ 
+  fhMeas ->SetXTitle(titleX);  fhMeas ->SetYTitle(titleY);
+  fhGene ->SetXTitle(titleX);  fhGene ->SetYTitle(titleY);
+  fhCorr ->SetXTitle(titleX);  fhCorr ->SetYTitle(titleY);
+  fhRatio->SetXTitle(titleX);  fhRatio->SetYTitle(titleY);
 }
 
 
 //____________________________________________________________________
 void CorrectionMatrix2D::Finish() {  
 
-if (!hmeas || !hgene)  return;
+if (!fhMeas || !fhGene)  return;
  
-TCanvas *c1 = new TCanvas();
-c1->Divide(2,1);
-c1->cd(1);
-hgene->Draw();
-c1->cd(2);
-hmeas->Draw();
 
-  hratio->Divide(hmeas, hgene, 1,1,"B");
-  hcorr->Divide(hgene, hmeas, 1,1,"B");
+  fhRatio->Divide(fhMeas, fhGene, 1,1,"B");
+  fhCorr->Divide(fhGene, fhMeas, 1,1,"B");
 
-  Int_t nBinsVtx = hcorr->GetNbinsX();
-  Int_t nBinsEta = hcorr->GetNbinsY();
+  Int_t nBinsVtx = fhCorr->GetNbinsX();
+  Int_t nBinsEta = fhCorr->GetNbinsY();
 
-  TH2F* tmp = (TH2F*)hcorr->Clone("tmp");
+  TH2F* tmp = (TH2F*)fhCorr->Clone("tmp");
 
   // cut at 0.2
   for (Int_t bx=0; bx<=nBinsVtx; bx++) {
     for (Int_t by=0; by<=nBinsEta; by++) {
       if (tmp->GetBinContent(bx,by)<0.2) {
-       hcorr->SetBinContent(bx,by,0);
-       hcorr->SetBinError(bx,by,0);
+       fhCorr->SetBinContent(bx,by,0);
+       fhCorr->SetBinError(bx,by,0);
        
        tmp->SetBinContent(bx,by,0);
       }
@@ -91,21 +87,21 @@ CorrectionMatrix2D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge)
   // - bins with content less than cut
   // - bins next to bins with zero bin content
   
-  Int_t nBinsX = hcorr->GetNbinsX();
-  Int_t nBinsY = hcorr->GetNbinsY();
+  Int_t nBinsX = fhCorr->GetNbinsX();
+  Int_t nBinsY = fhCorr->GetNbinsY();
 
   // set bin content to zero for bins with content smaller cut
   for (Int_t bx=0; bx<=nBinsX; bx++) {
     for (Int_t by=0; by<=nBinsY; by++) {
-      if (hcorr->GetBinContent(bx,by)>cut) {
-         hcorr->SetBinContent(bx,by,0);
-         hcorr->SetBinError(bx,by,0);
+      if (fhCorr->GetBinContent(bx,by)>cut) {
+         fhCorr->SetBinContent(bx,by,0);
+         fhCorr->SetBinError(bx,by,0);
       }
     }
   }
 
   // set bin content to zero for bins next to bins with zero
-  TH2F* tmp = (TH2F*)hcorr->Clone("tmp");
+  TH2F* tmp = (TH2F*)fhCorr->Clone("tmp");
   tmp->Reset();
   
   Bool_t done = kFALSE;
@@ -115,8 +111,8 @@ CorrectionMatrix2D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge)
     if (nBinsXCount<nBinsXedge) 
       for (Int_t bx=0; bx<=nBinsX; bx++) {
        for (Int_t by=0; by<=nBinsY; by++) {
-         if ((hcorr->GetBinContent(bx+1,by)==0)|| 
-             (hcorr->GetBinContent(bx-1,by)==0))
+         if ((fhCorr->GetBinContent(bx+1,by)==0)|| 
+             (fhCorr->GetBinContent(bx-1,by)==0))
            tmp->SetBinContent(bx,by,1);        
          
        }
@@ -124,16 +120,16 @@ CorrectionMatrix2D::RemoveEdges(Float_t cut, Int_t nBinsXedge, Int_t nBinsYedge)
     if (nBinsYCount<nBinsYedge) 
       for (Int_t bx=0; bx<=nBinsX; bx++) {
        for (Int_t by=0; by<=nBinsY; by++) {
-         if ((hcorr->GetBinContent(bx,by+1)==0)|| 
-             (hcorr->GetBinContent(bx,by-1)==0))
+         if ((fhCorr->GetBinContent(bx,by+1)==0)|| 
+             (fhCorr->GetBinContent(bx,by-1)==0))
            tmp->SetBinContent(bx,by,1);        
        }
       }    
     for (Int_t bx=0; bx<=nBinsX; bx++) {
       for (Int_t by=0; by<=nBinsY; by++) {
        if (tmp->GetBinContent(bx,by)==1) {
-         hcorr->SetBinContent(bx,by,0);
-         hcorr->SetBinError(bx,by,0);
+         fhCorr->SetBinContent(bx,by,0);
+         fhCorr->SetBinError(bx,by,0);
        }
       }
     }
@@ -156,19 +152,19 @@ Bool_t CorrectionMatrix2D::LoadHistograms(Char_t* fileName, Char_t* dir) {
   return kFALSE;
   }
   
-  if(hgene)  {delete hgene;  hgene=0;}
-  if(hcorr)  {delete hcorr;  hcorr=0;}
-  if(hratio) {delete hratio; hratio=0;}
-  if(hmeas)  {delete hmeas;  hmeas=0;}
+  if(fhGene)  {delete fhGene;  fhGene=0;}
+  if(fhCorr)  {delete fhCorr;  fhCorr=0;}
+  if(fhRatio) {delete fhRatio; fhRatio=0;}
+  if(fhMeas)  {delete fhMeas;  fhMeas=0;}
   
-  hmeas  = (TH2F*)fin->Get(Form("%s/meas",dir));
-      if(!hmeas)  Info("LoadHistograms","No meas  hist available");
-  hgene  = (TH2F*)fin->Get(Form("%s/gene",dir));
-      if(!hgene)  Info("LoadHistograms","No gene  hist available");
-  hratio = (TH2F*)fin->Get(Form("%s/ratio",dir));
-      if(!hratio) Info("LoadHistograms","No ratio hist available");
-  hcorr  = (TH2F*)fin->Get(Form("%s/corr",dir));
-      if(!hcorr) {Info("LoadHistograms","No corr  hist available");
+  fhMeas  = (TH2F*)fin->Get(Form("%s/meas",dir));
+      if(!fhMeas)  Info("LoadHistograms","No meas  hist available");
+  fhGene  = (TH2F*)fin->Get(Form("%s/gene",dir));
+      if(!fhGene)  Info("LoadHistograms","No gene  hist available");
+  fhRatio = (TH2F*)fin->Get(Form("%s/ratio",dir));
+      if(!fhRatio) Info("LoadHistograms","No ratio hist available");
+  fhCorr  = (TH2F*)fin->Get(Form("%s/corr",dir));
+      if(!fhCorr) {Info("LoadHistograms","No corr  hist available");
       return kFALSE;}
       
   return kTRUE;
@@ -182,14 +178,14 @@ CorrectionMatrix2D::SaveHistograms() {
   gDirectory->mkdir(fName.Data());
   gDirectory->cd(fName.Data());
   
-  hmeas ->Write();
-  hgene ->Write();
+  fhMeas ->Write();
+  fhGene ->Write();
 
-  if (hcorr)
-    hcorr->Write();
+  if (fhCorr)
+    fhCorr->Write();
 
-  if (hratio)
-    hratio->Write();
+  if (fhRatio)
+    fhRatio->Write();
 
   gDirectory->cd("../");
 }
@@ -201,20 +197,20 @@ void CorrectionMatrix2D::DrawHistograms()
   canvas->Divide(2, 2);
 
   canvas->cd(1);
-  if (hmeas)
-    hmeas->Draw("COLZ");
+  if (fhMeas)
+    fhMeas->Draw("COLZ");
 
   canvas->cd(2);
-  if (hgene)
-    hgene->Draw("COLZ");
+  if (fhGene)
+    fhGene->Draw("COLZ");
 
   canvas->cd(3);
-  if (hratio)
-    hratio->Draw("COLZ");
+  if (fhRatio)
+    fhRatio->Draw("COLZ");
 
   canvas->cd(4);
-  if (hcorr)
-    hcorr->Draw("COLZ");
+  if (fhCorr)
+    fhCorr->Draw("COLZ");
 }
 
 
index c03cf3e..96cc060 100644 (file)
@@ -3,19 +3,12 @@
 
 // ------------------------------------------------------
 //
-// Class to handle corrections for dN/dEta measurements
+// Class to handle 2d - corrections 
 //
 // ------------------------------------------------------
-//
-// TODO:
-// - add documentation
-// - add status: generate or use maps
-// - add functionality to set the bin sizes
-// - add histograms with errors (for error visualization)
-// 
 
-#ifndef ROOT_TObject
-#include "TObject.h"
+#ifndef ROOT_TNamed
+#include "TNamed.h"
 #endif
 #ifndef ROOT_TFile
 #include "TFile.h"
 #ifndef ROOT_TH2
 #include "TH2.h"
 #endif
-#ifndef ROOT_TCanvas
-#include "TCanvas.h"
-#endif
 #ifndef ROOT_TError
 #include "TError.h"
 #endif
+#ifndef ROOT_TCanvas
+#include "TCanvas.h"
+#endif
 
-class CorrectionMatrix2D : public TObject 
+class CorrectionMatrix2D : public TNamed 
 {
-protected:
-  
-  TString  fName; 
-  
-  TH2F*    hmeas;
-  TH2F*    hgene;
-
-  TH2F*    hcorr; 
-  TH2F*    hratio;
-
 public:
-  CorrectionMatrix2D(Char_t* name="CorrectionMatrix");
+  CorrectionMatrix2D(Char_t* name="CorrectionMatrix", Char_t* title="",
+                    Int_t nBinX=10, Float_t Xmin=0., Float_t Xmax=10.,
+                    Int_t nBinY=10, Float_t Ymin=0., Float_t Ymax=10.);
+  
+  CorrectionMatrix2D(Char_t* name, Char_t* title,
+                    Int_t nBinX, Float_t *X, Int_t nBinY, Float_t *Y);
 
-  TH2F* GetGeneratedHistogram() { return hgene; }
-  TH2F* GetMeasuredHistogram()  { return hmeas; }
+  virtual ~CorrectionMatrix2D(); 
 
-  void SetGeneratedHistogram(TH2F* agene) { hgene = agene; }
-  void SetMeasuredHistogram(TH2F* ameas) { hmeas = ameas; }
+  TH2F* GetGeneratedHistogram() { return fhGene; }
+  TH2F* GetMeasuredHistogram()  { return fhMeas; }
 
+  void SetGeneratedHistogram(TH2F* agene) { fhGene = agene; }
+  void SetMeasuredHistogram(TH2F* ameas)  { fhMeas  = ameas; }
 
-  void FillMeas(Float_t x, Float_t y) {hmeas->Fill(x,y);}
-  void FillGene(Float_t x, Float_t y) {hgene->Fill(x,y);}
+  void FillMeas(Float_t ax, Float_t ay) {fhMeas->Fill(ax,ay);}
+  void FillGene(Float_t ax, Float_t ay) {fhGene->Fill(ax,ay);}
 
-  void Finish();
-  
-  //Char_t *name , Char_t *title , 
-               
-  void SetHist(Char_t* title ,Int_t nBinX=10, Float_t Xmin=0., Float_t Xmax=10.,
-              Int_t nBinY=10, Float_t Ymin=0., Float_t Ymax=10.);
-  void SetHist(Char_t* title ,Int_t nBinX, Float_t *X, Int_t nBinY, Float_t *Y);
-   
-  void SetHistTitle(Char_t* titleX=" ", Char_t* titleY=" ");
+  void Finish();  
+                  
+  void SetAxisTitles(Char_t* titleX="", Char_t* titleY="");
   
   void SaveHistograms();
   void DrawHistograms();  
@@ -73,8 +56,17 @@ public:
   
   void    RemoveEdges(Float_t cut=2, Int_t nBinsVtx=0, Int_t nBinsEta=0);
   
-  Float_t GetCorrection(Float_t x, Float_t y) {return hcorr->GetBinContent(hcorr->FindBin(x,y));}
+  Float_t GetCorrection(Float_t ax, Float_t ay) {return fhCorr->GetBinContent(fhCorr->FindBin(ax,ay));}
   
+protected:
+  
+  TH2F*    fhMeas;
+  TH2F*    fhGene;
+
+  TH2F*    fhCorr; 
+  TH2F*    fhRatio;
+
+
   ClassDef(CorrectionMatrix2D,0)
 };