@@ -297,6 +297,18 @@ void CSCAnodeLCTProcessor::run(const std::vector<int> wire[CSCConstants::NUM_LAY
297297 if (patternDetection (i_wire, hits_in_patterns)) {
298298 trigger = true ;
299299 int ghost_cleared[2 ] = {0 , 0 };
300+ /*
301+ In older versions of the ALCT emulation, the ghost cancellation was performed after
302+ the ALCTs were found. In December 2018 it became clear that during the study of data
303+ and emulation comparison on 2018 data, a small disagreement between data and emulation
304+ was found. The changes we implemented then allow re-triggering on one wiregroup after
305+ some dead time once an earlier ALCT was constructed built on this wiregroup. Before this
306+ commit the ALCT processor would prohibit the wiregroup from triggering in one event after
307+ an ALCT was found on that wiregroup. In the firwmare, the wiregroup with ALCT is only dead
308+ for a few BX before it can be triggered by next muon. The implementation of ghost cancellation
309+ logic was changed to accommodate the re-triggering change while the idea of ghost cancellation
310+ logic is kept the same.
311+ */
300312 ghostCancellationLogicOneWire (i_wire, ghost_cleared);
301313
302314 int bx = (use_corrected_bx) ? first_bx_corrected[i_wire] : first_bx[i_wire];
@@ -349,6 +361,12 @@ void CSCAnodeLCTProcessor::run(const std::vector<int> wire[CSCConstants::NUM_LAY
349361
350362 // Do the rest only if there is at least one trigger candidate.
351363 if (trigger) {
364+ /* In Run-1 and Run-2, the ghost cancellation was done after the trigger.
365+ In the firmware however, the ghost cancellation is done during the trigger
366+ on each wiregroup in parallel. For Run-3 and beyond, the ghost cancellation is
367+ implemented per wiregroup earlier in the code. See function
368+ "ghostCancellationLogicOneWire". Therefore, the line below is commented out.
369+ */
352370 // ghostCancellationLogic();
353371 lctSearch ();
354372 }
0 commit comments