CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
sistrip::FEDBufferPayloadCreator Class Reference

#include <SiStripFEDBufferGenerator.h>

Public Member Functions

FEDBufferPayload createPayload (FEDReadoutMode mode, uint8_t packetCode, const FEDStripData &data) const
 
 FEDBufferPayloadCreator (const std::vector< bool > &enabledFEUnits, const std::vector< bool > &enabledChannels)
 
FEDBufferPayload operator() (FEDReadoutMode mode, uint8_t packetCode, const FEDStripData &data) const
 

Private Member Functions

void fillChannelBuffer (std::vector< uint8_t > *channelBuffer, FEDReadoutMode mode, uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled) const
 
void fillClusterData (std::vector< uint8_t > *channelBuffer, uint8_t packetCode, const FEDStripData::ChannelData &data, const FEDReadoutMode mode) const
 
void fillClusterDataPreMixMode (std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data) const
 
void fillPreMixRawChannelBuffer (std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data, const bool channelEnabled) const
 
void fillRawChannelBuffer (std::vector< uint8_t > *channelBuffer, const uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled, const bool reorderData) const
 
void fillZeroSuppressedChannelBuffer (std::vector< uint8_t > *channelBuffer, const uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled) const
 
void fillZeroSuppressedLiteChannelBuffer (std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data, const bool channelEnabled, const FEDReadoutMode mode) const
 

Private Attributes

std::vector< bool > channelsEnabled_
 
std::vector< bool > feUnitsEnabled_
 

Detailed Description

Definition at line 77 of file SiStripFEDBufferGenerator.h.

Constructor & Destructor Documentation

sistrip::FEDBufferPayloadCreator::FEDBufferPayloadCreator ( const std::vector< bool > &  enabledFEUnits,
const std::vector< bool > &  enabledChannels 
)
inline

Definition at line 291 of file SiStripFEDBufferGenerator.h.

292  : feUnitsEnabled_(feUnitsEnabled),
293  channelsEnabled_(channelsEnabled)
294  {}

Member Function Documentation

FEDBufferPayload sistrip::FEDBufferPayloadCreator::createPayload ( FEDReadoutMode  mode,
uint8_t  packetCode,
const FEDStripData data 
) const

Definition at line 104 of file SiStripFEDBufferGenerator.cc.

References sistrip::FEDStripData::channel(), sistrip::FEDCH_PER_FED, and sistrip::FEDCH_PER_FEUNIT.

Referenced by operator()().

105  {
106  std::vector< std::vector<uint8_t> > channelBuffers(FEDCH_PER_FED,std::vector<uint8_t>());
107  for (size_t iCh = 0; iCh < FEDCH_PER_FED; iCh++) {
108  if (!feUnitsEnabled_[iCh/FEDCH_PER_FEUNIT]) continue;
109  fillChannelBuffer(&channelBuffers[iCh], mode, packetCode, data.channel(iCh), channelsEnabled_[iCh]);
110  }
111  return FEDBufferPayload(channelBuffers);
112  }
void fillChannelBuffer(std::vector< uint8_t > *channelBuffer, FEDReadoutMode mode, uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled) const
static const uint16_t FEDCH_PER_FEUNIT
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const uint16_t FEDCH_PER_FED
void sistrip::FEDBufferPayloadCreator::fillChannelBuffer ( std::vector< uint8_t > *  channelBuffer,
FEDReadoutMode  mode,
uint8_t  packetCode,
const FEDStripData::ChannelData data,
const bool  channelEnabled 
) const
private

Definition at line 114 of file SiStripFEDBufferGenerator.cc.

References Exception, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, sistrip::PACKET_CODE_PROC_RAW, sistrip::PACKET_CODE_SCOPE, sistrip::PACKET_CODE_VIRGIN_RAW, sistrip::PACKET_CODE_VIRGIN_RAW10, sistrip::PACKET_CODE_VIRGIN_RAW8_BOTBOT, sistrip::PACKET_CODE_VIRGIN_RAW8_TOPBOT, sistrip::READOUT_MODE_PREMIX_RAW, sistrip::READOUT_MODE_PROC_RAW, sistrip::READOUT_MODE_SCOPE, sistrip::READOUT_MODE_VIRGIN_RAW, sistrip::READOUT_MODE_ZERO_SUPPRESSED, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT, and sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT_CMOVERRIDE.

115  {
116  switch (mode) {
117  case READOUT_MODE_SCOPE:
118  fillRawChannelBuffer(channelBuffer,PACKET_CODE_SCOPE,data,channelEnabled,false);
119  break;
121  switch (packetCode) {
123  fillRawChannelBuffer(channelBuffer,PACKET_CODE_VIRGIN_RAW,data,channelEnabled,true);
124  break;
126  fillRawChannelBuffer(channelBuffer,PACKET_CODE_VIRGIN_RAW10,data,channelEnabled,true);
127  break;
129  fillRawChannelBuffer(channelBuffer,PACKET_CODE_VIRGIN_RAW8_BOTBOT,data,channelEnabled,true);
130  break;
132  fillRawChannelBuffer(channelBuffer,PACKET_CODE_VIRGIN_RAW8_TOPBOT,data,channelEnabled,true);
133  break;
134  }
135  break;
137  fillRawChannelBuffer(channelBuffer,PACKET_CODE_PROC_RAW,data,channelEnabled,false);
138  break;
140  //case READOUT_MODE_ZERO_SUPPRESSED_CMOVERRIDE:
141  fillZeroSuppressedChannelBuffer(channelBuffer,packetCode,data,channelEnabled);
142  break;
151  fillZeroSuppressedLiteChannelBuffer(channelBuffer,data,channelEnabled,mode);
152  break;
154  fillPreMixRawChannelBuffer(channelBuffer,data,channelEnabled);
155  break;
156  default:
157  std::ostringstream ss;
158  ss << "Invalid readout mode " << mode;
159  throw cms::Exception("FEDBufferGenerator") << ss.str();
160  break;
161  }
162  }
static const uint8_t PACKET_CODE_SCOPE
void fillZeroSuppressedChannelBuffer(std::vector< uint8_t > *channelBuffer, const uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled) const
static const uint8_t PACKET_CODE_VIRGIN_RAW10
void fillZeroSuppressedLiteChannelBuffer(std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data, const bool channelEnabled, const FEDReadoutMode mode) const
static const uint8_t PACKET_CODE_VIRGIN_RAW8_TOPBOT
void fillRawChannelBuffer(std::vector< uint8_t > *channelBuffer, const uint8_t packetCode, const FEDStripData::ChannelData &data, const bool channelEnabled, const bool reorderData) const
static const uint8_t PACKET_CODE_PROC_RAW
static const uint8_t PACKET_CODE_VIRGIN_RAW8_BOTBOT
void fillPreMixRawChannelBuffer(std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data, const bool channelEnabled) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const uint8_t PACKET_CODE_VIRGIN_RAW
void sistrip::FEDBufferPayloadCreator::fillClusterData ( std::vector< uint8_t > *  channelBuffer,
uint8_t  packetCode,
const FEDStripData::ChannelData data,
const FEDReadoutMode  mode 
) const
private

Definition at line 323 of file SiStripFEDBufferGenerator.cc.

References ecalMGPA::adc(), sistrip::FEDStripData::ChannelData::get10BitSample(), sistrip::FEDStripData::ChannelData::get8BitSample(), hgc_digi::nSamples, sistrip::PACKET_CODE_ZERO_SUPPRESSED, sistrip::PACKET_CODE_ZERO_SUPPRESSED10, sistrip::PACKET_CODE_ZERO_SUPPRESSED8_BOTBOT, sistrip::PACKET_CODE_ZERO_SUPPRESSED8_TOPBOT, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT_CMOVERRIDE, sistrip::FEDStripData::ChannelData::size(), digitizers_cfi::strip, and sistrip::STRIPS_PER_APV.

324  {
325  // ZS lite: retrieve "packet code"
326  switch (mode) {
328  packetCode = PACKET_CODE_ZERO_SUPPRESSED;
329  break;
333  break;
337  break;
340  packetCode = PACKET_CODE_ZERO_SUPPRESSED10;
341  break;
342  default: ;
343  }
344  const bool is10Bit = ( packetCode == PACKET_CODE_ZERO_SUPPRESSED10 );
345  const uint16_t bShift = ( packetCode == PACKET_CODE_ZERO_SUPPRESSED8_BOTBOT ? 2
346  : ( packetCode == PACKET_CODE_ZERO_SUPPRESSED8_TOPBOT ? 1 : 0 ) );
347 
348  uint16_t clusterSize = 0; // counter
349  std::size_t size_pos = 0; // index of cluster size
350  uint16_t adc_pre = 0;
351  const uint16_t nSamples = data.size();
352  for( uint16_t strip = 0; strip < nSamples; ++strip) {
353  const uint16_t adc = is10Bit ? data.get10BitSample(strip) : data.get8BitSample(strip, bShift);
354  if (adc) {
355  if ( clusterSize==0 || strip == STRIPS_PER_APV ) {
356  if (clusterSize) {
357  if ( is10Bit && (clusterSize%4) ) { channelBuffer->push_back(adc_pre); }
358  (*channelBuffer)[size_pos] = clusterSize;
359  clusterSize = 0;
360  }
361  // cluster header: first strip and size
362  channelBuffer->push_back(strip);
363  size_pos = channelBuffer->size();
364  channelBuffer->push_back(0); // for clustersize
365  }
366  if ( ! is10Bit ) {
367  channelBuffer->push_back(adc & 0xFF);
368  } else {
369  if (clusterSize%4==0) {
370  channelBuffer->push_back((adc & 0x3FC) >> 2);
371  adc_pre = ((adc & 0x3) << 6);
372  } else if (clusterSize%4==1) {
373  channelBuffer->push_back(adc_pre | ((adc & 0x3F0) >> 4));
374  adc_pre = ((adc & 0xF) << 4);
375  } else if (clusterSize%4==2) {
376  channelBuffer->push_back(adc_pre | ((adc & 0x3C0) >> 6));
377  adc_pre = ((adc & 0x3F) << 2);
378  } else if (clusterSize%4==3) {
379  channelBuffer->push_back(adc_pre | ((adc & 0x300) >> 8));
380  channelBuffer->push_back(adc & 0xFF);
381  adc_pre = 0;
382  }
383  }
384  ++clusterSize;
385  }
386  else if (clusterSize) {
387  if ( is10Bit && (clusterSize%4) ) { channelBuffer->push_back(adc_pre); }
388  (*channelBuffer)[size_pos] = clusterSize;
389  clusterSize = 0;
390  }
391  }
392  if(clusterSize) {
393  (*channelBuffer)[size_pos] = clusterSize;
394  if ( is10Bit && (clusterSize%4) ) { channelBuffer->push_back(adc_pre); }
395  }
396  }
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED8_BOTBOT
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED8_TOPBOT
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED10
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
constexpr size_t nSamples
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const uint16_t STRIPS_PER_APV
void sistrip::FEDBufferPayloadCreator::fillClusterDataPreMixMode ( std::vector< uint8_t > *  channelBuffer,
const FEDStripData::ChannelData data 
) const
private

Definition at line 398 of file SiStripFEDBufferGenerator.cc.

References ecalMGPA::adc(), sistrip::FEDStripData::ChannelData::get10BitSample(), hgc_digi::nSamples, sistrip::FEDStripData::ChannelData::size(), digitizers_cfi::strip, and sistrip::STRIPS_PER_APV.

399  {
400  uint16_t clusterSize = 0;
401  const uint16_t nSamples = data.size();
402  for( uint16_t strip = 0; strip < nSamples; ++strip) {
403  const uint16_t adc = data.get10BitSample(strip);
404 
405  if(adc) {
406  if( clusterSize==0 || strip == STRIPS_PER_APV ) {
407  if(clusterSize) {
408  *(channelBuffer->end() - 2*clusterSize - 1) = clusterSize ;
409  clusterSize = 0;
410  }
411  channelBuffer->push_back(strip);
412  channelBuffer->push_back(0); //clustersize
413  }
414  channelBuffer->push_back(adc & 0xFF);
415  channelBuffer->push_back((adc & 0x0300) >> 8);
416 
417  ++clusterSize;
418  }
419 
420  else if(clusterSize) {
421  *(channelBuffer->end() - 2*clusterSize - 1) = clusterSize ;
422  clusterSize = 0;
423  }
424  }
425  if(clusterSize) {
426  *(channelBuffer->end() - 2*clusterSize - 1) = clusterSize ;
427  }
428  }
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
constexpr size_t nSamples
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const uint16_t STRIPS_PER_APV
void sistrip::FEDBufferPayloadCreator::fillPreMixRawChannelBuffer ( std::vector< uint8_t > *  channelBuffer,
const FEDStripData::ChannelData data,
const bool  channelEnabled 
) const
private

Definition at line 288 of file SiStripFEDBufferGenerator.cc.

References sistrip::FEDStripData::ChannelData::getMedians(), and sistrip::PACKET_CODE_ZERO_SUPPRESSED.

291  {
292  channelBuffer->reserve(50);
293  //if channel is disabled then create empty channel header and return
294  if (!channelEnabled) {
295  //min length 7
296  channelBuffer->push_back(7);
297  channelBuffer->push_back(0);
298  //packet code
299  channelBuffer->push_back(PACKET_CODE_ZERO_SUPPRESSED);
300  //4 bytes of medians
301  channelBuffer->insert(channelBuffer->end(),4,0);
302  return;
303  }
304  //if channel is not empty
305  //add space for channel length
306  channelBuffer->push_back(0xFF); channelBuffer->push_back(0xFF);
307  //packet code
308  channelBuffer->push_back(PACKET_CODE_ZERO_SUPPRESSED);
309  //add medians
310  const std::pair<uint16_t,uint16_t> medians = data.getMedians();
311  channelBuffer->push_back(medians.first & 0xFF);
312  channelBuffer->push_back((medians.first & 0x300) >> 8);
313  channelBuffer->push_back(medians.second & 0xFF);
314  channelBuffer->push_back((medians.second & 0x300) >> 8);
315  //clusters
316  fillClusterDataPreMixMode(channelBuffer,data);
317  //set length
318  const uint16_t length = channelBuffer->size();
319  (*channelBuffer)[0] = (length & 0xFF);
320  (*channelBuffer)[1] = ((length & 0x300) >> 8);
321  }
void fillClusterDataPreMixMode(std::vector< uint8_t > *channelBuffer, const FEDStripData::ChannelData &data) const
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void sistrip::FEDBufferPayloadCreator::fillRawChannelBuffer ( std::vector< uint8_t > *  channelBuffer,
const uint8_t  packetCode,
const FEDStripData::ChannelData data,
const bool  channelEnabled,
const bool  reorderData 
) const
private

Definition at line 164 of file SiStripFEDBufferGenerator.cc.

References sistrip::FEDStripData::ChannelData::getSample(), hgc_digi::nSamples, sistrip::PACKET_CODE_VIRGIN_RAW, sistrip::PACKET_CODE_VIRGIN_RAW10, sistrip::PACKET_CODE_VIRGIN_RAW8_BOTBOT, sistrip::PACKET_CODE_VIRGIN_RAW8_TOPBOT, sistrip::FEDStripOrdering::physicalOrderForStripInChannel(), and sistrip::FEDStripData::ChannelData::size().

169  {
170  const uint16_t nSamples = data.size();
171  uint16_t channelLength = 0;
172  switch (packetCode) {
174  channelLength = nSamples*2 + 3;
175  break;
177  channelLength = std::ceil(nSamples*1.25) + 3;
178  break;
181  channelLength = nSamples*1 + 3;
182  break;
183  }
184  channelBuffer->reserve(channelLength);
185  //length (max length is 0xFFF)
186  channelBuffer->push_back( channelLength & 0xFF );
187  channelBuffer->push_back( (channelLength & 0xF00) >> 8 );
188  //packet code
189  channelBuffer->push_back(packetCode);
190  //channel samples
191  uint16_t sampleValue_pre = 0;
192  for (uint16_t sampleNumber = 0; sampleNumber < nSamples; sampleNumber++) {
193  const uint16_t sampleIndex = ( reorderData ? FEDStripOrdering::physicalOrderForStripInChannel(sampleNumber) : sampleNumber );
194  const uint16_t sampleValue = (channelEnabled ? data.getSample(sampleIndex) : 0);
195  switch (packetCode) {
197  channelBuffer->push_back(sampleValue & 0xFF);
198  channelBuffer->push_back((sampleValue & 0x300) >> 8);
199  break;
201  if (sampleNumber%4==0) {
202  channelBuffer->push_back((sampleValue & 0x3FC) >> 2);
203  }
204  else if (sampleNumber%4==1) {
205  channelBuffer->push_back(((sampleValue_pre & 0x3) << 6) | ((sampleValue & 0x3F0) >> 4));
206  }
207  else if (sampleNumber%4==2) {
208  channelBuffer->push_back(((sampleValue_pre & 0xF) << 4) | ((sampleValue & 0x3C0) >> 6));
209  }
210  else if (sampleNumber%4==3) {
211  channelBuffer->push_back(((sampleValue_pre & 0x3F) << 2) | ((sampleValue & 0x300)>>8));
212  channelBuffer->push_back(sampleValue & 0xFF);
213  }
214  sampleValue_pre = sampleValue;
215  break;
217  channelBuffer->push_back((sampleValue & 0x3FC) >> 2);
218  break;
220  channelBuffer->push_back((sampleValue & 0x1FE) >> 1);
221  break;
222  }
223  }
224  }
static uint8_t physicalOrderForStripInChannel(const uint8_t readoutOrderStripIndexInChannel)
static const uint8_t PACKET_CODE_VIRGIN_RAW10
constexpr size_t nSamples
static const uint8_t PACKET_CODE_VIRGIN_RAW8_TOPBOT
static const uint8_t PACKET_CODE_VIRGIN_RAW8_BOTBOT
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const uint8_t PACKET_CODE_VIRGIN_RAW
void sistrip::FEDBufferPayloadCreator::fillZeroSuppressedChannelBuffer ( std::vector< uint8_t > *  channelBuffer,
const uint8_t  packetCode,
const FEDStripData::ChannelData data,
const bool  channelEnabled 
) const
private

Definition at line 226 of file SiStripFEDBufferGenerator.cc.

References sistrip::FEDStripData::ChannelData::getMedians(), and sistrip::READOUT_MODE_ZERO_SUPPRESSED.

230  {
231  channelBuffer->reserve(50);
232  //if channel is disabled then create empty channel header and return
233  if (!channelEnabled) {
234  //min length 7
235  channelBuffer->push_back(7);
236  channelBuffer->push_back(0);
237  //packet code
238  channelBuffer->push_back(packetCode);
239  //4 bytes of medians
240  channelBuffer->insert(channelBuffer->end(),4,0);
241  return;
242  }
243  //if channel is not empty
244  //add space for channel length
245  channelBuffer->push_back(0xFF);
246  channelBuffer->push_back(0xFF);
247  //packet code
248  channelBuffer->push_back(packetCode);
249  //add medians
250  const std::pair<uint16_t,uint16_t> medians = data.getMedians();
251  channelBuffer->push_back(medians.first & 0xFF);
252  channelBuffer->push_back((medians.first & 0x300) >> 8);
253  channelBuffer->push_back(medians.second & 0xFF);
254  channelBuffer->push_back((medians.second & 0x300) >> 8);
255  //clusters
256  fillClusterData(channelBuffer, packetCode, data, READOUT_MODE_ZERO_SUPPRESSED);
257  //set length
258  const uint16_t length = channelBuffer->size();
259  (*channelBuffer)[0] = (length & 0xFF);
260  (*channelBuffer)[1] = ((length & 0x300) >> 8);
261  }
void fillClusterData(std::vector< uint8_t > *channelBuffer, uint8_t packetCode, const FEDStripData::ChannelData &data, const FEDReadoutMode mode) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void sistrip::FEDBufferPayloadCreator::fillZeroSuppressedLiteChannelBuffer ( std::vector< uint8_t > *  channelBuffer,
const FEDStripData::ChannelData data,
const bool  channelEnabled,
const FEDReadoutMode  mode 
) const
private

Definition at line 263 of file SiStripFEDBufferGenerator.cc.

267  {
268  channelBuffer->reserve(50);
269  //if channel is disabled then create empty channel header and return
270  if (!channelEnabled) {
271  //min length 2
272  channelBuffer->push_back(2);
273  channelBuffer->push_back(0);
274  return;
275  }
276  //if channel is not empty
277  //add space for channel length
278  channelBuffer->push_back(0xFF);
279  channelBuffer->push_back(0xFF);
280  //clusters
281  fillClusterData(channelBuffer, 0, data, mode);
282  //set fibre length
283  const uint16_t length = channelBuffer->size();
284  (*channelBuffer)[0] = (length & 0xFF);
285  (*channelBuffer)[1] = ((length & 0x300) >> 8);
286  }
void fillClusterData(std::vector< uint8_t > *channelBuffer, uint8_t packetCode, const FEDStripData::ChannelData &data, const FEDReadoutMode mode) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
FEDBufferPayload sistrip::FEDBufferPayloadCreator::operator() ( FEDReadoutMode  mode,
uint8_t  packetCode,
const FEDStripData data 
) const
inline

Definition at line 296 of file SiStripFEDBufferGenerator.h.

References createPayload().

297  {
298  return createPayload(mode, packetCode, data);
299  }
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
FEDBufferPayload createPayload(FEDReadoutMode mode, uint8_t packetCode, const FEDStripData &data) const

Member Data Documentation

std::vector<bool> sistrip::FEDBufferPayloadCreator::channelsEnabled_
private

Definition at line 102 of file SiStripFEDBufferGenerator.h.

std::vector<bool> sistrip::FEDBufferPayloadCreator::feUnitsEnabled_
private

Definition at line 101 of file SiStripFEDBufferGenerator.h.