12 """ Skim list building functions for quarkonium analyses: bottomonium, charmonium, resonance """
14 import modularAnalysis
as ma
15 from skim
import BaseSkim, fancy_skim_header
16 from stdCharged
import stdE, stdMu
17 from stdPhotons
import stdPhotons
18 from stdV0s
import stdLambdas
19 from variables
import variables
as v
21 __liaison__ =
"Sen Jia <jiasen@buaa.edu.cn>"
22 _VALIDATION_SAMPLE =
"mdst14.root"
28 Reconstructed decay modes:
30 * ``eta_b -> gamma gamma``
34 * ``2 std photon with E > 3.5 GeV``
35 * ``7 < M(eta_b) < 10 GeV/c^2``
36 * ``foxWolframR2 < 0.995``
39 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
41 __contact__ = __liaison__
42 __category__ =
"physics, quarkonium"
45 stdPhotons(
"loose", path=path, loadPhotonBeamBackgroundMVA=
False)
49 ma.fillParticleList(decayString=
"pi+:BottomoniumEtab_eventshape", cut=
"pt > 0.1", path=path)
50 ma.fillParticleList(decayString=
"gamma:BottomoniumEtab_eventshape", cut=
"E > 0.1", path=path,
51 loadPhotonBeamBackgroundMVA=
False)
53 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumEtab_eventshape",
"gamma:BottomoniumEtab_eventshape"],
56 harmonicMoments=
False,
62 checkForDuplicates=
False,
65 ma.cutAndCopyList(
"gamma:hard",
"gamma:loose",
"E>3.5", path=path)
66 ma.applyCuts(
"gamma:hard",
"foxWolframR2 < 0.995", path=path)
69 Etabcuts =
"M > 7 and M < 10"
72 Etab_Channels = [
"gamma:hard gamma:hard"]
78 for chID, channel
in enumerate(Etab_Channels):
79 ma.reconstructDecay(
"eta_b:all" + str(chID) +
" -> " + channel, Etabcuts, chID, path=path)
80 EtabList.append(
"eta_b:all" + str(chID))
88 Reconstructed decay modes:
90 * Y(1S,2S) -> l^+ l^{-} (l = e or mu)
94 * 2 tracks with momentum ranging between ``3.5 < p < 15``
95 * At least 1 track ``p < 1.5`` or 1 std photon with ``E > 150 MeV``
96 * ``M(Y(1S,2S)) > 8 GeV/c^2``
97 * ``foxWolframR2 < 0.995``
99 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
101 __contact__ = __liaison__
102 __category__ =
"physics, quarkonium"
105 stdPhotons(
"loose", path=path, loadPhotonBeamBackgroundMVA=
False)
110 ma.fillParticleList(
"mu+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
111 ma.fillParticleList(
"e+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
112 ma.fillParticleList(
"pi+:BottomoniumUpsilon",
"p<1.5 and pt>0.05", path=path)
113 ma.cutAndCopyList(
"gamma:soft",
"gamma:loose",
"E>0.15", path=path)
116 ma.reconstructDecay(
"Upsilon:ee -> e+:BottomoniumUpsilon e-:BottomoniumUpsilon",
"M > 8", path=path)
117 ma.reconstructDecay(
"Upsilon:mumu -> mu+:BottomoniumUpsilon mu-:BottomoniumUpsilon",
"M > 8", path=path)
118 ma.copyLists(
"Upsilon:all", [
"Upsilon:ee",
"Upsilon:mumu"], path=path)
121 ma.fillParticleList(decayString=
"pi+:BottomoniumUpsilon_eventshape", cut=
"pt > 0.1", path=path)
122 ma.fillParticleList(decayString=
"gamma:BottomoniumUpsilon_eventshape", cut=
"E > 0.1", path=path,
123 loadPhotonBeamBackgroundMVA=
False)
125 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumUpsilon_eventshape",
"gamma:BottomoniumUpsilon_eventshape"],
128 harmonicMoments=
False,
134 checkForDuplicates=
False,
137 ma.applyCuts(
"Upsilon:all",
"foxWolframR2 < 0.995", path=path)
140 Upsilon_Channels = [
"Upsilon:all pi+:BottomoniumUpsilon",
141 "Upsilon:all gamma:soft"]
147 for chID, channel
in enumerate(Upsilon_Channels):
148 ma.reconstructDecay(
"junction:all" + str(chID) +
" -> " + channel, Ycuts, chID, path=path, allowChargeViolation=
True)
149 UpsilonList.append(
"junction:all" + str(chID))
160 Reconstructed decay modes:
162 * J/psi -> l^+ l^- (l = e or mu)
163 * psi(2S) -> l^+ l^- (l = e or mu)
167 * 2 tracks with electronID > 0.1 or muonID > 0.1 and 2.7 < M < 4.
168 Track-quality requirements are not applied.
170 __authors__ = [
"Kirill Chilikin"]
171 __description__ =
"Selection of J/psi and psi(2S) via leptonic decays."
172 __contact__ = __liaison__
173 __category__ =
"physics, quarkonium"
175 validation_sample = _VALIDATION_SAMPLE
178 stdE(
'loosepid', path=path)
179 stdMu(
'loosepid', path=path)
180 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
185 jpsi_mass_cut =
'2.85 < M < 3.3'
186 psi2s_mass_cut =
'3.45 < M < 3.9'
194 ma.correctBremsBelle(
'e+:brems',
'e+:loosepid',
'gamma:all',
197 ma.correctBrems(
'e+:brems2',
'e+:loosepid',
'gamma:all', path=path)
200 ma.reconstructDecay(
'J/psi:ee -> e+:loosepid e-:loosepid',
201 jpsi_mass_cut, path=path)
202 ma.reconstructDecay(
'psi(2S):ee -> e+:loosepid e-:loosepid',
203 psi2s_mass_cut, path=path)
205 ma.reconstructDecay(
'J/psi:eebrems -> e+:brems e-:brems',
206 jpsi_mass_cut, path=path)
207 ma.reconstructDecay(
'psi(2S):eebrems -> e+:brems e-:brems',
208 psi2s_mass_cut, path=path)
210 ma.reconstructDecay(
'J/psi:eebrems2 -> e+:brems2 e-:brems2',
211 jpsi_mass_cut, path=path)
212 ma.reconstructDecay(
'psi(2S):eebrems2 -> e+:brems2 e-:brems2',
213 psi2s_mass_cut, path=path)
215 ma.reconstructDecay(
'J/psi:mumu -> mu+:loosepid mu-:loosepid',
216 jpsi_mass_cut, path=path)
217 ma.reconstructDecay(
'psi(2S):mumu -> mu+:loosepid mu-:loosepid',
218 psi2s_mass_cut, path=path)
221 return [
'J/psi:ee',
'psi(2S):ee',
222 'J/psi:eebrems',
'psi(2S):eebrems',
223 'J/psi:eebrems2',
'psi(2S):eebrems2',
224 'J/psi:mumu',
'psi(2S):mumu']
232 ma.reconstructDecay(
'J/psi:mumu_test -> mu+:loosepid mu-:loosepid',
'', path=path)
233 ma.reconstructDecay(
'J/psi:ee_test -> e+:loosepid e-:loosepid',
'', path=path)
234 ma.copyList(
'J/psi:ll',
'J/psi:mumu_test', path=path)
235 ma.copyList(
'J/psi:ll',
'J/psi:ee_test', path=path)
238 create_validation_histograms(
239 rootfile=f
'{self}_Validation.root',
240 particlelist=
'J/psi:ll',
242 'InvM', 65, 2.7, 4.0,
246 'J/psi peak is seen.',
247 'M [GeV/c^{2}]',
'Events / (20 MeV/c^{2})',
258 * :math:`\\Lambda \\to p \\pi^-` (and charge conjugate)
264 ``cosAngleBetweenMomentumAndVertexVector > 0.99``
265 ``flightDistance/flightDistanceErr > 3.``
266 * ``0.6 < p,proton/p,Lambda < 1.0 GeV/c``
269 __authors__ = [
"Bianca Scavino"]
270 __description__ =
"Inclusive Lambda skim"
271 __contact__ = __liaison__
272 __category__ =
"physics, quarkonium"
275 stdLambdas(path=path)
280 v.addAlias(
"protonID_proton",
"daughter(0, protonID)")
281 v.addAlias(
"momRatio_protonLambda",
"formula(daughter(0, p)/p)")
282 v.addAlias(
'flightSignificance',
'formula(flightDistance/flightDistanceErr)')
285 ma.applyCuts(
"Lambda0:merged",
"cosAngleBetweenMomentumAndVertexVector > 0.99", path=path)
286 ma.applyCuts(
"Lambda0:merged",
"0.6 < momRatio_protonLambda < 1.", path=path)
287 ma.applyCuts(
"Lambda0:merged",
"flightSignificance > 3.", path=path)
288 ma.applyCuts(
"Lambda0:merged",
"protonID_proton > 0.1", path=path)
291 return [
"Lambda0:merged"]
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)