12 """(Semi-)Leptonic Working Group Skims for leptonic analyses.
15 import modularAnalysis
as ma
16 from skim
import BaseSkim, fancy_skim_header
17 from stdCharged
import stdE, stdMu
18 from variables
import variables
as vm
20 __liaison__ =
"Shanette De La Motte <shanette.delamotte@adelaide.edu.au>"
21 _VALIDATION_SAMPLE =
"mdst14.root"
28 * :math:`B^- \\to e^-`
29 * :math:`B^- \\to \\mu^-`
32 * :math:`p_{\\ell}^{*} > 2\\,\\text{GeV}` in CMS Frame
33 * :math:`\\text{electronID_noTOP} > 0.5`
34 * :math:`\\text{muonID} > 0.5`
35 * :math:`n_{\\text{tracks}} \\geq 3`
38 __authors__ = [
"Phillip Urquijo"]
39 __contact__ = __liaison__
41 "Skim for leptonic analyses, "
42 ":math:`B_{\\text{sig}}^-\\to\\ell\\nu`, where :math:`\\ell=e,\\mu`"
44 __category__ =
"physics, leptonic"
46 validation_sample = _VALIDATION_SAMPLE
49 stdE(
"all", path=path)
50 stdMu(
"all", path=path)
54 "e-:LeptonicUntagged",
56 "useCMSFrame(p) > 2.0 and electronID_noTOP > 0.5",
61 "mu-:LeptonicUntagged",
63 "useCMSFrame(p) > 2.0 and muonID > 0.5",
67 ma.reconstructDecay(
"B-:LeptonicUntagged_0 -> e-:LeptonicUntagged",
"", 1, path=path)
68 ma.reconstructDecay(
"B-:LeptonicUntagged_1 -> mu-:LeptonicUntagged",
"", 2, path=path)
69 ma.applyCuts(
"B-:LeptonicUntagged_0",
"nTracks>=3", path=path)
70 ma.applyCuts(
"B-:LeptonicUntagged_1",
"nTracks>=3", path=path)
71 return [
"B-:LeptonicUntagged_0",
"B-:LeptonicUntagged_1"]
78 ma.cutAndCopyLists(
"B-:LeptonicUntagged", [
"B-:LeptonicUntagged_0",
"B-:LeptonicUntagged_1"],
"", path=path)
80 ma.buildRestOfEvent(
"B-:LeptonicUntagged", path=path)
82 "B-:LeptonicUntagged",
84 "pt>0.05 and -2<dr<2 and -4.0<dz<4.0",
88 vm.addAlias(
"d0_p",
"daughter(0,p)")
89 vm.addAlias(
"d0_electronID_noTOP",
"daughter(0,electronID_noTOP)")
90 vm.addAlias(
"d0_muonID",
"daughter(0,muonID)")
91 vm.addAlias(
"MissP",
"weMissP(basic,0)")
93 histogramFilename = f
"{self}_Validation.root"
96 create_validation_histograms(
97 rootfile=histogramFilename,
98 particlelist=
"B-:LeptonicUntagged",
100 (
"Mbc", 100, 4.0, 5.3,
"Mbc", contact,
"",
""),
101 (
"d0_p", 100, 0, 5.2,
"Signal-side lepton momentum", contact,
"",
""),
102 (
"d0_electronID_noTOP", 100, 0, 1,
"electronID_noTOP of signal-side lepton",
104 (
"d0_muonID", 100, 0, 1,
"electronID_noTOP of signal-side lepton", contact,
106 (
"R2", 100, 0, 1,
"R2", contact,
"",
""),
107 (
"MissP", 100, 0, 5.3,
"Missing momentum of event (CMS frame)", contact,
111 (
"deltaE", 100, -5, 5,
"Mbc", 100, 4.0, 5.3,
"Mbc vs deltaE", contact,
122 * :math:`B\\overline{B} \\to l^+l^-`
123 * :math:`B\\overline{B} \\to l^+l^+`
124 * :math:`B\\overline{B} \\to l^-l^-`
126 __authors__ = [
"Alessandro Gaz, Chiara La Licata"]
127 __contact__ = __liaison__
129 "Inclusive dilepton skim"
131 __category__ =
"physics, leptonic"
133 NoisyModules = [
"EventShapeCalculator"]
136 stdE(
"all", path=path)
137 stdMu(
"all", path=path)
143 "abs(d0) < 1 and abs(z0) < 4 and p > 1.2 and electronID_noTOP > 0.5",
150 "abs(d0) < 1 and abs(z0) < 4 and p > 1.2 and muonID > 0.5",
157 default_cleanup=
True,
162 harmonicMoments=
True,
166 checkForDuplicates=
False,
169 path = self.
skim_event_cutsskim_event_cuts(
'sphericity > 0.18 and nTracks > 3', path=path)
171 ma.reconstructDecay(
'Upsilon(4S):ee -> e+:pid e-:pid',
'M < 15', path=path)
172 ma.reconstructDecay(
'Upsilon(4S):emu -> e+:pid mu-:pid',
'M < 15', path=path)
173 ma.reconstructDecay(
'Upsilon(4S):mumu -> mu+:pid mu-:pid',
'M < 15', path=path)
175 ma.reconstructDecay(
'Delta++:ee -> e+:pid e+:pid',
'M < 15', path=path)
176 ma.reconstructDecay(
'Delta++:emu -> e+:pid mu+:pid',
'M < 15', path=path)
177 ma.reconstructDecay(
'Delta++:mumu -> mu+:pid mu+:pid',
'M < 15', path=path)
179 ma.copyLists(outputListName=
'Upsilon(4S):ll',
180 inputListNames=[
'Upsilon(4S):ee',
'Upsilon(4S):emu',
'Upsilon(4S):mumu'],
183 ma.copyLists(outputListName=
'Delta++:ll',
184 inputListNames=[
'Delta++:ee',
'Delta++:emu',
'Delta++:mumu'],
187 return [
"Upsilon(4S):ll",
"Delta++:ll"]
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)
def skim_event_cuts(self, cut, *path)