Thank you, it works. But now I have the next problem: I use this code
[code]TF1* root::convolute() {
RooRealVar a(“a”, “a”, 3.5) ;
RooRealVar b(“b”, “b”, TO) ;
RooRealVar y(“y”, “y”, FROM, TO);
RooRealVar x(“x”, “x”, -1, 1);
sbs::MyPdf pdf(“pdf”, “pdf”, y, a, b) ;
RooRealVar meang(“meang”, “mean of Gaussian”, 0);
RooRealVar sigmag(“sigmag”, “sigma of Gaussian”, 0.02);
RooGaussian gauss(“gauss”, “gauss”, y, meang, sigmag);
RooNumConvPdf* convolution = new RooNumConvPdf("convolution", "Convolution", y, pdf, gauss);
TF1* tf1 = new TF1(*convolution->asTF(RooArgList(y)));
return tf1;
}[/code] and if I sibmit the TF1 object into main() function
[code]
int main() {
TF1 tf1 = root::convolute();
TApplication theApp(“App”, &argc, argv);
TCanvas *c = new TCanvas(“c”, “The Hello Canvas”, 1000, 1000);
c->Connect(“Closed()”, “TApplication”, &theApp, “Terminate()”);
tf1->Draw();
theApp->Run();
}[/code] - It does not works. It works only with direct using the Draw methods in convolute() function
[code]
TF1* root::convolute() {
RooRealVar a(“a”, “a”, 3.5) ;
RooRealVar b(“b”, “b”, TO) ;
RooRealVar y(“y”, “y”, FROM, TO);
RooRealVar x(“x”, “x”, -1, 1);
sbs::MyPdf pdf(“pdf”, “pdf”, y, a, b) ;
RooRealVar meang(“meang”, “mean of Gaussian”, 0);
RooRealVar sigmag(“sigmag”, “sigma of Gaussian”, 0.02);
RooGaussian gauss(“gauss”, “gauss”, y, meang, sigmag);
RooNumConvPdf* convolution = new RooNumConvPdf("convolution", "Convolution", y, pdf, gauss);
TApplication theApp(“App”, &argc, argv);
TCanvas *c = new TCanvas(“c”, “The Hello Canvas”, 1000, 1000);
c->Connect(“Closed()”, “TApplication”, &theApp, “Terminate()”);
TF1* tf1 = new TF1(*convolution->asTF(RooArgList(y)));
tf1->Draw();
theApp->Run();
return tf1;
}
[/code] I suppose that it looks like “dead reference”, but I’m using ROOT in Qt Project without CINT’s GC. So I’m using “new” operator, and it should not cause “dead reference”. Could you explain me, why it so?