// $Id$ // Author: Constantin Loizides // *-- Copyright & copy CL #include "AliL3StandardIncludes.h" #include "AliL3AltroMemHandler.h" #include "AliL3Logging.h" /** \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.
//
*/ ClassImp(AliL3AltroMemHandler) AliL3AltroMemHandler::AliL3AltroMemHandler(){ Clear(); ClearRead(); }; void AliL3AltroMemHandler::Clear(){ memset(altromem,0,ALTRO_SIZE); memset(times_per_pad,0,1024); memset(charges_per_pad,0,1024); counter=ALTRO_SIZE; tcounter=0; lpad=0; lrow=0; flag=kFALSE; }; void AliL3AltroMemHandler::ClearRead(){ rcounter=0; scounter=0; rpad=0; rrow=0; rtime=0; } void AliL3AltroMemHandler::Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge) { if(tcounter==0){ lrow=row; lpad=pad; } else if((lrow!=row) || (lpad!=pad)){ MakeAltroPackets(); //make packets Write(); //write packets Clear(); //clear up for next pad lrow=row; lpad=pad; } Add(charge,time); } void AliL3AltroMemHandler::Add(UShort_t charge, UShort_t time) { times_per_pad[tcounter]=time; charges_per_pad[tcounter]=charge; tcounter++; } void AliL3AltroMemHandler::MakeAltroPackets() { 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) { if(flag==kTRUE) { LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::Read","File Open")<<"Binary not supported!"<