6 import modularAnalysis
as ma
7 from skim.standardlists.dileptons
import (loadStdDiLeptons, loadStdJpsiToee_noTOP,
8 loadStdJpsiTomumu, loadStdPsi2s2lepton)
9 from skim.standardlists.lightmesons
import (loadStdSkimHighEffTracks,
10 loadStdSkimHighEffPhi, loadStdSkimHighEffEtaPrime,
11 loadStdSkimHighEffEta, loadStdSkimHighEffKstar0,
12 loadStdSkimHighEffRho0, loadStdSkimHighEffOmega,
13 loadStdSkimHighEffF_0)
15 from skimExpertFunctions
import BaseSkim, fancy_skim_header
16 from stdCharged
import stdE, stdK, stdMu, stdPi
17 from stdPhotons
import loadStdSkimPhoton, stdPhotons
18 from stdPi0s
import loadStdSkimPi0, stdPi0s
19 from stdV0s
import stdKshorts
20 from variables
import variables
as vm
21 from stdKlongs
import stdKlongs
24 "Chiara La Licata <chiara.lalicata@ts.infn.it>",
25 "Stefano Lacaprara <stefano.lacaprara@pd.infn.it>"
29 __liaison__ =
"Yoshiyuki ONUKI <onuki@hep.phys.s.u-tokyo.ac.jp>"
35 **Physics channels**: bd/u → qqs
44 * ``B0 -> K_S0 K_S0 K_S0``
47 * ``B0 -> omega K_S0``
49 * ``B0 -> pi0 pi0 K_S0``
50 * ``B0 -> phi K_S0 pi0``
51 * ``B0 -> pi+ pi- K_S0``
52 * ``B0 -> pi+ pi- K_S0 gamma``
53 * ``B0 -> pi0 K_S0 gamma``
54 * ``B0 -> pi0 pi0 K_S0``
55 * ``B0 -> phi K_S0 pi0``
56 * ``B0 -> pi+ pi- K_S0``
57 * ``B0 -> pi+ pi- K_S0 gamma``
58 * ``B0 -> pi0 K_S0 gamma``
62 **Particle lists used**:
65 * ``eta':SkimHighEff``
67 * ``pi0:eff40_Jan2020``
69 * ``rho0:SkimHighEff``
70 * ``omega:SkimHighEff``
74 * ``omega:SkimHighEff``
76 * ``gamma:E15 , cut : 1.4 < E < 4``
82 * ``SkimHighEff tracks thetaInCDCAcceptance AND chiProb > 0 AND abs(dr) < 0.5 AND abs(dz) < 3 and PID>0.01``
83 * ``5.2 < Mbc < 5.29``
84 * ``abs(deltaE) < 0.5``
85 * ``nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1``,
89 __authors__ = [
"Reem Rasheed",
"Chiara La Licata",
"Stefano Lacaprara"]
90 __description__ =
"Skim for time-dependent CP violation analysis b->qqs decays"
91 __contact__ = __liaison__
92 __category__ =
"physics, TDCPV"
94 ApplyHLTHadronCut =
True
97 stdK(
"all", path=path)
98 stdPi(
"all", path=path)
100 loadStdSkimHighEffTracks(
'pi', path=path)
101 loadStdSkimHighEffTracks(
'K', path=path)
102 loadStdSkimPi0(path=path)
103 stdKshorts(path=path)
104 stdPi0s(
"eff40_Jan2020", path=path)
106 loadStdSkimHighEffPhi(path=path)
107 loadStdSkimHighEffEta(path=path)
108 loadStdSkimHighEffEtaPrime(path=path)
109 loadStdSkimHighEffKstar0(path=path)
110 loadStdSkimHighEffRho0(path=path)
111 loadStdSkimHighEffOmega(path=path)
112 loadStdSkimHighEffF_0(path=path)
115 ma.cutAndCopyList(
'gamma:E15',
'gamma:all',
'1.4<E<4', path=path)
118 vm.addAlias(
'E_ECL_pi_TDCPV',
'totalECLEnergyOfParticlesInList(pi+:TDCPV_eventshape)')
119 vm.addAlias(
'E_ECL_gamma_TDCPV',
'totalECLEnergyOfParticlesInList(gamma:TDCPV_eventshape)')
120 vm.addAlias(
'E_ECL_TDCPV',
'formula(E_ECL_pi_TDCPV+E_ECL_gamma_TDCPV)')
122 btotcpvcuts =
'5.2 < Mbc < 5.29 and abs(deltaE) < 0.5'
125 'phi:SkimHighEff K_S0:merged',
126 'eta\':SkimHighEff K_S0:merged',
127 'eta:SkimHighEff K_S0:merged',
128 'eta\':SkimHighEff K*0:SkimHighEff',
129 'eta:SkimHighEff K*0:SkimHighEff',
130 'K_S0:merged K_S0:merged K_S0:merged',
131 'pi0:skim K_S0:merged',
132 'rho0:SkimHighEff K_S0:merged',
133 'omega:SkimHighEff K_S0:merged',
134 'f_0:SkimHighEff K_S0:merged',
135 'pi0:skim pi0:skim K_S0:merged',
136 'phi:SkimHighEff K_S0:merged pi0:skim',
137 'pi+:SkimHighEff pi-:SkimHighEff K_S0:merged',
138 'pi+:SkimHighEff pi-:SkimHighEff K_S0:merged gamma:E15',
139 'pi0:skim K_S0:merged gamma:E15',
143 'eta\':SkimHighEff K+:SkimHighEff',
144 'phi:SkimHighEff K+:SkimHighEff',
148 for chID, channel
in enumerate(bd_qqs_Channels):
149 ma.reconstructDecay(
'B0:TDCPV_qqs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
150 ma.applyCuts(
'B0:TDCPV_qqs' + str(chID),
'nTracks>4', path=path)
151 bd_qqs_List.append(
'B0:TDCPV_qqs' + str(chID))
154 for chID, channel
in enumerate(bu_qqs_Channels):
155 ma.reconstructDecay(
'B+:TDCPV_qqs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
156 ma.applyCuts(
'B+:TDCPV_qqs' + str(chID),
'nTracks>4', path=path)
157 bu_qqs_List.append(
'B+:TDCPV_qqs' + str(chID))
159 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
160 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
161 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
162 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
164 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
167 harmonicMoments=
False,
173 checkForDuplicates=
False,
176 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
179 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
184 tcpvLists = bd_qqs_List + bu_qqs_List
189 ma.reconstructDecay(
"B0:etap -> eta':SkimHighEff K_S0:merged",
'5.20 < Mbc < 5.3 and abs(deltaE) < 0.3', path=path)
192 ma.applyCuts(
'gamma:E15',
'1.4 < E < 4', path=path)
194 ma.reconstructDecay(Kres +
":all -> K_S0:merged pi+:all pi-:all ",
"", path=path)
195 ma.reconstructDecay(
"B0:Kspipig -> " + Kres +
":all gamma:E15",
196 "Mbc > 5.2 and deltaE < 0.5 and deltaE > -0.5", path=path)
197 ma.matchMCTruth(
'B0:Kspipig', path=path)
199 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
201 ma.variablesToHistogram(
'B0:etap', variableshisto, filename=
'TDCPV_qqs_Validation.root', path=path, directory=
"etap")
202 ma.variablesToHistogram(
'B0:Kspipig', variableshisto, filename=
'TDCPV_qqs_Validation.root', path=path, directory=
"Kspipig")
208 **Physics channels**: bd → ccs
212 * ``B0 -> J/psi (ee/mm) K_S0``
213 * ``B0 -> psi(2s) (ee/mm) K_S0``
214 * ``B0 -> J/psi (ee/mm) K*``
215 * ``B+ -> J/psi (ee/mm) K+``
216 * ``B0 -> J/psi (ee/mm) KL``
218 **Particle lists used**:
226 * ``K*0:SkimHighEff``
232 * ``SkimHighEff tracks thetaInCDCAcceptance AND chiProb > 0 AND abs(dr) < 0.5 AND abs(dz) < 3 and PID>0.01``
233 * ``5.2 < Mbc < 5.29 for Ks/K*``
234 * ``5.05 < Mbc < 5.29 for KL``
235 * ``abs(deltaE) < 0.5``
236 * ``nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3``
237 * ``nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1``,
238 * ``visibleEnergyOfEventCMS>4"``,
242 __authors__ = [
"Reem Rasheed",
"Chiara La Licata",
"Stefano Lacaprara"]
243 __description__ =
"Skim for time-dependent CP violation analysis."
244 __contact__ = __liaison__
245 __category__ =
"physics, TDCPV"
247 ApplyHLTHadronCut =
True
250 stdE(
"all", path=path)
251 stdK(
"all", path=path)
252 stdMu(
"all", path=path)
253 stdPi(
"all", path=path)
256 loadStdSkimHighEffTracks(
'pi', path=path)
257 loadStdSkimHighEffTracks(
'K', path=path)
259 loadStdSkimPi0(path=path)
260 stdKshorts(path=path)
261 stdPi0s(
"eff40_Jan2020", path=path)
262 loadStdSkimHighEffKstar0(path=path)
264 loadStdJpsiToee_noTOP(path=path)
265 loadStdJpsiTomumu(path=path)
266 loadStdPsi2s2lepton(path=path)
271 ma.cutAndCopyList(
'K_L0:alleclEcut',
'K_L0:allecl',
'E>0.15', path=path)
272 ma.copyLists(
'K_L0:all', [
'K_L0:allklm',
'K_L0:allecl'], writeOut=
True, path=path)
275 vm.addAlias(
'E_ECL_pi_TDCPV',
'totalECLEnergyOfParticlesInList(pi+:TDCPV_eventshape)')
276 vm.addAlias(
'E_ECL_gamma_TDCPV',
'totalECLEnergyOfParticlesInList(gamma:TDCPV_eventshape)')
277 vm.addAlias(
'E_ECL_TDCPV',
'formula(E_ECL_pi_TDCPV+E_ECL_gamma_TDCPV)')
279 btotcpvcuts =
'5.2 < Mbc < 5.29 and abs(deltaE) < 0.5'
280 btotcpvcuts_KL =
'5.05 < Mbc < 5.29 and abs(deltaE) < 0.5'
282 bd_ccs_Channels = [
'J/psi:ee K_S0:merged',
283 'J/psi:mumu K_S0:merged',
284 'psi(2S):ll K_S0:merged',
285 'J/psi:ee K*0:SkimHighEff',
286 'J/psi:mumu K*0:SkimHighEff']
288 bPlustoJPsiK_Channel = [
'J/psi:mumu K+:SkimHighEff',
289 'J/psi:ee K+:SkimHighEff']
291 bd_ccs_KL_Channels = [
'J/psi:mumu K_L0:all',
295 for chID, channel
in enumerate(bd_ccs_Channels):
296 ma.reconstructDecay(
'B0:TDCPV_ccs' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
297 ma.applyCuts(
'B0:TDCPV_ccs' + str(chID),
'nTracks>4', path=path)
298 bd_ccs_List.append(
'B0:TDCPV_ccs' + str(chID))
300 bPlustoJPsiK_List = []
302 for chID, channel
in enumerate(bPlustoJPsiK_Channel):
303 ma.reconstructDecay(
'B+:TDCPV_JPsiK' + str(chID) +
' -> ' + channel, btotcpvcuts, chID, path=path)
304 bPlustoJPsiK_List.append(
'B+:TDCPV_JPsiK' + str(chID))
307 for chID, channel
in enumerate(bd_ccs_KL_Channels):
308 ma.reconstructDecay(
'B0:TDCPV_JPsiKL' + str(chID) +
' -> ' + channel, btotcpvcuts_KL, chID, path=path)
309 b0toJPsiKL_List.append(
'B0:TDCPV_JPsiKL' + str(chID))
311 ma.fillParticleList(decayString=
'pi+:TDCPV_eventshape',
312 cut=
'pt > 0.1 and abs(dr)<0.5 and abs(dz)<2 and nCDCHits>20', path=path)
313 ma.fillParticleList(decayString=
'gamma:TDCPV_eventshape',
314 cut=
'E > 0.1 and 0.296706 < theta < 2.61799', path=path)
316 ma.buildEventShape(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'],
319 harmonicMoments=
False,
325 checkForDuplicates=
False,
328 ma.buildEventKinematics(inputListNames=[
'pi+:TDCPV_eventshape',
'gamma:TDCPV_eventshape'], path=path)
331 "nCleanedTracks(abs(dz) < 2.0 and abs(dr) < 0.5 and nCDCHits>20)>=3",
332 "nCleanedECLClusters(0.296706 < theta < 2.61799 and E>0.2)>1",
333 "visibleEnergyOfEventCMS>4",
338 tcpvLists = bd_ccs_List + bPlustoJPsiK_List + b0toJPsiKL_List
343 ma.reconstructDecay(
'B0:jpsiee -> J/psi:ee K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
344 ma.reconstructDecay(
'B0:jpsimumu -> J/psi:mumu K_S0:merged',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
346 variableshisto = [(
'deltaE', 100, -0.5, 0.5), (
'Mbc', 100, 5.2, 5.3)]
347 ma.variablesToHistogram(
'B0:jpsiee', variableshisto, filename=
'TDCPV_ccs_Validation.root', path=path, directory=
"jpsiee")
348 ma.variablesToHistogram(
351 filename=
'TDCPV_ccs_Validation.root',
353 directory=
"jpsimumu")