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 tower data
8 // Author: Markus Oldenburg, CERN
9 //-------------------------------------------------------------------------
11 #ifndef ALIAODTOWERS_H
12 #define ALIAODTOWERS_H
17 class AliAODTowers : public TNamed
20 enum AODTwrs_t {kUndef = -1,
25 AliAODTowers(const char* name, const char* title, AODTwrs_t ttype=kUndef);
27 virtual ~AliAODTowers();
29 void CreateContainer(Short_t nTowers);
30 void DeleteContainer();
32 Bool_t SetTower(Short_t pos, Short_t index, Double_t amplitude);
34 Short_t GetNumberOfTowers() const { return fNTowers; }
35 inline Bool_t GetTower(Short_t pos, Short_t &index, Double_t &litude) const;
36 inline Double_t GetTowerAmplitude(Short_t towerIndex);
37 inline Double_t GetAmplitude(Short_t pos) const;
38 inline Short_t GetIndex(Short_t pos) const;
40 Char_t GetType() const { return fType;}
41 void SetType(AODTwrs_t ttype) { fType=ttype; }
44 Short_t fNTowers; // Number of towers
45 Short_t *fIndex; //[fNTowers] array of tower indices
46 Double32_t *fAmplitude; //[fNTowers][0.,600.,16] array with tower amplitudes (= energy!)
47 Bool_t fIsSorted; //! true if tower arrays are sorted by index
48 Char_t fType; // Towers type
51 AliAODTowers(const AliAODTowers& tow);
52 AliAODTowers& operator=(const AliAODTowers& tow);
54 ClassDef(AliAODTowers, 1);
58 Bool_t AliAODTowers::GetTower(Short_t pos, Short_t &index, Double_t &litude) const
60 if (pos>=0 && pos<fNTowers) {
62 amplitude = fAmplitude[pos];
65 Error("GetTower","Invalid tower index %d", pos);
71 Double_t AliAODTowers::GetTowerAmplitude(Short_t towerIndex)
75 Warning("GetTowerAmplitude","Array sort has to be implemented");
79 Short_t pos = TMath::BinarySearch(fNTowers, fIndex, towerIndex);
80 if (pos>=0 && pos == towerIndex) {
81 return fAmplitude[pos];
83 Error("GetTowerAmplitude","Wrong tower index %d",pos);
89 Double_t AliAODTowers::GetAmplitude(Short_t pos) const
91 if (pos>=0 && pos<fNTowers) {
92 return fAmplitude[pos];
94 Error("GetAmplitude","Invalid tower index %d",pos);
100 Short_t AliAODTowers::GetIndex(Short_t pos) const
102 if (pos>=0 && pos<fNTowers) {
105 Error("GetIndex","Invalid tower index %d",pos);