54 <<
"TrigScintFirmwareTracker: produce() starts! Event number: "
55 <<
event.getEventHeader().getEventNumber();
63 for (
int i = 0; i < NCENT; ++i) {
64 for (
int j = 0; j < COMBO; ++j) {
65 for (
int k = 0; k < 2; ++k) {
75 for (
int i = 0; i < NCENT; i++) {
76 for (
int j = 0; j < COMBO; j++) {
77 LOOKUP[i][j][0] = (i - A[1] + A[0]);
78 LOOKUP[i][j][1] = (i - A[2] + A[0]);
81 }
else if (j / 3 == 2) {
86 }
else if (j % 3 == 2) {
89 if (not((LOOKUP[i][j][0] >= 0) and (LOOKUP[i][j][1] >= 0) and
90 (LOOKUP[i][j][0] < NCENT) and (LOOKUP[i][j][1] < NCENT))) {
108 for (
int j = 0; j < NHITS; j++) {
113 for (
int j = 0; j < NCLUS; j++) {
120 for (
int j = 0; j < NTRK; j++) {
121 clearTrack(outTrk[j]);
132 ldmx_log(debug) <<
"Got digi collection " << digis1_collection_ <<
"_"
133 << passName_ <<
" with " << digis1.size() <<
" entries ";
140 for (
int i = 0; i < NCHAN; i++) {
144 for (
const auto &digi : digis1) {
145 if ((digi.getPE() >
minThr_) and (digi.getBarID() <= NCHAN) and
146 (digi.getBarID() >= 0)) {
149 if (occupied[digi.getBarID()] >= 0) {
150 if (HPad1[occupied[digi.getBarID()]].Amp < digi.getPE()) {
151 HPad1[occupied[digi.getBarID()]].bID = (
ap_int<12>)(digi.getBarID());
152 HPad1[occupied[digi.getBarID()]].mID =
154 HPad1[occupied[digi.getBarID()]].Amp = (
ap_int<12>)(digi.getPE());
155 HPad1[occupied[digi.getBarID()]].Time = (
ap_int<12>)(digi.getTime());
158 HPad1[count].bID = (
ap_int<12>)(digi.getBarID());
159 HPad1[count].mID = (
ap_int<12>)(digi.getModuleID());
160 HPad1[count].Amp = (
ap_int<12>)(digi.getPE());
161 HPad1[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() >
minThr_) and (digi.getBarID() <= NCHAN) and
174 (digi.getBarID() >= 0)) {
177 if (occupied[digi.getBarID()] >= 0) {
178 if (HPad2[occupied[digi.getBarID()]].Amp < digi.getPE()) {
179 HPad2[occupied[digi.getBarID()]].bID = (
ap_int<12>)(digi.getBarID());
180 HPad2[occupied[digi.getBarID()]].mID =
182 HPad2[occupied[digi.getBarID()]].Amp = (
ap_int<12>)(digi.getPE());
183 HPad2[occupied[digi.getBarID()]].Time = (
ap_int<12>)(digi.getTime());
186 HPad2[count].bID = (
ap_int<12>)(digi.getBarID());
187 HPad2[count].mID = (
ap_int<12>)(digi.getModuleID());
188 HPad2[count].Amp = (
ap_int<12>)(digi.getPE());
189 HPad2[count].Time = (
ap_int<12>)(digi.getTime());
190 occupied[digi.getBarID()] = count;
195 for (
int i = 0; i < NCHAN; i++) {
199 for (
const auto &digi : digis3) {
200 if ((digi.getPE() >
minThr_) and (digi.getBarID() <= NCHAN) and
201 (digi.getBarID() >= 0)) {
204 if (occupied[digi.getBarID()] >= 0) {
205 if (HPad3[occupied[digi.getBarID()]].Amp < digi.getPE()) {
206 HPad3[occupied[digi.getBarID()]].bID = (
ap_int<12>)(digi.getBarID());
207 HPad3[occupied[digi.getBarID()]].mID =
209 HPad3[occupied[digi.getBarID()]].Amp = (
ap_int<12>)(digi.getPE());
210 HPad3[occupied[digi.getBarID()]].Time = (
ap_int<12>)(digi.getTime());
213 HPad3[count].bID = (
ap_int<12>)(digi.getBarID());
214 HPad3[count].mID = (
ap_int<12>)(digi.getModuleID());
215 HPad3[count].Amp = (
ap_int<12>)(digi.getPE());
216 HPad3[count].Time = (
ap_int<12>)(digi.getTime());
217 occupied[digi.getBarID()] = count;
227 std::array<Cluster, NCLUS> Point1 = clusterproducer_sw(HPad1);
229 for (
int i = 0; i < NCLUS; i++) {
230 if ((Point1[i].Seed.Amp < 450) and (Point1[i].Seed.Amp > 30) and
231 (Point1[i].Seed.bID < (NCHAN + 1)) and (Point1[i].Seed.bID >= 0) and
232 (Point1[i].Sec.Amp < 450) and (counterN < NTRK)) {
233 if (Point1[i].Seed.bID >= topSeed) {
234 cpyHit(Pad1[counterN].Seed, Point1[i].Seed);
235 cpyHit(Pad1[counterN].Sec, Point1[i].Sec);
236 calcCent(Pad1[counterN]);
238 topSeed = Point1[i].Seed.bID;
242 std::array<Cluster, NCLUS> Point2 = clusterproducer_sw(HPad2);
244 for (
int i = 0; i < NCLUS; i++) {
245 if ((Point2[i].Seed.Amp < 450) and (Point2[i].Seed.Amp > 30) and
246 (Point2[i].Seed.bID < (NCHAN + 1)) and (Point2[i].Seed.bID >= 0) and
247 (Point2[i].Sec.Amp < 450)) {
248 if (Point2[i].Seed.bID >= topSeed) {
249 cpyHit(Pad2[i].Seed, Point2[i].Seed);
250 cpyHit(Pad2[i].Sec, Point2[i].Sec);
252 topSeed = Point2[i].Seed.bID;
256 std::array<Cluster, NCLUS> Point3 = clusterproducer_sw(HPad3);
258 for (
int i = 0; i < NCLUS; i++) {
259 if ((Point3[i].Seed.Amp < 450) and (Point3[i].Seed.Amp > 30) and
260 (Point3[i].Seed.bID < (NCHAN + 1)) and (Point3[i].Seed.bID >= 0) and
261 (Point3[i].Sec.Amp < 450)) {
262 if (Point3[i].Seed.bID >= topSeed) {
263 cpyHit(Pad3[i].Seed, Point3[i].Seed);
264 cpyHit(Pad3[i].Sec, Point3[i].Sec);
266 topSeed = Point3[i].Seed.bID;
280 trackproducer_hw(Pad1, Pad2, Pad3, outTrk, LOOKUP);
281 for (
int I = 0; I < NTRK; I++) {
282 if (outTrk[I].Pad1.Seed.Amp > 0. && outTrk[I].Pad1.Sec.Amp >= 0. &&
283 outTrk[I].Pad2.Seed.Amp > 0. && outTrk[I].Pad2.Sec.Amp >= 0. &&
284 outTrk[I].Pad3.Seed.Amp > 0. && outTrk[I].Pad3.Sec.Amp >= 0.) {
286 tracks_.push_back(trk);
289 event.add(output_collection_, tracks_);