Re: Projection of a histograms.....again...

From: Melinda Siciliano <mellybinda_at_gmail.com>
Date: Wed, 12 Mar 2008 11:39:01 +0100


Hi,

I make an error copying effe=(y*y)/(e*e), but the problem of the entries remain......Sorry....

Melinda

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TH2F.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TFile.h>
#include <TRandom3.>
#endif

void prova1(Int_t seed)
{

 TH2F *histo = new TH2F("histo","histo",256,-.5,255.5,256,-0.5,255.5);  TRandom3 *random= new TRandom3(seed);
 histo->Sumw2();
 for(Int_t i=1;i<=256;i++)
   {

     for(Int_t j=1;j<=256;j++)
       {
     histo->Fill(i-1.5,j-1.5,random->Rndm());//in order to fill the first
bin

       }

   }

 TCanvas *canvas =new TCanvas("canvas","canvas");  canvas->cd();
 histo->Draw("colz");
 canvas->Update();
 gStyle->SetPalette(1);
 TH1D *px = histo->ProjectionX();
 Int_t nbins = px->GetXaxis()->GetNbins();  for (Int_t bin=1;bin<=nbins;bin++) {
   double y = px->GetBinContent(bin);
   double e = px->GetBinError(bin);
   double effe = 0;
   if (e != 0) effe = (y*y)/(e*e);
   px->SetBinContent(bin,effe);
   px->SetBinError(bin,0);
 }

 TCanvas *canvas2 =new TCanvas("canvas2","canvas2");  canvas2->cd();
 px->Draw();
 canvas2->Update();

}

On Wed, Mar 12, 2008 at 11:15 AM, Melinda Siciliano <mellybinda_at_gmail.com> wrote:

> Hello all,
>
> I have problem with the effective entries. I don't think to have changed
> nothing, but now it seems to not work and I have that the effective entries
> are bigger than I expect of a quantity like the number of bin in the x axis.
>
>
> Melinda
>
> #if !defined(__CINT__) || defined(__MAKECINT__)
> #include <TH2F.h>
> #include <TCanvas.h>
> #include <TStyle.h>
> #include <TFile.h>
> #include <TRandom3.>
> #endif
>
> void prova1(Int_t seed)
> {
>
>
>  TH2F *histo = new TH2F("histo","histo",256,-.5,255.5,256,-0.5,255.5);
>  TRandom3 *random= new TRandom3(seed);
>  histo->Sumw2();
>  for(Int_t i=1;i<=256;i++)
>    {
>      for(Int_t j=1;j<=256;j++)
>        {
>      histo->Fill(i-1.5,j-1.5,random->Rndm());//in order to fill the first
> bin
>
>        }
>
>    }
>
>  TCanvas *canvas =new TCanvas("canvas","canvas");
>  canvas->cd();
>  histo->Draw("colz");
>  canvas->Update();
>  gStyle->SetPalette(1);
>  TH1D *px = histo->ProjectionX();
>  Int_t nbins = px->GetXaxis()->GetNbins();
>  for (Int_t bin=1;bin<=nbins;bin++) {
>    double y = px->GetBinContent(bin);
>    double e = px->GetBinError(bin);
>    double effe = 0;
>    if (e != 0) effe = y*y/e*e;
>    px->SetBinContent(bin,effe);
>    px->SetBinError(bin,0);
>  }
>
>  TCanvas *canvas2 =new TCanvas("canvas2","canvas2");
>  canvas2->cd();
>  px->Draw();
>  canvas2->Update();
>
> }
>
>
>
>
> On Mon, Mar 10, 2008 at 5:23 PM, Lorenzo Moneta <lorenzo.moneta_at_cern.ch>
> wrote:
>
> > Hello Melinda,
> >  we will plan to add this new functionality as an option for all the
> > histogram projected functions, not as a new method.
> > It is expected to have this implemented for the development release
> > schedule for April. Anyway I will let you know when it will be in the SVN
> > trunk,
> >
> >  Best Regards
> >
> >  Lorenzo
> >
> > On Mar 5, 2008, at 6:25 PM, Melinda Siciliano wrote:
> >
> > Hi Rene and Lorenzo,
> >
> > I tried as Rene suggested me and it works! Thanks a lot!!!!
> >
> > May I ask you if when you put the new function in ROOT , could you tell
> > me then the name of the function in the way to substite it in my gui?
> >
> > Thanks,
> >
> > Melinda
> >
> > On Tue, Mar 4, 2008 at 5:24 PM, Rene Brun <Rene.Brun_at_cern.ch> wrote:
> >
> > > Hi Melinda,
> > >
> > > The projection of the effective entries is currently not implemented.
> > > It is not too complex to obtain what you want if you have called Sumw2
> > > on your TH2 object.
> > > In this case, make the projection using TH2::ProjectionX (or Y) and
> > > compute the effective entries
> > > with a code looking like
> > >     TH2 *h2;  //your Th2 object where Sumw2 has been called before
> > > filling
> > >     TH1D *px = h2->ProjectionX();
> > >     Int_t nbins = px->GetXaxis()->GetNbins();
> > >     for (Int_t bin=1;bin<=nbins;bin++) {
> > >        double y = px->GetBinContent(bin);
> > >        double e = px->GetBinError(bin);
> > >        double effe = 0;
> > >        if (e != 0) effe = y*y/e*e;
> > >        px->SetBinContent(bin,effe);
> > >       px->SetBinError(bin,0);
> > >   }
> > >
> > > This could be an option when calling TH2::ProjectionX,Y.
> > > Lorenzo, could you implement this code in all Projection functions?
> > >
> > > Rene Brun
> > >
> > > Melinda Siciliano wrote:
> > > > Dear all,
> > > >
> > > > I have an 2D-histogram filled using the weight. I would like to ask
> > > > you if there a way to make the projection of the effective entries
> > > of
> > > > the histogram.
> > > >
> > > > Thanks,
> > > >
> > > > Melinda
> > >
> > >
> >
> >
>
Received on Wed Mar 12 2008 - 11:39:13 CET

This archive was generated by hypermail 2.2.0 : Thu Mar 13 2008 - 11:50:02 CET