[ROOT] ownership .. but where?

From: Tommaso Chiarusi-MACRO (Tommaso.Chiarusi@bo.infn.it)
Date: Fri Jan 25 2002 - 03:02:46 MET


Dear Rooters,
my problem is this:

I have a class Deco that has the method
ZTrueConvolve()

it performs the convolution of some data, by "gaussianiously" smearing 
each entries.

Id est:
For each  entry (in my case the Z of a nucleous) a normalization factor is 
computed  and then, since the sigma_Z is the same for all the entry,
always inside ZTrueConvolve(), a function is called that takes into
consideration as many as the entries and sums up all the relative
gaussians, returning the final function (clearly a multi gaussian
summation) fgaus.
Always inside ZTrueConvolve there is then the command
fgaus->Draw(option)

where option could be specified by the user.


The class is attached, but a very rough sketch is the following:

Class Deco(...)

...


double zfunc7(Double_t *x, Double_t *par)
{
  double fitval=0;
  int i=2;
  int limite = par[0]+2;
  while(i<limite)
    {
  fitval += par[i]*TMath::Exp(-TMath::pow(x[0]-i-par[1]+2,2)
			      /(2*TMath::pow(Deco::ZRes(),2)));
  i++;
    }
  return fitval;
}


//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//this is the function


void Deco::ZTrueConvolve(char* option, int nvb) 
// option is the Draw option (i.g. "same")
// nvb is the index for 3 types of final functions
{


...	// some declarations etc...


  TF1 *fgaus= new TF1("zfunc7",zfunc7,_zmin,_zmax,limite); 

	// set the parameters for the function

  fgaus->SetParameter(0,nozbin);
  fgaus->SetParameter(1,_zmin);

  int iset=0;
  
  while(iset<nozbin){
    norm=A(iset)	// get the normalization factor
    fgaus->SetParameter(iset+2,norm);
    iset++;
  }

  
    fgaus->Print();
    fgaus->SetTitle();
    fgaus->Draw(option);
    
  //end ZTrueConvolve
}


//^^^^^^^^^^^^^^^^^^^^^^^^^^^
// this is the method



Well, the problem is that I cannot superimpose different plot, since if I
do (et assume that "da" is the object of class Deco)

da.ZTrueConvolve("",1);
da.ZTrueConvolve("same",2);


the first plot disappears and the second is plot without the frame.

Where I miss the ownership?

I try to add the line

fgaus->SetDirectory(0);

after I "->Draw()"ed it... but it seems not to work wit my Root Version
(3.00)

Thanks Tommaso






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