There seem to be two ways of defining an expression with some arguments in a workspace; one where you use the name of an existing variable, and one where you use @0
:
from ROOT import RooRealVar, RooArgSet, RooWorkspace
RooWorkspace.Import = getattr(RooWorkspace,'import')
xvar = RooRealVar('x','x',1,-5,5)
workspace = RooWorkspace('workspace',1)
workspace.Import(xvar)
workspace.factory("expr::func1('2*x+1',x)")
workspace.factory("expr::func2('2*@0+1',x)")
xvar = workspace.var('x')
func1 = workspace.function('func1')
func2 = workspace.function('func2')
print "xvar =",xvar.getVal()
print "func1 =",func1.getVal()
print "func2 =",func2.getVal()
xvar.setVal(2)
print "xvar =",xvar.getVal()
print "func1 =",func1.getVal()
print "func2 =",func2.getVal()
Is there is a difference between these two methods? As far as I can tell, they behave the same. Does this difference matter when x
is a variable parameter, like when doing a fit?