6#include "TrigScint/Firmware/clusterproducer.h"
7#include "TrigScint/Firmware/objdef.h"
9std::array<Cluster, NCLUS> clusterproducerSw(
Hit inHit[NHITS]) {
15 std::array<Cluster, NCLUS> out_clus;
17 for (
int i = 0; i < NCLUS; ++i) {
18 clearClus(out_clus[i]);
22 for (
int i = 0; i < NCHAN; ++i) {
26 for (
int j = 0; j < NHITS; ++j) {
27 if (inHit[j].b_id_ > -1) {
28 map_l1[inHit[j].b_id_] = j;
32 for (
int k = 0; k < NCLUS; ++k) {
33 bool do_next_cluster =
true;
34 if ((map_l1[2 * k] > -1)) {
35 if (inHit[map_l1[2 * k]].amp_ > seedthr) {
36 clearClus(out_clus[k]);
37 out_clus[k].seed_.m_id_ = inHit[map_l1[2 * k]].m_id_;
38 out_clus[k].seed_.b_id_ = inHit[map_l1[2 * k]].b_id_;
39 out_clus[k].seed_.amp_ = inHit[map_l1[2 * k]].amp_;
40 out_clus[k].seed_.time_ = inHit[map_l1[2 * k]].time_;
41 if (map_l1[2 * k + 1] > -1) {
42 if (inHit[map_l1[2 * k + 1]].amp_ > clusthr) {
43 out_clus[k].sec_.m_id_ = inHit[map_l1[2 * k + 1]].m_id_;
44 out_clus[k].sec_.b_id_ = inHit[map_l1[2 * k + 1]].b_id_;
45 out_clus[k].sec_.amp_ = inHit[map_l1[2 * k + 1]].amp_;
46 out_clus[k].sec_.time_ = inHit[map_l1[2 * k + 1]].time_;
47 do_next_cluster =
false;
49 clearHit(inHit[map_l1[2 * k + 1]]);
54 if ((map_l1[2 * k + 1] > -1) and (do_next_cluster)) {
55 if (inHit[map_l1[2 * k + 1]].amp_ > seedthr) {
56 clearClus(out_clus[k]);
57 out_clus[k].seed_.m_id_ = inHit[map_l1[2 * k + 1]].m_id_;
58 out_clus[k].seed_.b_id_ = inHit[map_l1[2 * k + 1]].b_id_;
59 out_clus[k].seed_.amp_ = inHit[map_l1[2 * k + 1]].amp_;
60 out_clus[k].seed_.time_ = inHit[map_l1[2 * k + 1]].time_;
62 if (map_l1[2 * k + 2] > -1) {
63 if (inHit[map_l1[2 * k + 2]].amp_ > clusthr) {
64 out_clus[k].sec_.m_id_ = inHit[map_l1[2 * k + 2]].m_id_;
65 out_clus[k].sec_.b_id_ = inHit[map_l1[2 * k + 2]].b_id_;
66 out_clus[k].sec_.amp_ = inHit[map_l1[2 * k + 2]].amp_;
67 out_clus[k].sec_.time_ = inHit[map_l1[2 * k + 2]].time_;
69 clearHit(inHit[map_l1[2 * k + 2]]);
Sign Arbitrary Precision Type.