// @(#) $Id$ // Author: Constantin Loizides // *-- Copyright & copy ALICE HLT Group /** \class AliL3AltroMemHandler
//--------------------------------------------------------------------
// AliL3AltroMemHandler
//
// Converts digits in memory into a backlinked ALTRO like data format.
// Its output file is used as input to the various VHDL testbenches.
// The file misc/read.cxx shows how to use this class.
*/ #include "AliL3StandardIncludes.h" #include "AliL3AltroMemHandler.h" #include "AliL3Logging.h" #if __GNUC__ >= 3 using namespace std; #endif ClassImp(AliL3AltroMemHandler) AliL3AltroMemHandler::AliL3AltroMemHandler(){ // default constructor Clear(); ClearRead(); }; void AliL3AltroMemHandler::Clear(){ // clear everything memset(fAltroMem,0,ALTRO_SIZE); memset(fTimesPerPad,0,1024); memset(fChargesPerPad,0,1024); fCounter=ALTRO_SIZE; fTCounter=0; fLPad=0; fLRow=0; fFlag=kFALSE; }; void AliL3AltroMemHandler::ClearRead(){ // clears the reading fRCounter=0; fSCounter=0; fRPad=0; fRRow=0; fRTime=0; } void AliL3AltroMemHandler::Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge) { // writes packets if(fTCounter==0){ fLRow=row; fLPad=pad; } else if((fLRow!=row) || (fLPad!=pad)){ MakeAltroPackets(); //make packets Write(); //write packets Clear(); //clear up for next pad fLRow=row; fLPad=pad; } Add(charge,time); } void AliL3AltroMemHandler::Add(UShort_t charge, UShort_t time) { // adds new time and charge fTimesPerPad[fTCounter]=time; fChargesPerPad[fTCounter]=charge; fTCounter++; } void AliL3AltroMemHandler::MakeAltroPackets() { // makes Altro packets UShort_t i=0,j=0; UShort_t t=0,seqlength; UShort_t htime,ltime; while(t=ALTRO_SIZE) break; //store charges of sequence for(UShort_t k=0;k0){ MakeAltroPackets(); Write(); } } Bool_t AliL3AltroMemHandler::Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge) { // reads the packets if(fFlag==kTRUE) { LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::Read","File Open")<<"Binary not supported!"<