20 bits.nHeaderFrames = 42;
21 bits.e0bline = 0x6E0B;
22 bits.b0cline = 0xDB0C;
23 bits.firmRevCode = 0x801;
32 bits.l1aNumber = dmbHeader.
l1a();
33 bits.bxnCount = dmbHeader.
bxn();
38 std::vector<CSCCLCTDigi>
result;
39 unsigned halfstrip =
bits.clct0_key_low + (
bits.clct0_key_high << 7);
40 unsigned strip = halfstrip % 32;
41 unsigned cfeb = halfstrip / 32;
48 halfstrip =
bits.clct1_key_low + (
bits.clct1_key_high << 7);
49 strip = halfstrip % 32;
50 cfeb = halfstrip / 32;
63 std::vector<CSCCorrelatedLCTDigi>
result;
64 unsigned strip =
bits.MPC_Muon0_clct_key_halfstrip;
69 unsigned hmt =
bits.MPC_Muon_HMT_bit0 | (
bits.MPC_Muon_HMT_high << 1);
77 unsigned run3_pattern = 0;
79 unsigned run2_pattern = (
bits.MPC_Muon0_clct_bend_low & 0x7) | (
bits.MPC_Muon0_clct_bend_bit4 << 3);
82 bits.MPC_Muon0_lct_vpf,
83 bits.MPC_Muon0_lct_quality,
84 bits.MPC_Muon0_alct_key_wire,
87 bits.MPC_Muon0_clct_LR,
88 bits.MPC_Muon_alct_bxn,
90 bits.MPC_Muon0_clct_bx0,
101 strip =
bits.MPC_Muon1_clct_key_halfstrip;
109 run2_pattern = (
bits.MPC_Muon1_clct_bend_low & 0x7) | (
bits.MPC_Muon1_clct_bend_bit4 << 3);
111 bits.MPC_Muon1_lct_vpf,
112 bits.MPC_Muon1_lct_quality,
113 bits.MPC_Muon1_alct_key_wire,
116 bits.MPC_Muon1_clct_LR,
117 bits.MPC_Muon_alct_bxn,
119 bits.MPC_Muon1_clct_bx0,
133 unsigned hmt_bits =
bits.MPC_Muon_HMT_bit0 | (
bits.MPC_Muon_HMT_high << 1);
134 uint16_t cscid =
bits.cscID;
142 (hmt_bits >> 2) & 0x3,
145 CSCShowerDigi::ShowerType::kLCTShower,
152 uint16_t cscid =
bits.cscID;
156 bits.anode_hmt & 0x3, 0, cscid,
bx, CSCShowerDigi::ShowerType::kALCTShower, 0, 0);
161 uint16_t cscid =
bits.cscID;
168 CSCShowerDigi::ShowerType::kCLCTShower,
175 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
179 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
189 bits.clct0_key_low = halfStrip & (0x7F);
191 bits.clct0_key_high = (halfStrip >> 7) & (0
x1);
203 bits.clct1_key_low = halfStrip & (0x7F);
205 bits.clct1_key_high = (halfStrip >> 7) & (0
x1);
214 bits.MPC_Muon0_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
220 bits.MPC_Muon0_clct_QuarterStrip = 0;
221 bits.MPC_Muon0_clct_EighthStrip = 0;
231 bits.MPC_Muon_clct_pattern_low = 0;
232 bits.MPC_Muon_clct_pattern_bit5 = 0;
238 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
246 bits.MPC_Muon1_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
252 bits.MPC_Muon1_clct_QuarterStrip = 0;
253 bits.MPC_Muon1_clct_EighthStrip = 0;
268 bits.MPC_Muon_clct_pattern_low = 0;
269 bits.MPC_Muon_clct_pattern_bit5 = 0;
275 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
285 bits.MPC_Muon_HMT_bit0 = hmt_bits & 0x1;
286 bits.MPC_Muon_HMT_high = (hmt_bits >> 1) & 0x7;
290 bits.pop_l1a_match_win = 3;
297 bits.anode_hmt = hmt_bits;
301 bits.pop_l1a_match_win = 3;
309 bits.cathode_hmt = 0;
313 os <<
"...............(O)TMB2020 TMB Run3 Header.................." 315 os << std::hex <<
"BOC LINE " <<
bits.b0cline <<
" EOB " <<
bits.e0bline <<
"\n";
316 os << std::hex <<
"FW revision: 0x" <<
bits.firmRevCode <<
"\n";
317 os <<
std::dec <<
"fifoMode = " <<
bits.fifoMode <<
", nTBins = " <<
bits.nTBins <<
"\n";
318 os <<
"boardID = " <<
bits.boardID <<
", cscID = " <<
bits.cscID <<
"\n";
319 os <<
"l1aNumber = " <<
bits.l1aNumber <<
", bxnCount = " <<
bits.bxnCount <<
"\n";
320 os <<
"trigSourceVect = " <<
bits.trigSourceVect <<
", activeCFEBs = 0x" << std::hex
321 << (
bits.activeCFEBs | (
bits.activeCFEBs_2 << 5)) <<
", readCFEBs = 0x" << std::hex
323 os <<
"bxnPreTrigger = " <<
bits.bxnPreTrigger <<
"\n";
324 os <<
"ALCT location in CLCT window " <<
bits.matchWin <<
" L1A location in TMB window " <<
bits.pop_l1a_match_win
326 os <<
"tmbMatch = " <<
bits.tmbMatch <<
" alctOnly = " <<
bits.alctOnly <<
" clctOnly = " <<
bits.clctOnly <<
"\n";
328 os <<
"CLCT Words:\n" 329 <<
" bits.clct0_valid = " <<
bits.clct0_valid <<
" bits.clct0_shape = " <<
bits.clct0_shape
330 <<
" bits.clct0_quality = " <<
bits.clct0_quality
331 <<
" halfstrip = " << (
bits.clct0_key_low + (
bits.clct0_key_high << 7)) <<
"\n";
333 os <<
" bits.clct1_valid = " <<
bits.clct1_valid <<
" bits.clct1_shape = " <<
bits.clct1_shape
334 <<
" bits.clct1_quality = " <<
bits.clct1_quality
335 <<
" halfstrip = " << (
bits.clct1_key_low + (
bits.clct1_key_high << 7)) <<
"\n";
338 <<
" LCT0 valid = " <<
bits.MPC_Muon0_lct_vpf <<
" key WG = " <<
bits.MPC_Muon0_alct_key_wire
339 <<
" key halfstrip = " <<
bits.MPC_Muon0_clct_key_halfstrip
340 <<
" 1/4strip flag = " <<
bits.MPC_Muon0_clct_QuarterStrip
341 <<
" 1/8strip flag = " <<
bits.MPC_Muon0_clct_EighthStrip <<
"\n" 342 <<
" quality = " <<
bits.MPC_Muon0_lct_quality
343 <<
" slope/bend = " << ((
bits.MPC_Muon0_clct_bend_low & 0x7) | (
bits.MPC_Muon0_clct_bend_bit4 << 3))
344 <<
" L/R bend = " <<
bits.MPC_Muon0_clct_LR <<
"\n";
346 os <<
" LCT1 valid = " <<
bits.MPC_Muon1_lct_vpf <<
" key WG = " <<
bits.MPC_Muon1_alct_key_wire
347 <<
" key halfstrip = " <<
bits.MPC_Muon1_clct_key_halfstrip
348 <<
" 1/4strip flag = " <<
bits.MPC_Muon1_clct_QuarterStrip
349 <<
" 1/8strip flag = " <<
bits.MPC_Muon1_clct_EighthStrip <<
"\n" 350 <<
" quality = " <<
bits.MPC_Muon1_lct_quality
351 <<
" slope/bend = " << ((
bits.MPC_Muon1_clct_bend_low & 0x7) | (
bits.MPC_Muon1_clct_bend_bit4 << 3))
352 <<
" L/R bend = " <<
bits.MPC_Muon1_clct_LR <<
"\n";
354 os <<
" clct_5bit_pattern_id = " << (
bits.MPC_Muon_clct_pattern_low | (
bits.MPC_Muon_clct_pattern_bit5 << 4))
355 <<
" HMT = " << (
bits.MPC_Muon_HMT_bit0 | (
bits.MPC_Muon_HMT_high << 1)) <<
", alctHMT = " <<
bits.anode_hmt
356 <<
", clctHMT = " <<
bits.cathode_hmt <<
"\n";
static const double slope[3]
uint16_t getQuality() const
return quality of a pattern (number of layers hit!)
uint16_t getKeyStrip(const uint16_t n=2) const
uint16_t bitsOutOfTime() const
uint16_t getFullBX() const
return 12-bit full BX.
bool isValid() const
check CLCT validity (1 - valid CLCT)
uint16_t getBX() const
return BX
uint16_t getPattern() const
return pattern
uint16_t bitsInTime() const