CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes | Friends
CSCCFEBTimeSlice Class Reference

#include <CSCCFEBTimeSlice.h>

Public Member Functions

unsigned calcCRC () const
 
bool check () const
 
bool checkCRC () const
 
 CSCCFEBTimeSlice ()
 
unsigned get_buffer_count () const
 
unsigned get_buffer_warning () const
 
unsigned get_crc () const
 accessors for words 97, 98 and 99 More...
 
unsigned get_L1A_number () const
 
unsigned get_l1pipe_empty () const
 
unsigned get_l1pipe_full () const
 
unsigned get_lctpipe_count () const
 
unsigned get_lctpipe_empty () const
 
unsigned get_lctpipe_full () const
 
unsigned get_n_free_sca_blocks () const
 
CSCCFEBSCAControllerWord scaControllerWord (int layer) const
 unpacked from the controller words for each channel in the layer More...
 
void set_L1Anumber (unsigned l1a)
 
void setControllerWord (const CSCCFEBSCAControllerWord &controllerWord)
 
void setCRC ()
 =VB= Set calculated CRC value for simulated CFEB Time Slice data More...
 
bool sixteenSamples ()
 whether we keep 8 or 16 time samples More...
 
unsigned sizeInWords () const
 
CSCCFEBDataWordtimeSample (int index) const
 input from 0 to 95 More...
 
CSCCFEBDataWordtimeSample (int layer, int channel, bool isDCFEB=false) const
 layer and element count from one More...
 

Private Attributes

unsigned blank_space_1: 4
 
unsigned blank_space_3: 4
 
unsigned buffer_count: 5
 
unsigned buffer_warning: 1
 WORD 99. More...
 
unsigned crc: 16
 WORD 97. More...
 
unsigned dummy: 16
 WORD 100. More...
 
unsigned L1A_number:6
 
unsigned l1pipe_empty: 1
 
unsigned l1pipe_full: 1
 
unsigned lctpipe_count: 4
 
unsigned lctpipe_empty: 1
 
unsigned lctpipe_full: 1
 
unsigned n_free_sca_blocks: 4
 WORD 98. More...
 
unsigned short theSamples [96]
 

Friends

std::ostream & operator<< (std::ostream &os, const CSCCFEBTimeSlice &)
 

Detailed Description

Definition at line 56 of file CSCCFEBTimeSlice.h.

Constructor & Destructor Documentation

CSCCFEBTimeSlice::CSCCFEBTimeSlice ( )

Definition at line 13 of file CSCCFEBTimeSlice.cc.

References blank_space_1, and blank_space_3.

14 {
15  bzero(this, 99*2);
16  dummy = 0x7FFF;
17  blank_space_1 = 0x7;
18  blank_space_3 = 0x7;
19 }

Member Function Documentation

unsigned CSCCFEBTimeSlice::calcCRC ( ) const

Definition at line 72 of file CSCCFEBTimeSlice.cc.

References theSamples.

73 {
74  unsigned CRC=0;
75  for(uint16_t pos=0; pos<96; ++pos)
76  CRC=(theSamples[pos]&0x1fff)^((theSamples[pos]&0x1fff)<<1)^(((CRC&0x7ffc)>>2)|((0x0003&CRC)<<13))^((CRC&0x7ffc)>>1);
77  return CRC;
78 }
unsigned short theSamples[96]
bool CSCCFEBTimeSlice::check ( ) const
inline

Old CFEB format: dummy word 100 should be 0x7FFF New CFEB format: the sum of word 97 and 100 should be 0x7FFF (word 100 is inverted word 97)

Definition at line 85 of file CSCCFEBTimeSlice.h.

Referenced by CSCCFEBData::CSCCFEBData().

85 {return ((dummy == 0x7FFF)||((dummy+crc)== 0x7FFF));}
unsigned crc
WORD 97.
bool CSCCFEBTimeSlice::checkCRC ( ) const
inline

Definition at line 87 of file CSCCFEBTimeSlice.h.

87 {return crc==calcCRC();}
unsigned calcCRC() const
unsigned crc
WORD 97.
unsigned CSCCFEBTimeSlice::get_buffer_count ( ) const
inline

Definition at line 106 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

106 {return buffer_count;}
unsigned CSCCFEBTimeSlice::get_buffer_warning ( ) const
inline

Definition at line 105 of file CSCCFEBTimeSlice.h.

105 {return buffer_warning;}
unsigned buffer_warning
WORD 99.
unsigned CSCCFEBTimeSlice::get_crc ( ) const
inline

accessors for words 97, 98 and 99

Definition at line 98 of file CSCCFEBTimeSlice.h.

Referenced by CSCCFEBData::statusDigi().

98 {return crc;}
unsigned crc
WORD 97.
unsigned CSCCFEBTimeSlice::get_L1A_number ( ) const
inline

Definition at line 107 of file CSCCFEBTimeSlice.h.

107 {return L1A_number;}
unsigned CSCCFEBTimeSlice::get_l1pipe_empty ( ) const
inline

Definition at line 104 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

104 {return l1pipe_empty;}
unsigned CSCCFEBTimeSlice::get_l1pipe_full ( ) const
inline

Definition at line 102 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

102 {return l1pipe_full;}
unsigned CSCCFEBTimeSlice::get_lctpipe_count ( ) const
inline

Definition at line 100 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

100 {return lctpipe_count;}
unsigned CSCCFEBTimeSlice::get_lctpipe_empty ( ) const
inline

Definition at line 103 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

103 {return lctpipe_empty;}
unsigned CSCCFEBTimeSlice::get_lctpipe_full ( ) const
inline

Definition at line 101 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

101 {return lctpipe_full;}
unsigned CSCCFEBTimeSlice::get_n_free_sca_blocks ( ) const
inline

Definition at line 99 of file CSCCFEBTimeSlice.h.

Referenced by cscdqm::EventProcessor::processCSC().

99 {return n_free_sca_blocks;}
unsigned n_free_sca_blocks
WORD 98.
CSCCFEBSCAControllerWord CSCCFEBTimeSlice::scaControllerWord ( int  layer) const

unpacked from the controller words for each channel in the layer

Definition at line 48 of file CSCCFEBTimeSlice.cc.

References CSCCFEBDataWord::controllerData, mps_fire::i, mps_fire::result, and timeSample().

Referenced by cscdqm::EventProcessor::processCSC().

49 {
50  unsigned int result=0;
51  for(unsigned i = 0; i < 16; ++i) {
52  result |= timeSample(i*6+layer-1)->controllerData << i;
53  }
54  return CSCCFEBSCAControllerWord(result);
55 }
CSCCFEBDataWord * timeSample(int index) const
input from 0 to 95
unsigned short controllerData
combined from all 16 strips to make a word
void CSCCFEBTimeSlice::set_L1Anumber ( unsigned  l1a)
inline

Definition at line 109 of file CSCCFEBTimeSlice.h.

109 {L1A_number = l1a & 0x3F;}
void CSCCFEBTimeSlice::setControllerWord ( const CSCCFEBSCAControllerWord controllerWord)

Definition at line 58 of file CSCCFEBTimeSlice.cc.

References CSCCFEBDataWord::controllerData, and timeSample().

Referenced by CSCCFEBData::CSCCFEBData().

59 {
60  for(int layer = 1; layer <= 6; ++layer)
61  {
62  for(int channel = 1; channel <= 16; ++channel)
63  {
64  const unsigned short * shortWord = reinterpret_cast<const unsigned short *>(&controllerWord);
65  timeSample(layer, channel)->controllerData
66  = ( *shortWord >> (channel-1)) & 1;
67  }
68  }
69 }
CSCCFEBDataWord * timeSample(int index) const
input from 0 to 95
unsigned short controllerData
combined from all 16 strips to make a word
void CSCCFEBTimeSlice::setCRC ( )
inline

=VB= Set calculated CRC value for simulated CFEB Time Slice data

Definition at line 92 of file CSCCFEBTimeSlice.h.

References operator<<().

92 { crc=calcCRC(); dummy=0x7FFF-crc;}
unsigned calcCRC() const
unsigned crc
WORD 97.
bool CSCCFEBTimeSlice::sixteenSamples ( )
inline

whether we keep 8 or 16 time samples

Definition at line 73 of file CSCCFEBTimeSlice.h.

References CSCCFEBDataWord::controllerData, and cscdqm::timeSample().

Referenced by CSCCFEBData::CSCCFEBData().

73  {/*return scaControllerWord(1).ts_flag;i*/
74  return timeSample(95)->controllerData;}
CSCCFEBDataWord * timeSample(int index) const
input from 0 to 95
unsigned short controllerData
combined from all 16 strips to make a word
unsigned CSCCFEBTimeSlice::sizeInWords ( ) const
inline

Definition at line 75 of file CSCCFEBTimeSlice.h.

Referenced by CSCCFEBData::CSCCFEBData().

75 {return 100;}
CSCCFEBDataWord* CSCCFEBTimeSlice::timeSample ( int  index) const
inline
CSCCFEBDataWord * CSCCFEBTimeSlice::timeSample ( int  layer,
int  channel,
bool  isDCFEB = false 
) const

layer and element count from one

!!! Important change. Use isDCFEB flag in user code to distinguish between CFEB and DCFEB !!! Use CSCCFEBData::isDCFEB() function to get this flag from CSCCFEBData object

!! New DCFEBs don't use gray coding for channels

Definition at line 34 of file CSCCFEBTimeSlice.cc.

References channelInverseGrayCode, layerInverseGrayCode, timeSample(), and mitigatedMETSequence_cff::U.

35 {
36  assert(layer >= 1 && layer <= 6);
37  assert(channel >=1 && channel <= 16);
38  int layerIndex = layerInverseGrayCode[layer-1];
39 
40  unsigned channelIndex = channelInverseGrayCode[channel-1];
41  if (isDCFEB) channelIndex = channel-1;
42  unsigned scaBin = channelIndex*6 + layerIndex;
43  assert(scaBin < 96U); // scaBin >= 0, since scaBin is unsigned
44  return timeSample(scaBin);
45 }
const unsigned channelInverseGrayCode[]
CSCCFEBDataWord * timeSample(int index) const
input from 0 to 95
const unsigned layerInverseGrayCode[]

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const CSCCFEBTimeSlice slice 
)
friend

Definition at line 81 of file CSCCFEBTimeSlice.cc.

82 {
83  for(int ichannel = 1; ichannel <= 16; ++ichannel)
84  {
85  for(int ilayer = 1; ilayer <= 6; ++ilayer)
86  {
87  //unsigned index = (ilayer-1) + (ichannel-1)*6;
88  //int value = (slice.timeSample(index))->adcCounts - 560;
89  int value = (slice.timeSample(ilayer, ichannel))->adcCounts - 560;
90  os << " " << std::setw(5) << std::dec << value;
91  }
92  os << std::endl;
93  }
94  return os;
95 }
CSCCFEBDataWord * timeSample(int index) const
input from 0 to 95
Definition: value.py:1

Member Data Documentation

unsigned CSCCFEBTimeSlice::blank_space_1
private

Definition at line 124 of file CSCCFEBTimeSlice.h.

Referenced by CSCCFEBTimeSlice().

unsigned CSCCFEBTimeSlice::blank_space_3
private

Definition at line 131 of file CSCCFEBTimeSlice.h.

Referenced by CSCCFEBTimeSlice().

unsigned CSCCFEBTimeSlice::buffer_count
private

Definition at line 129 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::buffer_warning
private

WORD 99.

Definition at line 128 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::crc
private

WORD 97.

Definition at line 115 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::dummy
private

WORD 100.

Definition at line 134 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::L1A_number
private

Definition at line 130 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::l1pipe_empty
private

Definition at line 123 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::l1pipe_full
private

Definition at line 121 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::lctpipe_count
private

Definition at line 119 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::lctpipe_empty
private

Definition at line 122 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::lctpipe_full
private

Definition at line 120 of file CSCCFEBTimeSlice.h.

unsigned CSCCFEBTimeSlice::n_free_sca_blocks
private

WORD 98.

Definition at line 118 of file CSCCFEBTimeSlice.h.

unsigned short CSCCFEBTimeSlice::theSamples[96]
private

Definition at line 112 of file CSCCFEBTimeSlice.h.

Referenced by calcCRC().