6#include "TrigScint/Firmware/clusterproducer.h"
7#include "TrigScint/Firmware/objdef.h"
9std::array<Cluster, NCLUS> clusterproducer_sw(
Hit inHit[NHITS]) {
15 std::array<Cluster, NCLUS> outClus;
17 for (
int i = 0; i < NCLUS; ++i) {
18 clearClus(outClus[i]);
22 for (
int i = 0; i < NCHAN; ++i) {
26 for (
int j = 0; j < NHITS; ++j) {
27 if (inHit[j].bID > -1) {
28 mapL1[inHit[j].bID] = j;
32 for (
int k = 0; k < NCLUS; ++k) {
33 bool doNextCluster =
true;
34 if ((mapL1[2 * k] > -1)) {
35 if (inHit[mapL1[2 * k]].Amp > SEEDTHR) {
36 clearClus(outClus[k]);
37 outClus[k].Seed.mID = inHit[mapL1[2 * k]].mID;
38 outClus[k].Seed.bID = inHit[mapL1[2 * k]].bID;
39 outClus[k].Seed.Amp = inHit[mapL1[2 * k]].Amp;
40 outClus[k].Seed.Time = inHit[mapL1[2 * k]].Time;
41 if (mapL1[2 * k + 1] > -1) {
42 if (inHit[mapL1[2 * k + 1]].Amp > CLUSTHR) {
43 outClus[k].Sec.mID = inHit[mapL1[2 * k + 1]].mID;
44 outClus[k].Sec.bID = inHit[mapL1[2 * k + 1]].bID;
45 outClus[k].Sec.Amp = inHit[mapL1[2 * k + 1]].Amp;
46 outClus[k].Sec.Time = inHit[mapL1[2 * k + 1]].Time;
47 doNextCluster =
false;
49 clearHit(inHit[mapL1[2 * k + 1]]);
54 if ((mapL1[2 * k + 1] > -1) and (doNextCluster)) {
55 if (inHit[mapL1[2 * k + 1]].Amp > SEEDTHR) {
56 clearClus(outClus[k]);
57 outClus[k].Seed.mID = inHit[mapL1[2 * k + 1]].mID;
58 outClus[k].Seed.bID = inHit[mapL1[2 * k + 1]].bID;
59 outClus[k].Seed.Amp = inHit[mapL1[2 * k + 1]].Amp;
60 outClus[k].Seed.Time = inHit[mapL1[2 * k + 1]].Time;
62 if (mapL1[2 * k + 2] > -1) {
63 if (inHit[mapL1[2 * k + 2]].Amp > CLUSTHR) {
64 outClus[k].Sec.mID = inHit[mapL1[2 * k + 2]].mID;
65 outClus[k].Sec.bID = inHit[mapL1[2 * k + 2]].bID;
66 outClus[k].Sec.Amp = inHit[mapL1[2 * k + 2]].Amp;
67 outClus[k].Sec.Time = inHit[mapL1[2 * k + 2]].Time;
69 clearHit(inHit[mapL1[2 * k + 2]]);
Sign Arbitrary Precision Type.