Hi Thomas,
I have removed the obsolete comment in TH3::Project3D.
I implemented support for variable bin sizes 3-d histograms when
making projections and I forgot to remove the comment decsribing
the previous restriction.
I do not see any problems in projecting 3-d histo to 2-d histograms
in the variable bin size case.
Here is a small example showing that it works.
Rene Brun
void h3d()
{
// test 1-d, 2-d, 3-d variable bin size histograms
const Int_t nx = 10;
const Int_t ny = 10;
const Int_t nz = 6;
Float_t xbins[nx+1] = {-4,-2,-1.5,-1,-0.4,0,0.4,1,1.5,2,4};
Float_t ybins[ny+1] = {-4,-2,-1.5,-1,-0.4,0,0.4,1,1.5,2,4};
Float_t zbins[nz+1] = {0,0.5,2,4,8,14,20};
TH3F *h3 = new TH3F("h3","histo with variable bins",
nx,xbins,ny,ybins,nz,zbins);
Double_t x,y,z;
for (Int_t i=0;i<25000;i++) {
x = gRandom->Gaus(0,1);
y = gRandom->Gaus(0,1);
z = x*x + y*y;
h3->Fill(x,y,z);
}
h3->Project3D("xy")->Draw("box");
}
Thomas Bretz wrote:
>
> Hi all,
>
> in TH3::Projection3D I found:
>
> -----------------------------------------------
> //variable bin size axis not supported yet for 2-d projections
> case 4:
> xbins = fXaxis.GetXbins();
> ybins = fYaxis.GetXbins();
> if (xbins->fN == 0 && ybins->fN == 0) {
> h2 = new
> TH2D(name,title,ny,fYaxis.GetBinLowEdge(iymin),fYaxis.GetBinUpEdge(iymax)
>
> ,nx,fXaxis.GetBinLowEdge(ixmin),fXaxis.GetBinUpEdge(ixmax));
> } else if (ybins->fN == 0) {
> h2 = new
> TH2D(name,title,ny,fYaxis.GetBinLowEdge(iymin),fYaxis.GetBinUpEdge(iymax)
> ,nx,&xbins->fArray[ixmin-1]);
> } else if (xbins->fN == 0) {
> h2 = new
> TH2D(name,title,ny,&ybins->fArray[iymin-1]
>
> ,nx,fXaxis.GetBinLowEdge(ixmin),fXaxis.GetBinUpEdge(ixmax));
> } else {
> h2 = new
> TH2D(name,title,ny,&ybins->fArray[iymin-1],nx,&xbins->fArray[ixmin-1]);
> }
> break;
> -------------------------------------------------
>
> >From the code I understand that projections with variable bin size
> should be supported, but the comment say that the variable bin size is
> not supported. If I try to make a 2D projection from a 3d hist with
> variable bin size I get a constant binning... why? Can this be fixed?
>
> Best regards,
> Thomas.
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:49 MET