I find that RooFormulaVar works in an old release and not in a newer one. I don't see the problem posted here, so I'll report my findings.
I am trying to use RooFormulaVar to define my PDF. I am using RooFit that I compiled against ROOTv4.01 in Scientific Linux 3. To start off, I have created a simple PDF:
//---+
// 1 |
//---+
// Create the Gaussian centered at 0
RooRealVar * x = new RooRealVar("x","x",0.0,-10.0,10.0) ;
RooRealVar * width = new RooRealVar("width","width",1.0) ;
RooRealVar * mean = new RooRealVar("mean","mean",0.0) ;
RooAbsPdf * gauss = new RooGaussian("gauss","gauss",*x,*mean,*width) ;
This works fine. Now I try to use RooFormulaVar
//---+
// 2 |
//---+
// Create the Gaussian centered at 5
RooAbsReal * mean2 = new RooFormulaVar("mean2","mean2","@0+5",RooArgList(*mean)) ;
RooAbsPdf * gaussian2 = new RooGaussian("gauss2","gauss2",*x,*mean2,*width) ;
This crashes with:
*ERROR 30 :
Bad numerical expression : "mean"
RooFormula::RooFormula(mean2): compile error
RooFormula::eval(mean2): Formula doesn't compile: mean*2
RooFormula::eval(mean2): Formula doesn't compile: mean*2
After checking the syntax many times, I tried an older RooFit version that I compiled against ROOT v3.10 on RedHat 7.2, and it worked!
One thing I do want to know is whether this is a RooFit problem (RooFormulaVar) or a ROOT problem (TFormula).
regards,
Tae Min
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just answered this in ROOTTalk as well.
I believe you are using an incompatible version
of ROOT/RooFit. At some point the TFormula
inteface was changed in ROOT(4) and needed
an update in RooFit as well. This happened well
over a year ago. RooFormulaVar in RooFit 2.07 works with ROOT5 and ROOT4.
Wouter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I find that RooFormulaVar works in an old release and not in a newer one. I don't see the problem posted here, so I'll report my findings.
I am trying to use RooFormulaVar to define my PDF. I am using RooFit that I compiled against ROOTv4.01 in Scientific Linux 3. To start off, I have created a simple PDF:
//---+
// 1 |
//---+
// Create the Gaussian centered at 0
RooRealVar * x = new RooRealVar("x","x",0.0,-10.0,10.0) ;
RooRealVar * width = new RooRealVar("width","width",1.0) ;
RooRealVar * mean = new RooRealVar("mean","mean",0.0) ;
RooAbsPdf * gauss = new RooGaussian("gauss","gauss",*x,*mean,*width) ;
This works fine. Now I try to use RooFormulaVar
//---+
// 2 |
//---+
// Create the Gaussian centered at 5
RooAbsReal * mean2 = new RooFormulaVar("mean2","mean2","@0+5",RooArgList(*mean)) ;
RooAbsPdf * gaussian2 = new RooGaussian("gauss2","gauss2",*x,*mean2,*width) ;
This crashes with:
*ERROR 30 :
Bad numerical expression : "mean"
RooFormula::RooFormula(mean2): compile error
RooFormula::eval(mean2): Formula doesn't compile: mean*2
RooFormula::eval(mean2): Formula doesn't compile: mean*2
After checking the syntax many times, I tried an older RooFit version that I compiled against ROOT v3.10 on RedHat 7.2, and it worked!
One thing I do want to know is whether this is a RooFit problem (RooFormulaVar) or a ROOT problem (TFormula).
regards,
Tae Min
Hi,
I just answered this in ROOTTalk as well.
I believe you are using an incompatible version
of ROOT/RooFit. At some point the TFormula
inteface was changed in ROOT(4) and needed
an update in RooFit as well. This happened well
over a year ago. RooFormulaVar in RooFit 2.07 works with ROOT5 and ROOT4.
Wouter