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);
152 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
156 throw cms::Exception(
"In CSC TMBHeaderFormat 2007, ALCTs belong in ALCT header");
166 bits.clct0_key_low = halfStrip & (0x7F);
168 bits.clct0_key_high = (halfStrip >> 7) & (0
x1);
180 bits.clct1_key_low = halfStrip & (0x7F);
182 bits.clct1_key_high = (halfStrip >> 7) & (0
x1);
191 bits.MPC_Muon0_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
197 bits.MPC_Muon0_clct_QuarterStrip = 0;
198 bits.MPC_Muon0_clct_EighthStrip = 0;
208 bits.MPC_Muon_clct_pattern_low = 0;
209 bits.MPC_Muon_clct_pattern_bit5 = 0;
215 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
223 bits.MPC_Muon1_clct_key_halfstrip = digi.
getStrip(2) & 0xFF;
229 bits.MPC_Muon1_clct_QuarterStrip = 0;
230 bits.MPC_Muon1_clct_EighthStrip = 0;
245 bits.MPC_Muon_clct_pattern_low = 0;
246 bits.MPC_Muon_clct_pattern_bit5 = 0;
252 bits.MPC_Muon_HMT_high = (digi.
getHMT() >> 1) & 0x7;
259 bits.MPC_Muon_HMT_bit0 = hmt_bits & 0x1;
260 bits.MPC_Muon_HMT_high = (hmt_bits >> 1) & 0x7;
265 bits.anode_hmt = hmt_bits;
273 bits.cathode_hmt = 0;
277 os <<
"...............(O)TMB2020 TMB Run3 Header.................." 279 os << std::hex <<
"BOC LINE " <<
bits.b0cline <<
" EOB " <<
bits.e0bline <<
"\n";
280 os << std::hex <<
"FW revision: 0x" <<
bits.firmRevCode <<
"\n";
281 os <<
std::dec <<
"fifoMode = " <<
bits.fifoMode <<
", nTBins = " <<
bits.nTBins <<
"\n";
282 os <<
"boardID = " <<
bits.boardID <<
", cscID = " <<
bits.cscID <<
"\n";
283 os <<
"l1aNumber = " <<
bits.l1aNumber <<
", bxnCount = " <<
bits.bxnCount <<
"\n";
284 os <<
"trigSourceVect = " <<
bits.trigSourceVect <<
", activeCFEBs = 0x" << std::hex
285 << (
bits.activeCFEBs | (
bits.activeCFEBs_2 << 5)) <<
", readCFEBs = 0x" << std::hex
287 os <<
"bxnPreTrigger = " <<
bits.bxnPreTrigger <<
"\n";
288 os <<
"tmbMatch = " <<
bits.tmbMatch <<
" alctOnly = " <<
bits.alctOnly <<
" clctOnly = " <<
bits.clctOnly <<
"\n";
290 os <<
"CLCT Words:\n" 291 <<
" bits.clct0_valid = " <<
bits.clct0_valid <<
" bits.clct0_shape = " <<
bits.clct0_shape
292 <<
" bits.clct0_quality = " <<
bits.clct0_quality
293 <<
" halfstrip = " << (
bits.clct0_key_low + (
bits.clct0_key_high << 7)) <<
"\n";
295 os <<
" bits.clct1_valid = " <<
bits.clct1_valid <<
" bits.clct1_shape = " <<
bits.clct1_shape
296 <<
" bits.clct1_quality = " <<
bits.clct1_quality
297 <<
" halfstrip = " << (
bits.clct1_key_low + (
bits.clct1_key_high << 7)) <<
"\n";
300 <<
" LCT0 valid = " <<
bits.MPC_Muon0_lct_vpf <<
" key WG = " <<
bits.MPC_Muon0_alct_key_wire
301 <<
" key halfstrip = " <<
bits.MPC_Muon0_clct_key_halfstrip
302 <<
" 1/4strip flag = " <<
bits.MPC_Muon0_clct_QuarterStrip
303 <<
" 1/8strip flag = " <<
bits.MPC_Muon0_clct_EighthStrip <<
"\n" 304 <<
" quality = " <<
bits.MPC_Muon0_lct_quality
305 <<
" slope/bend = " << ((
bits.MPC_Muon0_clct_bend_low & 0x7) | (
bits.MPC_Muon0_clct_bend_bit4 << 3))
306 <<
" L/R bend = " <<
bits.MPC_Muon0_clct_LR <<
"\n";
308 os <<
" LCT1 valid = " <<
bits.MPC_Muon1_lct_vpf <<
" key WG = " <<
bits.MPC_Muon1_alct_key_wire
309 <<
" key halfstrip = " <<
bits.MPC_Muon1_clct_key_halfstrip
310 <<
" 1/4strip flag = " <<
bits.MPC_Muon1_clct_QuarterStrip
311 <<
" 1/8strip flag = " <<
bits.MPC_Muon1_clct_EighthStrip <<
"\n" 312 <<
" quality = " <<
bits.MPC_Muon1_lct_quality
313 <<
" slope/bend = " << ((
bits.MPC_Muon1_clct_bend_low & 0x7) | (
bits.MPC_Muon1_clct_bend_bit4 << 3))
314 <<
" L/R bend = " <<
bits.MPC_Muon1_clct_LR <<
"\n";
316 os <<
" clct_5bit_pattern_id = " << (
bits.MPC_Muon_clct_pattern_low | (
bits.MPC_Muon_clct_pattern_bit5 << 4))
317 <<
" HMT = " << (
bits.MPC_Muon_HMT_bit0 | (
bits.MPC_Muon_HMT_high << 1)) <<
", alctHMT = " <<
bits.anode_hmt
318 <<
", 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