Changed the interface to TIterator one (Laurent)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jun 2007 20:40:18 +0000 (20:40 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 17 Jun 2007 20:40:18 +0000 (20:40 +0000)
MUON/AliMUON1DMapIterator.cxx
MUON/AliMUON1DMapIterator.h
MUON/AliMUON2DMapIterator.cxx
MUON/AliMUON2DMapIterator.h

index b74bd59..3857404 100644 (file)
 
 // $Id$
 
-#include "AliMUON1DMapIterator.h"
-#include "AliMpExMap.h"
-#include "AliLog.h"
-#include "AliMpIntPair.h"
-#include "AliMUONObjectPair.h"
-#include "AliMpExMap.h"
-
 /// \class AliMUON1DMapIterator
-/// Implementation of AliMUONVDataIterator for 1Dmaps
+/// Implementation of TIterator for 1Dmaps
 /// 
 /// A simple implementation of VDataIterator for 1Dmaps.
 ///
 /// \author Laurent Aphecetche
 
+#include "AliMUON1DMapIterator.h"
+#include "AliMpExMap.h"
+#include "AliLog.h"
+#include "AliMpIntPair.h"
+#include "AliMpExMap.h"
+
 /// \cond CLASSIMP
 ClassImp(AliMUON1DMapIterator)
 /// \endcond
 
 //_____________________________________________________________________________
 AliMUON1DMapIterator::AliMUON1DMapIterator(AliMpExMap& theMap)
-: AliMUONVDataIterator(), 
+: TIterator(), 
 fIter(theMap.GetIterator()),
 fCurrentI(-1)
 {
@@ -44,6 +43,44 @@ fCurrentI(-1)
 }
 
 //_____________________________________________________________________________
+AliMUON1DMapIterator::AliMUON1DMapIterator(const AliMUON1DMapIterator& rhs)
+: TIterator(rhs),
+  fIter(rhs.fIter),
+  fCurrentI(rhs.fCurrentI)        
+{
+    /// copy ctor
+}
+
+//_____________________________________________________________________________
+AliMUON1DMapIterator& 
+AliMUON1DMapIterator::operator=(const AliMUON1DMapIterator& rhs)
+{
+  /// assignment operator
+  if ( this != &rhs )
+  {
+    fIter = rhs.fIter;
+    fCurrentI = rhs.fCurrentI;
+  }
+  return *this;
+}
+
+//_____________________________________________________________________________
+TIterator& 
+AliMUON1DMapIterator::operator=(const TIterator& rhs)
+{
+  /// overriden operator= (imposed by Root definition of TIterator::operator= ?)
+  
+  if ( this != &rhs && rhs.IsA() == AliMUON1DMapIterator::Class() )
+  {
+    const AliMUON1DMapIterator& rhs1 = static_cast<const AliMUON1DMapIterator&>(rhs);
+    fIter = rhs1.fIter;
+    fCurrentI = rhs1.fCurrentI;
+  }
+  return *this;
+}
+
+
+//_____________________________________________________________________________
 AliMUON1DMapIterator::~AliMUON1DMapIterator()
 {
   /// dtor
@@ -53,17 +90,12 @@ AliMUON1DMapIterator::~AliMUON1DMapIterator()
 TObject*
 AliMUON1DMapIterator::Next()
 {
-  ///  
+  /// Return next object in iteration
 
   Long_t key, value;
   Bool_t ok = fIter.Next(key,value);
   if (!ok) return 0x0;
-  Int_t i = (Int_t)(key & 0xFFFF);
-  TObject* o = reinterpret_cast<TObject*>(value);
-  
-  return new AliMUONObjectPair(new AliMpIntPair(i,0),o,
-                               kTRUE, /* owner of intpair */
-                               kFALSE /* but not of o */);
+  return reinterpret_cast<TObject*>(value);
 }
 
 //_____________________________________________________________________________
@@ -73,12 +105,3 @@ AliMUON1DMapIterator::Reset()
   /// rewind the iterator
   fIter.Reset();
 }
-
-//_____________________________________________________________________________
-Bool_t
-AliMUON1DMapIterator::Remove()
-{
-  /// to be implemented if needed
-  AliInfo("Not supported yet");
-  return kFALSE;
-}
index 667522e..97c5617 100644 (file)
@@ -8,7 +8,7 @@
 
 /// \ingroup calib
 /// \class AliMUON1DMapIterator
-/// \brief Implementation of AliMUONVDataIterator for 1D maps
+/// \brief Implementation of TIterator for 1D maps
 /// 
 //  Author Laurent Aphecetche
 
 #ifndef ROOT_TExMap
 #  include "TExMap.h"
 #endif
-#ifndef ALIMUONVDATAITERATOR_H
-#  include "AliMUONVDataIterator.h"
+#ifndef ROOT_TIterator
+#  include "TIterator.h"
 #endif
 
 class AliMpExMap;
 
 //_____________________________________________________________________________
-class AliMUON1DMapIterator : public AliMUONVDataIterator
+class AliMUON1DMapIterator : public TIterator
 {
 public:
   AliMUON1DMapIterator(AliMpExMap& theMap);
-  
+  AliMUON1DMapIterator(const AliMUON1DMapIterator&);
+  AliMUON1DMapIterator& operator=(const AliMUON1DMapIterator& rhs);
+  TIterator& operator=(const TIterator& iterator);  
   virtual ~AliMUON1DMapIterator();
   
-  /** The object returned by this iterator is an AliMUONObjectPair(TObject* key,TObject* value)
-    where key is an AliMpIntPair (i,0), and value is 
-    an AliMUONVCalibParam.
-    The returned object must be deleted by the user (as advertised by the IsOwner method below)
-    */
+  /** The returned object must not be deleted by the user ! */
   virtual TObject* Next();
   
   virtual void Reset(); 
   
-  virtual Bool_t Remove();
-  
-  virtual Bool_t IsOwner() const { return kTRUE; }
+  /// Return 0 as we're not really dealing with a TCollection
+  virtual const TCollection* GetCollection() const { return 0x0; }
   
 private:
-  /// copy ctor will not implemented
-  AliMUON1DMapIterator(const AliMUON1DMapIterator&);
-  /// assignement operator will not implemented
-  AliMUON1DMapIterator& operator=(const AliMUON1DMapIterator&);
-    
-private:
   TExMapIter fIter; //!< iterator
   Int_t fCurrentI; //!< current index in direction i 
   
index ef5ed06..0c7d0ad 100644 (file)
 // $Id$
 
 #include "AliMUON2DMapIterator.h"
-#include "AliMpExMap.h"
-#include "TMap.h"
-#include "AliLog.h"
-#include "AliMpIntPair.h"
-#include "AliMUONObjectPair.h"
 
 /// \class AliMUON2DMapIterator
-/// Implementation of AliMUONVDataIterator for 2Dmaps
+/// Implementation of TIterator for 2Dmaps
 /// 
 /// A simple implementation of VDataIterator for 2Dmaps.
 ///
 /// \author Laurent Aphecetche
 
+#include "AliMpExMap.h"
+
 /// \cond CLASSIMP
 ClassImp(AliMUON2DMapIterator)
 /// \endcond
 
 //_____________________________________________________________________________
-AliMUON2DMapIterator::AliMUON2DMapIterator(AliMpExMap& theMap)
-: AliMUONVDataIterator(), 
+AliMUON2DMapIterator::AliMUON2DMapIterator(const AliMpExMap& theMap)
+: TIterator(), 
 fIter(theMap.GetIterator()),
 fIter2(0x0),
 fCurrentI(-1),
@@ -46,6 +43,53 @@ fCurrentJ(-1)
 }
 
 //_____________________________________________________________________________
+AliMUON2DMapIterator::AliMUON2DMapIterator(const AliMUON2DMapIterator& rhs)
+: TIterator(rhs),
+fIter(rhs.fIter),
+fIter2(0x0),
+fCurrentI(rhs.fCurrentI),
+fCurrentJ(rhs.fCurrentJ)
+{
+  /// copy ctor
+  if ( rhs.fIter2 ) fIter2 = new TExMapIter(*rhs.fIter2);
+
+}
+//_____________________________________________________________________________
+AliMUON2DMapIterator& 
+AliMUON2DMapIterator::operator=(const AliMUON2DMapIterator& rhs)
+{
+  /// assignment operator
+  if ( this != &rhs ) 
+  {
+    fIter = rhs.fIter;
+    fIter2 = 0x0;
+    if ( rhs.fIter2 ) fIter2 = new TExMapIter(*rhs.fIter2);
+    fCurrentI = rhs.fCurrentI;
+    fCurrentJ = rhs.fCurrentJ;
+  }
+  return *this;
+}
+
+//_____________________________________________________________________________
+TIterator& 
+AliMUON2DMapIterator::operator=(const TIterator& rhs)
+{
+  /// overriden operator= (imposed by Root's definition of TIterator::operator= ?)
+  
+  if ( this != &rhs && rhs.IsA() == AliMUON2DMapIterator::Class() ) 
+  {
+    const AliMUON2DMapIterator& rhs1 = static_cast<const AliMUON2DMapIterator&>(rhs);
+    
+    fIter = rhs1.fIter;
+    fIter2 = 0x0;
+    if ( rhs1.fIter2 ) fIter2 = new TExMapIter(*rhs1.fIter2);
+    fCurrentI = rhs1.fCurrentI;
+    fCurrentJ = rhs1.fCurrentJ;
+  }
+  return *this;
+}
+
+//_____________________________________________________________________________
 AliMUON2DMapIterator::~AliMUON2DMapIterator()
 {
   /// dtor
@@ -53,6 +97,14 @@ AliMUON2DMapIterator::~AliMUON2DMapIterator()
 }
 
 //_____________________________________________________________________________
+const TCollection* 
+AliMUON2DMapIterator::GetCollection() const
+{
+  /// Return 0 as we're not really dealing with a Root TCollection...
+  return 0x0;
+}
+
+//_____________________________________________________________________________
 TObject*
 AliMUON2DMapIterator::GetValue(TExMapIter& iter, Int_t& theKey) const
 {
@@ -67,7 +119,7 @@ AliMUON2DMapIterator::GetValue(TExMapIter& iter, Int_t& theKey) const
 
 //_____________________________________________________________________________
 AliMpExMap*
-AliMUON2DMapIterator::GetMap(TExMapIter& iter, Int_t& key) 
+AliMUON2DMapIterator::GetMap(TExMapIter& iter, Int_t& key)  const
 {
   /// get the map corresponding to key
   AliMpExMap* rv(0x0);
@@ -75,10 +127,6 @@ AliMUON2DMapIterator::GetMap(TExMapIter& iter, Int_t& key)
   if (o)
   {
     rv = dynamic_cast<AliMpExMap*>(o);
-    if (!rv)
-    {
-      AliFatal("boom");
-    }
   }
   return rv;
 }
@@ -106,10 +154,9 @@ AliMUON2DMapIterator::Next()
     delete fIter2;
     fIter2 = new TExMapIter(m->GetIterator());
     o = GetValue(*fIter2,fCurrentJ);
-  }  
-  return new AliMUONObjectPair(new AliMpIntPair(fCurrentI,fCurrentJ),o,
-                               kTRUE, /* owner of intpair */
-                               kFALSE /* but not of o */);
+  }
+  
+  return o;
 }
 
 //_____________________________________________________________________________
@@ -125,12 +172,3 @@ AliMUON2DMapIterator::Reset()
     fIter2 = new TExMapIter(m->GetIterator());
   }  
 }
-
-//_____________________________________________________________________________
-Bool_t
-AliMUON2DMapIterator::Remove()
-{
-  /// to be implemented if needed
-  AliInfo("Not supported yet");
-  return kFALSE;
-}
index 04ae997..de10eb0 100644 (file)
@@ -8,58 +8,47 @@
 
 /// \ingroup calib
 /// \class AliMUON2DMapIterator
-/// \brief Implementation of AliMUONVDataIterator for 2D maps
+/// \brief Implementation of TIterator for 2D maps
 /// 
 //  Author Laurent Aphecetche
 
-#ifndef ROOT_TObject
-#  include "TObject.h"
-#endif
 #ifndef ROOT_TExMap
 #  include "TExMap.h"
 #endif
-#ifndef ALIMUONVDATAITERATOR_H
-#  include "AliMUONVDataIterator.h"
+#ifndef ROOT_TIterator
+#  include "TIterator.h"
 #endif
 
 class AliMpExMap;
 
 //_____________________________________________________________________________
-class AliMUON2DMapIterator : public AliMUONVDataIterator
+class AliMUON2DMapIterator : public TIterator
 {
 public:
-  AliMUON2DMapIterator(AliMpExMap& theMap);
+  AliMUON2DMapIterator(const AliMpExMap& theMap);
+  AliMUON2DMapIterator(const AliMUON2DMapIterator& rhs);
+  AliMUON2DMapIterator& operator=(const AliMUON2DMapIterator& rhs);
+  TIterator& operator=(const TIterator& rhs);
   
   virtual ~AliMUON2DMapIterator();
   
-  /** The object returned by this iterator is an AliMUONObjectPair(TObject* key,TObject* value)
-    where key is an AliMpIntPair (detElemId,manuId), and value is 
-    an AliMUONVCalibParam.
-    The returned object must be deleted by the user (as advertised by the IsOwner() method below)                                                     
-    */
+  ///The returned object must not be deleted by the user.  
   virtual TObject* Next();
   
   virtual void Reset(); 
   
-  virtual Bool_t Remove();
-  
-  virtual Bool_t IsOwner() const { return kTRUE; }
+  virtual const TCollection* GetCollection() const;
   
 private:
-  /// copy ctor will not implemented
-  AliMUON2DMapIterator(const AliMUON2DMapIterator&);
-  /// assignement operator will not implemented
-  AliMUON2DMapIterator& operator=(const AliMUON2DMapIterator&);
-  
   TObject* GetValue(TExMapIter& iter, Int_t& key) const;
-  AliMpExMap* GetMap(TExMapIter& iter, Int_t& key);
+  AliMpExMap* GetMap(TExMapIter& iter, Int_t& key) const;
   
 private:
   TExMapIter fIter; //!< first iterator
   TExMapIter* fIter2; //!< second iterator
   Int_t fCurrentI; //!< current index in direction i 
   Int_t fCurrentJ; //!< current index in direction j
-  
+
   ClassDef(AliMUON2DMapIterator,0) // VDataIterator for 2D maps
 };