36 lines
863 B
SQL
36 lines
863 B
SQL
WITH temp AS (
|
|
WITH m as (select unnest(Muon) as m from hep_singleMu )
|
|
SELECT rowid, MET.pt, COUNT(*)
|
|
FROM hep_singleMu
|
|
CROSS JOIN (
|
|
SELECT row_number() OVER () idx1, m.charge as c1, m.eta as e1, m.phi as ph1, m.pt as p1
|
|
FROM m
|
|
) AS _m1
|
|
CROSS JOIN (
|
|
SELECT row_number() OVER () idx2, m.charge as c2, m.eta as e2, m.phi as ph2, m.pt as p2
|
|
FROM m
|
|
) AS _m2
|
|
WHERE
|
|
len(Muon) > 1 AND
|
|
idx1 < idx2 AND
|
|
c1 <> c2 AND
|
|
SQRT(2 * p1 * p2 * (COSH(e1 - e2) - COS(ph1 - ph2))) BETWEEN 60 AND 120
|
|
GROUP BY rowid, MET.pt
|
|
HAVING COUNT(*) > 0
|
|
)
|
|
SELECT
|
|
FLOOR((
|
|
CASE
|
|
WHEN pt < 0 THEN -1
|
|
WHEN pt > 2000 THEN 2001
|
|
ELSE pt
|
|
END) / 20) * 20 + 10 AS x,
|
|
COUNT(*) AS y
|
|
FROM temp
|
|
GROUP BY FLOOR((
|
|
CASE
|
|
WHEN pt < 0 THEN -1
|
|
WHEN pt > 2000 THEN 2001
|
|
ELSE pt
|
|
END) / 20) * 20 + 10
|
|
ORDER BY x; |