ROOT logo
#ifndef ALICALORAWSTREAM_H
#define ALICALORAWSTREAM_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 Calo digits in raw data.
///
///Modification: Class exported from PHOS to be used by EMCAL and PHOS
///November 2006 Gustavo Conesa Balbastre 
///////////////////////////////////////////////////////////////////////////////

// --- ROOT system ---
#include "TString.h"

// --- AliRoot header files ---
#include "AliAltroRawStream.h"
class AliRawReader;
class AliAltroMapping;

class AliCaloRawStream: public AliAltroRawStream {

public :
  AliCaloRawStream(AliRawReader* rawReader,  TString calo, AliAltroMapping **mapping = NULL);
  virtual ~AliCaloRawStream();
 
  virtual void             Reset();
  virtual Bool_t           Next();
  
  Int_t            GetModule()     const {return fModule;}
  Int_t            GetRow()        const {return fRow;}
  Int_t            GetColumn()     const {return fColumn;}
  Int_t            GetPrevModule() const {return fPrevModule;}
  Int_t            GetPrevRow()    const {return fPrevRow;}
  Int_t            GetPrevColumn() const {return fPrevColumn;}
  Bool_t           IsNewModule()   const {return GetModule() != GetPrevModule();}
  Bool_t           IsNewRow()      const {return (GetRow() != GetPrevRow()) || IsNewModule();}
  Bool_t           IsNewColumn()   const {return (GetColumn() != GetPrevColumn()) || IsNewRow();}
  Int_t            GetNRCU() const {return fNRCU;}
  Int_t            GetNSides() const {return fNSides;}
  TString          GetCalorimeter() const {return fCalo;}
  enum EAliCaloFlag { kLowGain=0, kHighGain=1, kTRUData=2, kLEDMonData=3 };
  Bool_t           IsLowGain()     const {return (fCaloFlag == kLowGain);}
  Bool_t           IsHighGain()    const {return (fCaloFlag == kHighGain);}
  Bool_t           IsTRUData()     const {return (fCaloFlag == kTRUData);}
  Bool_t           IsLEDMonData()  const {return (fCaloFlag == kLEDMonData);} 

  Int_t GetCaloFlag() const { return fCaloFlag; } 
  Int_t GetFilter() const { return fFilter; } 

  void SkipData(EAliCaloFlag caloFlag=kLEDMonData) 
    { fFilter |= (1<<caloFlag); }

protected:

  AliCaloRawStream(const AliCaloRawStream& stream);
  AliCaloRawStream& operator = (const AliCaloRawStream& stream);

  virtual void ApplyAltroMapping();

  Int_t            fModule;       // index of current module
  Int_t            fPrevModule;   // index of previous module
  Int_t            fRow;          // index of current row
  Int_t            fPrevRow;      // index of previous row
  Int_t            fColumn;       // index of current column
  Int_t            fPrevColumn;   // index of previous column
  Int_t            fCaloFlag;     // low (0) or (1) high gain; see enum EAliCaloFlag above
  Int_t            fFilter; // default 0 = let everything through
  Int_t            fNRCU;   // number of RCU per (super)module
  Int_t            fNSides;   // Division of EMCal in "A" "C" sides
  TString          fCalo; // Calorimeter name
  Bool_t           fExternalMapping;   // use external mapping or create a default one
  AliAltroMapping *fMapping[4];   // pointers to ALTRO mapping

  ClassDef(AliCaloRawStream, 1)   // class for reading PHOS/EMCAL raw digits

};

#endif

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