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 stdPhotons
import stdPhotons
17 from stdV0s
import stdLambdas
18 from variables
import variables
as v
20 __liaison__ =
"Sen Jia <jiasen@buaa.edu.cn>"
21 _VALIDATION_SAMPLE =
"mdst14.root"
27 Reconstructed decay modes:
29 * ``eta_b -> gamma gamma``
33 * ``2 std photon with E > 3.5 GeV``
34 * ``7 < M(eta_b) < 10 GeV/c^2``
35 * ``foxWolframR2 < 0.995``
38 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
40 __contact__ = __liaison__
41 __category__ =
"physics, quarkonium"
44 stdPhotons(
"loose", path=path, loadPhotonBeamBackgroundMVA=
False)
48 ma.fillParticleList(decayString=
"pi+:BottomoniumEtab_eventshape", cut=
"pt > 0.1", path=path)
49 ma.fillParticleList(decayString=
"gamma:BottomoniumEtab_eventshape", cut=
"E > 0.1", path=path,
50 loadPhotonBeamBackgroundMVA=
False)
52 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumEtab_eventshape",
"gamma:BottomoniumEtab_eventshape"],
55 harmonicMoments=
False,
61 checkForDuplicates=
False,
64 ma.cutAndCopyList(
"gamma:hard",
"gamma:loose",
"E>3.5", path=path)
65 ma.applyCuts(
"gamma:hard",
"foxWolframR2 < 0.995", path=path)
68 Etabcuts =
"M > 7 and M < 10"
71 Etab_Channels = [
"gamma:hard gamma:hard"]
77 for chID, channel
in enumerate(Etab_Channels):
78 ma.reconstructDecay(
"eta_b:all" + str(chID) +
" -> " + channel, Etabcuts, chID, path=path)
79 EtabList.append(
"eta_b:all" + str(chID))
87 Reconstructed decay modes:
89 * Y(1S,2S) -> l^+ l^{-} (l = e or mu)
93 * 2 tracks with momentum ranging between ``3.5 < p < 15``
94 * At least 1 track ``p < 1.5`` or 1 std photon with ``E > 150 MeV``
95 * ``M(Y(1S,2S)) > 8 GeV/c^2``
96 * ``foxWolframR2 < 0.995``
98 __authors__ = [
"Stefano Spataro",
"Sen Jia"]
100 __contact__ = __liaison__
101 __category__ =
"physics, quarkonium"
104 stdPhotons(
"loose", path=path, loadPhotonBeamBackgroundMVA=
False)
109 ma.fillParticleList(
"mu+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
110 ma.fillParticleList(
"e+:BottomoniumUpsilon",
"p<15 and p>3.5", path=path)
111 ma.fillParticleList(
"pi+:BottomoniumUpsilon",
"p<1.5 and pt>0.05", path=path)
112 ma.cutAndCopyList(
"gamma:soft",
"gamma:loose",
"E>0.15", path=path)
115 ma.reconstructDecay(
"Upsilon:ee -> e+:BottomoniumUpsilon e-:BottomoniumUpsilon",
"M > 8", path=path)
116 ma.reconstructDecay(
"Upsilon:mumu -> mu+:BottomoniumUpsilon mu-:BottomoniumUpsilon",
"M > 8", path=path)
117 ma.copyLists(
"Upsilon:all", [
"Upsilon:ee",
"Upsilon:mumu"], path=path)
120 ma.fillParticleList(decayString=
"pi+:BottomoniumUpsilon_eventshape", cut=
"pt > 0.1", path=path)
121 ma.fillParticleList(decayString=
"gamma:BottomoniumUpsilon_eventshape", cut=
"E > 0.1", path=path,
122 loadPhotonBeamBackgroundMVA=
False)
124 ma.buildEventShape(inputListNames=[
"pi+:BottomoniumUpsilon_eventshape",
"gamma:BottomoniumUpsilon_eventshape"],
127 harmonicMoments=
False,
133 checkForDuplicates=
False,
136 ma.applyCuts(
"Upsilon:all",
"foxWolframR2 < 0.995", path=path)
139 Upsilon_Channels = [
"Upsilon:all pi+:BottomoniumUpsilon",
140 "Upsilon:all gamma:soft"]
146 for chID, channel
in enumerate(Upsilon_Channels):
147 ma.reconstructDecay(
"junction:all" + str(chID) +
" -> " + channel, Ycuts, chID, path=path, allowChargeViolation=
True)
148 UpsilonList.append(
"junction:all" + str(chID))
159 Reconstructed decay modes:
161 * J/psi -> l^+ l^- (l = e or mu)
162 * psi(2S) -> l^+ l^- (l = e or mu)
166 * 2 tracks with electronID > 0.1 or muonID > 0.1 and 2.7 < M < 4.
167 Track-quality requirements are not applied.
169 __authors__ = [
"Kirill Chilikin"]
170 __description__ =
"Selection of J/psi and psi(2S) via leptonic decays."
171 __contact__ = __liaison__
172 __category__ =
"physics, quarkonium"
174 validation_sample = _VALIDATION_SAMPLE
177 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
182 from variables
import variables
183 variables.addAlias(
'electronID_noSVD_noTOP',
184 'pidProbabilityExpert(11, CDC, ARICH, ECL, KLM)')
187 ma.fillParticleList(
'e+:loosepid_noSVD_noTOP',
188 'electronID_noSVD_noTOP > 0.1', path=path)
189 ma.fillParticleList(
'mu+:loosepid_noSVD',
190 'muonID_noSVD > 0.1', path=path)
193 jpsi_mass_cut =
'2.85 < M < 3.3'
194 psi2s_mass_cut =
'3.45 < M < 3.9'
202 ma.correctBremsBelle(
'e+:brems',
'e+:loosepid_noSVD_noTOP',
'gamma:all',
205 ma.correctBrems(
'e+:brems2',
'e+:loosepid_noSVD_noTOP',
'gamma:all',
210 'J/psi:ee -> e+:loosepid_noSVD_noTOP e-:loosepid_noSVD_noTOP',
211 jpsi_mass_cut, path=path)
213 'psi(2S):ee -> e+:loosepid_noSVD_noTOP e-:loosepid_noSVD_noTOP',
214 psi2s_mass_cut, path=path)
216 ma.reconstructDecay(
'J/psi:eebrems -> e+:brems e-:brems',
217 jpsi_mass_cut, path=path)
218 ma.reconstructDecay(
'psi(2S):eebrems -> e+:brems e-:brems',
219 psi2s_mass_cut, path=path)
221 ma.reconstructDecay(
'J/psi:eebrems2 -> e+:brems2 e-:brems2',
222 jpsi_mass_cut, path=path)
223 ma.reconstructDecay(
'psi(2S):eebrems2 -> e+:brems2 e-:brems2',
224 psi2s_mass_cut, path=path)
227 'J/psi:mumu -> mu+:loosepid_noSVD mu-:loosepid_noSVD',
228 jpsi_mass_cut, path=path)
230 'psi(2S):mumu -> mu+:loosepid_noSVD mu-:loosepid_noSVD',
231 psi2s_mass_cut, path=path)
234 return [
'J/psi:ee',
'psi(2S):ee',
235 'J/psi:eebrems',
'psi(2S):eebrems',
236 'J/psi:eebrems2',
'psi(2S):eebrems2',
237 'J/psi:mumu',
'psi(2S):mumu']
246 'J/psi:mumu_test -> mu+:loosepid_noSVD mu-:loosepid_noSVD',
249 'J/psi:ee_test -> e+:loosepid_noSVD_noTOP e-:loosepid_noSVD_noTOP',
251 ma.copyList(
'J/psi:ll',
'J/psi:mumu_test', path=path)
252 ma.copyList(
'J/psi:ll',
'J/psi:ee_test', path=path)
255 create_validation_histograms(
256 rootfile=f
'{self}_Validation.root',
257 particlelist=
'J/psi:ll',
259 'InvM', 65, 2.7, 4.0,
263 'J/psi peak is seen.',
264 'M [GeV/c^{2}]',
'Events / (20 MeV/c^{2})',
275 * :math:`\\Lambda \\to p \\pi^-` (and charge conjugate)
281 ``cosAngleBetweenMomentumAndVertexVector > 0.99``
282 ``flightDistance/flightDistanceErr > 3.``
283 * ``0.6 < p,proton/p,Lambda < 1.0 GeV/c``
286 __authors__ = [
"Bianca Scavino"]
287 __description__ =
"Inclusive Lambda skim"
288 __contact__ = __liaison__
289 __category__ =
"physics, quarkonium"
292 stdLambdas(path=path)
297 v.addAlias(
"protonID_proton",
"daughter(0, protonID)")
298 v.addAlias(
"momRatio_protonLambda",
"formula(daughter(0, p)/p)")
299 v.addAlias(
'flightSignificance',
'formula(flightDistance/flightDistanceErr)')
302 ma.applyCuts(
"Lambda0:merged",
"cosAngleBetweenMomentumAndVertexVector > 0.99", path=path)
303 ma.applyCuts(
"Lambda0:merged",
"0.6 < momRatio_protonLambda < 1.", path=path)
304 ma.applyCuts(
"Lambda0:merged",
"flightSignificance > 3.", path=path)
305 ma.applyCuts(
"Lambda0:merged",
"protonID_proton > 0.1", path=path)
308 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)