f1c6db4eb9d833bebcd533b8e0814403c8341f3a
[u/mrichter/AliRoot.git] / MUON / AliMUON2DMap.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice                               */
3
4 // $Id$
5
6 /// \ingroup calib
7 /// \class AliMUON2DMap
8 /// \brief Basic implementation of AliMUONV2DStore container using
9 /// AliMpExMap internally.
10 ///
11 //  Author Laurent Aphecetche
12
13 #ifndef AliMUON2DMAP_H
14 #define AliMUON2DMAP_H
15
16 #include "AliMUONV2DStore.h"
17
18 class AliMpExMap;
19
20 class AliMUON2DMap : public AliMUONV2DStore
21 {
22 public:
23   AliMUON2DMap(Bool_t optimizeForDEManu=kFALSE);  
24   virtual ~AliMUON2DMap();
25
26   AliMUONV2DStore* CloneEmpty() const;
27   
28   /// The returned iterator is owned by the client.
29   AliMUONVDataIterator* Iterator() const;
30   
31   virtual TObject* Get(Int_t i, Int_t j) const;
32   virtual Bool_t Set(Int_t i, Int_t j, TObject* object, Bool_t replace);
33   /// Whether or not this container is the owner of its contents.
34   virtual Bool_t IsOwner() const { return kTRUE; } 
35
36   AliMUON2DMap(const AliMUON2DMap& other);
37   AliMUON2DMap&  operator = (const AliMUON2DMap& other);
38
39   /// Build a complete (i.e. all detElemId,manuId couple will be there) store
40   /// but with identical values, given by object 
41   /// The returned store will be obviously optimized for DEManu.
42   static AliMUONV2DStore* Generate(const TObject& object);
43     
44 private:
45   void CopyTo(AliMUON2DMap& destination) const;
46
47 private:
48   AliMpExMap* fMap; ///< Our internal map (an AliMpExMap of AliMpExMaps)
49   Bool_t fOptimizeForDEManu; ///< whether (i,j) pair is supposed to be (DetElemId,ManuId) (allow us to allocate right amount of memory, that's all it does.
50   
51   ClassDef(AliMUON2DMap,2) // A 2D container
52 };
53
54 #endif