CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Public Attributes
HCalFED Class Reference

#include <PackerHelp.h>

Public Types

typedef std::vector< uint16_t > uhtrData
 

Public Member Functions

void addAMCHeader (uint64_t crate, uint64_t slot, uint64_t AMCsize, uint64_t presamples=10, uint64_t blockNum=0)
 
void addUHTR (uhtrData uhtr, uint64_t crate, uint64_t slot)
 
void formatFEDdata (FEDRawData &rawData)
 
 HCalFED (int fedId_, uint64_t EventNum_=9999, uint64_t OrbitNum_=999, uint64_t BxNum_=99)
 
void setAMC13Header ()
 
void setCDFHeader ()
 
void setNAMC (uint64_t NAMC)
 
void split64bitTo8bit (std::vector< unsigned char > &outVec, const uint64_t &var64bit)
 

Public Attributes

uint64_t AMC13Header
 
std::vector< uint64_t > AMCHeaders
 
uint64_t BxNum
 
unsigned char cdfh [8]
 
uint64_t cdfHeader
 
uint64_t Crate
 
uint64_t EventNum
 
std::vector< unsigned char > fedData
 
int fedId
 
uint64_t OrbitNum
 
FEDHeaderrawFEDHeader
 
std::vector< uhtrDatauhtrs
 

Detailed Description

Definition at line 162 of file PackerHelp.h.

Member Typedef Documentation

typedef std::vector<uint16_t> HCalFED::uhtrData

Definition at line 166 of file PackerHelp.h.

Constructor & Destructor Documentation

HCalFED::HCalFED ( int  fedId_,
uint64_t  EventNum_ = 9999,
uint64_t  OrbitNum_ = 999,
uint64_t  BxNum_ = 99 
)
inline

Definition at line 181 of file PackerHelp.h.

References FEDNumbering::MINHCALuTCAFEDID.

181  {
182  fedId = fedId_;
183  OrbitNum = OrbitNum_;
184  EventNum = EventNum_;
185  BxNum = BxNum_;
187 
188  setCDFHeader();
189  setAMC13Header();
190 
191  };
void setCDFHeader()
Definition: PackerHelp.h:199
uint64_t OrbitNum
Definition: PackerHelp.h:173
int fedId
Definition: PackerHelp.h:171
uint64_t Crate
Definition: PackerHelp.h:176
uint64_t BxNum
Definition: PackerHelp.h:175
uint64_t EventNum
Definition: PackerHelp.h:174
void setAMC13Header()
Definition: PackerHelp.h:212

Member Function Documentation

void HCalFED::addAMCHeader ( uint64_t  crate,
uint64_t  slot,
uint64_t  AMCsize,
uint64_t  presamples = 10,
uint64_t  blockNum = 0 
)
inline

Definition at line 228 of file PackerHelp.h.

References RecoTauValidation_cfi::header, AMCHeaderSpec::MASK_AMC_NO, AMCHeaderSpec::MASK_AMCN_SIZE, AMCHeaderSpec::MASK_BLK_NO, AMCHeaderSpec::MASK_CRATE_ID, AMCHeaderSpec::MASK_PRESAMPLES, AMCHeaderSpec::MASK_SLOT_ID, AMCHeaderSpec::OFFSET_AMC_NO, AMCHeaderSpec::OFFSET_AMCN_SIZE, AMCHeaderSpec::OFFSET_BLK_NO, AMCHeaderSpec::OFFSET_C, AMCHeaderSpec::OFFSET_CRATE_ID, AMCHeaderSpec::OFFSET_E, AMCHeaderSpec::OFFSET_L, AMCHeaderSpec::OFFSET_M, AMCHeaderSpec::OFFSET_P, AMCHeaderSpec::OFFSET_PRESAMPLES, AMCHeaderSpec::OFFSET_S, AMCHeaderSpec::OFFSET_SLOT_ID, AMCHeaderSpec::OFFSET_V, hcalTTPDigis_cfi::presamples, and globals_cff::x1.

228  {
229 
230  uint64_t header = 0 ;
234  header |= (slot&AMCHeaderSpec::MASK_AMC_NO)<<AMCHeaderSpec::OFFSET_AMC_NO ; // AMC no.
235  header |= (blockNum&AMCHeaderSpec::MASK_BLK_NO)<<AMCHeaderSpec::OFFSET_BLK_NO ; // Block No.
236  header |= (AMCsize&AMCHeaderSpec::MASK_AMCN_SIZE)<<AMCHeaderSpec::OFFSET_AMCN_SIZE ; // size
237  header |= uint64_t(0x1)<<AMCHeaderSpec::OFFSET_C ; // CRC is valid
238  header |= uint64_t(0x1)<<AMCHeaderSpec::OFFSET_V ; // EvN, BcN match
239  header |= uint64_t(0x1)<<AMCHeaderSpec::OFFSET_P ; // Present, header is only made if data is present
240  header |= uint64_t(0x1)<<AMCHeaderSpec::OFFSET_E ; // Enabled, header is only made if AMC is enabled
241  header |= uint64_t(0x0)<<AMCHeaderSpec::OFFSET_S ; // Segmented, always zero for unsegmented data
242  header |= uint64_t(0x0)<<AMCHeaderSpec::OFFSET_M ; // More data
243  header |= uint64_t(0x0)<<AMCHeaderSpec::OFFSET_L ; // Indicates length error
244 
245  AMCHeaders.push_back( header );
246 
247  }
static const int MASK_BLK_NO
Definition: PackerHelp.h:62
static const int OFFSET_CRATE_ID
Definition: PackerHelp.h:53
static const int OFFSET_BLK_NO
Definition: PackerHelp.h:61
static const int OFFSET_PRESAMPLES
Definition: PackerHelp.h:57
static const int MASK_CRATE_ID
Definition: PackerHelp.h:54
static const int MASK_PRESAMPLES
Definition: PackerHelp.h:58
std::vector< uint64_t > AMCHeaders
Definition: PackerHelp.h:169
static const int OFFSET_M
Definition: PackerHelp.h:77
static const int OFFSET_C
Definition: PackerHelp.h:67
static const int OFFSET_E
Definition: PackerHelp.h:73
static const int OFFSET_AMCN_SIZE
Definition: PackerHelp.h:65
static const int OFFSET_AMC_NO
Definition: PackerHelp.h:59
static const int MASK_AMC_NO
Definition: PackerHelp.h:60
unsigned long long uint64_t
Definition: Time.h:15
static const int OFFSET_V
Definition: PackerHelp.h:69
static const int MASK_SLOT_ID
Definition: PackerHelp.h:56
static const int OFFSET_S
Definition: PackerHelp.h:75
static const int OFFSET_P
Definition: PackerHelp.h:71
static const int OFFSET_L
Definition: PackerHelp.h:79
static const int OFFSET_SLOT_ID
Definition: PackerHelp.h:55
static const int MASK_AMCN_SIZE
Definition: PackerHelp.h:66
void HCalFED::addUHTR ( uhtrData  uhtr,
uint64_t  crate,
uint64_t  slot 
)
inline

Definition at line 249 of file PackerHelp.h.

249  {
250  // push uhtr data into FED container
251  uhtrs.push_back(uhtr);
252  // create the corresponding AMC header
253  addAMCHeader( crate , slot , uhtr.size()/4 );
254  };
std::vector< uhtrData > uhtrs
Definition: PackerHelp.h:170
void addAMCHeader(uint64_t crate, uint64_t slot, uint64_t AMCsize, uint64_t presamples=10, uint64_t blockNum=0)
Definition: PackerHelp.h:228
void HCalFED::formatFEDdata ( FEDRawData rawData)
inline

Definition at line 257 of file PackerHelp.h.

References FEDRawData::data(), mps_fire::i, and FEDRawData::resize().

257  {
258 
259  //std::vector<unsigned char> output;
260  if( uhtrs.size() != AMCHeaders.size() ){
261  return;
262  }
263 
264  // put common data format header in fed container
266 
267  // set the number of AMCs in the AMC13 header
268  setNAMC(uhtrs.size());
269  // put the AMC13 header into the fed container
271 
272  // fill fedData with AMC headers
273  for( unsigned int iAMC = 0 ; iAMC < AMCHeaders.size() ; ++iAMC ){
274  // adjust the AMCsize bits to match uhtr header
275  //AMCHeaders[iAMC] |= uint64_t(uhtrs[iAMC][1]&0xF)<<51 ;
276  //AMCHeaders[iAMC] |= uint64_t(uhtrs[iAMC][0]&0xFFFF)<<47 ;
278  }
279 
280  // fill fedData with AMC data
281  for( unsigned int iAMC = 0 ; iAMC<uhtrs.size() ; ++iAMC ){
282 
283  unsigned int nWords16 = uhtrs[iAMC].size();
284  for( unsigned int amcWord = 0 ; amcWord<nWords16 ; ++amcWord ){
285  fedData.push_back((uhtrs[iAMC][amcWord]>>0 )&0xFF); // split 16-bit words into 8-bit
286  fedData.push_back((uhtrs[iAMC][amcWord]>>8 )&0xFF);
287  }// end loop over uhtr words
288  }// end loop over uhtrs
289 
290  // fedData should be a integer number of 64 bit words
291  while( fedData.size()%8 != 0 )
292  fedData.push_back(0);
293 
294  // convert to the correct format
295  rawData.resize(fedData.size());
296  unsigned char* words = reinterpret_cast<unsigned char*>(rawData.data());
297 
298  for( unsigned int i = 0 ; i < fedData.size() ; ++i ){
299  *words = fedData[i];
300  words++;
301  }
302 
303  };
uint64_t AMC13Header
Definition: PackerHelp.h:172
std::vector< uhtrData > uhtrs
Definition: PackerHelp.h:170
std::vector< unsigned char > fedData
Definition: PackerHelp.h:168
uint64_t cdfHeader
Definition: PackerHelp.h:172
void setNAMC(uint64_t NAMC)
Definition: PackerHelp.h:224
std::vector< uint64_t > AMCHeaders
Definition: PackerHelp.h:169
void resize(size_t newsize)
Definition: FEDRawData.cc:32
void split64bitTo8bit(std::vector< unsigned char > &outVec, const uint64_t &var64bit)
Definition: PackerHelp.h:193
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
void HCalFED::setAMC13Header ( )
inline

Definition at line 212 of file PackerHelp.h.

References AMC13HeaderSpec::FIXED_LSB, AMC13HeaderSpec::MASK_FIXED_LSB, AMC13HeaderSpec::MASK_NAMC, AMC13HeaderSpec::MASK_ORN, AMC13HeaderSpec::MASK_RES, AMC13HeaderSpec::MASK_RESERVED, AMC13HeaderSpec::MASK_UFOV, AMC13HeaderSpec::OFFSET_FIXED_LSB, AMC13HeaderSpec::OFFSET_NAMC, AMC13HeaderSpec::OFFSET_ORN, AMC13HeaderSpec::OFFSET_RES, AMC13HeaderSpec::OFFSET_RESERVED, AMC13HeaderSpec::OFFSET_UFOV, and globals_cff::x1.

212  {
213 
214  AMC13Header = 0;
221 
222  }
uint64_t AMC13Header
Definition: PackerHelp.h:172
static const int MASK_RESERVED
Definition: PackerHelp.h:43
static const int FIXED_LSB
Definition: PackerHelp.h:39
static const int OFFSET_RESERVED
Definition: PackerHelp.h:42
uint64_t OrbitNum
Definition: PackerHelp.h:173
static const int MASK_ORN
Definition: PackerHelp.h:41
static const int OFFSET_RES
Definition: PackerHelp.h:46
static const int OFFSET_FIXED_LSB
Definition: PackerHelp.h:37
static const int MASK_FIXED_LSB
Definition: PackerHelp.h:38
unsigned long long uint64_t
Definition: Time.h:15
static const int MASK_RES
Definition: PackerHelp.h:47
static const int OFFSET_ORN
Definition: PackerHelp.h:40
static const int MASK_UFOV
Definition: PackerHelp.h:49
static const int OFFSET_NAMC
Definition: PackerHelp.h:44
static const int OFFSET_UFOV
Definition: PackerHelp.h:48
static const int MASK_NAMC
Definition: PackerHelp.h:45
void HCalFED::setCDFHeader ( )
inline

Definition at line 199 of file PackerHelp.h.

References l1t::stage2::layer2::fedId, CDFHeaderSpec::FIXED_MSB, CDFHeaderSpec::MASK_BX_ID, CDFHeaderSpec::MASK_EVT_TY, CDFHeaderSpec::MASK_FIXED_MSB, CDFHeaderSpec::MASK_FOV, CDFHeaderSpec::MASK_H, CDFHeaderSpec::MASK_LV1_ID, CDFHeaderSpec::MASK_SOURCE_ID, CDFHeaderSpec::OFFSET_BX_ID, CDFHeaderSpec::OFFSET_EVT_TY, CDFHeaderSpec::OFFSET_FIXED_MSB, CDFHeaderSpec::OFFSET_FOV, CDFHeaderSpec::OFFSET_H, CDFHeaderSpec::OFFSET_LV1_ID, CDFHeaderSpec::OFFSET_SOURCE_ID, and globals_cff::x1.

199  {
200 
201  cdfHeader = 0 ;
205  cdfHeader |= (BxNum&CDFHeaderSpec::MASK_BX_ID)<<CDFHeaderSpec::OFFSET_BX_ID; // needs to be configurable
209 
210  }
static const int MASK_H
Definition: PackerHelp.h:20
static const uint64_t OFFSET_LV1_ID
Definition: PackerHelp.h:27
static const int MASK_FOV
Definition: PackerHelp.h:22
static const int MASK_FIXED_MSB
Definition: PackerHelp.h:32
static const int MASK_SOURCE_ID
Definition: PackerHelp.h:24
uint64_t cdfHeader
Definition: PackerHelp.h:172
static const int OFFSET_SOURCE_ID
Definition: PackerHelp.h:23
static const int OFFSET_FOV
Definition: PackerHelp.h:21
static const int OFFSET_FIXED_MSB
Definition: PackerHelp.h:31
int fedId
Definition: PackerHelp.h:171
static const int OFFSET_EVT_TY
Definition: PackerHelp.h:29
static const uint64_t FIXED_MSB
Definition: PackerHelp.h:33
static const int MASK_BX_ID
Definition: PackerHelp.h:26
unsigned long long uint64_t
Definition: Time.h:15
static const int MASK_EVT_TY
Definition: PackerHelp.h:30
uint64_t BxNum
Definition: PackerHelp.h:175
static const int MASK_LV1_ID
Definition: PackerHelp.h:28
static const int OFFSET_H
Definition: PackerHelp.h:19
static const int OFFSET_BX_ID
Definition: PackerHelp.h:25
void HCalFED::setNAMC ( uint64_t  NAMC)
inline

Definition at line 224 of file PackerHelp.h.

References AMC13HeaderSpec::MASK_NAMC, and AMC13HeaderSpec::OFFSET_NAMC.

224  {
226  }
uint64_t AMC13Header
Definition: PackerHelp.h:172
static const int OFFSET_NAMC
Definition: PackerHelp.h:44
static const int MASK_NAMC
Definition: PackerHelp.h:45
void HCalFED::split64bitTo8bit ( std::vector< unsigned char > &  outVec,
const uint64_t &  var64bit 
)
inline

Definition at line 193 of file PackerHelp.h.

193  {
194  for(int is=0; is<8; is++){ // 64/8 = 8
195  outVec.push_back( (var64bit>> (is*8) ) & 0xFF);
196  }
197  }

Member Data Documentation

uint64_t HCalFED::AMC13Header

Definition at line 172 of file PackerHelp.h.

std::vector<uint64_t> HCalFED::AMCHeaders

Definition at line 169 of file PackerHelp.h.

uint64_t HCalFED::BxNum

Definition at line 175 of file PackerHelp.h.

unsigned char HCalFED::cdfh[8]

Definition at line 178 of file PackerHelp.h.

uint64_t HCalFED::cdfHeader

Definition at line 172 of file PackerHelp.h.

uint64_t HCalFED::Crate

Definition at line 176 of file PackerHelp.h.

uint64_t HCalFED::EventNum

Definition at line 174 of file PackerHelp.h.

std::vector<unsigned char> HCalFED::fedData

Definition at line 168 of file PackerHelp.h.

int HCalFED::fedId

Definition at line 171 of file PackerHelp.h.

uint64_t HCalFED::OrbitNum

Definition at line 173 of file PackerHelp.h.

FEDHeader* HCalFED::rawFEDHeader

Definition at line 179 of file PackerHelp.h.

std::vector<uhtrData> HCalFED::uhtrs

Definition at line 170 of file PackerHelp.h.