Merge changes from branches/dev/EVE. This branch was following development in ROOT...
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveMUONChamberData.h
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9 #ifndef AliEveMUONChamberData_H
10 #define AliEveMUONChamberData_H
11
12 #include <TObject.h>
13
14 class AliMUONGeometryTransformer;
15
16 class AliEveMUONChamberData : public TObject
17 {
18   AliEveMUONChamberData(const AliEveMUONChamberData&);            // Not implemented
19   AliEveMUONChamberData& operator=(const AliEveMUONChamberData&); // Not implemented
20
21 private:
22   static AliMUONGeometryTransformer* fgTransformer;   // geometry transformer
23
24 protected:
25
26   Int_t   fChamberID;                 // number of the chamber, 0 to 13
27   Float_t fFrameCoord[26][5];         // detector elements frames
28   Int_t   fNDetElem;                  // number of detector elements
29   Int_t   fNDigits;                   // number of found digits (times 7)
30   Int_t   fNClusters;                 // number of found rec points
31   Int_t   fNHits;                     // number of simulation hits
32   Float_t fDigitBuffer[7*4096];       // digits coordinates, etc.
33   Float_t fClusterBuffer[5*256];      // cluster coordinates, etc.
34   Float_t fHitBuffer[3*256];          // hits coordinates
35   Float_t fChamberBox[6];             // chamber envelope box
36
37 public:
38
39   AliEveMUONChamberData(Int_t chamber);
40   virtual ~AliEveMUONChamberData();
41
42   void DropData();
43
44   void     Init(Int_t chamber);
45
46   void     RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, Int_t charge);
47   void     RegisterCluster(Int_t detElemId, Int_t cathode, Float_t x, Float_t y, Float_t z, Float_t charge);
48   void     RegisterHit(Int_t detElemId, Float_t x, Float_t y, Float_t z);
49
50   Float_t* GetFrameCoord(Int_t detElemId) { return fFrameCoord[detElemId]; };
51
52   Int_t    GetNDetElem()  const { return fNDetElem;    };
53   Int_t    GetNDigits()   const { return fNDigits/7;   };
54   Int_t    GetNClusters() const { return fNClusters/5; };
55   Int_t    GetNHits()     const { return fNHits/3;     };
56
57   Float_t* GetDigitBuffer(Int_t pos)   { return &fDigitBuffer[7*pos];   };
58   Float_t* GetClusterBuffer(Int_t pos) { return &fClusterBuffer[5*pos]; };
59   Float_t* GetHitBuffer(Int_t pos)     { return &fHitBuffer[3*pos];     };
60
61   Float_t* GetChamberBox() { return &fChamberBox[0]; };
62
63   ClassDef(AliEveMUONChamberData,1);     // class with data for one chamber
64
65 };
66
67 #endif