Belle II Software  release-06-01-15
dileptons.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import modularAnalysis as ma
13 
14 
15 def loadStdDiLeptons(persistent=True, path=None):
16  """
17  Create the following lists of di-leptons:
18  - 'J/psi:mumuLoose'Psi2s
19  - 'J/psi:eeLoose'
20  - 'psi(2S):mumuLoose'
21  - 'psi(2S):eeLoose'
22 
23  @param persistent whether RootOutput module should save the created ParticleLists (default True)
24  @param path modules are added to this path
25  """
26 
27  loadStdLooseJpsi2mumu(persistent, path)
28  loadStdLooseJpsi2ee(persistent, path)
29  loadStdLoosePsi2s2mumu(persistent, path)
30  loadStdLoosePsi2s2ee(persistent, path)
31  loadStdPsi2s2lepton(persistent, path)
32 
33 
34 def loadStdLooseJpsi2mumu(persistent=True, path=None):
35  """
36  Load the 'J/psi:mumuLoose' list from 'mu-:loose mu+:loose', with :math:`2.8 < M < 3.7~GeV`
37 
38  @param persistent whether RootOutput module should save the created ParticleLists (default True)
39  @param path modules are added to this path
40  """
41  ma.reconstructDecay('J/psi:mumuLoose -> mu-:loose mu+:loose', '2.8 < M < 3.7', 2, persistent, path)
42  return 'J/psi:mumuLoose'
43 
44 
45 def loadStdLooseJpsi2ee(persistent=True, path=None):
46  """
47  Load the 'J/psi:eeLoose' list from 'e-:loose e+:loose', with :math:`2.8 < M < 3.7~GeV`
48 
49  @param persistent whether RootOutput module should save the created ParticleLists (default True)
50  @param path modules are added to this path
51  """
52  ma.reconstructDecay('J/psi:eeLoose -> e-:loose e+:loose', '2.8 < M < 3.7', 2, persistent, path)
53  return 'J/psi:eeLoose'
54 
55 
56 def loadStdJpsiToee(persistent=True, path=None):
57  """
58  Load the 'J/psi:ee' list from 'e+:bremCorr e-:bremCorr', with :math:`2.8 < M < 3.4~GeV` with electronID>0.01
59 
60  @param persistent whether RootOutput module should save the created ParticleLists (default True)
61  @param path modules are added to this path
62  """
63 
64  ma.fillParticleList('e+:withCuts', cut="dr < 0.5 and abs(dz) < 2 and thetaInCDCAcceptance", path=path)
65  ma.fillParticleList(decayString='gamma:e+', cut="E < 1.0", path=path)
66  ma.correctBrems(outputList='e+:bremCorr', inputList='e+:withCuts', gammaList='gamma:e+', multiplePhotons=False,
67  usePhotonOnlyOnce=True, writeOut=True, path=path)
68 
69  ma.reconstructDecay(
70  'J/psi:ee -> e+:bremCorr e-:bremCorr',
71  '2.8 < M < 3.4 and daughter(0, electronID) > 0.01 or daughter(1, electronID) > 0.01',
72  2,
73  persistent,
74  path)
75  return 'J/psi:ee'
76 
77 
78 def loadStdJpsiToee_noTOP(persistent=True, path=None):
79  """
80  Load the 'J/psi:ee' list from 'e+:bremCorr e-:bremCorr', with :math:`2.8 < M < 3.4~GeV` with electronID_noTOP>0.01
81 
82  @param persistent whether RootOutput module should save the created ParticleLists (default True)
83  @param path modules are added to this path
84  """
85 
86  ma.fillParticleList('e+:withCuts', cut="dr < 0.5 and abs(dz) < 2 and thetaInCDCAcceptance", path=path)
87  ma.fillParticleList(decayString='gamma:e+', cut="E < 1.0", path=path)
88  ma.correctBrems(outputList='e+:bremCorr', inputList='e+:withCuts', gammaList='gamma:e+', multiplePhotons=False,
89  usePhotonOnlyOnce=True, writeOut=True, path=path)
90 
91  ma.reconstructDecay(
92  'J/psi:ee -> e+:bremCorr e-:bremCorr',
93  '2.8 < M < 3.4 and daughter(0, electronID_noTOP) > 0.01 or daughter(1, electronID_noTOP) > 0.01',
94  2,
95  persistent,
96  path)
97  return 'J/psi:ee'
98 
99 
100 def loadStdJpsiTomumu(persistent=True, path=None):
101  """
102  Load the 'J/psi:mumu' list from 'mu+:withCuts mu+:withCuts', with :math:`2.8 < M < 3.4~GeV`
103  where mu+:withCuts list is with cut="dr < 0.5 and abs(dz) < 2 and thetaInCDCAcceptance and muonID > 0.01"
104 
105  @param persistent whether RootOutput module should save the created ParticleLists (default True)
106  @param path modules are added to this path
107  """
108  ma.fillParticleList('mu+:withCuts', cut="dr < 0.5 and abs(dz) < 2 and thetaInCDCAcceptance", path=path)
109  ma.reconstructDecay(
110  'J/psi:mumu -> mu+:withCuts mu-:withCuts',
111  '2.8 < M < 3.4 and daughter(0, muonID) > 0.01 or daughter(1,muonID) > 0.01',
112  2,
113  persistent,
114  path)
115  return 'J/psi:mumu'
116 
117 
118 def loadStdPsi2s2lepton(persistent=True, path=None):
119  """
120  'psi(2S):ll' list of Psi(2S) to mumu or ee.
121  'psi(2S):mumu' reconstructed from 'mu-:all mu+:all', with :math:`3.2 < M < 4.1~GeV`
122  'psi(2S):ee' reconstructed from 'e-:all e+:all', with :math:`3.2 < M < 4.1~GeV`
123 
124  @param persistent whether RootOutput module should save the created ParticleLists (default True)
125  @param path modules are added to this path
126  """
127  ma.reconstructDecay('psi(2S):mumu -> mu-:all mu+:all', '3.2 < M < 4.1', 1, persistent, path=path)
128  ma.reconstructDecay('psi(2S):ee -> e-:all e+:all', '3.2 < M < 4.1', 2, persistent, path=path)
129  ma.copyLists('psi(2S):ll', ['psi(2S):mumu', 'psi(2S):ee'], persistent, path)
130  return 'psi(2S):ll'
131 
132 
133 def loadStdLoosePsi2s2mumu(persistent=True, path=None):
134  """
135  Load the 'psi(2S):mumuLoose' list from 'mu-:loose mu+:loose', with :math:`3.2 < M < 4.1~GeV`
136 
137  @param persistent whether RootOutput module should save the created ParticleLists (default True)
138  @param path modules are added to this path
139  """
140  ma.reconstructDecay('psi(2S):mumuLoose -> mu-:loose mu+:loose', '3.2 < M < 4.1', 2, persistent, path)
141  return 'psi(2S):mumuLoose'
142 
143 
144 def loadStdLoosePsi2s2ee(persistent=True, path=None):
145  """
146  Load the 'psi(2S):eeLoose' list from 'e-:loose e+:loose', with :math:`3.2 < M < 4.1~GeV`
147 
148  @param persistent whether RootOutput module should save the created ParticleLists (default True)
149  @param path modules are added to this path
150  """
151  ma.reconstructDecay('psi(2S):eeLoose -> e-:loose e+:loose', '3.2 < M < 4.1', 2, persistent, path)
152  return 'psi(2S):eeLoose'