* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.1.4.2 2000/04/10 11:32:37 kowal2
-
-"ROOT"-based class with some extra functionality
-
-*/
+/* $Id$ */
//----------------------------------------------------------------------------
// Author: Marian Ivanov
//
//-----------------------------------------------------------------------------
-#include "AliH2F.h"
-#include "TClonesArray.h"
-#include "AliTPC.h"
-#include "TRandom.h"
-#include "AliCluster.h"
-#include "AliClusterFinder.h"
-//*KEEP,TMath.
+#include <TClonesArray.h>
+#include <TMath.h>
+#include <TRandom.h>
-// other include files follow here
+#include "AliH2F.h"
ClassImp(AliH2F)
//***********************************************************************
AliH2F::AliH2F():TH2F()
{
- fSigmaX2 = 1.;
- fSigmaY2 = 1.;
- fdx = 1;
- fdy=1;
- fFitMatrix.ResizeTo(5,1);
+ //
+
}
AliH2F::AliH2F(const Text_t *name,const Text_t *title,
Int_t nbinsx,Axis_t xlow,Axis_t xup
TH2F(name,title,nbinsx,xlow,xup
,nbinsy,ylow,yup)
{
- fSigmaX2 = 1.;
- fSigmaY2 = 1.;
- fdx = 1;
- fdy=1;
- fFitMatrix.ResizeTo(5,1);
+ //
+
}
AliH2F::~AliH2F()
{
+ //
}
-AliH2F::AliH2F(const AliH2F &)
+AliH2F::AliH2F(const AliH2F &his) :
+ TH2F(his)
{
+ //
+
}
-AliH2F & AliH2F::operator = (const AliH2F &)
+AliH2F & AliH2F::operator = (const AliH2F & /*his*/)
{
- return *this;
+ //
+ return *this;
}
+/*
TClonesArray * AliH2F::FindPeaks(Float_t threshold, Float_t noise)
{
//find peaks and write it in form of AliTPCcluster to array
//firstly we need to create object for cluster finding
//and fill it with contents of histogram
- AliClusterFinder cfinder;
+ AliTPCClusterFinder cfinder;
cfinder.SetThreshold(threshold);
cfinder.SetNoise(noise);
cfinder.GetHisto(this);
return cfinder.FindPeaks3();
}
+*/
void AliH2F::ClearSpectrum()
{
+ //clera histogram
Int_t dimx = fXaxis.GetNbins();
Int_t dimy = fYaxis.GetNbins();
for (Int_t i = 0 ;i<dimx;i++)
void AliH2F::AddNoise(Float_t sn)
{
+ // add gauss noise with sigma sn
Int_t dimx = fXaxis.GetNbins();
Int_t dimy = fYaxis.GetNbins();
for (Int_t i = 0 ;i<dimx;i++)
}
void AliH2F::AddGauss(Float_t x, Float_t y,
Float_t sx, Float_t sy, Float_t max)
-{
+{
//transform to histogram coordinata
Int_t dimx = fXaxis.GetNbins();
Int_t dimy = fYaxis.GetNbins();
void AliH2F::ClearUnderTh(Int_t threshold)
{
+ //clear histogram for bin under threshold
Int_t dimx = fXaxis.GetNbins();
Int_t dimy = fYaxis.GetNbins();
for (Int_t i = 0 ;i<=dimx;i++)
void AliH2F::Round()
{
+ //round float to integer
Int_t dimx = fXaxis.GetNbins();
Int_t dimy = fYaxis.GetNbins();
for (Int_t i = 0 ;i<=dimx;i++)
TString t2 = fTitle ;
t1+="_subrange";
t2+="_subrange";
- const Text_t * tt1 = t1;
- const Text_t * tt2 = t2;
+ const Text_t *ktt1 = t1;
+ const Text_t *ktt2 = t2;
- AliH2F * sub = new AliH2F(tt1,tt2,nx,xmin,xmax,ny,ymin,ymax);
+ AliH2F * sub = new AliH2F(ktt1,ktt2,nx,xmin,xmax,ny,ymin,ymax);
Int_t i1 = Int_t( Float_t(fXaxis.GetNbins())*(xmin-fXaxis.GetXmin())/
(fXaxis.GetXmax()-fXaxis.GetXmin()) ) ;
TString t2 = fTitle ;
t1+="_amplitudes";
t2+="_amplitudes";
- const Text_t * tt1 = t1;
- const Text_t * tt2 = t2;
+ const Text_t *ktt1 = t1;
+ const Text_t *ktt2 = t2;
- TH1F * h = new TH1F(tt1,tt2,100,zmin,zmax);
+ TH1F * h = new TH1F(ktt1,ktt2,100,zmin,zmax);
Int_t i1 = Int_t( Float_t(fXaxis.GetNbins())*(xmin-fXaxis.GetXmin())/
(fXaxis.GetXmax()-fXaxis.GetXmin()) ) ;
else
return 0;
}
-
-//TH1F * AliH2F::GetSubrange1dx(Float_t xmin, Float_t xmax, Float_t y)
-//{
-//
-//}
-//TH1F * AliH2F::GetSubrange1dy(Float_t x, Float_t ymin, Float_t ymax)
-//{
-//
-//}
-
-void AliH2F::SetSmoothSigma(Float_t sigmaX, Float_t sigmaY)
-{
- Float_t wx = (fXaxis.GetXmax()-fXaxis.GetXmin()) / Float_t(fXaxis.GetNbins());
- Float_t wx2 = wx*wx;
- Float_t wy = (fYaxis.GetXmax()-fYaxis.GetXmin()) / Float_t(fYaxis.GetNbins()) ;
- Float_t wy2 =wy*wy;
- fSigmaX2 = sigmaX*sigmaX/wx2;
- fSigmaY2 = sigmaY*sigmaX/wy2;
-}
-
-void AliH2F::SetSmoothRange(Float_t dx,Float_t dy)
-{
- Float_t wx = (fXaxis.GetXmax()-fXaxis.GetXmin()) / Float_t(fXaxis.GetNbins());
- Float_t wy = (fYaxis.GetXmax()-fYaxis.GetXmin()) / Float_t(fYaxis.GetNbins());
- fdx = Int_t(dx/wx);
- fdy = Int_t(dy/wy);
-}
-
-TMatrix * AliH2F::GetFitMatrix(Int_t irow, Int_t icolumn)
-{
- SmoothCell(irow,icolumn);
- return &fFitMatrix;
-}
-
-void AliH2F::SmoothCell(Int_t irow, Int_t icolumn)
-{
- //calculate interpolation around point irow icollumn
- //fitting by surface of second oreder
- Int_t index;
- Float_t x,y,z,x2,x3,x4,y2,y3,y4;
- Float_t sz = 0.0,szx = 0.0 ,szy = 0.0 ,szx2 = 0.0,szy2 = 0.0;
- Float_t sx = 0.,sx2 = 0.,sx3 = 0.,sx4 = 0.;
- Float_t sy = 0.,sy2 = 0. ,sy3 = 0. ,sy4 = 0.;
- Float_t sxy = 0.,sxy2 = 0. ,sx2y =0.0 ,sx2y2 =0.0;
- Float_t w;
- Float_t sumweight = 0;
- for (Int_t i = -fdx; i <=fdx; i++)
- for (Int_t j = -fdy; j <=fdy; j++)
- {
- index = GetBin(irow+i,icolumn+j);
- w = 1/(Float_t(i*i)+fSigmaX2)*1/(Float_t(j*j)+fSigmaY2);
- z = GetBinContent(index);
- x = irow+i;
- x2 = x*x; x3 = x2*x; x4 = x2*x2;
- y = icolumn+j;
- y2 = y*y; y3 = y2*y; y4 = y2*y2;
- sz += z*w; sx += x*w; sy += y*w;
- szx += z*x*w; szy += z*y*w; szx2+= z*x2*w; szy2 += z*y3*w;
- sx2 += x2*w; sx3 += x3*w; sx4 += x4*w;
- sy2 += y2*w; sy3 += y3*w; sy4 += y4*w;
- sxy += x*y*w; sxy2+= x*y2*w; sx2y+=x2*y*w; sx2y2+= x2*y2*w;
- sumweight +=w;
- }
- TMatrix mat(5,5);
- if (!fFitMatrix.IsValid()) fFitMatrix.ResizeTo(5,1);
-
- fFitMatrix(0,0) = sz;
- fFitMatrix(1,0) = szx;
- fFitMatrix(2,0) = szy;
- fFitMatrix(3,0) = szx2;
- fFitMatrix(4,0) = szy2;
-
- mat(0,0) = sumweight;
- mat(0,1) = sx; mat(0,2) = sy; mat(0,3) = sx2; mat(0,4) =sy2;
- mat(1,0) = sx; mat(1,1) = sx2; mat(1,2) = sxy; mat(1,3) = sx3; mat(1,4) =sxy2;
- mat(2,0) = sy; mat(2,1) = sxy; mat(2,2) = sy2; mat(2,3) = sx2y; mat(2,4) =sy3 ;
- mat(3,0) = sx2; mat(3,1) = sx3; mat(3,2) = sx2y;mat(3,3) = sx4 ; mat(3,4) =sx2y2;
- mat(4,0) = sy2; mat(4,1) = sxy2; mat(4,2) = sy3; mat(4,3) = sx2y2;mat(4,4) =sy4;
-}