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 bd_qqs_List.append(
'B0:TDCPV_qqs' + str(chID))
166 for chID, channel
in enumerate(bu_qqs_Channels):
167 ma.reconstructDecay(
'B+:TDCPV_qqs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
168 bu_qqs_List.append(
'B+:TDCPV_qqs' + str(chID))
170 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
171 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
172 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
173 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
175 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
178 harmonicMoments=
False,
184 checkForDuplicates=
False,
187 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
190 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
193 path = self.
skim_event_cutsskim_event_cuts(
" and ".join(EventCuts), path=path)
195 return bd_qqs_List + bu_qqs_List
198 ma.reconstructDecay(
"B0:etap -> eta':SkimHighEff K_S0:merged",
'5.20 < Mbc < 5.3 and abs(deltaE) < 0.3', path=path)
201 ma.applyCuts(
'gamma:E15',
'1.4 < E < 4', path=path)
203 ma.reconstructDecay(Kres +
":all -> K_S0:merged pi+:all pi-:all ",
"", path=path)
204 ma.reconstructDecay(
"B0:Kspipig -> " + Kres +
":all gamma:E15",
205 "Mbc > 5.2 and deltaE < 0.5 and deltaE > -0.5", path=path)
207 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
208 filename = f
'{self}_Validation.root'
209 ma.variablesToHistogram(
'B0:etap', variableshisto, filename=filename, path=path, directory=
"etap")
210 ma.variablesToHistogram(
'B0:Kspipig', variableshisto, filename=filename, path=path, directory=
"Kspipig")
216 **Physics channels**: bd → ccs
220 * ``B0 -> J/psi (ee/mm) K_S0``
221 * ``B0 -> psi(2s) (ee/mm) K_S0``
222 * ``B0 -> J/psi (ee/mm) K*``
223 * ``B+ -> J/psi (ee/mm) K+``
224 * ``B0 -> J/psi (ee/mm) KL``
226 **Particle lists used**:
234 * ``K*0:SkimHighEff``
240 * ``SkimHighEff tracks thetaInCDCAcceptance AND chiProb > 0 AND abs(dr) < 0.5 AND abs(dz) < 3 and PID>0.01``
241 * ``5.2 < Mbc < 5.29 for Ks/K*``
242 * ``5.05 < Mbc < 5.29 for KL``
243 * ``abs(deltaE) < 0.5``
244 * ``nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3``
245 * ``nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1``,
246 * ``visibleEnergyOfEventCMS>4"``,
250 __authors__ = [
"Reem Rasheed",
"Chiara La Licata",
"Stefano Lacaprara"]
251 __description__ =
"Skim for time-dependent CP violation analysis."
252 __contact__ = __liaison__
253 __category__ =
"physics, TDCPV"
255 ApplyHLTHadronCut =
True
256 validation_sample = _VALIDATION_SAMPLE
259 stdE(
"all", path=path)
260 stdK(
"all", path=path)
261 stdMu(
"all", path=path)
262 stdPi(
"all", path=path)
263 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
265 loadStdSkimHighEffTracks(
'pi', path=path)
266 loadStdSkimHighEffTracks(
'K', path=path)
268 loadStdSkimPi0(path=path)
269 stdKshorts(path=path)
270 stdPi0s(
"eff40_May2020", path=path, loadPhotonBeamBackgroundMVA=
False)
271 loadStdSkimHighEffKstar0(path=path)
273 loadStdJpsiToee_noTOP(path=path)
274 loadStdJpsiTomumu(path=path)
275 loadStdPsi2s2lepton(path=path)
280 ma.cutAndCopyList(
'K_L0:alleclEcut',
'K_L0:allecl',
'E>0.15', path=path)
281 ma.copyLists(
'K_L0:all_klmecl', [
'K_L0:allklm',
'K_L0:allecl'], writeOut=
True, path=path)
284 vm.addAlias(
'E_ECL_pi_TDCPV',
'totalECLEnergyOfParticlesInList(pi+:TDCPV_eventshape)')
285 vm.addAlias(
'E_ECL_gamma_TDCPV',
'totalECLEnergyOfParticlesInList(gamma:TDCPV_eventshape)')
286 vm.addAlias(
'E_ECL_TDCPV',
'formula(E_ECL_pi_TDCPV+E_ECL_gamma_TDCPV)')
288 btotcpvcuts =
'5.2 < Mbc < 5.29 and abs(deltaE) < 0.5'
289 btotcpvcuts_KL =
'5.05 < Mbc < 5.29 and abs(deltaE) < 0.5'
291 bd_ccs_Channels = [
'J/psi:ee K_S0:merged',
292 'J/psi:mumu K_S0:merged',
293 'psi(2S):ll K_S0:merged',
294 'J/psi:ee K*0:SkimHighEff',
295 'J/psi:mumu K*0:SkimHighEff']
297 bPlustoJPsiK_Channel = [
'J/psi:mumu K+:SkimHighEff',
298 'J/psi:ee K+:SkimHighEff']
300 bd_ccs_KL_Channels = [
'J/psi:mumu K_L0:all_klmecl',
301 'J/psi:ee K_L0:all_klmecl']
304 for chID, channel
in enumerate(bd_ccs_Channels):
305 ma.reconstructDecay(
'B0:TDCPV_ccs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
306 ma.applyCuts(
'B0:TDCPV_ccs' + str(chID),
'nTracks>4', path=path)
307 bd_ccs_List.append(
'B0:TDCPV_ccs' + str(chID))
309 bPlustoJPsiK_List = []
311 for chID, channel
in enumerate(bPlustoJPsiK_Channel):
312 ma.reconstructDecay(
'B+:TDCPV_JPsiK' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
313 bPlustoJPsiK_List.append(
'B+:TDCPV_JPsiK' + str(chID))
316 for chID, channel
in enumerate(bd_ccs_KL_Channels):
317 ma.reconstructDecay(
'B0:TDCPV_JPsiKL' + str(chID) +
' -> ' + channel, btotcpvcuts_KL, chID, path=path)
318 b0toJPsiKL_List.append(
'B0:TDCPV_JPsiKL' + str(chID))
320 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
321 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
322 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
323 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
325 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
328 harmonicMoments=
False,
334 checkForDuplicates=
False,
337 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
340 "nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3",
341 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
342 "visibleEnergyOfEventCMS>4",
345 path = self.
skim_event_cutsskim_event_cuts(
" and ".join(EventCuts), path=path)
347 return bd_ccs_List + bPlustoJPsiK_List + b0toJPsiKL_List
350 ma.reconstructDecay(
'B0:jpsiee -> J/psi:ee K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
351 ma.reconstructDecay(
'B0:jpsimumu -> J/psi:mumu K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
353 filename = f
'{self}_Validation.root'
354 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
355 ma.variablesToHistogram(
'B0:jpsiee', variableshisto, filename=filename, path=path, directory=
"jpsiee")
356 ma.variablesToHistogram(
361 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)