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.                  *
 **************************************************************************/

// Authors:
//	 Mario Rodriguez Cahuantzi <mrodrigu@mail.cern.ch>
//	 Arturo Fernandez Tellez <afernan@mail.cern.ch>
//____________________________________________________________________
//                                                                          
// ACORDE 
// Class for reading ACORDE RAW data in TOF data format
//
#include "AliACORDERawReader.h"
#include "AliBitPacking.h"
#include "TBits.h"

#include <Riostream.h>
#include "TMath.h"
#include "TH1F.h"
#include "TArrayI.h"
#include "AliLog.h"
 
ClassImp(AliACORDERawReader)
  
AliACORDERawReader::AliACORDERawReader (AliRawReader *rawReader, Bool_t isOnline):
       TNamed("ACORDERawReader","read raw ACORDE data"),
       fRawReader(rawReader),
       fData(NULL),
       fPosition(0),
       fIsOnline(isOnline),
	fDataSize(0)
{

	fWord[0] = fWord[1] = fWord[2] = fWord[3] = 0;

}
//_____________________________________________________________________________
 AliACORDERawReader::~AliACORDERawReader ()
{
}
//_____________________________________________________________________________
Bool_t  AliACORDERawReader::Next()
{

// Read next digit from the ACORDE raw data stream;
// return kFALSE in case of error or no digits left

  if (fPosition >= 0) return kFALSE;

  if (!fRawReader->ReadNextData(fData)) return kFALSE;
  if (fRawReader->GetDataSize() == 0) return kFALSE;

  fDataSize = fRawReader->GetDataSize();
  if (fDataSize != 16) {
    fRawReader->AddFatalErrorLog(kRawDataSizeErr,Form("size %d != 16",fDataSize));
    AliWarning(Form("Wrong ACORDE raw data size: %d, expected 16 bytes!",fDataSize));
    return kFALSE;
  }

  fPosition = 0;

  for (Int_t i=0; i<4; i++)
    fWord[i] = GetNextWord();

  return kTRUE;


}
//_____________________________________________________________________________
Int_t AliACORDERawReader::GetPosition()
{
  // Sets the position in the
  // input stream
  if (((fRawReader->GetDataSize() * 8) % 32) != 0)
    AliFatal(Form("Incorrect raw data size ! %d words are found !",fRawReader->GetDataSize()));
  return (fRawReader->GetDataSize() * 8) / 32;
}
//_____________________________________________________________________________
UInt_t AliACORDERawReader::GetNextWord()
{

  // Returns the next 32 bit word inside the raw data payload.
  // The method is supposed to be endian (platform) independent.


 if (!fData || fPosition < 0)
    AliFatal("Raw data payload buffer is not yet initialized !");

  UInt_t word = 0;
  word |= fData[fPosition++];
  word |= fData[fPosition++] << 8;
  word |= fData[fPosition++] << 16;
  word |= fData[fPosition++] << 24;

  return word;

 
}

 AliACORDERawReader.cxx:1
 AliACORDERawReader.cxx:2
 AliACORDERawReader.cxx:3
 AliACORDERawReader.cxx:4
 AliACORDERawReader.cxx:5
 AliACORDERawReader.cxx:6
 AliACORDERawReader.cxx:7
 AliACORDERawReader.cxx:8
 AliACORDERawReader.cxx:9
 AliACORDERawReader.cxx:10
 AliACORDERawReader.cxx:11
 AliACORDERawReader.cxx:12
 AliACORDERawReader.cxx:13
 AliACORDERawReader.cxx:14
 AliACORDERawReader.cxx:15
 AliACORDERawReader.cxx:16
 AliACORDERawReader.cxx:17
 AliACORDERawReader.cxx:18
 AliACORDERawReader.cxx:19
 AliACORDERawReader.cxx:20
 AliACORDERawReader.cxx:21
 AliACORDERawReader.cxx:22
 AliACORDERawReader.cxx:23
 AliACORDERawReader.cxx:24
 AliACORDERawReader.cxx:25
 AliACORDERawReader.cxx:26
 AliACORDERawReader.cxx:27
 AliACORDERawReader.cxx:28
 AliACORDERawReader.cxx:29
 AliACORDERawReader.cxx:30
 AliACORDERawReader.cxx:31
 AliACORDERawReader.cxx:32
 AliACORDERawReader.cxx:33
 AliACORDERawReader.cxx:34
 AliACORDERawReader.cxx:35
 AliACORDERawReader.cxx:36
 AliACORDERawReader.cxx:37
 AliACORDERawReader.cxx:38
 AliACORDERawReader.cxx:39
 AliACORDERawReader.cxx:40
 AliACORDERawReader.cxx:41
 AliACORDERawReader.cxx:42
 AliACORDERawReader.cxx:43
 AliACORDERawReader.cxx:44
 AliACORDERawReader.cxx:45
 AliACORDERawReader.cxx:46
 AliACORDERawReader.cxx:47
 AliACORDERawReader.cxx:48
 AliACORDERawReader.cxx:49
 AliACORDERawReader.cxx:50
 AliACORDERawReader.cxx:51
 AliACORDERawReader.cxx:52
 AliACORDERawReader.cxx:53
 AliACORDERawReader.cxx:54
 AliACORDERawReader.cxx:55
 AliACORDERawReader.cxx:56
 AliACORDERawReader.cxx:57
 AliACORDERawReader.cxx:58
 AliACORDERawReader.cxx:59
 AliACORDERawReader.cxx:60
 AliACORDERawReader.cxx:61
 AliACORDERawReader.cxx:62
 AliACORDERawReader.cxx:63
 AliACORDERawReader.cxx:64
 AliACORDERawReader.cxx:65
 AliACORDERawReader.cxx:66
 AliACORDERawReader.cxx:67
 AliACORDERawReader.cxx:68
 AliACORDERawReader.cxx:69
 AliACORDERawReader.cxx:70
 AliACORDERawReader.cxx:71
 AliACORDERawReader.cxx:72
 AliACORDERawReader.cxx:73
 AliACORDERawReader.cxx:74
 AliACORDERawReader.cxx:75
 AliACORDERawReader.cxx:76
 AliACORDERawReader.cxx:77
 AliACORDERawReader.cxx:78
 AliACORDERawReader.cxx:79
 AliACORDERawReader.cxx:80
 AliACORDERawReader.cxx:81
 AliACORDERawReader.cxx:82
 AliACORDERawReader.cxx:83
 AliACORDERawReader.cxx:84
 AliACORDERawReader.cxx:85
 AliACORDERawReader.cxx:86
 AliACORDERawReader.cxx:87
 AliACORDERawReader.cxx:88
 AliACORDERawReader.cxx:89
 AliACORDERawReader.cxx:90
 AliACORDERawReader.cxx:91
 AliACORDERawReader.cxx:92
 AliACORDERawReader.cxx:93
 AliACORDERawReader.cxx:94
 AliACORDERawReader.cxx:95
 AliACORDERawReader.cxx:96
 AliACORDERawReader.cxx:97
 AliACORDERawReader.cxx:98
 AliACORDERawReader.cxx:99
 AliACORDERawReader.cxx:100
 AliACORDERawReader.cxx:101
 AliACORDERawReader.cxx:102
 AliACORDERawReader.cxx:103
 AliACORDERawReader.cxx:104
 AliACORDERawReader.cxx:105
 AliACORDERawReader.cxx:106
 AliACORDERawReader.cxx:107
 AliACORDERawReader.cxx:108
 AliACORDERawReader.cxx:109
 AliACORDERawReader.cxx:110