2 // origin: hough/AliL3Histogram1D.cxx,v 1.11 Tue Jun 14 10:55:20 2005 UTC by cvetan
4 // Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
5 //*-- Copyright © ALICE HLT Group
8 #include "AliHLTStdIncludes.h"
10 #include "AliHLTTPCLogging.h"
11 #include "AliHLTTPCHistogram1D.h"
21 //_____________________________________________________________
22 // AliHLTTPCHistogram1D
24 // 1D histogram class.
26 ClassImp(AliHLTTPCHistogram1D)
28 AliHLTTPCHistogram1D::AliHLTTPCHistogram1D()
44 AliHLTTPCHistogram1D::AliHLTTPCHistogram1D(Char_t *name,Char_t */*id*/,Int_t nxbin,Double_t xmin,Double_t xmax)
59 fContent = new Double_t[fNcells];
63 AliHLTTPCHistogram1D::~AliHLTTPCHistogram1D()
75 void AliHLTTPCHistogram1D::Reset()
77 //Reset histogram contents
79 bzero((char *)fContent,fNcells*sizeof(Double_t));
81 bzero(fContent,fNcells*sizeof(Double_t));
86 void AliHLTTPCHistogram1D::Fill(Double_t x,Int_t weight)
88 //Fill a given bin with weight
89 Int_t bin = FindBin(x);
90 AddBinContent(bin,weight);
94 Int_t AliHLTTPCHistogram1D::FindBin(Double_t x) const
97 if(x < fXmin || x > fXmax)
100 return 1 + (Int_t)(fNbins*(x-fXmin)/(fXmax-fXmin));
104 Int_t AliHLTTPCHistogram1D::GetMaximumBin() const
106 //Find the bin with the largest content
109 for(Int_t i=0; i<fNcells; i++)
111 if(fContent[i] > maxvalue)
113 maxvalue=fContent[i];
120 Double_t AliHLTTPCHistogram1D::GetBinContent(Int_t bin) const
125 LOG(AliHLTTPCLog::kError,"AliHLTTPCHistogram::GetBinContent","array")<<AliHLTTPCLog::kDec<<
126 "bin out of range "<<bin<<ENDLOG;
130 if(fContent[bin] < fThreshold)
132 return fContent[bin];
136 void AliHLTTPCHistogram1D::SetBinContent(Int_t bin,Int_t value)
141 LOG(AliHLTTPCLog::kError,"AliHLTTPCHistogram::SetBinContent","array")<<AliHLTTPCLog::kDec<<
142 "bin out of range "<<bin<<ENDLOG;
151 void AliHLTTPCHistogram1D::AddBinContent(Int_t bin,Int_t weight)
153 //Add weight to bin content
154 if(bin < 0 || bin > fNcells)
156 LOG(AliHLTTPCLog::kError,"AliHLTTPCHistogram::AddBinContent","array")<<AliHLTTPCLog::kDec<<
157 "bin-value out of range "<<bin<<ENDLOG;
163 fContent[bin] += weight;
166 Double_t AliHLTTPCHistogram1D::GetBinCenter(Int_t bin) const
169 Double_t binwidth = (fXmax - fXmin) / fNbins;
170 return fXmin + (bin-1) * binwidth + 0.5*binwidth;
174 void AliHLTTPCHistogram1D::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);