CMS 3D CMS Logo

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