def __init__( self, **kwargs ) : if 'Model' not in kwargs : raise KeyError('TimeResolution: please specify a resolution model') self._model = kwargs.pop( 'Model' ) if 'Name' in kwargs : self._Name = kwargs.pop('Name') if not hasattr( self, '_time' ) : from P2VV.RooFitWrappers import RealVar self._time = RealVar( Name = self._model.convVar().GetName() ) params = kwargs.pop( 'Parameters', None ) if params != None : self._params = [ var for var in params ] self._model._target_()._parameters = [ var for var in params ] # cache integrals as a function of observables from ROOT import RooArgSet, RooAbsCategory obs = RooArgSet( o for o in self._model.Observables() if o != self._time ) if kwargs.pop('Cache', True) and len(obs) : print 'P2VV - INFO: invoking %s.parameterizeIntegral(%s)' % ( self._model.GetName(),[o.GetName() for o in obs] ) self._model.setParameterizeIntegral( obs ) for o in filter( lambda i : not ( isinstance(i,RooAbsCategory) or i.hasBinning('cache') ), obs ): print 'P2VV::TimeResolution: adding cache binning wth 20 bins to %s' % o.GetName() o.setBins( 20 , 'cache' ) _util_conditionalObs_mixin.__init__( self, kwargs ) self.addConditionals( self._model.ConditionalObservables() ) _util_extConstraints_mixin.__init__( self, kwargs ) self.addConstraints( self._model.ExternalConstraints() ) self._check_extraneous_kw( kwargs )
def __init__( self, **kwargs ) : for coef in [ 'MeanLifetime', 'dGamma', 'dM' ] : setattr( self, '_' + coef, kwargs.pop(coef) ) _util_extConstraints_mixin.__init__( self, kwargs ) self._check_extraneous_kw( kwargs )