12 import modularAnalysis
as ma
13 from vertex
import kFit
17 def loadStdVeryLooseTracks(particletype, path):
19 Function to prepare veryLoose charged particle lists. We require only fiducial the cuts
20 :b2:var:`thetaInCDCAcceptance` and :b2:var:`chiProb` :math:`> 0` and
21 abs(:b2:var:`dr`) :math:`< 0.5~{\\rm cm}` and abs(dz) :math:` < 3~{\\rm cm}`.
23 @param particletype type of charged particle to make a list of
24 @param path modules are added to this path
28 trackQuality =
'thetaInCDCAcceptance and chiProb > 0 '
29 ipCut =
'abs(dr) < 0.5 and abs(dz) < 3'
30 goodTrack = trackQuality +
' and ' + ipCut
32 if particletype
not in [
'pi',
'K',
'p',
'e',
'mu']:
33 ma.B2ERROR(
"The requested list is not a standard charged particle. Use one of pi, K, e, mu, p.")
35 ma.fillParticleList(particletype +
'+:SkimVeryLoose', goodTrack,
True, path=path)
38 def loadStdVeryLooseKstar0(path):
40 Create a list of 'K*0:veryLoose' list from 'pi-:SkimVeryLoose K+:SkimVeryLoose' with :math:`0.7 < M < 1.6~GeV`
42 @param path modules are added to this path
44 ma.reconstructDecay(
'K*0:veryLoose -> K+:SkimVeryLoose pi-:SkimVeryLoose',
'0.7 < M < 1.6', 1, path=path)
45 return 'K*0:veryLoose'
48 def loadStdVeryLooseRho0(path):
50 Create a list of 'rho0:veryLoose' list from 'pi-:SkimVeryLoose pi+:SkimVeryLoose' with :math:`0.47 < M < 1.15~GeV`
52 @param path modules are added to this path
54 ma.reconstructDecay(
'rho0:veryLoose -> pi+:SkimVeryLoose pi-:SkimVeryLoose',
'0.47 < M < 1.15', 1, path=path)
55 return 'rho0:veryLoose'
58 def loadStdVeryLooseRhoPlus(path):
60 Create a list of 'rho+:veryLoose' list from 'pi0:charmlessFit pi+:SkimVeryLoose' with :math:`0.47 < M < 1.15~GeV`
62 @param path modules are added to this path
64 ma.reconstructDecay(
'rho+:veryLoose -> pi+:SkimVeryLoose pi0:charmlessFit',
'0.47 < M < 1.15', 1, path=path)
65 return 'rho+:veryLoose'
68 def loadStdPi0ForBToCharmless(path):
70 Creates a list 'pi0:charmlessFit' for :math:`B\\to {\\rm charmless}` skims, based on recommendations of
71 the neutral group (avoiding ECL timing cuts) for May 2020. In addition, we require the mass to be
72 :math:`105 < M < 160~{\\rm MeV}/c^2` and a massKFit to converge.
75 ma.cutAndCopyList(
'pi0:charmlessFit',
'pi0:eff60_May2020',
'M > 0.105 and M < 0.160', path=path)
76 kFit(
'pi0:charmlessFit', 0.0, fit_type=
'mass', path=path)
79 def loadStdVeryLooseKstarPlus(path):
81 Create a list of 'K*+:veryLoose' list from 'pi+:SkimVeryLoose K_S0:merged' with :math:`0.7 < M < 1.6~GeV`
83 @param path modules are added to this path
85 ma.reconstructDecay(
'K*+:veryLoose -> K_S0:merged pi+:SkimVeryLoose',
'0.7 < M < 1.6', 1, path=path)
86 return 'K*+:veryLoose'
89 def loadStdVeryLooseKstarPlusPi0(path):
91 Create a list of 'K*+:veryLoosePi0' list from 'K+:SkimVeryLoose pi0:charmlessFit' with :math:`0.7 < M < 1.6~GeV`
93 @param path modules are added to this path
95 ma.reconstructDecay(
'K*+:veryLoosePi0 -> K+:SkimVeryLoose pi0:charmlessFit',
'0.7 < M < 1.6', 1, path=path)
96 return 'K*+:veryLoosePi0'
def stdPi0s(listtype="eff60_May2020", path=None, loadPhotonBeamBackgroundMVA=False)