예제 #1
0
    def applyMVA(self, name, SelB, MVAVars, MVAxmlFile, MVACutValue):
        from MVADictHelpers import addTMVAclassifierValue
        from Configurables import FilterDesktop as MVAFilterDesktop

        _FilterB = MVAFilterDesktop(name + "Filter",
                                    Code="VALUE('LoKi::Hybrid::DictValue/" +
                                    name + "')>" + MVACutValue)

        addTMVAclassifierValue(Component=_FilterB,
                               XMLFile=MVAxmlFile,
                               Variables=MVAVars,
                               ToolName=name)

        return Selection(name, Algorithm=_FilterB, RequiredSelections=[SelB])
예제 #2
0
    def makeMVASelection(self, name, inputSel):
        # Don't apply a BDT if the weights file has not been specified
        if not self.config['D0_MVA_Weights']:
            return inputSel

        cut = "VALUE('LoKi::Hybrid::DictValue/{0}') > {1[D0_MVA_MIN]}".format(
            name, self.config)
        mva = FilterDesktop('{0}Filter'.format(name), Code=cut)

        addTMVAclassifierValue(Component=mva,
                               XMLFile=self.config['D0_MVA_Weights'],
                               Variables=self.config['D0_MVA_Variables'],
                               ToolName=name)

        return Selection(name, Algorithm=mva, RequiredSelections=[inputSel])
예제 #3
0
def applyBDT(name, SelB2HHBDT, BDTVars, BDTCutValue, BDTWeightsFile):

    from MVADictHelpers import addTMVAclassifierValue
    from Configurables import FilterDesktop as MVAFilterDesktop

    _FilterB = MVAFilterDesktop(name + "Filter",
                                Code="VALUE('LoKi::Hybrid::DictValue/" + name +
                                "')>" + str(BDTCutValue))

    addTMVAclassifierValue(Component=_FilterB,
                           XMLFile=BDTWeightsFile,
                           Variables=BDTVars,
                           ToolName=name)

    return Selection(name, Algorithm=_FilterB, RequiredSelections=[SelB2HHBDT])
예제 #4
0
 def makeB2LpDDMVA( self,  name, config ):
     """
     Select B -> Lambda~0 p+ event by MVA selcetion
     """
     from Configurables import CombineParticles as CP
     #Selection
     _B = CP("B2LpDDMVA")
     _daugPtSumCut   = "(APT1>%s*MeV)"                   % config['B_DD_PTMin']
     _maxDocaChi2Cut = "(ACUTDOCACHI2(%s,''))"            % config['BDaug_DD_maxDocaChi2']
     _daugMaxPtIPCut = "(AVAL_MAX(MIPDV(PRIMARY),PT)>%s)" % config['BDaug_MaxPT_IP']
     #_B.DecayDescriptors = [ "B- -> p~- ( Lambda0 -> p+ pi- )", "B+ -> p+ ( Lambda~0 -> p~- pi+ )" ]
     _B.DecayDescriptors = [ "B- -> p~- Lambda0", "B+ -> p+ Lambda~0" ]
     _B.CombinationCut = "(ADAMASS('B-')<500*MeV)&"+_maxDocaChi2Cut+'&'+_daugPtSumCut+'&'+_daugMaxPtIPCut
     _B.MotherCut = "VALUE('LoKi::Hybrid::DictValue/MVAResponse')>  %s" % config['MVAResponseDD']
     #_B.MotherCut = 'ALL'
     # get the Lambda's to filter
     _stdLambdaDD = DataOnDemand(Location = "Phys/StdLooseLambdaDD/Particles")
     
     # make the filter
     _filterLambdaDD = FilterDesktop( Code = "ALL" )
     
     #Configure tool
     from MVADictHelpers import addTMVAclassifierValue
     xmldir = "$TMVAWEIGHTSROOT/data/"
     #xmldir = "./"
     
     Vars =    {"log(B_LoKi_VCHI2NDOF)" : "log(VFASPF(VCHI2))",
                "log(B_LoKi_BPVIPCHI2)"       : "log(MIPCHI2DV(PRIMARY))",
                "B_LoKi_BPVDIRA"             : "BPVDIRA",
                "log(B_LoKi_FDwrtPV)"           : "log(VFASPF(VMINVDDV(PRIMARY)))",
                "log(B_LoKi_FDChi2)"      : "log(BPVVDCHI2)",
                "log(B_LoKi_PT)"           : "log(PT)",
                "log(pB_LoKi_PT)"          : "log(CHILD(PT,1))",
                "log(pL_LoKi_PT)"          : "log(CHILD( CHILD(PT,1) ,2))",
                "log(L_LoKi_P)"           : "log(CHILD(P,2))",
                "log(L_LoKi_Mass)"            : "log(ADMASS('Lambda0'))",
                "log(L_LoKi_VtxChi2)" : "log(CHILD(VFASPF(VCHI2),2))",
                "log(L_LoKi_FDChi2)"      : "log(CHILD(BPVVDCHI2,2))",
                "log(pL_LoKi_TrkChi2)"     : "log(CHILD(CHILD(TRCHI2DOF,2),2))",
                "log(pi_LoKi_TrkChi2)"     : "log(CHILD(CHILD(TRCHI2DOF,1),2))",
                                   }
     
     addTMVAclassifierValue(Component = _B ,
                            XMLFile = xmldir+"B2pLambda_DD_BDT_v1r4.xml",
                            Variables = Vars,
                            ToolName = "MVAResponse",
                            )
     return Selection (name, Algorithm = _B, RequiredSelections = [_stdLambdaDD, StdLooseProtons  ])