24 using namespace sipixelobjects;
48 : theDigiCounter(0), theWordCounter(0), theCablingTree(map), badPixelInfo(0)
52 int s8 =
sizeof(char);
53 if ( s8 != 1 || s32 != 4*s8 || s64 != 2*s32) {
55 <<
" unexpected sizes: "
56 <<
" size of char is: " << s8
57 <<
", size of Word32 is: " << s32
58 <<
", size of Word64 is: " << s64
59 <<
", send exception" ;
83 if (nWords==0)
return;
89 const Word64* trailer =
reinterpret_cast<const Word64*
>(rawData.
data())+(nWords-1);
94 const Word64* header =
reinterpret_cast<const Word64*
>(rawData.
data()); header--;
95 bool moreHeaders =
true;
100 moreHeaders = headerStatus;
104 bool moreTrailers =
true;
106 while (moreTrailers) {
110 moreTrailers = trailerStatus;
115 if (
debug)
LogTrace(
"")<<
"data words: "<< (trailer-header-1);
116 for (
const Word64* word = header+1; word != trailer; word++) {
128 LogDebug(
"PixelDataFormatter::interpretRawData")
129 <<
"status #" <<status1<<
" returned for word1";
130 errorsInEvent =
true;
138 LogDebug(
"PixelDataFormatter::interpretRawData")
139 <<
"status #" <<status2<<
" returned for word2";
140 errorsInEvent =
true;
152 vector<Word32> words;
155 for (Digis::const_iterator im = digis.begin(); im != digis.end(); im++) {
157 uint32_t rawId = im->first;
160 const DetDigis & detDigis = im->second;
161 for (DetDigis::const_iterator it = detDigis.begin(); it != detDigis.end(); it++) {
166 LogError(
"PixelDataFormatter::formatData exception")
167 <<
" digi2word returns error #"<<status
169 <<
" detector: "<<rawId<< endl
170 <<
print(digi) <<endl;
180 if (words.size() %2 != 0) words.push_back(
Word32(0) );
186 int dataSize = words.size() *
sizeof(
Word32);
189 dataSize += (nHeaders+nTrailers)*
sizeof(
Word64);
198 FEDHeader::set( reinterpret_cast<unsigned char*>(word), 0, lvl1_ID, 0, fedId);
203 for (
unsigned int i=0;
i < words.size();
i+=2) {
204 *word = (
Word64(words[
i]) << 32 ) | words[i+1];
216 if (word != reinterpret_cast<Word64* >(rawData->
data()+dataSize)) {
217 string s =
"** PROBLEM in PixelDataFormatter !!!";
225 uint32_t detId,
const PixelDigi& digi, std::vector<Word32> & words)
const
234 if (status)
return status;
242 words.push_back(word);
249 const bool includeErrors,
const bool useQuality,
const Word32 & word,
Digis & digis)
const
252 if (word == 0 )
return 0;
265 <<
" rocRow: "<<local.
rocRow()<<
", rocCol:"<<local.
rocCol()
266 <<
" (dcol: "<<cabling.
dcol<<
", pxid:"<<cabling.
pxid<<
"), adc:"<<
adc;
269 if (!converter)
return 0;
273 if (status)
return status;
283 if (badROC)
return 0;
287 digis[detIdx.
rawId].push_back(pd);
298 str <<
" DIGI: row: " << digi.
row() <<
", col: " << digi.
column() <<
", adc: " << digi.
adc();
306 str <<
"word64: " <<
reinterpret_cast<const bitset<64>&
> (word);
int adc(sample_type sample)
get the ADC sample (12 bits)
common ppss p3p6s2 common epss epspn46 common const1 w2
bool checkTrailer(bool &errorsInEvent, int fedId, int nWords, const Word64 *trailer, Errors &errors)
virtual const sipixelobjects::PixelROC * findItem(const sipixelobjects::CablingPathToDetUnit &) const =0
static MessageDrop * instance()
const ErrorChecker::Word32 DCOL_mask
bool IsRocBad(const uint32_t &detid, const short &rocNb) const
static void set(unsigned char *trailer, int evt_lgth, int crc, int evt_stat, int tts, bool T=false)
Set all fields in the trailer.
size_t size() const
Lenght of the data buffer in bytes.
identify pixel inside single ROC
bool checkROC(bool &errorsInEvent, int fedId, const SiPixelFrameConverter *converter, Word32 &errorWord, Errors &errors)
bool checkCRC(bool &errorsInEvent, int fedId, const Word64 *trailer, Errors &errors)
const ErrorChecker::Word32 ROC_mask
unsigned int idInDetUnit() const
id of this ROC in DetUnit etermined by token path
unsigned short adc() const
const ErrorChecker::Word32 PXID_mask
void setErrorStatus(bool ErrorStatus)
double collumn and pixel ID in double collumn representation
int toCabling(sipixelobjects::ElectronicIndex &cabling, const sipixelobjects::DetectorIndex &detector) const
void conversionError(int fedId, const SiPixelFrameConverter *converter, int status, Word32 &errorWord, Errors &errors)
bool hasDetUnit(uint32_t radId) const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
const ErrorChecker::Word32 LINK_mask
int toDetector(const sipixelobjects::ElectronicIndex &cabling, sipixelobjects::DetectorIndex &detector) const
bool checkHeader(bool &errorsInEvent, int fedId, const Word64 *header, Errors &errors)