Changes for #94138: Port update in Ali*CaloCells to trunk and release
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliVCaloCells.h
1 #ifndef ALIVCALOCELLS_H
2 #define ALIVCALOCELLS_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 //
8 //     Virtual class to access calorimeter cell data
9 //     Author: Gustavo Conesa Balbastre INFN-LNF
10 //
11 //-------------------------------------------------------------------------
12
13
14 #include <TNamed.h>
15 #include <TMath.h>
16
17 class AliVCaloCells : public TNamed
18 {
19  public:
20
21   enum VCells_t {kUndef = -1, 
22                  kPHOSCell, 
23                  kEMCALCell};
24
25   AliVCaloCells() : TNamed()  {;}
26   AliVCaloCells(const char* name, const char* title) : TNamed(name, title) {;}
27   AliVCaloCells(const AliVCaloCells& cells) : TNamed(cells.GetName(), cells.GetTitle()) {;}
28   AliVCaloCells & operator=(const AliVCaloCells& cells ) ;
29   virtual ~AliVCaloCells()    {;}
30   void Clear(const Option_t*) {;}
31   
32   virtual Bool_t   IsEMCAL() const         = 0;
33   virtual Bool_t   IsPHOS()  const         = 0;
34   virtual Char_t   GetType() const         = 0;
35   virtual void     SetType(Char_t ttype)   = 0;
36
37   virtual void     CreateContainer(Short_t nCells) = 0;
38   virtual void     DeleteContainer()               = 0;
39   virtual void     Sort()                          = 0;
40   
41   virtual Bool_t   GetCell(Short_t pos, Short_t &cellNumber, Double_t &amplitude, Double_t &time, Short_t &mclabel,    Double_t  &efrac) const = 0;
42   virtual Bool_t   SetCell(Short_t pos, Short_t  cellNumber, Double_t  amplitude, Double_t  time, Short_t  mclabel=-1, Double_t   efrac=0)     = 0;
43   
44   virtual Short_t  GetNumberOfCells() const              = 0;
45   virtual void     SetNumberOfCells(Int_t n)             = 0;
46   
47   virtual Double_t GetCellAmplitude(Short_t cellNumber)  = 0;
48   virtual Double_t GetCellTime(Short_t cellNumber)       = 0;
49   virtual Short_t  GetCellPosition(Short_t cellNumber)   = 0;
50   
51   virtual Double_t GetAmplitude(Short_t pos)  const      = 0;
52   virtual Double_t GetTime(Short_t pos)       const      = 0;
53   virtual Short_t  GetCellNumber(Short_t pos) const      = 0;
54
55   virtual void           Copy(TObject &obj)        const = 0;
56   virtual AliVCaloCells* CopyCaloCells(Bool_t all) const = 0;
57
58   // MC & embedding
59   virtual Short_t  GetCellMCLabel(Short_t cellNumber)    = 0;
60   virtual Short_t  GetMCLabel(Short_t pos) const         = 0;
61
62   virtual Double_t GetCellEFraction(Short_t cellNumber)  = 0;
63   virtual Double_t GetEFraction(Short_t pos) const       = 0;
64
65   virtual void     SetCellEFraction(Short_t cellNumber, Double_t efrac) = 0;
66   virtual void     SetEFraction    (Short_t pos,        Double_t efrac) = 0;
67   
68   ClassDef(AliVCaloCells, 0);
69 };
70
71 #endif