CMS 3D CMS Logo

CSCTMBHeader2020_CCLUT.cc
Go to the documentation of this file.
4 
5 const std::vector<std::pair<unsigned, unsigned> >
6  run3_pattern_lookup_tbl = {{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4},
7  {0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {1, 0}, {1, 1}, {1, 2}, {1, 3},
8  {1, 4}, {2, 0}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, {3, 0}, {3, 1}, {3, 2},
9  {3, 3}, {3, 4}, {4, 0}, {4, 1}, {4, 2}, {4, 3}, {4, 4}};
10 
11 const unsigned run2_pattern_lookup_tbl[2][16] = {{10, 10, 10, 8, 8, 8, 6, 6, 6, 4, 4, 4, 2, 2, 2, 2},
12  {10, 10, 10, 9, 9, 9, 7, 7, 7, 5, 5, 5, 3, 3, 3, 3}};
13 
15  bzero(data(), sizeInWords() * 2);
16  bits.nHeaderFrames = 42;
17  bits.e0bline = 0x6E0B;
18  bits.b0cline = 0xDB0C;
19  bits.firmRevCode = 0x401;
20  bits.nTBins = 12;
21  bits.nCFEBs = 7;
22 }
23 
24 CSCTMBHeader2020_CCLUT::CSCTMBHeader2020_CCLUT(const unsigned short* buf) { memcpy(data(), buf, sizeInWords() * 2); }
25 
27  bits.cscID = dmbHeader.dmbID();
28  bits.l1aNumber = dmbHeader.l1a();
29  bits.bxnCount = dmbHeader.bxn();
30 }
31 
33 std::vector<CSCCLCTDigi> CSCTMBHeader2020_CCLUT::CLCTDigis(uint32_t idlayer) {
34  std::vector<CSCCLCTDigi> result;
35  unsigned halfstrip = bits.clct0_key_low + (bits.clct0_key_high << 7);
36  unsigned strip = halfstrip % 32;
37  // CLCT0 1/4 strip bit
38  bool quartstrip = (bits.clct0_xky >> 1) & 0x1;
39  // CLCT1 1/8 strip bit
40  bool eighthstrip = bits.clct0_xky & 0x1;
41  unsigned cfeb = halfstrip / 32;
42 
44  unsigned run3_pattern = bits.clct0_shape & 0x7; // 3-bit Run3 CLCT PatternID
45  unsigned bend = bits.clct0_LR_bend;
46  unsigned slope = bits.clct0_slope;
47  unsigned run2_pattern = run2_pattern_lookup_tbl[bend][slope];
48 
49  CSCCLCTDigi digi0(bits.clct0_valid,
50  bits.clct0_quality,
51  run2_pattern,
52  1,
53  bend,
54  strip,
55  cfeb,
56  bits.clct_bxn,
57  1,
58  bits.bxnPreTrigger,
59  bits.clct0_comparator_code,
61  quartstrip,
62  eighthstrip,
63  run3_pattern,
64  slope);
65 
66  halfstrip = bits.clct1_key_low + (bits.clct1_key_high << 7);
67  strip = halfstrip % 32;
68  // CLCT0 1/4 strip bit
69  quartstrip = (bits.clct1_xky >> 1) & 0x1;
70  // CLCT1 1/8 strip bit
71  eighthstrip = bits.clct1_xky & 0x1;
72  cfeb = halfstrip / 32;
73 
74  // CLCT LR bend and slope are from dedicated header fields
75  run3_pattern = bits.clct1_shape & 0x7; // 3-bit Run3 CLCT PatternID
76  bend = bits.clct1_LR_bend;
77  slope = bits.clct1_slope;
78  run2_pattern = run2_pattern_lookup_tbl[bend][slope];
79 
80  CSCCLCTDigi digi1(bits.clct1_valid,
81  bits.clct1_quality,
82  run2_pattern,
83  1,
84  bend,
85  strip,
86  cfeb,
87  bits.clct_bxn,
88  2,
89  bits.bxnPreTrigger,
90  bits.clct1_comparator_code,
92  quartstrip,
93  eighthstrip,
94  run3_pattern,
95  slope);
96 
97  result.push_back(digi0);
98  result.push_back(digi1);
99  return result;
100 }
101 
103 std::vector<CSCCorrelatedLCTDigi> CSCTMBHeader2020_CCLUT::CorrelatedLCTDigis(uint32_t idlayer) const {
104  std::vector<CSCCorrelatedLCTDigi> result;
106  unsigned strip = bits.MPC_Muon0_clct_key_halfstrip; //this goes from 0-223
107  unsigned slope = (bits.MPC_Muon0_clct_bend_low & 0x7) | (bits.MPC_Muon0_clct_bend_bit4 << 3);
108  unsigned hmt = bits.MPC_Muon_HMT_bit0 | (bits.MPC_Muon_HMT_high << 1); // HighMultiplicityTrigger
109  unsigned clct_pattern_id = bits.MPC_Muon_clct_pattern_low | (bits.MPC_Muon_clct_pattern_bit5 << 4);
110 
111  std::pair<unsigned, unsigned> run3_pattern_pair = run3_pattern_lookup_tbl[clct_pattern_id % 30];
112  unsigned run2_pattern = run2_pattern_lookup_tbl[bits.MPC_Muon0_clct_LR][slope];
113  unsigned run3_pattern = run3_pattern_pair.second & 0x7;
114 
115  CSCCorrelatedLCTDigi digi(1,
116  bits.MPC_Muon0_lct_vpf,
117  bits.MPC_Muon0_lct_quality,
118  bits.MPC_Muon0_alct_key_wire,
119  strip,
120  run2_pattern,
121  bits.MPC_Muon0_clct_LR,
122  bits.MPC_Muon_alct_bxn,
123  0,
124  bits.MPC_Muon0_clct_bx0,
125  0,
126  0,
128  bits.MPC_Muon0_clct_QuarterStrip,
129  bits.MPC_Muon0_clct_EighthStrip,
130  run3_pattern,
131  slope);
132  digi.setHMT(hmt);
133  result.push_back(digi);
135  strip = bits.MPC_Muon1_clct_key_halfstrip; //this goes from 0-223
136  slope = (bits.MPC_Muon1_clct_bend_low & 0x7) | (bits.MPC_Muon1_clct_bend_bit4 << 3);
137  run2_pattern = run2_pattern_lookup_tbl[bits.MPC_Muon1_clct_LR][slope];
138  run3_pattern = run3_pattern_pair.first & 0x7;
139 
140  digi = CSCCorrelatedLCTDigi(2,
141  bits.MPC_Muon1_lct_vpf,
142  bits.MPC_Muon1_lct_quality,
143  bits.MPC_Muon1_alct_key_wire,
144  strip,
145  run2_pattern,
146  bits.MPC_Muon1_clct_LR,
147  bits.MPC_Muon_alct_bxn,
148  0,
149  bits.MPC_Muon1_clct_bx0,
150  0,
151  0,
153  bits.MPC_Muon1_clct_QuarterStrip,
154  bits.MPC_Muon1_clct_EighthStrip,
155  run3_pattern,
156  slope);
157  digi.setHMT(hmt);
158  result.push_back(digi);
159  return result;
160 }
161 
163  unsigned hmt_bits = bits.MPC_Muon_HMT_bit0 | (bits.MPC_Muon_HMT_high << 1); // HighMultiplicityTrigger bits
164  uint16_t cscid = bits.cscID; // ??? What is 4-bits CSC Id in CSshowerDigi
165  //L1A_TMB_WINDOW is not included in below formula
166  //correct version: CSCConstants::LCT_CENTRAL_BX - bits.pop_l1a_match_win + L1A_TMB_WINDOW/2;
167  // same for anode HMT and cathode HMT
168  uint16_t bx = CSCConstants::LCT_CENTRAL_BX - bits.pop_l1a_match_win;
169  //LCTshower with showerType = 3. comparatorNHits from hmt_nhits() and wireNHit is not available
170  CSCShowerDigi result(hmt_bits & 0x3,
171  (hmt_bits >> 2) & 0x3,
172  cscid,
173  bx,
174  CSCShowerDigi::ShowerType::kLCTShower,
175  0,
176  hmt_nhits()); // 2-bits intime, 2-bits out of time
177  return result;
178 }
179 
181  uint16_t cscid = bits.cscID;
182  uint16_t bx = CSCConstants::LCT_CENTRAL_BX - bits.pop_l1a_match_win;
183  //ALCT shower with showerType = 1. nhits_ is not available from unpack data
185  bits.anode_hmt & 0x3, 0, cscid, bx, CSCShowerDigi::ShowerType::kALCTShower, 0, 0); // 2-bits intime, no out of time
186  return result;
187 }
188 
190  uint16_t cscid = bits.cscID;
191  uint16_t bx = CSCConstants::LCT_CENTRAL_BX - bits.pop_l1a_match_win - bits.hmt_match_win + 3;
192  //CLCT shower with showerType = 2.
193  CSCShowerDigi result(bits.cathode_hmt & 0x3,
194  0,
195  cscid,
196  bx,
197  CSCShowerDigi::ShowerType::kCLCTShower,
198  0,
199  hmt_nhits()); // 2-bits intime, no out of time
200  return result;
201 }
202 
204  throw cms::Exception("In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
205 }
206 
208  throw cms::Exception("In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
209 }
210 
212  unsigned halfStrip = digi.getKeyStrip();
213  unsigned pattern = digi.getRun3Pattern();
214  bits.clct0_valid = digi.isValid();
215  bits.clct0_quality = digi.getQuality();
216  bits.clct0_shape = pattern;
217  // first 7 bits of halfstrip
218  bits.clct0_key_low = halfStrip & (0x7F);
219  // most-significant (8th) bit
220  bits.clct0_key_high = (halfStrip >> 7) & (0x1);
221  bits.clct_bxn = digi.getBX();
222  bits.bxnPreTrigger = digi.getFullBX();
223  bits.clct0_comparator_code = digi.getCompCode();
224  bits.clct0_xky = (digi.getEighthStripBit() & 0x1) + ((digi.getQuartStripBit() & 0x1) << 1);
225  bits.clct0_LR_bend = digi.getBend();
226  bits.clct0_slope = digi.getSlope();
227 }
228 
230  unsigned halfStrip = digi.getKeyStrip();
231  unsigned pattern = digi.getRun3Pattern();
232  bits.clct1_valid = digi.isValid();
233  bits.clct1_quality = digi.getQuality();
234  bits.clct1_shape = pattern;
235  // first 7 bits of halfstrip
236  bits.clct1_key_low = halfStrip & (0x7F);
237  // most-significant (8th) bit
238  bits.clct1_key_high = (halfStrip >> 7) & (0x1);
239  // There is just one BX field common for CLCT0 and CLCT1 (since both
240  // are latched at the same BX); set it in addCLCT0().
241  bits.bxnPreTrigger = digi.getFullBX();
242  bits.clct1_comparator_code = digi.getCompCode();
243  bits.clct1_xky = (digi.getEighthStripBit() & 0x1) + ((digi.getQuartStripBit() & 0x1) << 1);
244  bits.clct1_LR_bend = digi.getBend();
245  bits.clct1_slope = digi.getSlope();
246 }
247 
249  bits.MPC_Muon0_lct_vpf = digi.isValid();
250  bits.MPC_Muon0_alct_key_wire = digi.getKeyWG();
251  bits.MPC_Muon0_clct_key_halfstrip = digi.getStrip(2) & 0xFF;
252  bits.MPC_Muon0_clct_QuarterStrip = digi.getQuartStripBit() & 0x1;
253  bits.MPC_Muon0_clct_EighthStrip = digi.getEighthStripBit() & 0x1;
254  bits.MPC_Muon0_lct_quality = digi.getQuality() & 0x7;
255 
256  // To restore 5-bits Run3 CLCT Pattern ID first assume and set pattern ID = LCT0 Run3 pattern
257  uint16_t run3_pattern = digi.getRun3Pattern();
258  bits.MPC_Muon_clct_pattern_low = run3_pattern & 0xF;
259  bits.MPC_Muon_clct_pattern_bit5 = (run3_pattern >> 4) & 0x1;
260  bits.MPC_Muon0_clct_bend_low = digi.getSlope() & 0x7;
261  bits.MPC_Muon0_clct_bend_bit4 = (digi.getSlope() >> 3) & 0x1;
262  bits.MPC_Muon0_clct_LR = digi.getBend() & 0x1;
263  bits.MPC_Muon_HMT_bit0 = digi.getHMT() & 0x1;
264  bits.MPC_Muon_HMT_high = (digi.getHMT() >> 1) & 0x7;
265  bits.MPC_Muon_alct_bxn = digi.getBX();
266  bits.MPC_Muon0_clct_bx0 = digi.getBX0();
267 }
268 
270  bits.MPC_Muon1_lct_vpf = digi.isValid();
271  bits.MPC_Muon1_alct_key_wire = digi.getKeyWG();
272  bits.MPC_Muon1_clct_key_halfstrip = digi.getStrip(2) & 0xFF;
273  bits.MPC_Muon1_clct_QuarterStrip = digi.getQuartStripBit() & 0x1;
274  bits.MPC_Muon1_clct_EighthStrip = digi.getEighthStripBit() & 0x1;
275  bits.MPC_Muon1_lct_quality = digi.getQuality() & 0x7;
276 
277  // To restore 5-bits Run3 CLCT Pattern ID assume that LCT0 pattern ID is already processed
278  // and combine LCT1 Run3 pattern to set final 5-bit pattern ID
279  if (digi.isValid()) {
280  uint16_t clct_pattern_id = bits.MPC_Muon_clct_pattern_low | (bits.MPC_Muon_clct_pattern_bit5 << 4);
281  uint16_t run3_pattern = digi.getRun3Pattern();
282  clct_pattern_id = (clct_pattern_id + (run3_pattern + 1) * 5) % 30;
283  bits.MPC_Muon_clct_pattern_low = clct_pattern_id & 0xF;
284  bits.MPC_Muon_clct_pattern_bit5 = (clct_pattern_id >> 4) & 0x1;
285  }
286  bits.MPC_Muon1_clct_bend_low = digi.getSlope() & 0x7;
287  bits.MPC_Muon1_clct_bend_bit4 = (digi.getSlope() >> 3) & 0x1;
288  bits.MPC_Muon1_clct_LR = digi.getBend() & 0x1;
289  bits.MPC_Muon_HMT_bit0 = digi.getHMT() & 0x1;
290  bits.MPC_Muon_HMT_high = (digi.getHMT() >> 1) & 0x7;
291  bits.MPC_Muon_alct_bxn = digi.getBX();
292  bits.MPC_Muon1_clct_bx0 = digi.getBX0();
293 }
294 
296  uint16_t hmt_bits = digi.isValid() ? (digi.bitsInTime() & 0x3) + ((digi.bitsOutOfTime() & 0x3) << 2)
297  //if not valid LCT shower, then in-time bits must be 0. keep out-of-time HMT:
298  : ((digi.bitsOutOfTime() & 0x3) << 2);
299  bits.MPC_Muon_HMT_bit0 = hmt_bits & 0x1;
300  bits.MPC_Muon_HMT_high = (hmt_bits >> 1) & 0x7;
301  //to keep pop_l1a_match_win
302  if (digi.isValid())
303  bits.pop_l1a_match_win = CSCConstants::LCT_CENTRAL_BX - digi.getBX();
304  else
305  bits.pop_l1a_match_win = 3; //default value
306 }
307 
309  uint16_t hmt_bits = digi.bitsInTime() & 0x3;
310  if (not digi.isValid())
311  hmt_bits = 0;
312  bits.anode_hmt = hmt_bits;
313  if (not(bits.MPC_Muon_HMT_bit0 or bits.MPC_Muon_HMT_high) and digi.isValid())
314  bits.pop_l1a_match_win = CSCConstants::LCT_CENTRAL_BX - digi.getBX();
315  else if (not(digi.isValid()))
316  bits.pop_l1a_match_win = 3; //default value
317 }
318 
320  uint16_t hmt_bits = digi.bitsInTime() & 0x3;
321  if (not digi.isValid())
322  hmt_bits = 0;
323  bits.cathode_hmt = hmt_bits;
324  bits.hmt_nhits_bit0 = digi.getComparatorNHits() & 0x1;
325  bits.hmt_nhits_bit1 = (digi.getComparatorNHits() >> 1) & 0x1;
326  bits.hmt_nhits_bits_high = (digi.getComparatorNHits() >> 2) & 0x1F;
327  if (bits.MPC_Muon_HMT_bit0 or bits.MPC_Muon_HMT_high or bits.anode_hmt) {
328  //matched HMT is found, then pop_l1a_match_win is assigned
329  bits.hmt_match_win = CSCConstants::LCT_CENTRAL_BX - bits.pop_l1a_match_win + 3 - digi.getBX();
330  } else if (digi.isValid()) {
331  bits.pop_l1a_match_win = 3; //default value
332  bits.hmt_match_win = CSCConstants::LCT_CENTRAL_BX - digi.getBX();
333  } else {
334  bits.pop_l1a_match_win = 3; //default value
335  bits.hmt_match_win = 0; //no HMT case
336  }
337 }
338 
339 void CSCTMBHeader2020_CCLUT::print(std::ostream& os) const {
340  os << "...............(O)TMB2020 CCLUT/HMT Header.................."
341  << "\n";
342  os << std::hex << "BOC LINE " << bits.b0cline << " EOB " << bits.e0bline << "\n";
343  os << std::hex << "FW revision: 0x" << bits.firmRevCode << "\n";
344  os << std::dec << "fifoMode = " << bits.fifoMode << ", nTBins = " << bits.nTBins << "\n";
345  os << "boardID = " << bits.boardID << ", cscID = " << bits.cscID << "\n";
346  os << "l1aNumber = " << bits.l1aNumber << ", bxnCount = " << bits.bxnCount << "\n";
347  os << "trigSourceVect = " << bits.trigSourceVect << ", run3_trig_df = " << bits.run3_trig_df << ", activeCFEBs = 0x"
348  << std::hex << (bits.activeCFEBs | (bits.activeCFEBs_2 << 5)) << ", readCFEBs = 0x" << std::hex
349  << (bits.readCFEBs | (bits.readCFEBs_2 << 5)) << std::dec << "\n";
350  os << "bxnPreTrigger = " << bits.bxnPreTrigger << "\n";
351  os << "ALCT location in CLCT window " << bits.matchWin << " L1A location in TMB window " << bits.pop_l1a_match_win
352  << " ALCT in cathde HMT window " << bits.hmt_match_win << "\n";
353  os << "tmbMatch = " << bits.tmbMatch << " alctOnly = " << bits.alctOnly << " clctOnly = " << bits.clctOnly << "\n";
354 
355  os << "readoutCounter: " << std::dec << bits.readoutCounter << ", buf_q_ovf: " << bits.stackOvf
356  << ", sync_err: " << bits.syncError << ", has_buf: " << bits.hasBuf << ", buf_stalled: " << bits.bufFull << "\n";
357  os << "r_wr_buf_adr: 0x" << std::hex << bits.r_wr_buf_adr << ", r_wr_buf_ready: " << bits.r_wr_buf_ready
358  << ", wr_buf_ready: " << bits.wr_buf_ready << ", buf_q_full: " << bits.buf_q_full
359  << ", buf_q_empty: " << bits.buf_q_empty << ",\nr_buf_fence_dist: 0x" << bits.r_buf_fence_dist
360  << ", buf_q_ovf_err: " << bits.buf_q_ovf_err << ", buf_q_udf_err: " << bits.buf_q_udf_err
361  << ", buf_q_adr_err: " << bits.buf_q_adr_err << ", buf_stalled: " << bits.buf_stalled << ",\nbuf_fence_cnt: 0x"
362  << bits.buf_fence_cnt << ", reverse_hs_csc: " << bits.reverse_hs_csc
363  << ", reverse_hs_me1a: " << bits.reverse_hs_me1a << ", reverse_hs_me1b: " << bits.reverse_hs_me1b << "\n";
364  os << "CLCT Words:\n"
365  << " bits.clct0_valid = " << bits.clct0_valid << " bits.clct0_shape = " << bits.clct0_shape
366  << " bits.clct0_quality = " << bits.clct0_quality
367  << " halfstrip = " << (bits.clct0_key_low + (bits.clct0_key_high << 7)) << "\n";
368  os << " bits.clct0_xky = " << bits.clct0_xky << " bits.clct0_comparator_code = " << bits.clct0_comparator_code
369  << " bits.clct0_LR_bend = " << bits.clct0_LR_bend << " bits.clct0_slope = " << bits.clct0_slope << "\n";
370 
371  os << " bits.clct1_valid = " << bits.clct1_valid << " bits.clct1_shape = " << bits.clct1_shape
372  << " bits.clct1_quality = " << bits.clct1_quality
373  << " halfstrip = " << (bits.clct1_key_low + (bits.clct1_key_high << 7)) << "\n";
374  os << " bits.clct1_xky = " << bits.clct1_xky << " bits.clct1_comparator_code = " << bits.clct1_comparator_code
375  << " bits.clct1_LR_bend = " << bits.clct1_LR_bend << " bits.clct1_slope = " << bits.clct1_slope << "\n";
376 
377  os << "MPC Words:\n"
378  << " LCT0 valid = " << bits.MPC_Muon0_lct_vpf << " key WG = " << bits.MPC_Muon0_alct_key_wire
379  << " key halfstrip = " << bits.MPC_Muon0_clct_key_halfstrip
380  << " 1/4strip flag = " << bits.MPC_Muon0_clct_QuarterStrip
381  << " 1/8strip flag = " << bits.MPC_Muon0_clct_EighthStrip << "\n"
382  << " quality = " << bits.MPC_Muon0_lct_quality
383  << " slope/bend = " << ((bits.MPC_Muon0_clct_bend_low & 0x7) | (bits.MPC_Muon0_clct_bend_bit4 << 3))
384  << " L/R bend = " << bits.MPC_Muon0_clct_LR << "\n";
385 
386  os << " LCT1 valid = " << bits.MPC_Muon1_lct_vpf << " key WG = " << bits.MPC_Muon1_alct_key_wire
387  << " key halfstrip = " << bits.MPC_Muon1_clct_key_halfstrip
388  << " 1/4strip flag = " << bits.MPC_Muon1_clct_QuarterStrip
389  << " 1/8strip flag = " << bits.MPC_Muon1_clct_EighthStrip << "\n"
390  << " quality = " << bits.MPC_Muon1_lct_quality
391  << " slope/bend = " << ((bits.MPC_Muon1_clct_bend_low & 0x7) | (bits.MPC_Muon1_clct_bend_bit4 << 3))
392  << " L/R bend = " << bits.MPC_Muon1_clct_LR << "\n";
393 
394  os << " clct_5bit_pattern_id = " << (bits.MPC_Muon_clct_pattern_low | (bits.MPC_Muon_clct_pattern_bit5 << 4))
395  << " HMT = " << (bits.MPC_Muon_HMT_bit0 | (bits.MPC_Muon_HMT_high << 1)) << ", alctHMT = " << bits.anode_hmt
396  << ", clctHMT = " << bits.cathode_hmt << " cathode nhits " << hmt_nhits() << "\n";
397 }
unsigned bxn() const
Definition: CSCDMBHeader.h:37
void addCorrelatedLCT0(const CSCCorrelatedLCTDigi &digi) override
void setHMT(const uint16_t h)
set high-multiplicity bits
uint16_t getSlope() const
return the slope
struct CSCTMBHeader2020_CCLUT::@498 bits
static const double slope[3]
void addShower(const CSCShowerDigi &digi) override
uint16_t getQuality() const
return quality of a pattern (number of layers hit!)
Definition: CSCCLCTDigi.h:56
bool isValid() const
data
uint16_t getComparatorNHits() const
Definition: CSCShowerDigi.h:55
uint16_t getKeyStrip(const uint16_t n=2) const
Definition: CSCCLCTDigi.cc:107
bool getEighthStripBit() const
get single eighth strip bit
Definition: CSCCLCTDigi.h:114
std::vector< CSCCLCTDigi > CLCTDigis(uint32_t idlayer) override
returns CLCT digis
uint16_t bitsOutOfTime() const
Definition: CSCShowerDigi.h:49
int16_t getCompCode() const
Definition: CSCCLCTDigi.h:171
std::vector< CSCCorrelatedLCTDigi > CorrelatedLCTDigis(uint32_t idlayer) const override
returns CorrelatedLCT digis
void addCathodeShower(const CSCShowerDigi &digi) override
bool getQuartStripBit() const
get single quart strip bit
Definition: CSCCLCTDigi.h:108
uint16_t getFullBX() const
return 12-bit full BX.
Definition: CSCCLCTDigi.h:165
void addCorrelatedLCT1(const CSCCorrelatedLCTDigi &digi) override
void setEventInformation(const CSCDMBHeader &dmbHeader) override
void print(std::ostream &os) const override
void addALCT0(const CSCALCTDigi &digi) override
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
uint16_t getBX() const
Definition: CSCShowerDigi.h:51
uint16_t getBX() const
return BX
uint16_t getBend() const
Definition: CSCCLCTDigi.h:93
bool isValid() const
return valid pattern bit
unsigned short int sizeInWords() const override
void addALCT1(const CSCALCTDigi &digi) override
bool getEighthStripBit() const
get single eighth strip bit
bool isValid() const
check CLCT validity (1 - valid CLCT)
Definition: CSCCLCTDigi.h:50
unsigned l1a() const
Definition: CSCDMBHeader.h:39
const std::vector< std::pair< unsigned, unsigned > > run3_pattern_lookup_tbl
uint16_t getQuality() const
return the Quality
unsigned dmbID() const
Definition: CSCDMBHeader.h:36
uint16_t getStrip(uint16_t n=2) const
return the key halfstrip from 0,159
CSCShowerDigi anodeShowerDigi(uint32_t idlayer) const override
returns anode HMT Shower digi
const unsigned run2_pattern_lookup_tbl[2][16]
pattern IDs 30,31 are reserved
bool getQuartStripBit() const
get single quart strip bit
uint16_t getBX() const
return BX
Definition: CSCCLCTDigi.h:123
uint16_t getKeyWG() const
return the key wire group. counts from 0.
void addAnodeShower(const CSCShowerDigi &digi) override
uint16_t bitsInTime() const
Definition: CSCShowerDigi.h:48
CSCShowerDigi cathodeShowerDigi(uint32_t idlayer) const override
returns cathode HMT Shower digi
uint16_t getSlope() const
return the slope
Definition: CSCCLCTDigi.h:74
uint16_t getRun3Pattern() const
return pattern
Definition: CSCCLCTDigi.h:68
void addCLCT0(const CSCCLCTDigi &digi) override
for data packing
void addCLCT1(const CSCCLCTDigi &digi) override
uint16_t getRun3Pattern() const
return the Run-3 pattern ID
unsigned short * data() override
returns the first data word
uint16_t hmt_nhits() const override
CSCShowerDigi showerDigi(uint32_t idlayer) const override
returns lct HMT Shower digi