Skip to content

Commit 76f6a60

Browse files
authored
Merge pull request cms-sw#34002 from dildick/from-CMSSW_12_0_X_2021-06-06-2300-fix-error-messages-alct
Address warning messages for low-quality 3-layer ALCTs in Phase2 WFs with 12_0_0_pre2
2 parents d1a514a + 147e176 commit 76f6a60

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
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/interface/CSCUpgradeAnodeLCTProcessor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class CSCUpgradeAnodeLCTProcessor : public CSCAnodeLCTProcessor {
2323
unsigned chamber,
2424
const edm::ParameterSet& conf);
2525

26-
/** Default constructor. Used for testing. */
27-
CSCUpgradeAnodeLCTProcessor();
26+
/** Default destructor. */
27+
~CSCUpgradeAnodeLCTProcessor() override{};
2828

2929
private:
3030
/* This function looks for LCTs on the previous and next wires. If one

L1Trigger/CSCTriggerPrimitives/python/params/alctParams.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
)
5252

5353
alctPhase2GEM = alctPhase2.clone(
54-
alctNplanesHitPattern = 3
54+
alctNplanesHitPattern = 4
5555
)
5656

5757
alctPSets = cms.PSet(

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
}

L1Trigger/CSCTriggerPrimitives/src/CSCUpgradeAnodeLCTProcessor.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ int CSCUpgradeAnodeLCTProcessor::getTempALCTQuality(int temp_quality) const {
184184
// Quality definition changed on 22 June 2007: it no longer depends
185185
// on pattern_thresh.
186186
int Q;
187-
// hack to run the Phase-II ME2/1, ME3/1 and ME4/1 ILT
187+
// hack to run the Phase-II GE2/1-ME2/1 with 3-layer ALCTs
188188
if (temp_quality == 3 and runPhase2_ and runME21ILT_ and isME21_)
189-
Q = 4;
189+
Q = 1;
190190
else if (temp_quality > 3)
191191
Q = temp_quality - 3;
192192
else

0 commit comments

Comments
 (0)