12 import modularAnalysis
as ma
13 from skim.standardlists.dileptons
import (loadStdJpsiToee_noTOP, loadStdJpsiTomumu,
15 from skim.standardlists.lightmesons
import (loadStdSkimHighEffTracks,
16 loadStdSkimHighEffPhi, loadStdSkimHighEffEtaPrime,
17 loadStdSkimHighEffEta, loadStdSkimHighEffKstar0,
18 loadStdSkimHighEffRho0, loadStdSkimHighEffOmega,
19 loadStdSkimHighEffF_0)
21 from skim
import BaseSkim, fancy_skim_header
22 from stdCharged
import stdE, stdK, stdMu, stdPi
23 from stdPhotons
import stdPhotons
24 from stdPi0s
import loadStdSkimPi0, stdPi0s, loadStdSkimHighEffPi0
25 from stdV0s
import stdKshorts
26 from variables
import variables
as vm
27 from stdKlongs
import stdKlongs
30 "Chiara La Licata <chiara.lalicata@ts.infn.it>",
31 "Stefano Lacaprara <stefano.lacaprara@pd.infn.it>"
35 __liaison__ =
"Yoshiyuki ONUKI <onuki@hep.phys.s.u-tokyo.ac.jp>"
36 _VALIDATION_SAMPLE =
"mdst14.root"
42 **Physics channels**: bd/u → qqs
51 * ``B0 -> K_S0 K_S0 K_S0``
54 * ``B0 -> omega K_S0``
56 * ``B0 -> pi0 pi0 K_S0``
57 * ``B0 -> phi K_S0 pi0``
58 * ``B0 -> pi+ pi- K_S0``
59 * ``B0 -> pi+ pi- K_S0 gamma``
60 * ``B0 -> pi0 K_S0 gamma``
61 * ``B0 -> pi0 pi0 K_S0``
62 * ``B0 -> phi K_S0 pi0``
63 * ``B0 -> pi+ pi- K_S0``
64 * ``B0 -> pi+ pi- K_S0 gamma``
65 * ``B0 -> pi0 K_S0 gamma``
69 **Particle lists used**:
72 * ``eta':SkimHighEff``
74 * ``pi0:eff40_May2020``
77 * ``rho0:SkimHighEff``
78 * ``omega:SkimHighEff``
82 * ``omega:SkimHighEff``
84 * ``gamma:E15 , cut : 1.4 < E < 4``
85 * ``gamma:ECMS16 , cut : 1.6 < useCMSFrame(E)``
91 * ``SkimHighEff tracks thetaInCDCAcceptance AND chiProb > 0 AND abs(dr) < 0.5 AND abs(dz) < 3 and PID>0.01``
92 * ``5.2 < Mbc < 5.29``
93 * ``abs(deltaE) < 0.5``
94 * ``nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1``,
98 __authors__ = [
"Reem Rasheed",
"Chiara La Licata",
"Stefano Lacaprara"]
99 __description__ =
"Skim for time-dependent CP violation analysis b->qqs decays"
100 __contact__ = __liaison__
101 __category__ =
"physics, TDCPV"
103 ApplyHLTHadronCut =
True
104 validation_sample = _VALIDATION_SAMPLE
107 stdK(
"all", path=path)
108 stdPi(
"all", path=path)
109 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
110 loadStdSkimHighEffTracks(
'pi', path=path)
111 loadStdSkimHighEffTracks(
'K', path=path)
112 loadStdSkimPi0(path=path)
113 loadStdSkimHighEffPi0(path=path)
114 stdKshorts(path=path)
115 stdPi0s(
"eff40_May2020", path=path, loadPhotonBeamBackgroundMVA=
False)
117 loadStdSkimHighEffPhi(path=path)
118 loadStdSkimHighEffEta(path=path)
119 loadStdSkimHighEffEtaPrime(path=path)
120 loadStdSkimHighEffKstar0(path=path)
121 loadStdSkimHighEffRho0(path=path)
122 loadStdSkimHighEffOmega(path=path)
123 loadStdSkimHighEffF_0(path=path)
126 ma.cutAndCopyList(
'gamma:E15',
'gamma:all',
'1.4<E<4', path=path)
127 ma.cutAndCopyList(
'gamma:ECMS16',
'gamma:all',
'1.6<useCMSFrame(E)', path=path)
130 vm.addAlias(
'E_ECL_pi_TDCPV',
'totalECLEnergyOfParticlesInList(pi+:TDCPV_eventshape)')
131 vm.addAlias(
'E_ECL_gamma_TDCPV',
'totalECLEnergyOfParticlesInList(gamma:TDCPV_eventshape)')
132 vm.addAlias(
'E_ECL_TDCPV',
'formula(E_ECL_pi_TDCPV+E_ECL_gamma_TDCPV)')
134 btotcpvcuts =
'5.2 < Mbc < 5.29 and abs(deltaE) < 0.5'
137 'phi:SkimHighEff K_S0:merged',
138 'eta\':SkimHighEff K_S0:merged',
139 'eta:SkimHighEff K_S0:merged',
140 'eta\':SkimHighEff K*0:SkimHighEff',
141 'eta:SkimHighEff K*0:SkimHighEff',
142 'K_S0:merged K_S0:merged K_S0:merged',
143 'pi0:skim K_S0:merged',
144 'rho0:SkimHighEff K_S0:merged',
145 'omega:SkimHighEff K_S0:merged',
146 'f_0:SkimHighEff K_S0:merged',
147 'pi0:skim pi0:skim K_S0:merged',
148 'phi:SkimHighEff K_S0:merged pi0:skim',
149 'pi+:SkimHighEff pi-:SkimHighEff K_S0:merged',
150 'pi+:SkimHighEff pi-:SkimHighEff K_S0:merged gamma:E15',
151 'pi0:skim K_S0:merged gamma:E15',
152 'pi0:SkimHighEff K_S0:merged gamma:ECMS16',
156 'eta\':SkimHighEff K+:SkimHighEff',
157 'phi:SkimHighEff K+:SkimHighEff',
161 for chID, channel
in enumerate(bd_qqs_Channels):
162 ma.reconstructDecay(
'B0:TDCPV_qqs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
163 ma.applyCuts(
'B0:TDCPV_qqs' + str(chID),
'nTracks>4', path=path)
164 bd_qqs_List.append(
'B0:TDCPV_qqs' + str(chID))
167 for chID, channel
in enumerate(bu_qqs_Channels):
168 ma.reconstructDecay(
'B+:TDCPV_qqs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
169 ma.applyCuts(
'B+:TDCPV_qqs' + str(chID),
'nTracks>4', path=path)
170 bu_qqs_List.append(
'B+:TDCPV_qqs' + str(chID))
172 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
173 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
174 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
175 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
177 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
180 harmonicMoments=
False,
186 checkForDuplicates=
False,
189 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
192 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
195 path = self.
skim_event_cutsskim_event_cuts(
" and ".join(EventCuts), path=path)
197 return bd_qqs_List + bu_qqs_List
200 ma.reconstructDecay(
"B0:etap -> eta':SkimHighEff K_S0:merged",
'5.20 < Mbc < 5.3 and abs(deltaE) < 0.3', path=path)
203 ma.applyCuts(
'gamma:E15',
'1.4 < E < 4', path=path)
205 ma.reconstructDecay(Kres +
":all -> K_S0:merged pi+:all pi-:all ",
"", path=path)
206 ma.reconstructDecay(
"B0:Kspipig -> " + Kres +
":all gamma:E15",
207 "Mbc > 5.2 and deltaE < 0.5 and deltaE > -0.5", path=path)
209 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
210 filename = f
'{self}_Validation.root'
211 ma.variablesToHistogram(
'B0:etap', variableshisto, filename=filename, path=path, directory=
"etap")
212 ma.variablesToHistogram(
'B0:Kspipig', variableshisto, filename=filename, path=path, directory=
"Kspipig")
218 **Physics channels**: bd → ccs
222 * ``B0 -> J/psi (ee/mm) K_S0``
223 * ``B0 -> psi(2s) (ee/mm) K_S0``
224 * ``B0 -> J/psi (ee/mm) K*``
225 * ``B+ -> J/psi (ee/mm) K+``
226 * ``B0 -> J/psi (ee/mm) KL``
228 **Particle lists used**:
236 * ``K*0:SkimHighEff``
242 * ``SkimHighEff tracks thetaInCDCAcceptance AND chiProb > 0 AND abs(dr) < 0.5 AND abs(dz) < 3 and PID>0.01``
243 * ``5.2 < Mbc < 5.29 for Ks/K*``
244 * ``5.05 < Mbc < 5.29 for KL``
245 * ``abs(deltaE) < 0.5``
246 * ``nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3``
247 * ``nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1``,
248 * ``visibleEnergyOfEventCMS>4"``,
252 __authors__ = [
"Reem Rasheed",
"Chiara La Licata",
"Stefano Lacaprara"]
253 __description__ =
"Skim for time-dependent CP violation analysis."
254 __contact__ = __liaison__
255 __category__ =
"physics, TDCPV"
257 ApplyHLTHadronCut =
True
258 validation_sample = _VALIDATION_SAMPLE
261 stdE(
"all", path=path)
262 stdK(
"all", path=path)
263 stdMu(
"all", path=path)
264 stdPi(
"all", path=path)
265 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
267 loadStdSkimHighEffTracks(
'pi', path=path)
268 loadStdSkimHighEffTracks(
'K', path=path)
270 loadStdSkimPi0(path=path)
271 stdKshorts(path=path)
272 stdPi0s(
"eff40_May2020", path=path, loadPhotonBeamBackgroundMVA=
False)
273 loadStdSkimHighEffKstar0(path=path)
275 loadStdJpsiToee_noTOP(path=path)
276 loadStdJpsiTomumu(path=path)
277 loadStdPsi2s2lepton(path=path)
282 ma.cutAndCopyList(
'K_L0:alleclEcut',
'K_L0:allecl',
'E>0.15', path=path)
283 ma.copyLists(
'K_L0:all_klmecl', [
'K_L0:allklm',
'K_L0:allecl'], writeOut=
True, path=path)
286 vm.addAlias(
'E_ECL_pi_TDCPV',
'totalECLEnergyOfParticlesInList(pi+:TDCPV_eventshape)')
287 vm.addAlias(
'E_ECL_gamma_TDCPV',
'totalECLEnergyOfParticlesInList(gamma:TDCPV_eventshape)')
288 vm.addAlias(
'E_ECL_TDCPV',
'formula(E_ECL_pi_TDCPV+E_ECL_gamma_TDCPV)')
290 btotcpvcuts =
'5.2 < Mbc < 5.29 and abs(deltaE) < 0.5'
291 btotcpvcuts_KL =
'5.05 < Mbc < 5.29 and abs(deltaE) < 0.5'
293 bd_ccs_Channels = [
'J/psi:ee K_S0:merged',
294 'J/psi:mumu K_S0:merged',
295 'psi(2S):ll K_S0:merged',
296 'J/psi:ee K*0:SkimHighEff',
297 'J/psi:mumu K*0:SkimHighEff']
299 bPlustoJPsiK_Channel = [
'J/psi:mumu K+:SkimHighEff',
300 'J/psi:ee K+:SkimHighEff']
302 bd_ccs_KL_Channels = [
'J/psi:mumu K_L0:all_klmecl',
303 'J/psi:ee K_L0:all_klmecl']
306 for chID, channel
in enumerate(bd_ccs_Channels):
307 ma.reconstructDecay(
'B0:TDCPV_ccs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
308 ma.applyCuts(
'B0:TDCPV_ccs' + str(chID),
'nTracks>4', path=path)
309 bd_ccs_List.append(
'B0:TDCPV_ccs' + str(chID))
311 bPlustoJPsiK_List = []
313 for chID, channel
in enumerate(bPlustoJPsiK_Channel):
314 ma.reconstructDecay(
'B+:TDCPV_JPsiK' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
315 bPlustoJPsiK_List.append(
'B+:TDCPV_JPsiK' + str(chID))
318 for chID, channel
in enumerate(bd_ccs_KL_Channels):
319 ma.reconstructDecay(
'B0:TDCPV_JPsiKL' + str(chID) +
' -> ' + channel, btotcpvcuts_KL, chID, path=path)
320 b0toJPsiKL_List.append(
'B0:TDCPV_JPsiKL' + str(chID))
322 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
323 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
324 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
325 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
327 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
330 harmonicMoments=
False,
336 checkForDuplicates=
False,
339 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
342 "nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3",
343 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
344 "visibleEnergyOfEventCMS>4",
347 path = self.
skim_event_cutsskim_event_cuts(
" and ".join(EventCuts), path=path)
349 return bd_ccs_List + bPlustoJPsiK_List + b0toJPsiKL_List
352 ma.reconstructDecay(
'B0:jpsiee -> J/psi:ee K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
353 ma.reconstructDecay(
'B0:jpsimumu -> J/psi:mumu K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
355 filename = f
'{self}_Validation.root'
356 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
357 ma.variablesToHistogram(
'B0:jpsiee', variableshisto, filename=filename, path=path, directory=
"jpsiee")
358 ma.variablesToHistogram(
363 directory=
"jpsimumu")
def skim_event_cuts(self, cut, *path)
def additional_setup(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def additional_setup(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)