ROOT logo
#ifndef ALICALORAWSTREAMV3_H
#define ALICALORAWSTREAMV3_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.
///
/// Yuri Kharlov. 23 June 2009
/// 
///////////////////////////////////////////////////////////////////////////////

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

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

class AliCaloRawStreamV3: public AliAltroRawStreamV3 {

public :
  AliCaloRawStreamV3(AliRawReader* rawReader, TString calo, AliAltroMapping **mapping = NULL);
  virtual ~AliCaloRawStreamV3();
  
  virtual void             Reset();
  virtual Bool_t           NextChannel();
  
  Int_t   GetModule()      const {return fModule;}
  Int_t   GetRow()         const {return fRow   ;} // EMCAL notation
  Int_t   GetColumn()      const {return fColumn;} // EMCAL notation
  Int_t   GetCellX()       const {return fRow   ;} // PHOS notation
  Int_t   GetCellZ()       const {return fColumn;} // PHOS notation
  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; } 

protected:

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

  virtual void ApplyAltroMapping();

  Int_t            fModule;   // index of current module
  Int_t            fRow;      // index of current row
  Int_t            fColumn;   // index of current column
  Int_t            fCaloFlag; // low (0) or (1) high gain; see enum EAliCaloFlag above
  Int_t            fNModules; // number of (super)modules
  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[20];     // pointers to ALTRO mapping

  ClassDef(AliCaloRawStreamV3, 3)   // class for reading PHOS/EMCAL raw digits

};

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