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])
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])
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])
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 ])