12 """ Skim list building functions for the low multiplicity physics working group """
14 import modularAnalysis
as ma
15 from skim
import BaseSkim, fancy_skim_header
16 from stdCharged
import stdE, stdPi
17 from stdPhotons
import stdPhotons
18 from variables
import variables
as vm
20 _VALIDATION_SAMPLE =
"mdst14.root"
26 **Physics channel**: :math:`e^{+}e^{-} \\to e^{+}e^{-}` and :math:`e^{+}e^{-} \\to \\mu^{+}\\mu^{-}`
28 __authors__ =
"Xing-Yu Zhou"
29 __description__ =
"Skim list for two track lepton (e+e- to e+e- and e+e- to mu+mu-) events for luminosity measurements."
30 __contact__ =
"Xing-Yu Zhou <xing-yu.zhou@desy.de>"
31 __category__ =
"physics, low multiplicity"
33 TestSampleProcess =
"mumu"
34 ApplyHLTHadronCut =
False
39 prescale (int): the prescale for this skim
40 **kwargs: Passed to the constructor of `BaseSkim`
48 skim_label =
'TwoTrackLeptonsForLuminosity'
50 skim_label_2 =
'TwoTrackLeptonsForLuminosity2'
52 skim_label_1 =
'TwoTrackLeptonsForLuminosity1'
55 IP_cut =
'[abs(dz) < 5.0] and [abs(dr) < 2.0]'
57 p_cut =
'[useCMSFrame(p) > 2.0]'
59 theta_cut =
'[0.561 < theta < 2.247]'
61 single_track_cut = IP_cut +
' and ' + p_cut +
' and ' + theta_cut
62 single_cluster_cut = p_cut +
' and ' + theta_cut
65 nTracks_cut_2 =
'[nCleanedTracks(' + single_track_cut +
') == 2 or nCleanedTracks(' + single_track_cut +
') == 3]'
67 nTracks_cut_1 =
'[nCleanedTracks(' + single_track_cut +
') == 1]'
72 '[abs(formula(daughter(0, useCMSFrame(theta)) + daughter(1, useCMSFrame(theta)) - 3.1415927)) < 0.17453293]'
76 prescale = str(float(1.0 / self.
prescaleprescale))
77 prescale_logic =
'eventRandom <= ' + prescale
79 two_track_cut = nTracks_cut_2 +
' and ' + deltaTheta_cut +
' and ' + prescale_logic
80 track_cluster_cut = nTracks_cut_1 +
' and ' + deltaTheta_cut +
' and ' + prescale_logic
83 ma.fillParticleList(
'e+:' + skim_label_2, single_track_cut +
' and ' + nTracks_cut_2, path=path)
84 ma.reconstructDecay(
'vpho:' + skim_label_2 +
' -> e+:' + skim_label_2 +
' e-:' + skim_label_2, two_track_cut, path=path)
87 ma.fillParticleList(
'e+:' + skim_label_1, single_track_cut +
' and ' + nTracks_cut_1, path=path)
88 ma.fillParticleList(
'gamma:' + skim_label_1, single_cluster_cut +
' and ' + nTracks_cut_1, path=path,
89 loadPhotonBeamBackgroundMVA=
False)
98 allowChargeViolation=
True,
101 ma.copyLists(
'vpho:' + skim_label, [
'vpho:' + skim_label_2,
'vpho:' + skim_label_1], path=path)
102 return [
'vpho:' + skim_label]
108 **Physics channel**: :math:`e^{+}e^{-} \\to \\gamma h_{1}^{+}h_{2}^{-} X`
111 This skim includes the golden mode :math:`e^{+}e^{-} \\to \\gamma \\pi^{+}\\pi^{-}`
114 The :math:`h_{1}^{+}` and :math:`h_{2}^{+}` here mean a positive particle
115 and a negative particle that could be either conjugate or non-conjugate. The
116 :math:`X` means arbitrary final state particles.
120 1. :math:`e^{+}e^{-} \\to \\gamma \\pi^{+} \\pi^{-} X`,
121 2. :math:`e^{+}e^{-} \\to \\gamma K^{+} K^{-} X`,
122 3. :math:`e^{+}e^{-} \\to \\gamma K^{+} \\pi^{-} X`,
123 4. :math:`e^{+}e^{-} \\to \\gamma p \\overline{p} X`,
124 5. :math:`e^{+}e^{-} \\to \\gamma p \\pi^{-} X`,
125 6. :math:`e^{+}e^{-} \\to \\gamma p K^{-} X`,
127 __authors__ = [
"Xing-Yu Zhou",
"Guanda Gong"]
128 __description__ =
"Skim list for low mass events with at least two tracks and one hard photon" \
130 __contact__ =
"Xing-Yu Zhou <xing-yu.zhou@desy.de>"
131 __category__ =
"physics, low multiplicity"
133 TestSampleProcess =
"mumu"
134 validation_sample = _VALIDATION_SAMPLE
135 ApplyHLTHadronCut =
False
138 label =
"LowMassTwoTrack"
143 ISRECut =
"useCMSFrame(E) > 2"
145 hhMassWindow =
"daughterInvM(1,2) < 3.5"
149 nTracksCut = f
"nCleanedTracks({pCut}) >= 2"
151 nHardISRPhotonCut = f
"nCleanedECLClusters({ISRECut}) > 0"
154 path = self.
skim_event_cutsskim_event_cuts(f
"{nTracksCut} and {nHardISRPhotonCut}", path=path)
157 ma.fillParticleList(f
"pi+:{label}", pCut, path=path)
158 ma.fillParticleList(f
"K+:{label}", pCut, path=path)
159 ma.fillParticleList(f
"p+:{label}", pCut, path=path)
160 ma.fillParticleList(f
"gamma:{label}_ISR", ISRECut, path=path, loadPhotonBeamBackgroundMVA=
False)
164 (f
"vpho:{label}_pipi", f
" -> gamma:{label}_ISR pi+:{label} pi-:{label}", hhMassWindow),
165 (f
"vpho:{label}_KK", f
" -> gamma:{label}_ISR K+:{label} K-:{label}", hhMassWindow),
167 (f
"vpho:{label}_Kpi", f
" -> gamma:{label}_ISR K+:{label} pi-:{label}", hhMassWindow),
168 (f
"vpho:{label}_pp", f
" -> gamma:{label}_ISR p+:{label} anti-p-:{label}", hhMassWindow),
172 (f
"vpho:{label}_ppi", f
" -> gamma:{label}_ISR p+:{label} pi-:{label}", hhMassWindow),
174 (f
"vpho:{label}_pK", f
" -> gamma:{label}_ISR p+:{label} K-:{label}", hhMassWindow),
178 for dmID, (mode, decayString, cut)
in enumerate(ModesAndCuts):
179 ma.reconstructDecay(mode + decayString, cut, dmID=dmID, path=path)
180 ParticleLists.append(mode)
184 vm.addAlias(
'pip_p_cms',
'daughter(0, useCMSFrame(p))')
185 vm.addAlias(
'pim_p_cms',
'daughter(1, useCMSFrame(p))')
186 vm.addAlias(
'gamma_E_cms',
'daughter(2, useCMSFrame(E))')
187 vm.addAlias(
'pip_theta_lab',
'formula(daughter(0, theta)*180/3.1415927)')
188 vm.addAlias(
'pim_theta_lab',
'formula(daughter(1, theta)*180/3.1415927)')
189 vm.addAlias(
'gamma_theta_lab',
'formula(daughter(2, theta)*180/3.1415927)')
190 vm.addAlias(
'Mpipi',
'daughterInvM(0,1)')
195 (
'pip_p_cms', 60, 0, 6),
196 (
'pim_p_cms', 60, 0, 6),
197 (
'gamma_E_cms', 60, 0, 6),
198 (
'pip_theta_lab', 90, 0, 180),
199 (
'pim_theta_lab', 90, 0, 180),
200 (
'gamma_theta_lab', 90, 0, 180),
201 (
'Mpipi', 80, 0., 4.),
206 ma.variablesToHistogram(
207 'vpho:LowMassTwoTrack',
209 filename=f
'{self}_Validation.root',
216 **Physics channel**: :math:`e^{+}e^{-} \\to e^{\\pm} (e^{\\mp}) \\pi^{0}/\\eta/\\eta^{\\prime}`
220 1. :math:`\\pi^{0}\\to \\gamma \\gamma`,
221 2. :math:`\\eta \\to \\gamma\\gamma`,
222 3. :math:`\\eta \\to \\pi^{+}\\pi^{-}\\pi^{0}`,
223 4. :math:`\\eta \\to \\pi^{+}\\pi^{-}\\gamma`,
224 5. :math:`\\eta^{\\prime} \\to \\pi^{+}\\pi^{-}\\eta(\\to \\gamma\\gamma)`,
225 6. :math:`\\eta^{\\prime} \\to \\pi^{+}\\pi^{-}\\gamma`
228 __authors__ = [
"Hisaki Hayashii"]
229 __contact__ =
"Hisaki Hayashii <hisaki.hayashii@desy.de>"
230 __description__ =
"A skim script to select events with one high-energy electron and one or more pi0/eta/eta mesons."
231 __category__ =
"physics, low multiplicity"
232 ApplyHLTHadronCut =
False
235 stdE(
"all", path=path)
236 stdPi(
"all", path=path)
237 stdPhotons(
"all", path=path, loadPhotonBeamBackgroundMVA=
False)
241 label =
"PseudoScalarSkim"
242 TrackCuts =
"abs(dz) < 2.0 and dr < 0.5 and pt > 0.15"
244 ma.fillParticleList(f
"e+:{label}", f
"{TrackCuts} and E > 1.5 and clusterEoP > 0.7", path=path)
245 ma.fillParticleList(f
"pi+:{label}", f
"{TrackCuts} and [isInList(e+:{label})==0]", path=path)
246 ma.fillParticleList(f
"gamma:{label}",
"clusterE > 0.1", path=path, loadPhotonBeamBackgroundMVA=
False)
248 pi0MassWindow =
"0.06 < InvM < 0.18"
249 etaMassWindow =
"0.50 < InvM < 0.60"
250 etapMassWindow =
"0.91 < InvM < 1.10"
252 (f
"pi0:{label}_loose -> gamma:{label} gamma:{label}", pi0MassWindow),
253 (f
"eta:gg -> gamma:{label} gamma:{label}", etaMassWindow),
254 (f
"eta:pipipi0 -> pi+:{label} pi-:{label} pi0:{label}_loose", etaMassWindow),
255 (f
"eta:pipig -> pi+:{label} pi-:{label} gamma:{label}", etaMassWindow),
256 (f
"eta':pipieta_gg -> pi+:{label} pi-:{label} eta:gg", etapMassWindow),
257 (f
"eta':pipig -> pi+:{label} pi-:{label} gamma:{label}", etapMassWindow),
259 for dmID, (mode, cut)
in enumerate(ModesAndCuts):
260 ma.reconstructDecay(mode, cut, dmID=dmID, path=path)
262 ma.cutAndCopyList(f
"pi0:{label}_highE", f
"pi0:{label}_loose",
"E > 0.5", path=path)
265 f
"pi0:{label}_highE",
272 ModeSum =
" + ".join(f
"nParticlesInList({particle})" for particle
in particles)
273 presel = f
"nParticlesInList(e+:{label}) == 1 and nParticlesInList(pi+:{label}) <= 2"
274 EventCuts = f
"{presel} and formula({ModeSum}) >= 1"
282 return [f
"e+:{label}"]
def build_lists(self, path)
def validation_histograms(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def __init__(self, prescale=1, **kwargs)
def build_lists(self, path)
def skim_event_cuts(self, cut, *path)