9 个不稳定版本 (3 个破坏性)
0.4.1 | 2023 年 9 月 20 日 |
---|---|
0.4.0 | 2023 年 9 月 20 日 |
0.3.2 | 2023 年 7 月 28 日 |
0.2.1 | 2023 年 6 月 19 日 |
0.1.0 | 2021 年 2 月 12 日 |
在 科学 中排名第 357
每月 38 次下载
在 cres 中使用
56KB
1.5K SLoC
jetty
实现常见的包容性喷射聚类算法。
当前版本实现了以下距离度量
对于更多喷射算法的最新实现,请参阅出色的 fastjet 库。
示例
使用半径为 0.4 的 anti-kt 算法将多个部分子聚类成喷射
use jetty::{anti_kt_f, pseudojet_f, Cluster, ClusterHistory, ClusterStep};
let partons = vec![
pseudojet_f(0.2626773221934335, -0.08809521946454194, -0.1141608706693822, -0.2195584284654444),
pseudojet_f(2.21902459329915, -0.7529973704809976, -0.9658189214109036, -1.850475321845671)
];
// get all jets
let all_jets = partons.clone().cluster(anti_kt_f(0.4));
assert_eq!(all_jets.len(), 1);
// get all jets with at least 40 GeV
let jets_40gev = partons.clone().cluster_if(
anti_kt_f(0.4),
|jet| jet.pt2() > 40. * 40.
);
assert_eq!(jets_40gev.len(), 0);
// go through the cluster history step-by-step
let history = ClusterHistory::new(partons, anti_kt_f(0.4));
for step in history {
match step {
ClusterStep::Jet(j) => println!("Found a jet: {j:?}"),
ClusterStep::Combine([_j1, _j2]) => println!("Combined two pseudojets"),
}
}
许可:GPL-3.0-or-later
依赖项
~1.5MB
~29K SLoC