ROOT logo
#ifndef ALIRAWREADERFILE_H
#define ALIRAWREADERFILE_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
///
/// This is a class for reading raw data files.
///
///////////////////////////////////////////////////////////////////////////////

#include "AliRawReader.h"
#ifdef __CINT__
class fstream;
#else
#include <Riostream.h>
#endif
#include <TString.h>
using std::fstream;

class TArrayC;

class AliRawReaderFile: public AliRawReader {
  public :
    AliRawReaderFile(Int_t eventNumber = -1);
    AliRawReaderFile(const char* dirName, Int_t eventNumber = -1);
    virtual ~AliRawReaderFile();

    virtual void     RequireHeader(Bool_t required);

    virtual UInt_t   GetType() const {return fType;};
    virtual UInt_t   GetRunNumber() const {return fRunNb;};
    virtual const UInt_t* GetEventId() const {return fId;};
    virtual const UInt_t* GetTriggerPattern() const {return fTriggerPattern;};
    virtual const UInt_t* GetDetectorPattern() const {return &fDetectorPattern;};
    virtual const UInt_t* GetAttributes() const {return 0;};
    virtual const UInt_t* GetSubEventAttributes() const {return 0;};
    virtual UInt_t   GetLDCId() const {return 0;};
    virtual UInt_t   GetGDCId() const {return 0;};
    virtual UInt_t   GetTimestamp() const {return fTimestamp;};

    virtual Int_t    GetEquipmentSize() const {return fEquipmentSize;};
    virtual Int_t    GetEquipmentType() const {return 0;};
    virtual Int_t    GetEquipmentId() const {return fEquipmentId;};
    virtual const UInt_t* GetEquipmentAttributes() const {return NULL;};
    virtual Int_t    GetEquipmentElementSize() const {return 0;};
    virtual Int_t    GetEquipmentHeaderSize() const {return 0;};

    virtual Bool_t   ReadHeader();
    virtual Bool_t   ReadNextData(UChar_t*& data);
    virtual Bool_t   ReadNext(UChar_t* data, Int_t size);

    virtual Bool_t   Reset();

    virtual Bool_t   NextEvent();
    virtual Bool_t   RewindEvents();

    void             SetEventType(UInt_t type) { fType = type; }
    void             SetRunNb(UInt_t run) { fRunNb = run; }
    void             SetDetectorPattern(UInt_t pattern) { fDetectorPattern = pattern; }
 
  protected :
    TString          GetDirName() const;
    void*            OpenDirectory();
    Bool_t           OpenNextFile();
    Bool_t           CreateFileIndex();

    Int_t            fEventIndex;  // index of the event
    TString          fDirName;     // name of the input directory
    void*            fDirectory;   // pointer to the input directory
    fstream*         fStream;      // stream of raw digits
    Int_t            fEquipmentId; // equipment ID from file name
    UChar_t*         fBuffer;      // buffer for payload
    Int_t            fBufferSize;  // size of fBuffer in bytes
    Int_t            fEquipmentSize; // equipment size from raw-data payload
    TArrayC*         fDDLIndex;    //! the index of DDL files
    Int_t            fDDLCurrent;  //! the index of DDL files

    UInt_t           fType;        // event type (no idea from where to get it - put physics_event)
    UInt_t           fRunNb;       // run number (no idea from where to get it - put 0)
    UInt_t           fId[2];       // id field (read from the first CDH found, period is not filled)
    UInt_t           fTriggerPattern[4]; // the trigger class pattern (read from the first CDH found)
    UInt_t           fDetectorPattern;   // the detector pattern (no idea from where to read it)
    UInt_t           fTimestamp;   // event timestamp (read from the DDL file creation time)

  private :
    AliRawReaderFile(const AliRawReaderFile& rawReader);
    AliRawReaderFile& operator = (const AliRawReaderFile& rawReader);

    ClassDef(AliRawReaderFile, 0) // class for reading raw digits from a file
};

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