Beispiel #1
0
    def __init__(self,
                 name,
                 xvar,
                 convex=True,
                 a=0.0,
                 b=1.0,
                 power=1,
                 pars=None):

        ## initialize the base class
        FUNC.__init__(self, name, xvar=xvar)
        ShiftScalePoly.__init__(self, a=a, b=b, power=power, pars=pars)

        self.__convex = True if convex else False

        xmin, xmax = self.xminmax()

        ## create the function
        self.fun = Ostap.MoreRooFit.ConvexOnly(
            self.roo_name('copol_'),
            '%s Bernstein %s' % ("convex" if convex else "concave", self.name),
            self.xvar, self.iconvex, xmin, xmax, self.a, self.b, self.pars_lst)

        self.tricks = True
        self.config = {
            'name': self.name,
            'xvar': self.xvar,
            'pars': self.pars,
            'a': self.a,
            'b': self.b,
            'convex': self.convex
        }
Beispiel #2
0
    def __init__(self,
                 name,
                 xvar,
                 increasing=True,
                 a=0.0,
                 b=1.0,
                 power=1,
                 pars=None):

        ## initialize the base class
        FUNC.__init__(self, name, xvar=xvar)
        ShiftScalePoly.__init__(self, a=a, b=b, power=power, pars=pars)

        self.__increasing = True if increasing else False

        xmin, xmax = self.xminmax()

        ## create the function
        self.fun = Ostap.MoreRooFit.Monotonic(
            self.roo_name('mpol_'), '%s Bernstein %s' %
            ("increasing" if increasing else "decreasing", self.name),
            self.xvar, self.increasing, xmin, xmax, self.a, self.b,
            self.pars_lst)

        self.tricks = True
        self.config = {
            'name': self.name,
            'xvar': self.xvar,
            'pars': self.pars,
            'a': self.a,
            'b': self.b,
            'increasing': self.increasing
        }
Beispiel #3
0
    def __init__(self, name, xvar, power=1, pars=None):

        ## initialize the base class
        FUNC.__init__(self, name, xvar=xvar)
        ParamsPoly.__init__(self, power=power, pars=pars)

        xmin, xmax = self.xminmax()

        ## create the function
        self.fun = Ostap.MoreRooFit.Bernstein(self.roo_name('bpol_'),
                                              'Bernstein %s' % self.name,
                                              self.xvar, xmin, xmax,
                                              self.pars_lst)

        self.tricks = True
        self.config = {'name': self.name, 'xvar': self.xvar, 'pars': self.pars}
Beispiel #4
0
    def __init__(
            self,
            name,
            xvar,
            func,  ## c 
            a=0.0,  ## a 
            b=1.0):  ## b

        FUNC.__init__(self, name, xvar=xvar)

        assert isinstance ( func , ( ROOT.RooAbsReal, FUNC ) ) ,\
               "Invalid type of ``func'' %s/%s" % ( func , type ( func ) )

        self.__func0 = func

        self.__c = func.fun if isnstance(func, FUNC) else func

        self.__a = self.make_var(a, "a_%s" % self.name,
                                 "shift/bias for %s" % self.name, False, a)
        self.__b = self.make_var(b, "b_%s" % self.name,
                                 "scale for %s" % self.name, False, b)


        if not self.xvar in self.a.getParameters ( 0 ) and \
           not self.xvar in self.b.getParameters ( 0 ) and \
           not self.xvar in self.c.getParameters ( 0 ) :
            self.warning("Function does not depend on xvar=%s" %
                         self.xvar.name)

        self.__bc = Ostap.MoreRooFit.Product(self.b, self.c)
        self.fun = Ostap.MoreRooFit.Addition(self.roo_name('ss_'),
                                             "Scale&Shift %s" % self.name,
                                             self.a, self.__bc)

        self.config = {
            'name': self.name,
            'xvar': self.xvar,
            'a': self.a,
            'b': self.b,
            'func': self.c
        }
Beispiel #5
0
    def __init__(
            self,
            a,  ## a                   
            xvar=None,
            b=1.0,  ## b 
            name='',
            pattern='FAB_%s_%s'):

        self.__a0 = a
        self.__b0 = b

        if instance(a, FUNC):
            a = a.fun
            if not xvar: xvar = a.xvar

        if not name:
            if hasattr(b, 'name'): name = pattern % (a.name, b.name)
            else: name = pattern % (a.name, b)

        FUNC.__init__(self, name, xvar=xvar)

        if isinstance(b, FUNC): b = b.fun

        self.__a = a
        self.__b = self.make_var(b, "b_%s" % self.name, "B for %s" % self.name,
                                 False, b)

        if not self.xvar in self.a.getParameters ( 0 ) and \
           not self.xvar in self.b.getParameters ( 0 ) and \
           not self.xvar is self.a                     and \
           not self.xvar is self.b :
            self.warning("Function does not depend on xvar=%s" %
                         self.xvar.name)

        self.config = {
            'name': self.name,
            'xvar': self.xvar,
            'a': self.a,
            'b': self.b
        }
Beispiel #6
0
    def __init__(self,
                 name,
                 xvar,
                 increasing=True,
                 convex=True,
                 a=0.0,
                 b=1.0,
                 power=1,
                 pars=None):

        ## initialize the base class
        FUNC.__init__(self, name, xvar=xvar)
        ShiftScalePoly.__init__(self, a=a, b=b, power=power, pars=pars)

        self.__increasing = True if increasing else False
        self.__convex = True if convex else False

        xmin, xmax = self.xminmax()

        ## create the function
        self.fun = Ostap.MoreRooFit.Convex('cpol_%s' % self.name,
                                           'Bernstein(%s)' % self.name,
                                           self.xvar, self.increasing,
                                           self.iconvex, xmin, xmax, self.a,
                                           self.b, self.pars_lst)

        self.tricks = True
        self.config = {
            'name': self.name,
            'xvar': self.xvar,
            'pars': self.pars,
            'a': self.a,
            'b': self.b,
            'convex': self.convex,
            'increasing': self.increasing
        }