52 <<
"TrigScintFirmwareTracker: produce() starts! Event number: "
53 <<
event.getEventHeader().getEventNumber();
61 for (
int i = 0; i < NCENT; ++i) {
62 for (
int j = 0; j < COMBO; ++j) {
63 for (
int k = 0; k < 2; ++k) {
73 for (
int i = 0; i < NCENT; i++) {
74 for (
int j = 0; j < COMBO; j++) {
75 lookup[i][j][0] = (i - a[1] + a[0]);
76 lookup[i][j][1] = (i - a[2] + a[0]);
79 }
else if (j / 3 == 2) {
84 }
else if (j % 3 == 2) {
87 if (not((lookup[i][j][0] >= 0) and (lookup[i][j][1] >= 0) and
88 (lookup[i][j][0] < NCENT) and (lookup[i][j][1] < NCENT))) {
106 for (
int j = 0; j < NHITS; j++) {
111 for (
int j = 0; j < NCLUS; j++) {
118 for (
int j = 0; j < NTRK; j++) {
119 clearTrack(out_trk[j]);
130 ldmx_log(debug) <<
"Got digi collection " << digis1_collection_ <<
"_"
131 << pass_name_ <<
" with " << digis1.size() <<
" entries ";
138 for (
int i = 0; i < NCHAN; i++) {
142 for (
const auto& digi : digis1) {
143 if ((digi.getPE() >
min_thr_) and (digi.getBarID() <= NCHAN) and
144 (digi.getBarID() >= 0)) {
147 if (occupied[digi.getBarID()] >= 0) {
148 if (h_pad1[occupied[digi.getBarID()]].amp_ < digi.getPE()) {
149 h_pad1[occupied[digi.getBarID()]].b_id_ =
151 h_pad1[occupied[digi.getBarID()]].m_id_ =
153 h_pad1[occupied[digi.getBarID()]].amp_ = (
ap_int<12>)(digi.getPE());
154 h_pad1[occupied[digi.getBarID()]].time_ =
158 h_pad1[count].b_id_ = (
ap_int<12>)(digi.getBarID());
159 h_pad1[count].m_id_ = (
ap_int<12>)(digi.getModuleID());
160 h_pad1[count].amp_ = (
ap_int<12>)(digi.getPE());
161 h_pad1[count].time_ = (
ap_int<12>)(digi.getTime());
162 occupied[digi.getBarID()] = count;
168 for (
int i = 0; i < NCHAN; i++) {
172 for (
const auto& digi : digis2) {
173 if ((digi.getPE() >
min_thr_) and (digi.getBarID() <= NCHAN) and
174 (digi.getBarID() >= 0)) {
177 if (occupied[digi.getBarID()] >= 0) {
178 if (h_pad2[occupied[digi.getBarID()]].amp_ < digi.getPE()) {
179 h_pad2[occupied[digi.getBarID()]].b_id_ =
181 h_pad2[occupied[digi.getBarID()]].m_id_ =
183 h_pad2[occupied[digi.getBarID()]].amp_ = (
ap_int<12>)(digi.getPE());
184 h_pad2[occupied[digi.getBarID()]].time_ =
188 h_pad2[count].b_id_ = (
ap_int<12>)(digi.getBarID());
189 h_pad2[count].m_id_ = (
ap_int<12>)(digi.getModuleID());
190 h_pad2[count].amp_ = (
ap_int<12>)(digi.getPE());
191 h_pad2[count].time_ = (
ap_int<12>)(digi.getTime());
192 occupied[digi.getBarID()] = count;
197 for (
int i = 0; i < NCHAN; i++) {
201 for (
const auto& digi : digis3) {
202 if ((digi.getPE() >
min_thr_) and (digi.getBarID() <= NCHAN) and
203 (digi.getBarID() >= 0)) {
206 if (occupied[digi.getBarID()] >= 0) {
207 if (h_pad3[occupied[digi.getBarID()]].amp_ < digi.getPE()) {
208 h_pad3[occupied[digi.getBarID()]].b_id_ =
210 h_pad3[occupied[digi.getBarID()]].m_id_ =
212 h_pad3[occupied[digi.getBarID()]].amp_ = (
ap_int<12>)(digi.getPE());
213 h_pad3[occupied[digi.getBarID()]].time_ =
217 h_pad3[count].b_id_ = (
ap_int<12>)(digi.getBarID());
218 h_pad3[count].m_id_ = (
ap_int<12>)(digi.getModuleID());
219 h_pad3[count].amp_ = (
ap_int<12>)(digi.getPE());
220 h_pad3[count].time_ = (
ap_int<12>)(digi.getTime());
221 occupied[digi.getBarID()] = count;
231 std::array<Cluster, NCLUS> point1 = clusterproducerSw(h_pad1);
233 for (
int i = 0; i < NCLUS; i++) {
234 if ((point1[i].seed_.amp_ < 450) and (point1[i].seed_.amp_ > 30) and
235 (point1[i].seed_.b_id_ < (NCHAN + 1)) and
236 (point1[i].seed_.b_id_ >= 0) and (point1[i].sec_.amp_ < 450) and
237 (counter_n < NTRK)) {
238 if (point1[i].seed_.b_id_ >= top_seed) {
239 cpyHit(pad1[counter_n].seed_, point1[i].seed_);
240 cpyHit(pad1[counter_n].sec_, point1[i].sec_);
241 calcCent(pad1[counter_n]);
243 top_seed = point1[i].seed_.b_id_;
247 std::array<Cluster, NCLUS> point2 = clusterproducerSw(h_pad2);
249 for (
int i = 0; i < NCLUS; i++) {
250 if ((point2[i].seed_.amp_ < 450) and (point2[i].seed_.amp_ > 30) and
251 (point2[i].seed_.b_id_ < (NCHAN + 1)) and
252 (point2[i].seed_.b_id_ >= 0) and (point2[i].sec_.amp_ < 450)) {
253 if (point2[i].seed_.b_id_ >= top_seed) {
254 cpyHit(pad2[i].seed_, point2[i].seed_);
255 cpyHit(pad2[i].sec_, point2[i].sec_);
257 top_seed = point2[i].seed_.b_id_;
261 std::array<Cluster, NCLUS> point3 = clusterproducerSw(h_pad3);
263 for (
int i = 0; i < NCLUS; i++) {
264 if ((point3[i].seed_.amp_ < 450) and (point3[i].seed_.amp_ > 30) and
265 (point3[i].seed_.b_id_ < (NCHAN + 1)) and
266 (point3[i].seed_.b_id_ >= 0) and (point3[i].sec_.amp_ < 450)) {
267 if (point3[i].seed_.b_id_ >= top_seed) {
268 cpyHit(pad3[i].seed_, point3[i].seed_);
269 cpyHit(pad3[i].sec_, point3[i].sec_);
271 top_seed = point3[i].seed_.b_id_;
285 trackproducerHw(pad1, pad2, pad3, out_trk, lookup);
286 for (
int i = 0; i < NTRK; i++) {
287 if (out_trk[i].pad1_.seed_.amp_ > 0. && out_trk[i].pad1_.sec_.amp_ >= 0. &&
288 out_trk[i].pad2_.seed_.amp_ > 0. && out_trk[i].pad2_.sec_.amp_ >= 0. &&
289 out_trk[i].pad3_.seed_.amp_ > 0. && out_trk[i].pad3_.sec_.amp_ >= 0.) {
291 tracks_.push_back(trk);
294 event.add(output_collection_, tracks_);