3#include "TrigScint/Firmware/hitproducer.h"
4#include "TrigScint/Firmware/objdef.h"
9#pragma HLS ARRAY_PARTITION variable = FIFO complete
10#pragma HLS ARRAY_PARTITION variable = amplitude complete
11#pragma HLS ARRAY_PARTITION variable = Peds complete
12#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[0]
13#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[1]
14#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[2]
15#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[3]
16#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[4]
17#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[5]
18#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[6]
19#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[7]
20#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[8]
21#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[9]
22#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[10]
23#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[11]
24#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[12]
25#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[13]
26#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[14]
27#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[15]
28#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[16]
29#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[17]
30#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[18]
31#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[19]
33#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[20]
34#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[21]
35#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[22]
36#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[23]
37#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[24]
38#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[25]
39#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[26]
40#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[27]
41#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[28]
42#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[29]
44#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[30]
45#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[31]
46#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[32]
47#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[33]
48#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[34]
49#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[35]
50#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[36]
51#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[37]
52#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[38]
53#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[39]
55#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[40]
56#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[41]
57#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[42]
58#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[43]
59#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[44]
60#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[45]
61#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[46]
62#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[47]
64#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[48]
65#pragma HLS INTERFACE ap_fifo depth = 16 port = FIFO[49]
86 1910, 3990, 4780, 7960, 15900, 32600,
87 38900, 64300, 128000, 261000, 350000};
89 ap_uint<14> sense[16] = {3, 6, 12, 25, 25, 50, 99, 198,
90 198, 397, 794, 1587, 1587, 3174, 6349, 12700};
92 for (
int i = 0; i < NHITS; i++) {
118 1 * (v1 > nbins[1]) + 1 * (v1 > nbins[2]) + 1 * (v1 > nbins[3]);
119 charge1 = edges[4 * rr + ss] + (v1 - nbins[ss]) * sense[4 * rr + ss] +
120 sense[4 * rr + ss] / 2 - 1;
122 rr = (word2 >> 6) / 64;
123 v1 = (word2 >> 6) % 64;
124 ss = 1 * (v1 > nbins[1]) + 1 * (v1 > nbins[2]) + 1 * (v1 > nbins[3]);
125 charge2 = edges[4 * rr + ss] + (v1 - nbins[ss]) * sense[4 * rr + ss] +
126 sense[4 * rr + ss] / 2 - 1;
128 rr = (word3 >> 6) / 64;
129 v1 = (word3 >> 6) % 64;
130 ss = 1 * (v1 > nbins[1]) + 1 * (v1 > nbins[2]) + 1 * (v1 > nbins[3]);
131 charge3 = edges[4 * rr + ss] + (v1 - nbins[ss]) * sense[4 * rr + ss] +
132 sense[4 * rr + ss] / 2 - 1;
134 rr = (word4 >> 6) / 64;
135 v1 = (word4 >> 6) % 64;
136 ss = 1 * (v1 > nbins[1]) + 1 * (v1 > nbins[2]) + 1 * (v1 > nbins[3]);
137 charge4 = edges[4 * rr + ss] + (v1 - nbins[ss]) * sense[4 * rr + ss] +
138 sense[4 * rr + ss] / 2 - 1;
140 rr = (word5 >> 6) / 64;
141 v1 = (word5 >> 6) % 64;
142 ss = 1 * (v1 > nbins[1]) + 1 * (v1 > nbins[2]) + 1 * (v1 > nbins[3]);
143 charge5 = edges[4 * rr + ss] + (v1 - nbins[ss]) * sense[4 * rr + ss] +
144 sense[4 * rr + ss] / 2 - 1;
153 outHit[i].time_ = (word1 & 63);
163 ((charge1 + charge2 + charge3 + charge4 + charge5 - 36) * .00625);
Unsigned Arbitrary Precision Type.