4 """ Skim list building functions for quarkonium analyses: bottomonium, charmonium, resonance """
12 import modularAnalysis
as ma
13 from skimExpertFunctions
import BaseSkim, fancy_skim_header
14 from stdCharged
import stdE, stdMu, stdPi
15 from stdPhotons
import stdPhotons
16 from stdV0s
import stdLambdas
17 from variables
import variables
as v
19 __liaison__ =
"Sen Jia <jiasen@buaa.edu.cn>"
25 Reconstructed decay modes:
27 * ``eta_b -> gamma gamma``
31 * ``2 std photon with E > 3.5 GeV``
32 * ``7 < M(eta_b) < 10 GeV/c^2``
33 * ``foxWolframR2 < 0.995``
36 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
38 __contact__ = __liaison__
39 __category__ =
"physics, quarkonium"
46 ma.fillParticleList(decayString=
"pi+:BottomoniumEtab_eventshape", cut=
"pt > 0.1", path=path)
47 ma.fillParticleList(decayString=
"gamma:BottomoniumEtab_eventshape", cut=
"E > 0.1", path=path)
49 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumEtab_eventshape",
"gamma:BottomoniumEtab_eventshape"],
52 harmonicMoments=
False,
58 checkForDuplicates=
False,
61 ma.cutAndCopyList(
"gamma:hard",
"gamma:loose",
"E>3.5", path=path)
62 ma.applyCuts(
"gamma:hard",
"foxWolframR2 < 0.995", path=path)
65 Etabcuts =
"M > 7 and M < 10"
68 Etab_Channels = [
"gamma:hard gamma:hard"]
74 for chID, channel
in enumerate(Etab_Channels):
75 ma.reconstructDecay(
"eta_b:all" + str(chID) +
" -> " + channel, Etabcuts, chID, path=path)
76 EtabList.append(
"eta_b:all" + str(chID))
84 Reconstructed decay modes:
86 * Y(1S,2S) -> l^+ l^{-} (l = e or mu)
90 * 2 tracks with momentum ranging between ``3.5 < p < 15``
91 * At least 1 track ``p < 1.5`` or 1 std photon with ``E > 150 MeV``
92 * ``M(Y(1S,2S)) > 8 GeV/c^2``
93 * ``foxWolframR2 < 0.995``
95 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
97 __contact__ = __liaison__
98 __category__ =
"physics, quarkonium"
106 ma.fillParticleList(
"mu+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
107 ma.fillParticleList(
"e+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
108 ma.fillParticleList(
"pi+:BottomoniumUpsilon",
"p<1.5 and pt>0.05", path=path)
109 ma.cutAndCopyList(
"gamma:soft",
"gamma:loose",
"E>0.15", path=path)
112 ma.reconstructDecay(
"Upsilon:ee -> e+:BottomoniumUpsilon e-:BottomoniumUpsilon",
"M > 8", path=path)
113 ma.reconstructDecay(
"Upsilon:mumu -> mu+:BottomoniumUpsilon mu-:BottomoniumUpsilon",
"M > 8", path=path)
114 ma.copyLists(
"Upsilon:all", [
"Upsilon:ee",
"Upsilon:mumu"], path=path)
117 ma.fillParticleList(decayString=
"pi+:BottomoniumUpsilon_eventshape", cut=
"pt > 0.1", path=path)
118 ma.fillParticleList(decayString=
"gamma:BottomoniumUpsilon_eventshape", cut=
"E > 0.1", path=path)
120 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumUpsilon_eventshape",
"gamma:BottomoniumUpsilon_eventshape"],
123 harmonicMoments=
False,
129 checkForDuplicates=
False,
132 ma.applyCuts(
"Upsilon:all",
"foxWolframR2 < 0.995", path=path)
135 Upsilon_Channels = [
"Upsilon:all pi+:BottomoniumUpsilon",
136 "Upsilon:all gamma:soft"]
142 for chID, channel
in enumerate(Upsilon_Channels):
143 ma.reconstructDecay(
"junction:all" + str(chID) +
" -> " + channel, Ycuts, chID, path=path, allowChargeViolation=
True)
144 UpsilonList.append(
"junction:all" + str(chID))
155 Reconstructed decay modes:
157 * J/psi -> l^+ l^- (l = e or mu)
158 * psi(2S) -> l^+ l^- (l = e or mu)
162 * 2 tracks with electronID > 0.1 or muonID > 0.1 and 2.7 < M < 4.
163 Track-quality requirements are not applied.
165 __authors__ = [
"Kirill Chilikin"]
166 __description__ =
"Selection of J/psi and psi(2S) via leptonic decays."
167 __contact__ = __liaison__
168 __category__ =
"physics, quarkonium"
171 stdMu(
'loosepid', path=path)
177 ma.fillParticleList(
'e+:loosepid',
'electronID_noTOP > 0.1', path=path)
180 jpsi_mass_cut =
'2.85 < M < 3.3'
181 psi2s_mass_cut =
'3.45 < M < 3.9'
189 ma.correctBremsBelle(
'e+:brems',
'e+:loosepid',
'gamma:all',
190 minimumEnergy=0.001, angleThreshold=0.05,
192 ma.correctBrems(
'e+:brems2',
'e+:loosepid',
'gamma:all', path=path)
195 ma.reconstructDecay(
'J/psi:ee -> e+:loosepid e-:loosepid',
196 jpsi_mass_cut, path=path)
197 ma.reconstructDecay(
'psi(2S):ee -> e+:loosepid e-:loosepid',
198 psi2s_mass_cut, path=path)
200 ma.reconstructDecay(
'J/psi:eebrems -> e+:brems e-:brems',
201 jpsi_mass_cut, path=path)
202 ma.reconstructDecay(
'psi(2S):eebrems -> e+:brems e-:brems',
203 psi2s_mass_cut, path=path)
205 ma.reconstructDecay(
'J/psi:eebrems2 -> e+:brems2 e-:brems2',
206 jpsi_mass_cut, path=path)
207 ma.reconstructDecay(
'psi(2S):eebrems2 -> e+:brems2 e-:brems2',
208 psi2s_mass_cut, path=path)
210 ma.reconstructDecay(
'J/psi:mumu -> mu+:loosepid mu-:loosepid',
211 jpsi_mass_cut, path=path)
212 ma.reconstructDecay(
'psi(2S):mumu -> mu+:loosepid mu-:loosepid',
213 psi2s_mass_cut, path=path)
216 self.
SkimLists = [
'J/psi:ee',
'psi(2S):ee',
217 'J/psi:eebrems',
'psi(2S):eebrems',
218 'J/psi:eebrems2',
'psi(2S):eebrems2',
219 'J/psi:mumu',
'psi(2S):mumu']
226 * :math:`\\Lambda \\to p \\pi^-` (and charge conjugate)
232 ``cosAngleBetweenMomentumAndVertexVector > 0.99``
233 ``flightDistance/flightDistanceErr > 3.``
234 * ``0.6 < p,proton/p,Lambda < 1.0 GeV/c``
237 __authors__ = [
"Bianca Scavino"]
238 __description__ =
"Inclusive Lambda skim"
239 __contact__ = __liaison__
240 __category__ =
"physics, quarkonium"
243 stdLambdas(path=path)
248 v.addAlias(
"protonID_proton",
"daughter(0, protonID)")
249 v.addAlias(
"momRatio_protonLambda",
"formula(daughter(0, p)/p)")
250 v.addAlias(
'flightSignificance',
'formula(flightDistance/flightDistanceErr)')
253 ma.applyCuts(
"Lambda0:merged",
"cosAngleBetweenMomentumAndVertexVector > 0.99", path=path)
254 ma.applyCuts(
"Lambda0:merged",
"0.6 < momRatio_protonLambda < 1.", path=path)
255 ma.applyCuts(
"Lambda0:merged",
"flightSignificance > 3.", path=path)
256 ma.applyCuts(
"Lambda0:merged",
"protonID_proton > 0.1", path=path)