4 """ Skim list building functions for the low multiplicity physics working group """
12 import modularAnalysis
as ma
13 from skimExpertFunctions
import BaseSkim, fancy_skim_header, get_test_file
14 from stdCharged
import stdE, stdPi
15 from stdPhotons
import stdPhotons
21 **Physics channel**: :math:`e^{+}e^{-} \\to e^{+}e^{-}` and :math:`e^{+}e^{-} \\to \\mu^{+}\\mu^{-}`
23 __authors__ =
"Xing-Yu Zhou"
24 __description__ =
"Skim list for two track lepton (e+e- to e+e- and e+e- to mu+mu-) events for luminosity measurements."
25 __contact__ =
"Xing-Yu Zhou <xing-yu.zhou@desy.de>"
26 __category__ =
"physics, low multiplicity"
28 TestFiles = [get_test_file(
"MC13_mumuBGx1")]
33 prescale (int): the prescale for this skim
34 **kwargs: Passed to the constructor of `BaseSkim`
42 skim_label =
'TwoTrackLeptonsForLuminosity'
44 skim_label_2 =
'TwoTrackLeptonsForLuminosity2'
46 skim_label_1 =
'TwoTrackLeptonsForLuminosity1'
49 IP_cut =
'[abs(dz) < 5.0] and [abs(dr) < 2.0]'
51 p_cut =
'[useCMSFrame(p) > 2.0]'
53 theta_cut =
'[0.561 < theta < 2.247]'
55 single_track_cut = IP_cut +
' and ' + p_cut +
' and ' + theta_cut
56 single_cluster_cut = p_cut +
' and ' + theta_cut
59 nTracks_cut_2 =
'[nCleanedTracks(' + single_track_cut +
') == 2 or nCleanedTracks(' + single_track_cut +
') == 3]'
61 nTracks_cut_1 =
'[nCleanedTracks(' + single_track_cut +
') == 1]'
66 '[abs(formula(daughter(0, useCMSFrame(theta)) + daughter(1, useCMSFrame(theta)) - 3.1415927)) < 0.17453293]'
70 prescale = str(float(1.0 / self.
prescale))
71 prescale_logic =
'eventRandom <= ' + prescale
73 two_track_cut = nTracks_cut_2 +
' and ' + deltaTheta_cut +
' and ' + prescale_logic
74 track_cluster_cut = nTracks_cut_1 +
' and ' + deltaTheta_cut +
' and ' + prescale_logic
77 ma.fillParticleList(
'e+:' + skim_label_2, single_track_cut +
' and ' + nTracks_cut_2, path=path)
78 ma.reconstructDecay(
'vpho:' + skim_label_2 +
' -> e+:' + skim_label_2 +
' e-:' + skim_label_2, two_track_cut, path=path)
81 ma.fillParticleList(
'e+:' + skim_label_1, single_track_cut +
' and ' + nTracks_cut_1, path=path)
82 ma.fillParticleList(
'gamma:' + skim_label_1, single_cluster_cut +
' and ' + nTracks_cut_1, path=path)
91 allowChargeViolation=
True,
94 ma.copyLists(
'vpho:' + skim_label, [
'vpho:' + skim_label_2,
'vpho:' + skim_label_1], path=path)
102 **Physics channel**: :math:`e^{+}e^{-} \\to \\gamma h^{+}h^{-}`
104 **Physics channel**: :math:`e^{+}e^{-} \\to \\gamma h_{1}^{+}h_{2}^{-} X`
107 The :math:`h_{1}^{+}` and :math:`h_{2}^{+}` here mean a positive particle
108 and a negative particle that could be either conjugate or non-conjugate. The
109 :math:`X` means arbitrary final state particles.
113 1. :math:`e^{+}e^{-} \\to \\gamma \\pi^{+} \\pi^{-} X`,
114 2. :math:`e^{+}e^{-} \\to \\gamma K^{+} K^{-} X`,
115 3. :math:`e^{+}e^{-} \\to \\gamma K^{+} \\pi^{-} X`,
116 4. :math:`e^{+}e^{-} \\to \\gamma p \\overline{p} X`,
117 5. :math:`e^{+}e^{-} \\to \\gamma p \\pi^{-} X`,
118 6. :math:`e^{+}e^{-} \\to \\gamma p K^{-} X`,
119 >>>>>>> d98a3afd8c... update LowMassTwoTrack skim to include more channels
121 __authors__ =
"Xing-Yu Zhou"
122 __description__ =
"Skim list for low mass events with at least two tracks and one hard photon" \
124 __contact__ =
"Xing-Yu Zhou <xing-yu.zhou@desy.de>"
125 __category__ =
"physics, low multiplicity"
127 TestFiles = [get_test_file(
"MC13_mumuBGx1"), get_test_file(
"MC13_uubarBGx1")]
130 label =
"LowMassTwoTrack"
135 ISRECut =
"useCMSFrame(E) > 2"
137 hhMassWindow =
"daughterInvM(1,2) < 3.5"
141 nTracksCut = f
"nCleanedTracks({pCut}) >= 2"
143 nHardISRPhotonCut = f
"nCleanedECLClusters({ISRECut}) > 0"
146 ma.applyEventCuts(f
"{nTracksCut} and {nHardISRPhotonCut}", path=path)
149 ma.fillParticleList(f
"pi+:{label}", pCut, path=path)
150 ma.fillParticleList(f
"K+:{label}", pCut, path=path)
151 ma.fillParticleList(f
"p+:{label}", pCut, path=path)
152 ma.fillParticleList(f
"gamma:{label}_ISR", ISRECut, path=path)
156 (f
"vpho:{label}_pipi", f
" -> gamma:{label}_ISR pi+:{label} pi-:{label}", hhMassWindow),
157 (f
"vpho:{label}_KK", f
" -> gamma:{label}_ISR K+:{label} K-:{label}", hhMassWindow),
159 (f
"vpho:{label}_Kpi", f
" -> gamma:{label}_ISR K+:{label} pi-:{label}", hhMassWindow),
160 (f
"vpho:{label}_pp", f
" -> gamma:{label}_ISR p+:{label} anti-p-:{label}", hhMassWindow),
164 (f
"vpho:{label}_ppi", f
" -> gamma:{label}_ISR p+:{label} pi-:{label}", hhMassWindow),
166 (f
"vpho:{label}_pK", f
" -> gamma:{label}_ISR p+:{label} K-:{label}", hhMassWindow),
170 for dmID, (mode, decayString, cut)
in enumerate(ModesAndCuts):
171 ma.reconstructDecay(mode + decayString, cut, dmID=dmID, path=path)
178 **Physics channel**: :math:`e^{+}e^{-} \\to e^{\\pm} (e^{\\mp}) \\pi^{0}/\\eta/\\eta^{\\prime}`
182 1. :math:`\\pi^{0}\\to \\gamma \\gamma`,
183 2. :math:`\\eta \\to \\gamma\\gamma`,
184 3. :math:`\\eta \\to \\pi^{+}\\pi^{-}\\pi^{0}`,
185 4. :math:`\\eta \\to \\pi^{+}\\pi^{-}\\gamma`,
186 5. :math:`\\eta^{\\prime} \\to \\pi^{+}\\pi^{-}\\eta(\\to \\gamma\\gamma)`,
187 6. :math:`\\eta^{\\prime} \\to \\pi^{+}\\pi^{-}\\gamma`
190 __authors__ = [
"Hisaki Hayashii"]
191 __contact__ =
"Hisaki Hayashii <hisaki.hayashii@desy.de>"
192 __description__ =
"A skim script to select events with one high-energy electron and one or more pi0/eta/eta mesons."
193 __category__ =
"physics, low multiplicity"
196 stdE(
"all", path=path)
197 stdPi(
"all", path=path)
202 label =
"PseudoScalarSkim"
203 TrackCuts =
"abs(dz) < 2.0 and dr < 0.5 and pt > 0.15"
205 ma.fillParticleList(f
"e+:{label}", f
"{TrackCuts} and E > 1.5 and electronID > 0.7", path=path)
206 ma.fillParticleList(f
"pi+:{label}", f
"{TrackCuts} and electronID < 0.7", path=path)
207 ma.fillParticleList(f
"gamma:{label}",
"clusterE > 0.1", path=path)
209 pi0MassWindow =
"0.06 < InvM < 0.18"
210 etaMassWindow =
"0.50 < InvM < 0.60"
211 etapMassWindow =
"0.91 < InvM < 1.10"
213 (f
"pi0:{label}_loose -> gamma:{label} gamma:{label}", pi0MassWindow),
214 (f
"eta:gg -> gamma:{label} gamma:{label}", etaMassWindow),
215 (f
"eta:pipipi0 -> pi+:{label} pi-:{label} pi0:{label}_loose", etaMassWindow),
216 (f
"eta:pipig -> pi+:{label} pi-:{label} gamma:{label}", etaMassWindow),
217 (f
"eta':pipieta_gg -> pi+:{label} pi-:{label} eta:gg", etapMassWindow),
218 (f
"eta':pipig -> pi+:{label} pi-:{label} gamma:{label}", etapMassWindow),
220 for dmID, (mode, cut)
in enumerate(ModesAndCuts):
221 ma.reconstructDecay(mode, cut, dmID=dmID, path=path)
223 ma.cutAndCopyList(f
"pi0:{label}_highE", f
"pi0:{label}_loose",
"E > 0.5", path=path)
226 f
"pi0:{label}_highE",
233 ModeSum =
" + ".join(f
"nParticlesInList({particle})" for particle
in particles)
234 presel = f
"nParticlesInList(e+:{label}) == 1 and nParticlesInList(pi+:{label}) <= 2"
235 EventCuts = f
"{presel} and formula({ModeSum}) >= 1"