]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliPoolsSet.h
Complete implementation of pools, see #88914. From rev. 53550,53557,53568 (Ruben)
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliPoolsSet.h
1 #ifndef ALIPOOLSSET_H
2 #define ALIPOOLSSET_H
3
4 #include <TObject.h>
5 #include "AliPoolN.h"
6 #include "AliClonesPool.h"
7
8
9 class AliPoolsSet : public TObject 
10 {
11  public:
12   //
13   enum {kPoolN,           // special pool for numeric arrays (AliPoolN class)
14         kPoolExtTrPar,    // pool for AliExternalTrackParam objects (AliClonesPool)
15         kPoolTrPoints,    // pool for AliTrackPointArray objects (AliClonesPool)
16         kPoolTrITS,       // pool for ITS tracks (AliClonesPool)
17         kPoolTrTRD,       // pool for TRD tracks  (AliClonesPool)
18         kPoolTrFriend,    // pool for AliESDfriendTrack (AliClonesPool)
19         kPoolTPCdEdx,     // pool for AliTPCdEdx (AliClonesPool)
20         kPoolTPCSeed,     // pool for TPC seeds
21         kPoolTPCKink,     // pool for TPC kinks
22         kMaxPools};       // total number of pools
23   //
24   AliPoolsSet();
25   AliPoolsSet(const AliPoolsSet& src) : TObject(src),fPools(src.fPools) {}
26   virtual ~AliPoolsSet() {DeletePools();}
27   AliPoolsSet& operator=(const AliPoolsSet& src) { if (this!=&src) {this->TObject::operator=(src);fPools=src.fPools;} return *this;}
28   //
29   AliPoolN*       GetPoolN()          const {return dynamic_cast<AliPoolN*>(GetPool(kPoolN));}
30   AliClonesPool*  GetPoolC(Int_t id)  const {return dynamic_cast<AliClonesPool*>(GetPool(id));}
31   TObject*        GetPool(Int_t id)   const {return fPools[id];}
32   // detector-specific pools require setters
33   Bool_t          SetPool(TObject* pool, Int_t id);
34   //
35   void            ResetPools();
36   void            InitPools();
37   void            DeletePools();
38   void            Print(Option_t* opt="") const;
39   //
40   // shortcuts
41   AliClonesPool*  GetPoolExtTrPar()      const {return GetPoolC(kPoolExtTrPar);}
42   AliClonesPool*  GetPoolTrPoints()      const {return GetPoolC(kPoolTrPoints);}
43   AliClonesPool*  GetPoolTrFriend()      const {return GetPoolC(kPoolTrFriend);}  
44   AliClonesPool*  GetPoolTPCdEdx()       const {return GetPoolC(kPoolTPCdEdx);}
45   AliClonesPool*  GetPoolTrITS()         const {return GetPoolC(kPoolTrITS);}  
46   AliClonesPool*  GetPoolTrTRD()         const {return GetPoolC(kPoolTrTRD);}  
47   AliClonesPool*  GetPoolTPCSeed()       const {return GetPoolC(kPoolTPCSeed);}  
48   //
49  protected:
50   //
51   TObjArray            fPools;          //! array of pools
52   //
53   ClassDef(AliPoolsSet,0) // set of pools
54 };
55
56
57 #endif