[ROOT] Copy constructor of TGraph

From: Michele Zaffalon (M.Zaffalon@phys.rug.nl)
Date: Sat Feb 14 2004 - 13:36:01 MET


Dear ROOTers,

I am trying to plot a graph given a TBranch *. So I derive 
a class from TGraph which I call zGraph, that accepts a 
TBranch * in the ctor of zGraph. I can then plot the 
zGraph using a TMultiGraph. The problem is that I cannot 
touch the zGraph anymore because it belongs to TMultiGraph 
and I want to be able to use the same zGraph for futher 
analysis and to keep the attributes.
So I thought of using something like

return new TGraph(*this); or
return new zGraph(*this)

in a method TGraph *zGraph::getGraph() or zGraph 
*zGraph::getGraph(). If I try to plot a few copies of the 
same graph (returned by zGraph::getGraph()), I obtain only 
one graph. I wonder: is the copy constructor of TGraph 
doing something strange or am I missing something about 
the way the graphs are plotted?

Regards

michele

zGraph::getGraph() calls doGraph() and returns

if (doGraph())
return new TGraph(*this);

Int_t zGraph::doGraph()
{
   delete [] fX;
   delete [] fY;
   fNpoints = 0;
   
   if (!d_branch)
     {
       cerr << "branch = 0 in " << this->GetName() << 
endl;
       return -1;
     }

   zData *data = new zData();
   d_branch->SetAddress(&data);

   fNpoints = (Int_t) d_branch->GetEntries();
   if (fNpoints <= 0)
     {
       cerr << "fNpoints <= 0 in " << d_branch->GetName() 
<< endl;
       return -1;
     }

   fFunctions = new TList;
   fX = new Double_t[fNpoints];
   fY = new Double_t[fNpoints];

   Int_t idx = 0;

   while (d_branch->GetEntry(idx) > 0)
     {
       fX[idx] = data->getX();
       fY[idx] = data->getY();
       idx++;
     }

   delete data;
   return 0;
}



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET