@@ -92,14 +92,22 @@ func basic8(fname string) error {
92
92
}
93
93
94
94
var (
95
- imu1 , imu2 = findLeptonPair (muPt , muEta , muPhi , muMass , muCharge )
96
- iele1 , iele2 = findLeptonPair (elePt , eleEta , elePhi , eleMass , eleCharge )
95
+ imu1 , imu2 , dmu = findLeptonPair (muPt , muEta , muPhi , muMass , muCharge )
96
+ iele1 , iele2 , dele = findLeptonPair (elePt , eleEta , elePhi , eleMass , eleCharge )
97
97
)
98
98
99
99
if imu1 < 0 && iele1 < 0 {
100
100
continue
101
101
}
102
102
103
+ if dmu < dele {
104
+ iele1 = - 1
105
+ iele2 = - 1
106
+ } else {
107
+ imu1 = - 1
108
+ imu2 = - 1
109
+ }
110
+
103
111
var lepPt float32
104
112
if imu1 >= 0 {
105
113
for i , pt := range muPt {
@@ -163,22 +171,22 @@ func basic8(fname string) error {
163
171
return nil
164
172
}
165
173
166
- func findLeptonPair (pt , eta , phi , mass []float32 , charge []int32 ) (int , int ) {
174
+ func findLeptonPair (pt , eta , phi , mass []float32 , charge []int32 ) (int , int , float64 ) {
167
175
const (
168
176
zMass = 91.2 // or take it from go-hep.org/x/hep/heppdt.PDT[id].Particle.Mass
169
177
)
170
178
171
179
cand := struct {
172
- m float64
180
+ d float64
173
181
i1 , i2 int
174
182
}{
175
- m : math .MaxFloat64 ,
183
+ d : math .MaxFloat64 ,
176
184
i1 : - 1 ,
177
185
i2 : - 1 ,
178
186
}
179
187
180
188
if len (pt ) < 2 {
181
- return cand .i1 , cand .i2
189
+ return cand .i1 , cand .i2 , cand . d
182
190
}
183
191
184
192
makePtEtaPhiM := func (i int ) fmom.PtEtaPhiM {
@@ -195,12 +203,13 @@ func findLeptonPair(pt, eta, phi, mass []float32, charge []int32) (int, int) {
195
203
p1 := makePtEtaPhiM (i1 )
196
204
p2 := makePtEtaPhiM (i2 )
197
205
mll := fmom .InvMass (& p1 , & p2 )
198
- if math .Abs (mll - zMass ) < math .Abs (cand .m - zMass ) {
199
- cand .m = mll
206
+ d := math .Abs (mll - zMass )
207
+ if d < cand .d {
208
+ cand .d = d
200
209
cand .i1 = i1
201
210
cand .i2 = i2
202
211
}
203
212
}
204
213
205
- return cand .i1 , cand .i2
214
+ return cand .i1 , cand .i2 , cand . d
206
215
}
0 commit comments