4#include "TrigScint/Firmware/clusterproducer.h"
5#include "TrigScint/Firmware/objdef.h"
7std::array<Cluster, NCLUS> clusterproducerSw(
Hit inHit[NHITS]) {
13 std::array<Cluster, NCLUS> out_clus;
15 for (
int i = 0; i < NCLUS; ++i) {
16 clearClus(out_clus[i]);
20 for (
int i = 0; i < NCHAN; ++i) {
24 for (
int j = 0; j < NHITS; ++j) {
25 if (inHit[j].b_id_ > -1) {
26 map_l1[inHit[j].b_id_] = j;
30 for (
int k = 0; k < NCLUS; ++k) {
31 bool do_next_cluster =
true;
32 if ((map_l1[2 * k] > -1)) {
33 if (inHit[map_l1[2 * k]].amp_ > seedthr) {
34 clearClus(out_clus[k]);
35 out_clus[k].seed_.m_id_ = inHit[map_l1[2 * k]].m_id_;
36 out_clus[k].seed_.b_id_ = inHit[map_l1[2 * k]].b_id_;
37 out_clus[k].seed_.amp_ = inHit[map_l1[2 * k]].amp_;
38 out_clus[k].seed_.time_ = inHit[map_l1[2 * k]].time_;
39 if (map_l1[2 * k + 1] > -1) {
40 if (inHit[map_l1[2 * k + 1]].amp_ > clusthr) {
41 out_clus[k].sec_.m_id_ = inHit[map_l1[2 * k + 1]].m_id_;
42 out_clus[k].sec_.b_id_ = inHit[map_l1[2 * k + 1]].b_id_;
43 out_clus[k].sec_.amp_ = inHit[map_l1[2 * k + 1]].amp_;
44 out_clus[k].sec_.time_ = inHit[map_l1[2 * k + 1]].time_;
45 do_next_cluster =
false;
47 clearHit(inHit[map_l1[2 * k + 1]]);
52 if ((map_l1[2 * k + 1] > -1) and (do_next_cluster)) {
53 if (inHit[map_l1[2 * k + 1]].amp_ > seedthr) {
54 clearClus(out_clus[k]);
55 out_clus[k].seed_.m_id_ = inHit[map_l1[2 * k + 1]].m_id_;
56 out_clus[k].seed_.b_id_ = inHit[map_l1[2 * k + 1]].b_id_;
57 out_clus[k].seed_.amp_ = inHit[map_l1[2 * k + 1]].amp_;
58 out_clus[k].seed_.time_ = inHit[map_l1[2 * k + 1]].time_;
60 if (map_l1[2 * k + 2] > -1) {
61 if (inHit[map_l1[2 * k + 2]].amp_ > clusthr) {
62 out_clus[k].sec_.m_id_ = inHit[map_l1[2 * k + 2]].m_id_;
63 out_clus[k].sec_.b_id_ = inHit[map_l1[2 * k + 2]].b_id_;
64 out_clus[k].sec_.amp_ = inHit[map_l1[2 * k + 2]].amp_;
65 out_clus[k].sec_.time_ = inHit[map_l1[2 * k + 2]].time_;
67 clearHit(inHit[map_l1[2 * k + 2]]);
Sign Arbitrary Precision Type.