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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
///
/// This class provides access to PMD digits in raw data.
///
///////////////////////////////////////////////////////////////////////////////

#include <TObject.h>

class AliRawReader;
class AliCDBManager;
class AliCDBStorage;
class AliCDBEntry;
class AliPMDMappingData;


class AliPMDRawStream: public TObject {
  public :
    AliPMDRawStream(AliRawReader* rawReader);
    virtual ~AliPMDRawStream();

    Int_t DdlData(TObjArray *pmdddlcont);

    enum {kDDLOffset = 0xC00};      // offset for DDL numbers

    enum EPMDRawStreamError {
      kDDLIndexMismatch = 1,
      kNoMappingFile = 2,
      kParityError = 3
    };

  private :
    AliPMDRawStream(const AliPMDRawStream& stream);
    AliPMDRawStream& operator = (const AliPMDRawStream& stream);

    void             GetRowCol(Int_t imodule, Int_t pbusid, 
			       UInt_t mcmno, UInt_t chno,
			       Int_t startRowBus[], Int_t endRowBus[],
			       Int_t startColBus[], Int_t endColBus[],
			       Int_t &row, Int_t &col) const;
    void             ConvertDDL2SMN(Int_t iddl, Int_t imodule,
				    Int_t &smn, Int_t &detector) const;
    void             TransformH2S(Int_t smn, Int_t &row, Int_t &col) const;
    Int_t            ComputeParity(UInt_t data1);
    UInt_t           GetNextWord();
    void             Ddl0Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);
    void             Ddl1Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);
    void             Ddl2Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);
    void             Ddl3Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);
    void             Ddl4Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);
    void             Ddl5Mapping(Int_t moduleNo[],    Int_t mcmperBus[],
				 Int_t startRowBus[], Int_t endRowBus[],
				 Int_t startColBus[], Int_t endColBus[]);

    AliPMDMappingData *GetMappingData() const;

    AliRawReader*    fRawReader;    // object for reading the raw data
    UChar_t*         fData;         // pointer to the data
    Int_t            fPosition;

    AliPMDMappingData  *fMapData;   //! Mapping data

    ClassDef(AliPMDRawStream, 8)    // class for reading PMD raw digits
};

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