1 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
6 //-------------------------------------------------------------------------
7 // AOD class to store calorimeter cell data
8 // Author: Markus Oldenburg, CERN
9 //-------------------------------------------------------------------------
17 class AliAODCaloCells : public TNamed
20 enum AODCells_t {kUndef = -1,
25 AliAODCaloCells(const char* name, const char* title, AODCells_t ttype=kUndef);
27 virtual ~AliAODCaloCells();
29 void CreateContainer(Short_t nCells);
30 void DeleteContainer();
33 Bool_t SetCell(Short_t pos, Short_t cellNumber, Double_t amplitude);
35 Short_t GetNumberOfCells() const { return fNCells; }
36 inline Bool_t GetCell(Short_t pos, Short_t &cellNumber, Double_t &litude) const;
37 inline Double_t GetCellAmplitude(Short_t cellNumber);
38 inline Double_t GetAmplitude(Short_t pos) const;
39 inline Short_t GetCellNumber(Short_t pos) const;
41 Char_t GetType() const { return fType;}
42 void SetType(AODCells_t ttype) { fType=ttype; }
45 Int_t fNCells; // Number of cells
46 Short_t *fCellNumber; //[fNCells] array of cell numbers
47 Double32_t *fAmplitude; //[fNCells][0.,0.,16] array with cell amplitudes (= energy!)
48 Bool_t fIsSorted; //! true if cell arrays are sorted by index
49 Char_t fType; // Cell type
52 AliAODCaloCells(const AliAODCaloCells& tow);
53 AliAODCaloCells& operator=(const AliAODCaloCells& tow);
55 ClassDef(AliAODCaloCells, 1);
59 Bool_t AliAODCaloCells::GetCell(Short_t pos, Short_t &cellNumber, Double_t &litude) const
61 if (pos>=0 && pos<fNCells) {
62 cellNumber = fCellNumber[pos];
63 amplitude = fAmplitude[pos];
66 Warning("GetCell","Invalid cell array index %d", pos);
72 Double_t AliAODCaloCells::GetCellAmplitude(Short_t cellNumber)
79 Short_t pos = TMath::BinarySearch(fNCells, fCellNumber, cellNumber);
80 if (pos>=0 && fCellNumber[pos] == cellNumber) {
81 return fAmplitude[pos];
83 Warning("GetCellAmplitude","Wrong cell array index %d", pos);
89 Double_t AliAODCaloCells::GetAmplitude(Short_t pos) const
91 if (pos>=0 && pos<fNCells) {
92 return fAmplitude[pos];
94 Warning("GetAmplitude","Invalid cell array index %d", pos);
100 Short_t AliAODCaloCells::GetCellNumber(Short_t pos) const
102 if (pos>=0 && pos<fNCells) {
103 return fCellNumber[pos];
105 Warning("GetCellNumber","Invalid cell array index %d", pos);