Vuko, Sorry if I was not clear enough in my previous mail. I suggest to replace: int ilay; for (ilay=0; ilay<4; ilay++) { t1->Draw(scalerName(ilay+1)+":time >> srhist",cutString); srhistos[ilay]= new TH2F(*srhist); by int ilay; TString hname = "rhist_"; for (ilay=0; ilay<4; ilay++) { t1->Draw(scalerName(ilay+1)+":time >> srhist",cutString); srhistos[ilay]= (TH2F*)srhist->Clone(hname+ilay); Rene Brun Vuko Brigljevic wrote: > > 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