#include "AliTOFFEEDump.h"
#include <string.h>
#include <iostream>
#include <fstream>
#include "TSystem.h"
#include "AliLog.h"
ClassImp(AliTOFFEEDump)
AliTOFFEEDump::AliTOFFEEDump() :
TObject(),
fSize(0),
fData(NULL)
{
}
#if 0
AliTOFFEEDump::AliTOFFEEDump(const AliTOFFEEDump &source) :
TObject(source),
fSize(source.fSize),
fData(NULL)
{
if (fSize == 0) return;
fData = new UChar_t[fSize];
memcpy(fData, source.fData, fSize);
}
AliTOFFEEDump &
AliTOFFEEDump::operator=(const AliTOFFEEDump &source)
{
if (source.fSize == 0 || fSize != source.fSize) return *this;
memcpy(fData, source.fData, fSize);
return *this;
}
#endif
AliTOFFEEDump::~AliTOFFEEDump()
{
if (fData) delete [] fData;
}
Bool_t
AliTOFFEEDump::operator!=(const AliTOFFEEDump &source)
{
if (fSize != source.fSize) return kTRUE;
if (memcmp(fData, source.fData, fSize) != 0) return kTRUE;
return kFALSE;
}
Bool_t
AliTOFFEEDump::ReadFromFile(const Char_t *filename)
{
Char_t *expandedFileName = gSystem->ExpandPathName(filename);
std::ifstream is;
is.open(expandedFileName, std::ios::binary);
if (!is.is_open()) {
AliError(Form("error while opening TOF FEE dump file: %s", filename));
return kFALSE;
}
AliInfo(Form("TOF FEE dump file opened: %s", filename));
Int_t begin = is.tellg();
is.seekg(0, std::ios::end);
Int_t end = is.tellg();
Int_t size = end - begin;
is.seekg(0, std::ios::beg);
if (size <= 0) {
AliError(Form("error while getting TOF FEE dump file size: %d", size));
return kFALSE;
}
AliInfo(Form("got TOF FEE dump file size: %d", size));
if (fData) {
AliWarning("data already allocated, old data will be overwritten");
delete [] fData;
}
fSize = size;
fData = new UChar_t[fSize];
is.read((Char_t *)fData, fSize);
AliInfo(Form("TOF FEE dump file stored"));
is.close();
return kTRUE;
}
void
AliTOFFEEDump::DumpData() {
printf("*** TOF FEE dump data ***\n");
printf("data size = %d bytes\n", fSize);
printf("*************************\n");
Int_t nwords = fSize / 4;
UInt_t *data = (UInt_t *)fData;
for (Int_t iword = 0; iword < nwords; iword++) {
if (iword != 0 && iword % 4 == 0) printf("\n");
printf("%08x ", data[iword]);
}
printf("\n*************************\n");
}