Skip to content

Commit 60ab50e

Browse files
authoredApr 22, 2020
groot/bench-opendata: fix task-8
1 parent 34f4405 commit 60ab50e

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed
 

‎groot/bench-opendata/08-basic.go

+18-9
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,22 @@ func basic8(fname string) error {
9292
}
9393

9494
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)
9797
)
9898

9999
if imu1 < 0 && iele1 < 0 {
100100
continue
101101
}
102102

103+
if dmu < dele {
104+
iele1 = -1
105+
iele2 = -1
106+
} else {
107+
imu1 = -1
108+
imu2 = -1
109+
}
110+
103111
var lepPt float32
104112
if imu1 >= 0 {
105113
for i, pt := range muPt {
@@ -163,22 +171,22 @@ func basic8(fname string) error {
163171
return nil
164172
}
165173

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) {
167175
const (
168176
zMass = 91.2 // or take it from go-hep.org/x/hep/heppdt.PDT[id].Particle.Mass
169177
)
170178

171179
cand := struct {
172-
m float64
180+
d float64
173181
i1, i2 int
174182
}{
175-
m: math.MaxFloat64,
183+
d: math.MaxFloat64,
176184
i1: -1,
177185
i2: -1,
178186
}
179187

180188
if len(pt) < 2 {
181-
return cand.i1, cand.i2
189+
return cand.i1, cand.i2, cand.d
182190
}
183191

184192
makePtEtaPhiM := func(i int) fmom.PtEtaPhiM {
@@ -195,12 +203,13 @@ func findLeptonPair(pt, eta, phi, mass []float32, charge []int32) (int, int) {
195203
p1 := makePtEtaPhiM(i1)
196204
p2 := makePtEtaPhiM(i2)
197205
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
200209
cand.i1 = i1
201210
cand.i2 = i2
202211
}
203212
}
204213

205-
return cand.i1, cand.i2
214+
return cand.i1, cand.i2, cand.d
206215
}

0 commit comments

Comments
 (0)
Please sign in to comment.