Re: [ROOT] Drawing multiple times to same temp histogram

From: Vuko Brigljevic (vuko@SLAC.stanford.edu)
Date: Wed Mar 27 2002 - 16:32:00 MET


Hi Rene,

Thanks for helping!

Rene Brun wrote:
> 
> Hi Vuko,
> 
> Give a different name to each of your histograms.

To which histogram should I give a different name, to the one named
"srhist" (see my code below in my 1st message) to which I am copying the
output of Tree->Draw? But then I can't use a loop, but that would be
rather
annoying. I am probably misunderstanding...

> In your case, t1->Draw will delete the previous histogram named "srhist"
> and your pointers in srhistos[] will be dangling pointers.

Really? I am confused, I would have thought that the line:

     srhistos[ilay]= new TH2F(*srhist);

creates a new TH2F (srhistos is an array of pointers to TH2F
objects) using the copy constructor, i.e. *(srhistos[ilay])
is a COPY of *srhist, and not the same object, or does the copy
constructor just let some parts of TH2F point to the original
one? If the latter is the case, that does not seem to be the point
of a copy constructor IMHO.

Can you please clarify this, thanks.

Vuko


> On Tue, 26 Mar 2002, Vuko Brigljevic wrote:
> 
> > Hi all,
> >
> > The following is done using root 3.02/07 on SunOS,
> > I see the same problem on Linux.
> >
> > I am trying to use the same 2D histo several times in a row
> > as output of a Tree->Draw() and I am crashing. The code:
> >
> >
> >   TH2F *srhistos[10];
> >
> >   int ilay;
> >   for (ilay=0; ilay<4; ilay++) {
> >     t1->Draw(scalerName(ilay+1)+":time >> srhist",cutString);
> >     srhistos[ilay]= new TH2F(*srhist);
> >     srhistos[ilay]->GetXaxis()->SetTimeDisplay(1);
> >     srhistos[ilay]->GetXaxis()->SetTimeFormat("%d/%m");
> >     srhistos[ilay]->Draw();
> >     gPad->SaveAs(TString(prefix+"singles-layer"+ilay+".eps"));
> >     //    srhist.Reset();     tried this as well: does not help
> >     delete srhist;
> >   }
> >
> > Whether I am deleting the temporary histogram (srhist),
> > resetting it or doing neither of both, I am always
> > crashing with the following output:
> >
> > Info in <TPad::Print>: PostScript file lastDays/singles-layer1.eps has
> > been created
> >
> >  *** Break *** segmentation violation
> > Root > Function makePlots() busy flag cleared
> > Function doPlots() busy flag cleared
> >
> > How am I supposed to do something like that?
> >
> > Thanks for any help!
> >
> > Vuko
> >
> >
> > ========================================================================
> >  Vuko Brigljevic                        | Mail : SLAC, Mail Stop 41
> >  Lawrence Livermore National Laboratory |        P.O. Box 4349, Stanford
> >  Nuclear and Particle Physics Division  |        CA 94309, USA
> >                                         | SLAC-Office : B280- room 143
> >  Member of the BaBar Collaboration      | Phone : +1-650-926 8512
> >  <vuko@slac.stanford.edu>          <http://www.slac.stanford.edu/~vuko>
> > ========================================================================
> >

-- 

========================================================================
 Vuko Brigljevic                        | Mail : SLAC, Mail Stop 41
 Lawrence Livermore National Laboratory |        P.O. Box 4349, Stanford
 Nuclear and Particle Physics Division  |        CA 94309, USA
                                        | SLAC-Office : B280- room 143
 Member of the BaBar Collaboration      | Phone : +1-650-926 8512
 <vuko@slac.stanford.edu>          <http://www.slac.stanford.edu/~vuko>  
========================================================================



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:47 MET