4 """(Semi-)Leptonic Working Group Skim list building functions for semi-leptonic analyses.
13 import modularAnalysis
as ma
14 from skim.standardlists.charm
import (loadKForBtoHadrons, loadPiForBtoHadrons,
15 loadStdD0, loadStdDplus, loadStdDstar0,
16 loadStdDstarPlus, loadPiSkimHighEff,
17 loadKSkimHighEff, loadSlowPi,
18 loadSkimHighEffD0_Kpi, loadSkimHighEffDstarPlus_D0pi_Kpi,
19 loadSkimHighEffD0_Kpipipi, loadSkimHighEffDstarPlus_D0pi_Kpipipi,
20 loadStdD0_eff20_Kpipi0, loadStdDstarPlus_D0pi_Kpipi0_eff20)
21 from skim.standardlists.lightmesons
import loadStdPi0ForBToHadrons
22 from skimExpertFunctions
import BaseSkim, fancy_skim_header
23 from stdCharged
import stdE, stdK, stdMu, stdPi
24 from stdPhotons
import stdPhotons
25 from stdPi0s
import stdPi0s
26 from stdV0s
import stdKshorts
27 from variables
import variables
as vm
29 __liaison__ =
"Shanette De La Motte <shanette.delamotte@adelaide.edu.au>"
35 Reconstructed decay modes:
37 * :math:`B^0 \\to \\pi^- e^+`
38 * :math:`B^0 \\to \\pi^- \\mu^+`
42 * :math:`\\text{foxWolframR2} > 0.5` constructed using tracks with
43 :math:`p_T>0.1\\,\\text{GeV}` and clusters with :math:`E>0.1\\,\\text{GeV}`.
44 * :math:`n_{\\text{tracks}} > 4`
48 * :math:`\\text{electronID} > 0.5`
49 * :math:`p > 1.5\\,\\text{GeV}` in CMS frame
53 * :math:`\\text{muonID} > 0.5`
54 * :math:`p > 1.5\\,\\text{GeV}` in CMS frame
58 * :math:`\\text{pionID}>0.5`
59 * :math:`\\text{muonID}<0.2`
60 * :math:`0.060\\,\\text{GeV}<p<0.220\\,\\text{GeV}` in CMS frame
62 Cuts on partially reconstructed :math:`B` mesons:
64 * :math:`\\cos\\theta_{\\ell,\\,\\pi}<0` in CMS frame.
67 __authors__ = [
"Lucien Cremaldi",
"Racha Cheaib",
"Romulus Godang"]
68 __description__ =
"Skim for partial reconstruction analysis in leptonic group."
69 __contact__ = __liaison__
70 __category__ =
"physics, semileptonic"
73 stdE(
"all", path=path)
74 stdMu(
"all", path=path)
75 stdPi(
"all", path=path)
78 ma.fillParticleList(decayString=
"pi+:PRSL_eventshape",
79 cut=
"pt> 0.1", path=path)
80 ma.fillParticleList(decayString=
"gamma:PRSL_eventshape",
81 cut=
"E > 0.1", path=path)
83 ma.buildEventShape(inputListNames=[
"pi+:PRSL_eventshape",
"gamma:PRSL_eventshape"],
86 harmonicMoments=
False,
92 checkForDuplicates=
False,
95 path = self.
skim_event_cuts(
"foxWolframR2<0.5 and nTracks>4", path=path)
97 ma.cutAndCopyList(
"e+:PRSemileptonic_1",
"e+:all",
98 "useCMSFrame(p) > 1.50 and electronID > 0.5", path=path)
99 ma.cutAndCopyList(
"mu+:PRSemileptonic_1",
"mu+:all",
100 "useCMSFrame(p) > 1.50 and muonID > 0.5", path=path)
101 ma.cutAndCopyList(
"pi-:PRSemileptonic_1",
"pi-:all",
102 "pionID>0.5 and muonID<0.2 and 0.060<useCMSFrame(p)<0.220", path=path)
104 ma.cutAndCopyList(
"e+:PRSemileptonic_2",
"e+:all",
105 "0.600 < useCMSFrame(p) <= 1.50 and electronID > 0.5", path=path)
106 ma.cutAndCopyList(
"mu+:PRSemileptonic_2",
"mu+:all",
107 "0.350 < useCMSFrame(p) <= 1.50 and muonID > 0.5", path=path)
108 ma.cutAndCopyList(
"pi-:PRSemileptonic_2",
"pi-:all",
109 "pionID>0.5 and muonID<0.2 and 0.060<useCMSFrame(p)<0.160", path=path)
111 ma.reconstructDecay(
"B0:PRSemileptonic_1 -> pi-:PRSemileptonic_1 e+:PRSemileptonic_1",
112 "useCMSFrame(cos(daughterAngle(0,1)))<0.00", 1, path=path)
113 ma.reconstructDecay(
"B0:PRSemileptonic_2 -> pi-:PRSemileptonic_1 mu+:PRSemileptonic_1",
114 "useCMSFrame(cos(daughterAngle(0,1)))<0.00", 2, path=path)
115 ma.reconstructDecay(
"B0:PRSemileptonic_3 -> pi-:PRSemileptonic_2 e+:PRSemileptonic_2",
116 "useCMSFrame(cos(daughterAngle(0,1)))<1.00", 3, path=path)
117 ma.reconstructDecay(
"B0:PRSemileptonic_4 -> pi-:PRSemileptonic_2 mu+:PRSemileptonic_2",
118 "useCMSFrame(cos(daughterAngle(0,1)))<1.00", 4, path=path)
120 self.
SkimLists = [
"B0:PRSemileptonic_1",
"B0:PRSemileptonic_2"]
127 ma.cutAndCopyLists(
"B0:PRSemileptonic_semileptonic",
128 [
"B0:PRSemileptonic_1",
"B0:PRSemileptonic_2"],
"", path=path)
130 ma.buildRestOfEvent(
"B0:PRSemileptonic_semileptonic", path=path)
131 ma.appendROEMask(
"B0:PRSemileptonic_semileptonic",
"basic",
132 "pt>0.05 and -2<dr<2 and -4.0<dz<4.0",
135 ma.buildContinuumSuppression(
"B0:PRSemileptonic_semileptonic",
"basic", path=path)
137 vm.addAlias(
"d0_p",
"daughter(0, p)")
138 vm.addAlias(
"d1_p",
"daughter(1, p)")
139 vm.addAlias(
"MissM2",
"weMissM2(basic,0)")
141 histogramFilename = f
"{self}_Validation.root"
142 email =
"Phil Grace <philip.grace@adelaide.edu.au>"
144 create_validation_histograms(
145 rootfile=histogramFilename,
146 particlelist=
"B0:PRSemileptonic",
148 (
"Mbc", 100, 4.0, 5.3,
"Mbc", email,
"",
""),
149 (
"d0_p", 100, 0, 5.2,
"Signal-side pion momentum", email,
"",
""),
150 (
"d1_p", 100, 0, 5.2,
"Signal-side lepton momentum", email,
"",
""),
151 (
"MissM2", 100, -5, 5,
"Missing mass squared", email,
"",
"")
153 variables_2d=[(
"deltaE", 100, -5, 5,
"Mbc", 100, 4.0, 5.3,
"Mbc vs deltaE", email,
"",
"")],
162 * :math:`p_{\\ell} > 0.35\\,\\text{GeV}`
163 * :math:`5.24 < M_{\\text{bc}} < 5.29`
164 * :math:`|\\Delta E | < 0.5`
165 * :math:`n_{\\text{tracks}} > 4`
167 Reconstructed decays:
169 * :math:`B^+ \\to \\overline{D}^{0} e^+`
170 * :math:`B^+ \\to \\overline{D}^{0} \\mu^+`
171 * :math:`B^+ \\to \\overline{D}^{*0} e^+`
172 * :math:`B^+ \\to \\overline{D}^{*0} \\mu^+`
173 * :math:`B^0 \\to D^{-} e^+`
174 * :math:`B^0 \\to D^{-} \\mu^+`
175 * :math:`B^0 \\to D^{*-} e^+`
176 * :math:`B^0 \\to D^{*-} \\mu^+`
179 __authors__ = [
"Phillip Urquijo",
"Racha Cheaib"]
181 "Skim for semileptonic decays, :math:`B` decays "
182 "(:math:`B \\to D \\ell\\nu`, where :math:`\\ell=e,\\mu`)"
184 __contact__ = __liaison__
185 __category__ =
"physics, semileptonic"
188 stdE(
"all", path=path)
189 stdK(
"all", path=path)
190 stdMu(
"all", path=path)
191 stdPi(
"all", path=path)
192 stdPi(
"loose", path=path)
194 stdPi0s(
"eff40_Jan2020", path=path)
195 stdKshorts(path=path)
196 loadStdPi0ForBToHadrons(path=path)
197 loadPiForBtoHadrons(path=path)
198 loadKForBtoHadrons(path=path)
200 loadStdDstar0(path=path)
201 loadStdDplus(path=path)
202 loadStdDstarPlus(path=path)
205 ma.cutAndCopyList(
"e+:SLUntagged",
"e+:all",
"p>0.35",
True, path=path)
206 ma.cutAndCopyList(
"mu+:SLUntagged",
"mu+:all",
"p>0.35",
True, path=path)
207 Bcuts =
"5.24 < Mbc < 5.29 and abs(deltaE) < 0.5"
209 BplusChannels = [
"anti-D0:all e+:SLUntagged",
210 "anti-D0:all mu+:SLUntagged",
211 "anti-D*0:all e+:SLUntagged",
212 "anti-D*0:all mu+:SLUntagged"
215 B0Channels = [
"D-:all e+:SLUntagged",
216 "D-:all mu+:SLUntagged",
217 "D*-:all e+:SLUntagged",
218 "D*-:all mu+:SLUntagged"
222 for chID, channel
in enumerate(BplusChannels):
223 ma.reconstructDecay(f
"B+:SLUntagged_{chID} -> {channel}", Bcuts, chID, path=path)
224 ma.applyCuts(f
"B+:SLUntagged_{chID}",
"nTracks>4", path=path)
225 bplusList.append(f
"B+:SLUntagged_{chID}")
228 for chID, channel
in enumerate(B0Channels):
229 ma.reconstructDecay(f
"B0:SLUntagged_{chID} -> {channel}", Bcuts, chID, path=path)
230 ma.applyCuts(f
"B0:SLUntagged_{chID}",
"nTracks>4", path=path)
231 b0List.append(f
"B0:SLUntagged_{chID}")
240 ma.cutAndCopyLists(
"B+:SLUntagged",
241 [
"B+:SLUntagged_0",
"B+:SLUntagged_1",
"B+:SLUntagged_2",
"B+:SLUntagged_3"],
244 ma.buildRestOfEvent(
"B+:SLUntagged", path=path)
245 ma.appendROEMask(
"B+:SLUntagged",
"basic",
246 "pt>0.05 and -2<dr<2 and -4.0<dz<4.0",
249 ma.buildContinuumSuppression(
"B+:SLUntagged",
"basic", path=path)
251 vm.addAlias(
"d1_p",
"daughter(1,p)")
252 vm.addAlias(
"MissM2",
"weMissM2(basic,0)")
254 histogramFilename = f
"{self}_Validation.root"
255 myEmail =
"Phil Grace <philip.grace@adelaide.edu.au>"
257 create_validation_histograms(
258 rootfile=histogramFilename,
259 particlelist=
"B+:SLUntagged",
261 (
"cosThetaBetweenParticleAndNominalB", 100, -6.0, 4.0,
"cosThetaBY", myEmail,
"",
""),
262 (
"Mbc", 100, 4.0, 5.3,
"Mbc", myEmail,
"",
""),
263 (
"d1_p", 100, 0, 5.2,
"Signal-side lepton momentum", myEmail,
"",
""),
264 (
"MissM2", 100, -5, 5,
"Missing mass squared", myEmail,
"",
"")
266 variables_2d=[(
"deltaE", 100, -5, 5,
"Mbc", 100, 4.0, 5.3,
"Mbc vs deltaE", myEmail,
"",
"")],
275 * ``SkimHighEff tracks thetaInCDCAcceptance AND abs(dr) < 2 AND abs(dz) < 5 AND PID>=0.01``
276 * ``slowPi tracks thetaInCDCAcceptance AND abs(dr) < 2 AND abs(dz) < 5 AND useCMSFrame(p) < 0.4``
277 * :math:`2.5 > p_{\\ell} > 1.1\\,\\text{GeV}`
278 * ``lepton with abs(d0) < 0.5 AND abs(z0) < 2 AND thetaInCDCAcceptance AND ID >= 0.95 AND 1.1 < useCMSFrame(p) < 2.5``
279 * ``1.8 < M_D0 < 2.0``
280 * ``DM_Dstar_D < 0.16``
282 Reconstructed decays:
284 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^-) e^+`,
285 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^- \\pi^0) e^+`,
286 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^- \\pi^- \\pi^+) e^+`,
287 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^-) mu^+`,
288 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^- \\pi^0) mu^+`,
289 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^- \\pi^- \\pi^+) mu^+`,
293 This skim uses `skim.standardlists.charm.loadSkimHighEffD0_Kpi`,
294 `skim.standardlists.charm.loadSkimHighEffD0_Kpipipi` and
295 `skim.standardlists.charm.loadStdD0_eff20_Kpipi0`, where :math:`D^0`
297 `skim.standardlists.charm.loadSkimHighEffDstarPlus_D0pi_Kpi`,
298 `skim.standardlists.charm.loadSkimHighEffDstarPlus_D0pi_Kpipipi`,
299 `skim.standardlists.charm.loadStdDstarPlus_D0pi_Kpipi0_eff20`,where the
300 :math:`D^{*-}` channel is defined.
302 The pion and kaon lists used to define :math:`D^0` and :math:`D^{*-}` are:
303 `skim.standardlists.charm.loadPiSkimHighEff`, `skim.standardlists.charm.loadKSkimHighEff` and
304 `skim.standardlists.charm.loadSlowPi`
306 __authors__ = [
"Bae Hanwook, Chiara La Licata"]
308 __contact__ = __liaison__
309 __category__ =
"physics, semileptonic"
311 ApplyHLTHadronCut =
True
312 produce_on_tau_samples =
False
315 stdE(
"all", path=path)
316 stdMu(
"all", path=path)
317 stdPi(
"all", path=path)
318 stdK(
"all", path=path)
319 stdPi0s(
"eff20_Jan2020", path=path)
320 loadPiSkimHighEff(path=path)
321 loadKSkimHighEff(path=path)
322 loadSlowPi(path=path)
323 loadSkimHighEffD0_Kpi(path=path)
324 loadSkimHighEffDstarPlus_D0pi_Kpi(path=path)
325 loadSkimHighEffD0_Kpipipi(path=path)
326 loadSkimHighEffDstarPlus_D0pi_Kpipipi(path=path)
327 loadStdD0_eff20_Kpipi0(path=path)
328 loadStdDstarPlus_D0pi_Kpipi0_eff20(path=path)
335 'abs(d0) < 0.5 and abs(z0) < 2 and thetaInCDCAcceptance and electronID >= 0.95 and 1.1 < useCMSFrame(p) < 2.5 ',
340 'abs(d0) < 0.5 and abs(z0) < 2 and thetaInCDCAcceptance and muonID >= 0.95 and 1.1 < useCMSFrame(p) < 2.5',
343 B0_channels = [
"D*-:D0_Kpi_skimhigheff e+:sig",
344 "D*-:D0_Kpipi0_eff20 e+:sig",
345 "D*-:D0_Kpipipi_skimhigheff e+:sig",
346 "D*-:D0_Kpi_skimhigheff mu+:sig",
347 "D*-:D0_Kpipi0_eff20 mu+:sig",
348 "D*-:D0_Kpipipi_skimhigheff mu+:sig"]
352 for chID, channel
in enumerate(B0_channels):
353 ma.reconstructDecay(
"B0:Dstl_kpi_kpipi0_kpipipi" + str(chID) +
" -> " + channel,
"", chID, path=path)
354 B0_list.append(
"B0:Dstl_kpi_kpipi0_kpipipi" + str(chID))