ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/*
  author: Roberto Preghenella (preghenella@bo.infn.it)
*/
///////////////////////////////////////////////////////////////
//                                                           //
//   This classes provide the object to store the full dump  //
//   of TOF FEE configuration database.                      //
//                                                           //
///////////////////////////////////////////////////////////////

#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)
{
  /* default constructor */
}

#if 0
//_______________________________________________________________

AliTOFFEEDump::AliTOFFEEDump(const AliTOFFEEDump &source) :
  TObject(source),
  fSize(source.fSize),
  fData(NULL)
{
  /* copy constructor */
  
  /* check size */
  if (fSize == 0) return;

  /* allocate and copy data */
  fData = new UChar_t[fSize];
  memcpy(fData, source.fData, fSize);
}

//_______________________________________________________________

AliTOFFEEDump &
AliTOFFEEDump::operator=(const AliTOFFEEDump &source)
{
  /* operator= */
  
  /* check source and destination size */
  if (source.fSize == 0 || fSize != source.fSize) return *this;

  /* copy data */
  memcpy(fData, source.fData, fSize);
  return *this;
}
#endif

//_______________________________________________________________

AliTOFFEEDump::~AliTOFFEEDump()
{
  /* default destructor */

  if (fData) delete [] fData;
}

//_______________________________________________________________

Bool_t
AliTOFFEEDump::operator!=(const AliTOFFEEDump &source)
{
  /* operator!= */
  
  /* check size */
  if (fSize != source.fSize) return kTRUE;

  /* check data */
  if (memcmp(fData, source.fData, fSize) != 0) return kTRUE;

  return kFALSE;
}

//_______________________________________________________________

Bool_t
AliTOFFEEDump::ReadFromFile(const Char_t *filename)
{
  /* read from file */

  /* open file */
  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));

  /* get file size */
  Int_t begin = is.tellg();
  is.seekg(0, std::ios::end); /* end */
  Int_t end = is.tellg();
  Int_t size = end - begin;
  is.seekg(0, std::ios::beg); /* rewind file */
  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));

  /* check previous allocation */
  if (fData) {
    AliWarning("data already allocated, old data will be overwritten");
    delete [] fData;
  }

  /* allocate and read data */
  fSize = size;
  fData = new UChar_t[fSize];
  is.read((Char_t *)fData, fSize);
  AliInfo(Form("TOF FEE dump file stored"));

  /* close file */
  is.close();

  return kTRUE;
}

//_______________________________________________________________

void
AliTOFFEEDump::DumpData() {
  /* dump data */

  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");
  
}
 AliTOFFEEDump.cxx:1
 AliTOFFEEDump.cxx:2
 AliTOFFEEDump.cxx:3
 AliTOFFEEDump.cxx:4
 AliTOFFEEDump.cxx:5
 AliTOFFEEDump.cxx:6
 AliTOFFEEDump.cxx:7
 AliTOFFEEDump.cxx:8
 AliTOFFEEDump.cxx:9
 AliTOFFEEDump.cxx:10
 AliTOFFEEDump.cxx:11
 AliTOFFEEDump.cxx:12
 AliTOFFEEDump.cxx:13
 AliTOFFEEDump.cxx:14
 AliTOFFEEDump.cxx:15
 AliTOFFEEDump.cxx:16
 AliTOFFEEDump.cxx:17
 AliTOFFEEDump.cxx:18
 AliTOFFEEDump.cxx:19
 AliTOFFEEDump.cxx:20
 AliTOFFEEDump.cxx:21
 AliTOFFEEDump.cxx:22
 AliTOFFEEDump.cxx:23
 AliTOFFEEDump.cxx:24
 AliTOFFEEDump.cxx:25
 AliTOFFEEDump.cxx:26
 AliTOFFEEDump.cxx:27
 AliTOFFEEDump.cxx:28
 AliTOFFEEDump.cxx:29
 AliTOFFEEDump.cxx:30
 AliTOFFEEDump.cxx:31
 AliTOFFEEDump.cxx:32
 AliTOFFEEDump.cxx:33
 AliTOFFEEDump.cxx:34
 AliTOFFEEDump.cxx:35
 AliTOFFEEDump.cxx:36
 AliTOFFEEDump.cxx:37
 AliTOFFEEDump.cxx:38
 AliTOFFEEDump.cxx:39
 AliTOFFEEDump.cxx:40
 AliTOFFEEDump.cxx:41
 AliTOFFEEDump.cxx:42
 AliTOFFEEDump.cxx:43
 AliTOFFEEDump.cxx:44
 AliTOFFEEDump.cxx:45
 AliTOFFEEDump.cxx:46
 AliTOFFEEDump.cxx:47
 AliTOFFEEDump.cxx:48
 AliTOFFEEDump.cxx:49
 AliTOFFEEDump.cxx:50
 AliTOFFEEDump.cxx:51
 AliTOFFEEDump.cxx:52
 AliTOFFEEDump.cxx:53
 AliTOFFEEDump.cxx:54
 AliTOFFEEDump.cxx:55
 AliTOFFEEDump.cxx:56
 AliTOFFEEDump.cxx:57
 AliTOFFEEDump.cxx:58
 AliTOFFEEDump.cxx:59
 AliTOFFEEDump.cxx:60
 AliTOFFEEDump.cxx:61
 AliTOFFEEDump.cxx:62
 AliTOFFEEDump.cxx:63
 AliTOFFEEDump.cxx:64
 AliTOFFEEDump.cxx:65
 AliTOFFEEDump.cxx:66
 AliTOFFEEDump.cxx:67
 AliTOFFEEDump.cxx:68
 AliTOFFEEDump.cxx:69
 AliTOFFEEDump.cxx:70
 AliTOFFEEDump.cxx:71
 AliTOFFEEDump.cxx:72
 AliTOFFEEDump.cxx:73
 AliTOFFEEDump.cxx:74
 AliTOFFEEDump.cxx:75
 AliTOFFEEDump.cxx:76
 AliTOFFEEDump.cxx:77
 AliTOFFEEDump.cxx:78
 AliTOFFEEDump.cxx:79
 AliTOFFEEDump.cxx:80
 AliTOFFEEDump.cxx:81
 AliTOFFEEDump.cxx:82
 AliTOFFEEDump.cxx:83
 AliTOFFEEDump.cxx:84
 AliTOFFEEDump.cxx:85
 AliTOFFEEDump.cxx:86
 AliTOFFEEDump.cxx:87
 AliTOFFEEDump.cxx:88
 AliTOFFEEDump.cxx:89
 AliTOFFEEDump.cxx:90
 AliTOFFEEDump.cxx:91
 AliTOFFEEDump.cxx:92
 AliTOFFEEDump.cxx:93
 AliTOFFEEDump.cxx:94
 AliTOFFEEDump.cxx:95
 AliTOFFEEDump.cxx:96
 AliTOFFEEDump.cxx:97
 AliTOFFEEDump.cxx:98
 AliTOFFEEDump.cxx:99
 AliTOFFEEDump.cxx:100
 AliTOFFEEDump.cxx:101
 AliTOFFEEDump.cxx:102
 AliTOFFEEDump.cxx:103
 AliTOFFEEDump.cxx:104
 AliTOFFEEDump.cxx:105
 AliTOFFEEDump.cxx:106
 AliTOFFEEDump.cxx:107
 AliTOFFEEDump.cxx:108
 AliTOFFEEDump.cxx:109
 AliTOFFEEDump.cxx:110
 AliTOFFEEDump.cxx:111
 AliTOFFEEDump.cxx:112
 AliTOFFEEDump.cxx:113
 AliTOFFEEDump.cxx:114
 AliTOFFEEDump.cxx:115
 AliTOFFEEDump.cxx:116
 AliTOFFEEDump.cxx:117
 AliTOFFEEDump.cxx:118
 AliTOFFEEDump.cxx:119
 AliTOFFEEDump.cxx:120
 AliTOFFEEDump.cxx:121
 AliTOFFEEDump.cxx:122
 AliTOFFEEDump.cxx:123
 AliTOFFEEDump.cxx:124
 AliTOFFEEDump.cxx:125
 AliTOFFEEDump.cxx:126
 AliTOFFEEDump.cxx:127
 AliTOFFEEDump.cxx:128
 AliTOFFEEDump.cxx:129
 AliTOFFEEDump.cxx:130
 AliTOFFEEDump.cxx:131
 AliTOFFEEDump.cxx:132
 AliTOFFEEDump.cxx:133
 AliTOFFEEDump.cxx:134
 AliTOFFEEDump.cxx:135
 AliTOFFEEDump.cxx:136
 AliTOFFEEDump.cxx:137
 AliTOFFEEDump.cxx:138
 AliTOFFEEDump.cxx:139
 AliTOFFEEDump.cxx:140
 AliTOFFEEDump.cxx:141
 AliTOFFEEDump.cxx:142
 AliTOFFEEDump.cxx:143
 AliTOFFEEDump.cxx:144
 AliTOFFEEDump.cxx:145
 AliTOFFEEDump.cxx:146
 AliTOFFEEDump.cxx:147
 AliTOFFEEDump.cxx:148
 AliTOFFEEDump.cxx:149
 AliTOFFEEDump.cxx:150
 AliTOFFEEDump.cxx:151
 AliTOFFEEDump.cxx:152
 AliTOFFEEDump.cxx:153
 AliTOFFEEDump.cxx:154
 AliTOFFEEDump.cxx:155
 AliTOFFEEDump.cxx:156
 AliTOFFEEDump.cxx:157
 AliTOFFEEDump.cxx:158
 AliTOFFEEDump.cxx:159
 AliTOFFEEDump.cxx:160
 AliTOFFEEDump.cxx:161
 AliTOFFEEDump.cxx:162
 AliTOFFEEDump.cxx:163
 AliTOFFEEDump.cxx:164
 AliTOFFEEDump.cxx:165
 AliTOFFEEDump.cxx:166
 AliTOFFEEDump.cxx:167
 AliTOFFEEDump.cxx:168