ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
#ifndef AliEveMUONChamberData_H
#define AliEveMUONChamberData_H

#include <TObject.h>

class AliMUONGeometryTransformer;

class AliEveMUONChamberData : public TObject
{
public:

  AliEveMUONChamberData(Int_t chamber);
  virtual ~AliEveMUONChamberData();

  void     DropData();

  void     Init(Int_t chamber);

  void     RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, Int_t charge);
  void     RegisterCluster(Int_t detElemId, Int_t cathode, Float_t x, Float_t y, Float_t z, Float_t charge);
  void     RegisterHit(Int_t detElemId, Float_t x, Float_t y, Float_t z);

  Float_t* GetFrameCoord(Int_t detElemId) { return fFrameCoord[detElemId]; };

  Int_t    GetNDetElem()  const { return fNDetElem;    };
  Int_t    GetNDigits()   const { return fNDigits/7;   };
  Int_t    GetNClusters() const { return fNClusters/5; };
  Int_t    GetNHits()     const { return fNHits/3;     };

  Float_t* GetDigitBuffer(Int_t pos)   { return &fDigitBuffer[7*pos];   };
  Float_t* GetClusterBuffer(Int_t pos) { return &fClusterBuffer[5*pos]; };
  Float_t* GetHitBuffer(Int_t pos)     { return &fHitBuffer[3*pos];     };

  Float_t* GetChamberBox() { return &fChamberBox[0]; };


protected:

  Int_t   fChamberID;                 // number of the chamber, 0 to 13
  Float_t fFrameCoord[26][5];         // detector elements frames
  Int_t   fNDetElem;                  // number of detector elements
  Int_t   fNDigits;                   // number of found digits (times 7)
  Int_t   fNClusters;                 // number of found rec points
  Int_t   fNHits;                     // number of simulation hits
  Float_t fDigitBuffer[7*4096];       // digits coordinates, etc.
  Float_t fClusterBuffer[5*256];      // cluster coordinates, etc.
  Float_t fHitBuffer[3*256];          // hits coordinates
  Float_t fChamberBox[6];             // chamber envelope box


private:

  static AliMUONGeometryTransformer* fgTransformer;   // geometry transformer

  AliEveMUONChamberData(const AliEveMUONChamberData&);            // Not implemented
  AliEveMUONChamberData& operator=(const AliEveMUONChamberData&); // Not implemented

  ClassDef(AliEveMUONChamberData, 0);     // class with data for one chamber
};

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