3 // Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
4 //*-- Copyright © ALICE HLT Group
7 #include "AliL3StandardIncludes.h"
9 #include "AliL3Logging.h"
10 #include "AliL3Histogram1D.h"
20 //_____________________________________________________________
23 // 1D histogram class.
25 ClassImp(AliL3Histogram1D)
27 AliL3Histogram1D::AliL3Histogram1D()
43 AliL3Histogram1D::AliL3Histogram1D(Char_t *name,Char_t */*id*/,Int_t nxbin,Double_t xmin,Double_t xmax)
58 fContent = new Double_t[fNcells];
62 AliL3Histogram1D::~AliL3Histogram1D()
74 void AliL3Histogram1D::Reset()
76 //Reset histogram contents
78 bzero((char *)fContent,fNcells*sizeof(Double_t));
80 bzero(fContent,fNcells*sizeof(Double_t));
85 void AliL3Histogram1D::Fill(Double_t x,Int_t weight)
87 //Fill a given bin with weight
88 Int_t bin = FindBin(x);
89 AddBinContent(bin,weight);
93 Int_t AliL3Histogram1D::FindBin(Double_t x) const
96 if(x < fXmin || x > fXmax)
99 return 1 + (Int_t)(fNbins*(x-fXmin)/(fXmax-fXmin));
103 Int_t AliL3Histogram1D::GetMaximumBin() const
105 //Find the bin with the largest content
108 for(Int_t i=0; i<fNcells; i++)
110 if(fContent[i] > maxvalue)
112 maxvalue=fContent[i];
119 Double_t AliL3Histogram1D::GetBinContent(Int_t bin) const
124 LOG(AliL3Log::kError,"AliL3Histogram::GetBinContent","array")<<AliL3Log::kDec<<
125 "bin out of range "<<bin<<ENDLOG;
129 if(fContent[bin] < fThreshold)
131 return fContent[bin];
135 void AliL3Histogram1D::SetBinContent(Int_t bin,Int_t value)
140 LOG(AliL3Log::kError,"AliL3Histogram::SetBinContent","array")<<AliL3Log::kDec<<
141 "bin out of range "<<bin<<ENDLOG;
150 void AliL3Histogram1D::AddBinContent(Int_t bin,Int_t weight)
152 //Add weight to bin content
153 if(bin < 0 || bin > fNcells)
155 LOG(AliL3Log::kError,"AliL3Histogram::AddBinContent","array")<<AliL3Log::kDec<<
156 "bin-value out of range "<<bin<<ENDLOG;
162 fContent[bin] += weight;
165 Double_t AliL3Histogram1D::GetBinCenter(Int_t bin) const
168 Double_t binwidth = (fXmax - fXmin) / fNbins;
169 return fXmin + (bin-1) * binwidth + 0.5*binwidth;
174 void AliL3Histogram1D::Draw(Char_t *option)
177 fRootHisto = new TH1F(fName,"",fNbins,fXmin,fXmax);
178 for(Int_t bin=0; bin<fNcells; bin++)
179 fRootHisto->AddBinContent(bin,GetBinContent(bin));
181 fRootHisto->Draw(option);