//$Id$ // Author: Anders Vestbo //*-- Copyright © ASV #include #include "AliL3Logging.h" #include "AliL3Histogram.h" //_____________________________________________________________ // AliL3Histogram // // 2D histogram class ClassImp(AliL3Histogram) AliL3Histogram::AliL3Histogram() { fNxbins = 0; fNybins = 0; fNcells = 0; fXmin = 0; fYmin = 0; fXmax = 0; fYmax = 0; fFirstXbin = 0; fLastXbin = 0; fFirstYbin = 0; fLastYbin = 0; fEntries = 0; fContent = 0; fThreshold = 0; } AliL3Histogram::AliL3Histogram(Char_t *name,Char_t *id, Int_t nxbin,Double_t xmin,Double_t xmax, Int_t nybin,Double_t ymin,Double_t ymax) { strcpy(fName,name); fNxbins = nxbin; fNybins = nybin; fNcells = (nxbin+2)*(nybin+2); fXmin = xmin; fYmin = ymin; fXmax = xmax; fYmax = ymax; fEntries = 0; fFirstXbin = 1; fFirstYbin = 1; fLastXbin = nxbin; fLastYbin = nybin; #ifdef use_root fRootHisto = 0; #endif fThreshold = 0; fContent = new Double_t[fNcells]; Reset(); } AliL3Histogram::~AliL3Histogram() { //Destructor if(fContent) delete [] fContent; #ifdef use_root if(fRootHisto) delete fRootHisto; #endif } void AliL3Histogram::Reset() { for(Int_t i=0; i fXmax) return 0; return 1 + (Int_t)(fNxbins*(x-fXmin)/(fXmax-fXmin)); } Int_t AliL3Histogram::FindYbin(Double_t y) { if(y < fYmin || y > fYmax) return 0; return 1 + (Int_t)(fNybins*(y-fYmin)/(fYmax-fYmin)); } Int_t AliL3Histogram::GetBin(Int_t xbin,Int_t ybin) { if(xbin < 0 || xbin > GetLastXbin()) { LOG(AliL3Log::kError,"AliL3Histogram::GetBin","array")< GetLastYbin()) { LOG(AliL3Log::kError,"AliL3Histogram::FindYbin","array")<= fNcells) { LOG(AliL3Log::kError,"AliL3Histogram::GetBinContent","array")<= fNcells) { LOG(AliL3Log::kError,"AliL3Histogram::SetBinContent","array")< fNcells) { LOG(AliL3Log::kError,"AliL3Histogram::AddBinContent","array")<GetNbinsX()!=fNxbins || h1->GetNbinsY()!=fNybins) { LOG(AliL3Log::kError,"AliL3Histogram::Add","array")<< "Mismatch in the number of bins "<GetFirstXbin()!=fFirstXbin || h1->GetLastXbin()!=fLastXbin || h1->GetFirstYbin()!=fFirstYbin || h1->GetLastYbin()!=fLastYbin) { LOG(AliL3Log::kError,"AliL3Histogram::Add","array")<< "Mismatch in the bin numbering "<GetBinContent(bin); } Double_t AliL3Histogram::GetBinCenterX(Int_t xbin) { Double_t binwidth = (fXmax - fXmin) / fNxbins; return fXmin + (xbin-1) * binwidth + 0.5*binwidth; } Double_t AliL3Histogram::GetBinCenterY(Int_t ybin) { Double_t binwidth = (fYmax - fYmin) / fNybins; return fYmin + (ybin-1) * binwidth + 0.5*binwidth; } void AliL3Histogram::Draw(Char_t *option) { #ifdef use_root fRootHisto = new TH2F(fName,"",fNxbins,fXmin,fXmax,fNybins,fYmin,fYmax); for(Int_t bin=0; binAddBinContent(bin,GetBinContent(bin)); } fRootHisto->SetStats(kFALSE); fRootHisto->Draw(option); return; #endif cerr<<"AliL3Histogram::Draw : You need to compile with ROOT in order to draw histogram"<