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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
///
/// This is a base class for providing access to ITS digits in raw data.
///
///////////////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include "AliITSDDLModuleMapSDD.h"
#include "AliLog.h"

class AliRawReader;


class AliITSRawStream: public TObject {
  public :
    AliITSRawStream(AliRawReader* rawReader);
    AliITSRawStream(const AliITSRawStream& stream);
    AliITSRawStream& operator = (const AliITSRawStream& stream);
    virtual ~AliITSRawStream() {};

    virtual Bool_t   Next() = 0;

    Int_t            GetModuleID() const {return fModuleID;};
    Int_t            GetPrevModuleID() const {return fPrevModuleID;};
    Bool_t           IsNewModule() const {return fModuleID != fPrevModuleID;};
    Int_t            GetCoord1() const {return fCoord1;};
    Int_t            GetCoord2() const {return fCoord2;};
    Int_t            GetSignal() const {return fSignal;};
    virtual Bool_t   IsCompletedModule() const {return fCompletedModule;}; 
    virtual Bool_t   IsCompletedDDL() const {return fCompletedDDL;}; 
    virtual void     SetDDLModuleMap(AliITSDDLModuleMapSDD* /*ddlsdd*/){
      AliError("This method must be implemented in a derived class");
    };
    virtual void     SetZeroSuppLowThreshold(Int_t /*iMod*/, Int_t /*iSid*/, Int_t /*th*/) {
      AliError("This method must be implemented in a derived class");
    };
    virtual void     SetADCEncoded(Bool_t /*fl*/) {
      AliError("This method must be implemented in a derived class");
    };


    virtual Int_t     GetCarlosId() const {
      AliError("This method must be implemented in a derived class");
      return -1;
    };
    virtual Int_t     GetChannel() const {
      AliError("This method must be implemented in a derived class");
      return -1;
    };
    virtual Int_t     GetJitter()  const {
      AliError("This method must be implemented in a derived class");
      return -1;
    }; 


  protected :
    AliRawReader*    fRawReader;    // object for reading the raw data

    Int_t            fModuleID;     // index of current module
    Int_t            fPrevModuleID; // index of previous module
    Int_t            fCoord1;       // current 1st coordinate
                                    //  SPD: column cell number (z)
                                    //  SDD: anode cell number (z)
                                    //  SSD: N/P, flag for side
    Int_t            fCoord2;       // current 2nd coordinate
                                    //  SPD: row cell number (y)
                                    //  SDD: time bin number (y)
                                    //  SSD: strip number
    Int_t            fSignal;       // signal in ADC counts
    Bool_t           fCompletedModule; // set to kTRUE when all data from a module (SDD) are read
    Bool_t           fCompletedDDL;  // set to kTRUE when all data from a DDL (SDD) are read

    ClassDef(AliITSRawStream, 2) // base class for reading ITS raw digits
};

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