Hello, I am using ROOT v5.18. But when I append two RooDataSet, I still met the problem of:
[quote]RooDataSet::dataGenTot: "dataGenTot"
Contains 0 entries
Defines RooArgSet::Dataset Variables: (Owning contents)
1) RooRealVar: "invariant mass"
2) RooRealVar::t: "proper time"
3) RooRealVar::st: "estimated proper time resolution"
Caches RooArgSet::Cached Variables:
Error in TTree::Fill: Failed filling branch:BkgConPdfData.m, nbytes=-1
This error is symptomatic of a Tree created as a memory-resident Tree
Instead of doing:
TTree *T = new TTree(…)
TFile *f = new TFile(…)
you should do:
TFile *f = new TFile(…)
TTree *T = new TTree(…)
Error in TTree::Fill: Failed filling branch:BkgConPdfData.t, nbytes=-1
This error is symptomatic of a Tree created as a memory-resident Tree
Instead of doing:
TTree *T = new TTree(…)
TFile *f = new TFile(…)
you should do:
TFile *f = new TFile(…)
TTree *T = new TTree(…)
Error in TTree::Fill: Failed filling branch:BkgConPdfData.st, nbytes=-1
RooDataSet::dataGenTot: "Generated From backgr con PDF"
Contains 1000 entries
Defines RooArgSet::Dataset Variables: (Owning contents)
1) RooRealVar: "invariant mass"
2) RooRealVar::t: "proper time"
3) RooRealVar::st: "estimated proper time resolution"
Caches RooArgSet::Cached Variables:[/quote]
Although it seems that the appending has been done successfully. Then where is those error message from? Well, my case is a little special. I am doing the analysis with Ttree::MakeSelector(). And the dataGenTot is defined at the very beginning and filled in the ::Process(), then I generated some events in ::Terminate(). And I want to append the dataGenTot with the RooDataSet returned by Pdf->generate(). Hereafter is the structure.
[code]RooRealVar *m = new RooRealVar(…)
RooRealVar *t = new RooRealVar(…)
RooRealVar *st = new RooRealVar(…)
RooDataSet* dataGenTot = new RooDataSet( “dataGenTot”, “dataGenTot”, RooArgSet(*m, *t, *st) );
…
Bool_t bkg_lifetime::Process(Long64_t entry) {
dataGenTot->add( RooArgSet(*m, *t, *st) );
}
void bkg_lifetime::Terminate()
{
RooArgSet* observables = new RooArgSet(*m,*t,st);
…
RooDataSet data_bkg = BkgConPdf->generate(RooArgSet(*observables),Verbose(false),NumEvents(1000));
dataGenTot->Print("v");
dataGenTot->append(*data_bkg);
dataGenTot->Print("v");
}
[/code]
And there is no error message for the following case.
[code]RooDataSet* data_bkg1 = BkgConPdf->generate(RooArgSet(*observables),Verbose(false),NumEvents(1000));
RooDataSet* data_bkg2 = BkgConPdf->generate(RooArgSet(*observables),Verbose(false),NumEvents(1000));
data_bkg1->append(*data_bkg2);
[/code]
Thanks for any help you wil give me.