Skip to content

Commit 147e176

Browse files
author
Sven Dildick
committed
Add more explanation about the ghost cancellation logic executed parallel for all wiregroups
1 parent e79a0c8 commit 147e176

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

L1Trigger/CSCTriggerPrimitives/interface/CSCAnodeLCTProcessor.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,25 @@ class CSCAnodeLCTProcessor : public CSCBaseboard {
222222
// set the wire hit container
223223
void setWireContainer(CSCALCTDigi&, CSCALCTDigi::WireContainer& wireHits) const;
224224

225-
/* This function looks for LCTs on the previous and next wires. If one
225+
/* This function looks for ALCTs on the previous and next wires. If one
226226
exists and it has a better quality and a bx_time up to 4 clocks earlier
227-
than the present, then the present LCT is cancelled. The present LCT
227+
than the present, then the present ALCT is cancelled. The present ALCT
228228
also gets cancelled if it has the same quality as the one on the
229229
previous wire (this has not been done in 2003 test beam). The
230230
cancellation is done separately for collision and accelerator patterns. */
231231
virtual void ghostCancellationLogic();
232232

233+
/* In older versions of the ALCT emulation, the ghost cancellation was performed after
234+
the ALCTs were found. In December 2018 it became clear that during the study of data
235+
and emulation comparison on 2018 data, a small disagreement between data and emulation
236+
was found. The changes we implemented then allow re-triggering on one wiregroup after
237+
some dead time once an earlier ALCT was constructed built on this wiregroup. Before this
238+
commit the ALCT processor would prohibit the wiregroup from triggering in one event after
239+
an ALCT was found on that wiregroup. In the firwmare, the wiregroup with ALCT is only dead
240+
for a few BX before it can be triggered by next muon. The implementation of ghost cancellation
241+
logic wqas changed to accommodate the re-triggering change while the idea of the ghost
242+
cancellation logic is kept the same.
243+
*/
233244
virtual void ghostCancellationLogicOneWire(const int key_wire, int* ghost_cleared);
234245

235246
virtual int getTempALCTQuality(int temp_quality) const;

L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)