ROOT logo
#ifndef ALIRAWREADERROOT_H
#define ALIRAWREADERROOT_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 from a root file.
///
///////////////////////////////////////////////////////////////////////////////

#include "AliRawReader.h"

class AliRawVEvent;
class AliRawVEquipment;
class AliRawData;
class TFile;
class TBranch;


class AliRawReaderRoot: public AliRawReader {
  public :
    AliRawReaderRoot();
    AliRawReaderRoot(const char* fileName, Int_t eventNumber = -1);
    AliRawReaderRoot(AliRawVEvent* event);
    AliRawReaderRoot(const AliRawReaderRoot& rawReader);
    AliRawReaderRoot& operator = (const AliRawReaderRoot& rawReader);
    virtual ~AliRawReaderRoot();

    virtual const AliRawEventHeaderBase* GetEventHeader() const;

    virtual UInt_t   GetType() const;
    virtual UInt_t   GetRunNumber() const;
    virtual const UInt_t* GetEventId() const;
    virtual const UInt_t* GetTriggerPattern() const;
    virtual const UInt_t* GetDetectorPattern() const;
    virtual const UInt_t* GetAttributes() const;
    virtual const UInt_t* GetSubEventAttributes() const;
    virtual UInt_t   GetLDCId() const;
    virtual UInt_t   GetGDCId() const;
    virtual UInt_t   GetTimestamp() const;

    virtual Int_t    GetEquipmentSize() const;
    virtual Int_t    GetEquipmentType() const;
    virtual Int_t    GetEquipmentId() const;
    virtual const UInt_t* GetEquipmentAttributes() const;
    virtual Int_t    GetEquipmentElementSize() const;
    virtual Int_t    GetEquipmentHeaderSize() const;

    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();
    virtual Bool_t   GotoEvent(Int_t event);
    virtual Int_t    GetEventIndex() const { return fEventIndex; }
    virtual Int_t    GetNumberOfEvents() const;

    virtual Int_t    CheckData() const;

    virtual const AliRawVEvent* GetEvent() const {return fEvent;}

    virtual AliRawReader* CloneSingleEvent() const;
    static Bool_t           GetUseOrder() {return fgUseOrder;}
    static void             UseOrder() {fgUseOrder = kTRUE;}

  protected :
    TFile*           fFile;         // raw data root file
    TBranch*         fBranch;       // branch of raw events
    Int_t            fEventIndex;   // index of the event in the tree
    AliRawVEvent*    fEvent;        // (super) event
    AliRawEventHeaderBase* fEventHeader; // (super) event header
    Int_t            fSubEventIndex; // index of current sub event
    AliRawVEvent*    fSubEvent;     // current sub event
    Int_t            fEquipmentIndex; // index of current equipment
    AliRawVEquipment*fEquipment;    // current equipment
    AliRawData*      fRawData;      // current raw data
    UChar_t*         fPosition;     // current position in the raw data
    UChar_t*         fEnd;          // end position of the current subevent
    Long64_t*        fIndex;       // Index of the tree
    static Bool_t    fgUseOrder;       // Flag to use or not sorting in decreased size order

    void SwapData(const void* inbuf, const void* outbuf, UInt_t size);
    void MakeIndex();


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

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