// @(#) $Id$ // Author: Constantin Loizides // *-- Copyright & copy ALICE HLT Group /** \class AliHLTAltroMemHandler
//--------------------------------------------------------------------
// AliHLTAltroMemHandler
//
// 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 "AliHLTStandardIncludes.h" #include "AliHLTAltroMemHandler.h" #include "AliHLTLogging.h" #if __GNUC__ >= 3 using namespace std; #endif ClassImp(AliHLTAltroMemHandler) AliHLTAltroMemHandler::AliHLTAltroMemHandler(){ // default constructor Clear(); ClearRead(); }; void AliHLTAltroMemHandler::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 AliHLTAltroMemHandler::ClearRead(){ // clears the reading fRCounter=0; fSCounter=0; fRPad=0; fRRow=0; fRTime=0; } void AliHLTAltroMemHandler::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 AliHLTAltroMemHandler::Add(UShort_t charge, UShort_t time) { // adds new time and charge fTimesPerPad[fTCounter]=time; fChargesPerPad[fTCounter]=charge; fTCounter++; } void AliHLTAltroMemHandler::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 AliHLTAltroMemHandler::Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge) { // reads the packets if(fFlag==kTRUE) { LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::Read","File Open")<<"Binary not supported!"<