##############################################################################
# $Id: MuonPidLaCalib.py,v 1.3 2009-05-29 17:30:20 pkoppenb Exp $
#
# Author Alessio Sarti <*****@*****.**>
#
##############################################################################
from Gaudi.Configuration import *
from Configurables import CombineParticles, ParticleMonitor, DaVinci

muonPIDLaSeq = GaudiSequencer("MuonPIDLambdaSequence")

LambdaCalibDDName = "MuonLambdaCalibDD"
LambdaCalibDD = CombineParticles(LambdaCalibDDName)
LambdaCalibDD.InputLocations = ["StdNoPIDsDownPions", "StdNoPIDsDownProtons"]
LambdaCalibDD.DecayDescriptor = "[Lambda0 -> p+ pi-]cc"
LambdaCalibDD.CombinationCut = "(ADAMASS('Lambda0')<100*MeV)"
LambdaCalibDD.DaughtersCuts = {
    "p+":
    "(P>3000*MeV) & (PT>100*MeV) & (ISDOWN) & (0.5<PPINFO(LHCb.ProtoParticle.InAccMuon,-1))",
    "pi-":
    "(P>3000*MeV) & (PT>100*MeV) & (ISDOWN) & (0.5<PPINFO(LHCb.ProtoParticle.InAccMuon,-1))"
}
LambdaCalibDD.MotherCut = " (VFASPF(VCHI2)<5) & (500<BPVVDZ) & (BPVVDZ<2000) & (BPVDIRA>0.9999995) "
muonPIDLaSeq.Members += [LambdaCalibDD]

plotLamDD = ParticleMonitor("MuonLamdaDDMoni")
plotLamDD.InputLocations = [LambdaCalibDDName]
plotLamDD.PeakCut = "(ADMASS('Lambda0')<10*MeV)"
plotLamDD.SideBandCut = "(ADMASS('Lambda0')>20*MeV)"
plotLamDD.PlotTools = ["MassPlotTool"]
muonPIDLaSeq.Members += [plotLamDD]
Beispiel #2
0
############################
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.)"\
                             "& (ADMASS('KS0') < 100.0*MeV)"

################
# Bd -> JpsiKS #
################
Bd2JpsiKS = CombineParticles("StripBd2JpsiKS")
Bd2JpsiKS.DecayDescriptor = "[B0 -> J/psi(1S) KS0]cc"
Bd2JpsiKS.InputLocations = [
    "StripKSLLForBd2Jpsi2MuMuKS", "StripKSDDForBd2Jpsi2MuMuKS",
    "StdLTUnbiasedJpsi2MuMu"
]

Bd2JpsiKS.addTool(OfflineVertexFitter())
Bd2JpsiKS.VertexFitters.update({"": "OfflineVertexFitter"})
Bd2JpsiKS.OfflineVertexFitter.useResonanceVertex = False
Bd2JpsiKS.ReFitPVs = True

Bd2JpsiKS.DaughtersCuts = {'KS0': 'PT>1.*GeV', 'J/psi(1S)': 'PT>1.*GeV'}
Bd2JpsiKS.CombinationCut = "ADAMASS('B0') < 300.*MeV"
Bd2JpsiKS.MotherCut = "(VFASPF(VCHI2/VDOF)<15)"

############################################
# Create StrippingLine with this selection #
############################################
Bd2JpsiKSLine = StrippingLine(
Beispiel #3
0
########################################################################
#
# Options for pre-selecting B->hh' and Bs->mu+ mu- events
#
# @author Angelo Carbone
# @date 2009-02-18
#
########################################################################                   

from Configurables import GaudiSequencer, CombineParticles
from StrippingConf.StrippingLine import StrippingLine

PreselB2Charged2Body = CombineParticles("PreselB2Charged2Body")
PreselB2Charged2Body.InputLocations  = ["StdLoosePions"]
PreselB2Charged2Body.DecayDescriptor = "B0 -> pi+ pi-"
PreselB2Charged2Body.CombinationCut = "((AM>4200*MeV) & (AM<6300*MeV) & (AMAXDOCA('') < 0.08*mm) )"
PreselB2Charged2Body.DaughtersCuts = { "pi+" : "(PT>700*MeV) & (MIPDV(PRIMARY)>0.08) & (TRCHI2DOF<5)","pi-" : "(PT>700*MeV) & (MIPDV(PRIMARY)>0.08) & (TRCHI2DOF<5)"}
#PreselB2Charged2Body.MotherCut = "(BPVIP()<0.06) & (BPVVDSIGN>1.8) & (INTREE ( (ABSID=='pi+') & (PT>2400*MeV))) & (INTREE ( (ABSID=='pi+') & (MIPDV(PRIMARY)>0.2)))"
PreselB2Charged2Body.MotherCut = "ALL"

# Create the line for this selection
line = StrippingLine('B2Charged2Body'
               , prescale = 1
               ,  algos = [ PreselB2Charged2Body ]
               ,  stream = 'BExclusive'
               )
Beispiel #4
0
# B->JpsiKstar selection
#

from Gaudi.Configuration import *
from StrippingConf.StrippingLine import StrippingLine, StrippingMember
from Configurables import CombineParticles, FilterDesktop

Strip_Penguin_Jpsi2MuMu = CombineParticles('Strip_Penguin_Jpsi2MuMu')
Strip_Penguin_Jpsi2MuMu.InputLocations = ["StdLooseMuons"]
Strip_Penguin_Jpsi2MuMu.DecayDescriptor = "J/psi(1S) -> mu+ mu-"

Strip_Penguin_Jpsi2MuMu.CombinationCut = "ADAMASS('J/psi(1S)')<100000*MeV"
#Strip_Penguin_Jpsi2MuMu.MotherCut = "(VFASPF(VCHI2/VDOF)<64)"
Strip_Penguin_Jpsi2MuMu.MotherCut = "ALL"
#
####

####
# Make the K*... should be a common particle
Strip_Penguin_Kstar2KPi = CombineParticles('Strip_Penguin_Kstar2KPi')

Strip_Penguin_Kstar2KPi.InputLocations = ["StdLooseKaons", "StdLoosePions"]
Strip_Penguin_Kstar2KPi.DecayDescriptor = "[K*(892)0 -> K+ pi-]cc"
Strip_Penguin_Kstar2KPi.DaughtersCuts = {
    "pi+": "(MIPCHI2DV(PRIMARY)>2.25)",
    "K+": "(MIPCHI2DV(PRIMARY)>2.25)"
}
Strip_Penguin_Kstar2KPi.CombinationCut = "(ADAMASS('K*(892)0')<600*MeV)"
Strip_Penguin_Kstar2KPi.MotherCut = "(VFASPF(VCHI2/VDOF)<100) & (MIPCHI2DV(PRIMARY)>1.5)"

#
Beispiel #5
0
##############################################################################
# $Id: MuonPidJpCalib.py,v 1.4 2009-08-07 08:46:46 pkoppenb Exp $
#
# Author Alessio Sarti <*****@*****.**>
#
##############################################################################
from Gaudi.Configuration import *
from Configurables import CombineParticles, ParticleMonitor, DaVinci
muonPIDJpSeq = GaudiSequencer("MuonPIDJpsiSequence")

JpsiCalibName = "MuonJpsiCalib"
JpsiCalib = CombineParticles(JpsiCalibName)
JpsiCalib.InputLocations = ["StdNoPIDsMuons"]
JpsiCalib.DecayDescriptor = "J/psi(1S) -> mu+ mu-"
JpsiCalib.CombinationCut = "(ADAMASS('J/psi(1S)')<300*MeV)"

muonscut = "(TRCHI2DOF<3) & (P>3*GeV) & (PT>500*MeV) & (ISLONG) & (0.5<PPINFO(LHCb.ProtoParticle.InAccMuon,-1)) & (PPINFO(LHCb.ProtoParticle.CaloEcalE,-10000)<800*MeV) & (PPINFO(LHCb.ProtoParticle.CaloHcalE,-10000)<4000*MeV) & (PPINFO(LHCb.ProtoParticle.CaloEcalE,-10000)>-10*MeV) & (PPINFO(LHCb.ProtoParticle.CaloHcalE,-10000)>1000*MeV)"
JpsiCalib.DaughtersCuts = {"mu+": muonscut, "mu-": muonscut}

childcuts = " ( ((CHILDCUT(ISMUON,1)) & (CHILDCUT((PT>1*GeV),1)) & (CHILDCUT((P>10*GeV),1)) ) | ((CHILDCUT(ISMUON,2)) & (CHILDCUT((PT>1*GeV),2)) & (CHILDCUT((P>10*GeV),2))) ) "
JpsiCalib.MotherCut = "(VFASPF(VCHI2/VDOF)<3) & " + childcuts
childcuts = " ( ((CHILDCUT(ISMUON,1)) & (CHILDCUT((PT>1*GeV),1)) & (CHILDCUT((P>10*GeV),1)) ) | ((CHILDCUT(ISMUON,2)) & (CHILDCUT((PT>1*GeV),2)) & (CHILDCUT((P>10*GeV),2))) ) "
JpsiCalib.MotherCut = "(VFASPF(VCHI2/VDOF)<3) & " + childcuts

muonPIDJpSeq.Members += [JpsiCalib]

plotJPsiPr = ParticleMonitor("MuonJpsiPromptMoni")
plotJPsiPr.InputLocations = [JpsiCalibName]
plotJPsiPr.PeakCut = "(ADMASS('J/psi(1S)')<50*MeV)"
plotJPsiPr.SideBandCut = "(ADMASS('J/psi(1S)')>100*MeV)"
plotJPsiPr.PlotTools = ["MassPlotTool"]
Beispiel #6
0
Bd->JpsiK* 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

#######
# Kst #
#######
StdUnbiasedKst2Kpi = CombineParticles("StripStdUnbiasedKst2Kpi")
StdUnbiasedKst2Kpi.DecayDescriptor = "[K*(892)0 -> K+ pi-]cc"
StdUnbiasedKst2Kpi.InputLocations = ["StdLooseKaons", "StdLoosePions"]
StdUnbiasedKst2Kpi.DaughtersCuts = {"K+" :
                                   "  (MINTREE('K+'==ABSID, (PIDK - PIDp)) >-6.)"\
                                   "& (MINTREE('K+'==ABSID, PIDK) > -5.)"
                                   }
StdUnbiasedKst2Kpi.CombinationCut = "(ADAMASS('K*(892)0') < 90.*MeV)"
StdUnbiasedKst2Kpi.MotherCut = "(VFASPF(VCHI2/VDOF)<20) & (PT > 1000.*MeV)"

######
# Bd #
######
Bd2JpsiKst = CombineParticles("StripBd2JpsiKst")
Bd2JpsiKst.DecayDescriptor = "[B0 -> J/psi(1S) K*(892)0]cc"
Bd2JpsiKst.InputLocations = [
    "StdLTUnbiasedJpsi2MuMu", "StripStdUnbiasedKst2Kpi"
]
Beispiel #7
0
#
# B->DPi selection for stripping (consider as an example). 
# This is an example of a simple wrapper over user's own algorithm. 
# No StrippingMember functionality is used here. 
#

from os import environ
from Gaudi.Configuration import *
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" }
Beispiel #8
0
#############################
# 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"})
Bs2JpsiPhi.OfflineVertexFitter.useResonanceVertex = False
Bs2JpsiPhi.ReFitPVs = True

# Basic + loose offline PID
Bs2JpsiPhi.CombinationCut = "ADAMASS('B_s0') < 300.*MeV"
Bs2JpsiPhi.MotherCut = "(VFASPF(VCHI2/VDOF)<5) & (MIPCHI2DV(PRIMARY) < 25.0)"

############################################
# Create StrippingLine with this selection #
############################################
Bs2JpsiPhiLine = StrippingLine('Bs2JpsiPhiLine',
Beispiel #9
0
Bu->JpsiK 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

######
# Bu #
######
Bu2JpsiK = CombineParticles("StripBu2JpsiK")
Bu2JpsiK.DecayDescriptor = "[ B+ -> J/psi(1S) K+ ]cc"
Bu2JpsiK.InputLocations = ["StdLTUnbiasedJpsi2MuMu",
                           "StdLooseKaons"]

Bu2JpsiK.addTool( OfflineVertexFitter() )
Bu2JpsiK.VertexFitters.update( { "" : "OfflineVertexFitter"} )
Bu2JpsiK.OfflineVertexFitter.useResonanceVertex = False
Bu2JpsiK.ReFitPVs = True

Bu2JpsiK.DaughtersCuts = {"K+" :
                          "  ((PIDK - PIDp)>-6.)"\
                          "& (PIDK > -5.)"\
                          "& (TRCHI2DOF<4.)"\
                          "& (PT>1300.*MeV)"\
                          "& (P>10000.*MeV)"
                          }

Bu2JpsiK.CombinationCut = "ADAMASS('B+') < 300.*MeV"