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}};
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}};
16 bits.nHeaderFrames = 42;
17 bits.e0bline = 0x6E0B;
18 bits.b0cline = 0xDB0C;
19 bits.firmRevCode = 0x401;
28 bits.l1aNumber = dmbHeader.
l1a();
29 bits.bxnCount = dmbHeader.
bxn();
34 std::vector<CSCCLCTDigi>
result;
35 unsigned halfstrip =
bits.clct0_key_low + (
bits.clct0_key_high << 7);
36 unsigned strip = halfstrip % 32;
38 bool quartstrip = (
bits.clct0_xky >> 1) & 0
x1;
40 bool eighthstrip =
bits.clct0_xky & 0x1;
41 unsigned cfeb = halfstrip / 32;
44 unsigned run3_pattern =
bits.clct0_shape & 0x7;
45 unsigned bend =
bits.clct0_LR_bend;
59 bits.clct0_comparator_code,
66 halfstrip =
bits.clct1_key_low + (
bits.clct1_key_high << 7);
67 strip = halfstrip % 32;
69 quartstrip = (
bits.clct1_xky >> 1) & 0
x1;
71 eighthstrip =
bits.clct1_xky & 0x1;
72 cfeb = halfstrip / 32;
75 run3_pattern =
bits.clct1_shape & 0x7;
76 bend =
bits.clct1_LR_bend;
90 bits.clct1_comparator_code,
104 std::vector<CSCCorrelatedLCTDigi>
result;
106 unsigned strip =
bits.MPC_Muon0_clct_key_halfstrip;
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);
109 unsigned clct_pattern_id =
bits.MPC_Muon_clct_pattern_low | (
bits.MPC_Muon_clct_pattern_bit5 << 4);
113 unsigned run3_pattern = run3_pattern_pair.second & 0x7;
116 bits.MPC_Muon0_lct_vpf,
117 bits.MPC_Muon0_lct_quality,
118 bits.MPC_Muon0_alct_key_wire,
121 bits.MPC_Muon0_clct_LR,
122 bits.MPC_Muon_alct_bxn,
124 bits.MPC_Muon0_clct_bx0,
128 bits.MPC_Muon0_clct_QuarterStrip,
129 bits.MPC_Muon0_clct_EighthStrip,
135 strip =
bits.MPC_Muon1_clct_key_halfstrip;
136 slope = (
bits.MPC_Muon1_clct_bend_low & 0x7) | (
bits.MPC_Muon1_clct_bend_bit4 << 3);
138 run3_pattern = run3_pattern_pair.first & 0x7;
141 bits.MPC_Muon1_lct_vpf,
142 bits.MPC_Muon1_lct_quality,
143 bits.MPC_Muon1_alct_key_wire,
146 bits.MPC_Muon1_clct_LR,
147 bits.MPC_Muon_alct_bxn,
149 bits.MPC_Muon1_clct_bx0,
153 bits.MPC_Muon1_clct_QuarterStrip,
154 bits.MPC_Muon1_clct_EighthStrip,
163 unsigned hmt_bits =
bits.MPC_Muon_HMT_bit0 | (
bits.MPC_Muon_HMT_high << 1);
164 uint16_t cscid =
bits.cscID;
171 (hmt_bits >> 2) & 0x3,
174 CSCShowerDigi::ShowerType::kLCTShower,
181 uint16_t cscid =
bits.cscID;
185 bits.anode_hmt & 0x3, 0, cscid,
bx, CSCShowerDigi::ShowerType::kALCTShower, 0, 0);
190 uint16_t cscid =
bits.cscID;
197 CSCShowerDigi::ShowerType::kCLCTShower,
204 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
208 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
218 bits.clct0_key_low = halfStrip & (0x7F);
220 bits.clct0_key_high = (halfStrip >> 7) & (0
x1);
236 bits.clct1_key_low = halfStrip & (0x7F);
238 bits.clct1_key_high = (halfStrip >> 7) & (0
x1);
251 bits.MPC_Muon0_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
258 bits.MPC_Muon_clct_pattern_low = run3_pattern & 0xF;
259 bits.MPC_Muon_clct_pattern_bit5 = (run3_pattern >> 4) & 0
x1;
264 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
272 bits.MPC_Muon1_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
280 uint16_t clct_pattern_id =
bits.MPC_Muon_clct_pattern_low | (
bits.MPC_Muon_clct_pattern_bit5 << 4);
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) & 0
x1;
290 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
299 bits.MPC_Muon_HMT_bit0 = hmt_bits & 0x1;
300 bits.MPC_Muon_HMT_high = (hmt_bits >> 1) & 0x7;
305 bits.pop_l1a_match_win = 3;
312 bits.anode_hmt = hmt_bits;
316 bits.pop_l1a_match_win = 3;
323 bits.cathode_hmt = hmt_bits;
331 bits.pop_l1a_match_win = 3;
334 bits.pop_l1a_match_win = 3;
335 bits.hmt_match_win = 0;
340 os <<
"...............(O)TMB2020 CCLUT/HMT Header.................." 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
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";
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";
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";
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";
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";
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";
static const double slope[3]
uint16_t getQuality() const
return quality of a pattern (number of layers hit!)
uint16_t getComparatorNHits() const
uint16_t getKeyStrip(const uint16_t n=2) const
bool getEighthStripBit() const
get single eighth strip bit
uint16_t bitsOutOfTime() const
int16_t getCompCode() const
bool getQuartStripBit() const
get single quart strip bit
uint16_t getFullBX() const
return 12-bit full BX.
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
bool isValid() const
check CLCT validity (1 - valid CLCT)
uint16_t getBX() const
return BX
uint16_t bitsInTime() const
uint16_t getSlope() const
return the slope
uint16_t getRun3Pattern() const
return pattern