X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RAW%2FAliAltroBuffer.cxx;h=815cfd67b0e7cc7d4d5af5cbe7f32144135fbf25;hb=c775e261adfd7cec95edaf56da8f32dc7515aa84;hp=0b9071cd989d61ac916b6850cbf04e810b4bf47b;hpb=9a090ccd393c8347c8512e632ce54eeceed8ac1f;p=u%2Fmrichter%2FAliRoot.git diff --git a/RAW/AliAltroBuffer.cxx b/RAW/AliAltroBuffer.cxx index 0b9071cd989..815cfd67b0e 100644 --- a/RAW/AliAltroBuffer.cxx +++ b/RAW/AliAltroBuffer.cxx @@ -129,23 +129,6 @@ void AliAltroBuffer::FillBuffer(Int_t val) } } - -//_____________________________________________________________________________ -void AliAltroBuffer::WriteDummyTrailer(Int_t wordsNumber, Int_t padNumber, - Int_t rowNumber, Int_t secNumber) -{ -//Writes a trailer of 40 bits - - Int_t num = fFreeCellBuffer % 4; - for(Int_t i = 0; i < num; i++) { - FillBuffer(0x2AA); - }//end for - FillBuffer(wordsNumber); - FillBuffer(padNumber); - FillBuffer(rowNumber); - FillBuffer(secNumber); -} - //_____________________________________________________________________________ void AliAltroBuffer::WriteTrailer(Int_t wordsNumber, Int_t padNumber, Int_t rowNumber, Int_t secNumber) @@ -153,9 +136,7 @@ void AliAltroBuffer::WriteTrailer(Int_t wordsNumber, Int_t padNumber, //Writes a trailer of 40 bits if (!fMapping) { - AliError("No ALTRO mapping information is loaded! Filling a dummy trailer!"); - return WriteDummyTrailer(wordsNumber,padNumber, - rowNumber,secNumber); + AliFatal("No ALTRO mapping information is loaded!"); } Short_t hwAddress = fMapping->GetHWAddress(rowNumber,padNumber,secNumber); @@ -251,10 +232,10 @@ Int_t AliAltroBuffer::WriteBunch(Int_t nTimeBins, const Int_t* adcValues, } //_____________________________________________________________________________ -void AliAltroBuffer::WriteDataHeader(Bool_t dummy, Bool_t compressed) +void AliAltroBuffer::WriteDataHeader(Bool_t dummy, Bool_t /*compressed*/) { //Write a (dummy or real) DDL data header, -//set the compression bit if compressed +//set the attributes according to the RCU version AliRawDataHeaderSim header; if (dummy) { @@ -262,19 +243,18 @@ void AliAltroBuffer::WriteDataHeader(Bool_t dummy, Bool_t compressed) fDataHeaderPos = fFile->Tellp(); fFile->WriteBuffer((char*)(&header), sizeof(header)); } else { - WriteRCUTrailer(0); + UChar_t rcuVer = WriteRCUTrailer(0); UInt_t currentFilePos = fFile->Tellp(); fFile->Seekp(fDataHeaderPos); - header.fSize = currentFilePos-fDataHeaderPos; - header.SetAttribute(0); // valid data - if (compressed) header.SetAttribute(1); + header.fSize = 0xFFFFFFFF; // RCU can't write raw-data size so we always get an 'invalid' size field + header.fAttributesSubDetectors |= (rcuVer << 24); fFile->WriteBuffer((char*)(&header), sizeof(header)); fFile->Seekp(currentFilePos); } } //_____________________________________________________________________________ -void AliAltroBuffer::WriteRCUTrailer(Int_t rcuId) +UChar_t AliAltroBuffer::WriteRCUTrailer(Int_t rcuId) { // Writes the RCU trailer // rcuId the is serial number of the corresponding @@ -285,11 +265,11 @@ void AliAltroBuffer::WriteRCUTrailer(Int_t rcuId) UInt_t currentFilePos = fFile->Tellp(); UInt_t size = currentFilePos-fDataHeaderPos; - size -= sizeof(AliRawDataHeader); + size -= sizeof(AliRawDataHeaderV3); if ((size % 5) != 0) { AliFatal(Form("The current raw data payload is not a mutiple of 5 (%d) ! Can not write the RCU trailer !",size)); - return; + return 0; } // Now put the size in unit of number of 40bit words @@ -307,7 +287,8 @@ void AliAltroBuffer::WriteRCUTrailer(Int_t rcuId) // FOr the moment the triler size is 2 32-bit words UInt_t buffer = (2 & 0x7F); buffer |= ((rcuId & 0x1FF) << 7); - buffer |= 0xAAAA << 16; + buffer |= 0xAAAAU << 16; fFile->WriteBuffer((char *)(&buffer),sizeof(UInt_t)); + return 0; }