# ============================================================================= __author__ = " Albert Bursche " __date__ = " 2011-07-22 " __version__ = "0.1" # ============================================================================= # ============================================================================= """ Select MC particles having a chance to pass the offline criteria. Needs updating if these citeria change. """ from Configurables import FilterDesktop MCPartFilter = FilterDesktop("FilteredStableParticles") #,OutputLevel = DEBUG) MCPartFilter.InputLocations = ["Phys/StdHepMCParticles/Particles"] MCPartFilter.Code = "(PT > 150*MeV) & (ETA >0)" # corresponds to an 200 MeV cut on reco tracks # eta cut for speed optimisation
''' Bd->JpsiKS stripping selection using LoKi::Hybrid and python configurables. PV refitting is done. Based on roadmap selection with loose PID cuts. ''' from Gaudi.Configuration import * from StrippingConf.StrippingLine import StrippingLine, StrippingMember from Configurables import FilterDesktop, CombineParticles, OfflineVertexFitter import GaudiKernel.SystemOfUnits as Units ################ # KS long long # ################ KSLLForBd2Jpsi2MuMuKS = FilterDesktop("StripKSLLForBd2Jpsi2MuMuKS") KSLLForBd2Jpsi2MuMuKS.InputLocations = ["StdLooseKsLL"] KSLLForBd2Jpsi2MuMuKS.Code = " (MINTREE( ('pi+'==ABSID), P) >2.*GeV)"\ "& (MINTREE( ('pi+'==ABSID), MIPCHI2DV(PRIMARY)) >9.)"\ "& (MAXTREE( ('pi+'==ABSID), TRCHI2DOF) <10.)"\ "& (VFASPF(VCHI2/VDOF)<10.)"\ "& (ADMASS('KS0') < 80.0*MeV)" ############################ # KS downstream downstream # ############################ KSDDForBd2Jpsi2MuMuKS = FilterDesktop("StripKSDDForBd2Jpsi2MuMuKS") KSDDForBd2Jpsi2MuMuKS.InputLocations = ["StdLooseKsDD"] KSDDForBd2Jpsi2MuMuKS.Code = " (MINTREE( ('pi+'==ABSID), P) >2.*GeV)"\ "& (MINTREE( ('pi+'==ABSID), MIPCHI2DV(PRIMARY)) >4.)"\ "& (MAXTREE( ('pi+'==ABSID), TRCHI2DOF) <20.)"\ "& (VFASPF(VCHI2/VDOF)<20.)"\
# ============================================================================= __author__ = "Albert Bursche" __date__ = " 2011-07-22 " __version__ = "0.1" # ============================================================================= # ============================================================================= """ Select a track sample for jet reconstruction. """ from Configurables import FilterDesktop SelectedTracks = FilterDesktop("FilteredPions") #,OutputLevel = DEBUG) SelectedTracks.InputLocations = [ "/Event/Phys/StdNoPIDsPions/Particles", "Phys/StdNoPIDsDownPions/Particles" ] SelectedTracks.Code = "(PT > 200*MeV) & (PERR2/(P*P) < 0.04) " #SelectedTracks.Preambulo = [ "from LoKiProtoParticles.decorators import *"]
from StrippingConf.StrippingLine import StrippingLine importOptions('$HLTSELECTIONSROOT/options/Hlt2LineTopoTF2BodyDEV.py') importOptions('$HLTSELECTIONSROOT/options/Hlt2LineTopoTF3BodyDEV.py') importOptions('$HLTSELECTIONSROOT/options/Hlt2LineTopoTF4BodyDEV.py') importOptions( '$HLT2SHAREDPARTICLESROOT/python/Hlt2SharedParticles/TopoTF2Body.py') importOptions( '$HLT2SHAREDPARTICLESROOT/python/Hlt2SharedParticles/TopoTF3Body.py') importOptions( '$HLT2SHAREDPARTICLESROOT/python/Hlt2SharedParticles/TopoTFInputParticles.py' ) #Point the topological to use the offline pions and kaons but still no PID! Hlt2TopoTFInputParticles = FilterDesktop("Hlt2TopoTFInputParticles") Hlt2TopoTFInputParticles.InputLocations = ["StdNoPIDsPions", "StdNoPIDsKaons"] #The shared particles Hlt2SharedTopoTF2Body = CombineParticles("Hlt2SharedTopoTF2Body") Hlt2SharedTopoTF3Body = CombineParticles("Hlt2SharedTopoTF3Body") #The topo selections filterTopoTF2Body = FilterDesktop('Hlt2FilterTopoTF2BodyDEV') filterTopoTF3Body = FilterDesktop('Hlt2FilterTopoTF3BodyDEV') combine = CombineParticles('Hlt2CombineTopoTF4BodyDEV') #The 2 body topo sequencer TwoBodyTopoSeq = GaudiSequencer("TwoBodyTopoSeq") TwoBodyTopoSeq.Members += [Hlt2TopoTFInputParticles] TwoBodyTopoSeq.Members += [Hlt2SharedTopoTF2Body] TwoBodyTopoSeq.Members += [filterTopoTF2Body]
from Configurables import DecayTreeTuple from Configurables import CombineParticles, FilterDesktop from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth, BackgroundCategory from StrippingConf.StrippingLine import StrippingLine ######################################################################## B2DhOfflineDplus2KPiPi = CombineParticles("B2DhOfflineDplus2KPiPi") B2DhOfflineDplus2KPiPi.InputLocations = [ "StdTightPions", "StdTightKaons" ] B2DhOfflineDplus2KPiPi.DecayDescriptor = "[D+ -> K- pi+ pi+]cc" B2DhOfflineDplus2KPiPi.DaughtersCuts = {"pi+" : "((PT > 300*MeV) & (P > 2*GeV) & (MIPCHI2DV(PRIMARY) > 9))" , "K+" : "((PT> 300*MeV) & (P > 2*GeV) & (MIPCHI2DV(PRIMARY) > 9))"}; B2DhOfflineDplus2KPiPi.CombinationCut = "( (ADAMASS('D+') < 21*MeV) & (APT > 2.*GeV) )"; B2DhOfflineDplus2KPiPi.MotherCut = "((VFASPF(VCHI2/VDOF)<15) & (BPVVDCHI2>100.) & (MIPCHI2DV(PRIMARY)>9))"; ######################################################################## B2DhOfflineBachelor = FilterDesktop("B2DhOfflineBachelor") B2DhOfflineBachelor.InputLocations = [ "StdLoosePions" ] B2DhOfflineBachelor.Code = "((PT > 500*MeV) & (P > 2*GeV) & (MIPCHI2DV(PRIMARY) > 9))" ######################################################################## B2DhOfflineSel = CombineParticles("B2DhOfflineSel") B2DhOfflineSel.InputLocations = [ "B2DhOfflineDplus2KPiPi", "B2DhOfflineBachelor"] B2DhOfflineSel.DecayDescriptor = "[B0 -> D+ pi-]cc" B2DhOfflineSel.DaughtersCuts = { "D+" : "ALL" } B2DhOfflineSel.CombinationCut = "(ADAMASS('B0')<50*MeV)" B2DhOfflineSel.MotherCut = "(VFASPF(VCHI2/VDOF)<10) & (BPVIPCHI2()<16.) & (BPVVDCHI2 > 6.25) & (BPVDIRA>0.9999)" ######################################################################## B2DhOfflineFilterSequence = GaudiSequencer("B2DhOfflineFilterSequence") B2DhOfflineFilterSequence.Members += [ B2DhOfflineDplus2KPiPi ] B2DhOfflineFilterSequence.Members += [ B2DhOfflineBachelor ] B2DhOfflineFilterSequence.Members += [ B2DhOfflineSel ] ########################################################################
''' Bs->JpsiPhi stripping selection using LoKi::Hybrid and python configurables. PV refitting is done. Based on roadmap selection with loose PID cuts. ''' from Gaudi.Configuration import * from StrippingConf.StrippingLine import StrippingLine, StrippingMember from Configurables import FilterDesktop, CombineParticles, OfflineVertexFitter import GaudiKernel.SystemOfUnits as Units ############################# # Standard Unbiased Phi->KK # ############################# StdUnbiasedPhi2KK = FilterDesktop("StripStdUnbiasedPhi2KK") StdUnbiasedPhi2KK.InputLocations = ["StdLooseUnbiasedPhi2KK"] StdUnbiasedPhi2KK.Code = " (MINTREE('K+'==ABSID, PIDK) > -5.0)" \ "& (ADMASS('phi(1020)') < 15.*MeV)" \ "& (PT > 1000.*MeV)" \ "& (VFASPF(VCHI2/VDOF) < 20.0)" ###### # Bs # ###### Bs2JpsiPhi = CombineParticles("StripBs2JpsiPhi") Bs2JpsiPhi.DecayDescriptor = "B_s0 -> J/psi(1S) phi(1020)" Bs2JpsiPhi.InputLocations = [ "StdLTUnbiasedJpsi2MuMu", "StripStdUnbiasedPhi2KK" ] # Set the OfflineVertexFitter to keep the 4 tracks and not the J/Psi Phi Bs2JpsiPhi.addTool(OfflineVertexFitter()) Bs2JpsiPhi.VertexFitters.update({"": "OfflineVertexFitter"})