ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

//-----------------------------------------------------------------------------
/// \class AliMUONDigitStoreV1Iterator
///
/// Implementation of TIteraor for AliMUONVDigitStoreV1
/// Reuses the AliMUONTOTCAStoreIterator iterator
///
/// \author Laurent Aphecetche, Subatech
//-----------------------------------------------------------------------------

#include "AliMUONDigitStoreV1Iterator.h"

#include "AliLog.h"
#include "AliMpDEManager.h"
#include "AliMUONVDigit.h"
#include "TObjArray.h"

/// \cond CLASSIMP
ClassImp(AliMUONDigitStoreV1Iterator)
/// \endcond

//_____________________________________________________________________________
AliMUONDigitStoreV1Iterator::AliMUONDigitStoreV1Iterator(TObjArray* a,
                                                         Int_t firstDetElemId,
                                                         Int_t lastDetElemId,
                                                         Int_t cathode)
: AliMUONTOTCAStoreIterator(a,AliMpDEManager::GetChamberId(firstDetElemId),
                            AliMpDEManager::GetChamberId(lastDetElemId)),
fArray(a),
fFirstDetElemId(firstDetElemId),
fLastDetElemId(lastDetElemId),
fCathode(cathode)
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONDigitStoreV1Iterator::AliMUONDigitStoreV1Iterator(const AliMUONDigitStoreV1Iterator& rhs)
: AliMUONTOTCAStoreIterator(rhs),
  fArray(rhs.fArray),
  fFirstDetElemId(rhs.fFirstDetElemId),
  fLastDetElemId(rhs.fLastDetElemId),
  fCathode(rhs.fCathode)
{
    /// copy ctor
}

//_____________________________________________________________________________
AliMUONDigitStoreV1Iterator& 
AliMUONDigitStoreV1Iterator::operator=(const TIterator& rhs)
{
  /// overriden assignment operator (imposed by Root's definition of TIterator ?)
  
  if ( this != &rhs )
  {
    if ( rhs.IsA() != AliMUONDigitStoreV1Iterator::Class() )
    {
      AliErrorGeneral("AliMUONDigitStoreV1Iterator::operator=","Wrong type");
    }
    else
    {
      const AliMUONDigitStoreV1Iterator& rhs1 = 
      static_cast<const AliMUONDigitStoreV1Iterator&>(rhs);
      
      AliMUONDigitStoreV1Iterator::operator=(rhs1);
    }
  }
  return *this;
}

//_____________________________________________________________________________
AliMUONDigitStoreV1Iterator& 
AliMUONDigitStoreV1Iterator::operator=(const AliMUONDigitStoreV1Iterator& rhs)
{
  /// assignement operator
  if ( this != &rhs ) 
  {
    TIterator::operator=(rhs);
    fArray = rhs.fArray;
    fFirstDetElemId = rhs.fFirstDetElemId;
    fLastDetElemId = rhs.fLastDetElemId;
    fCathode = rhs.fCathode;
  }
  return *this;
}

//_____________________________________________________________________________
AliMUONDigitStoreV1Iterator::~AliMUONDigitStoreV1Iterator()
{
  /// dtor
}

//_____________________________________________________________________________
const TCollection* 
AliMUONDigitStoreV1Iterator::GetCollection() const
{
  /// Return the TObjArray we're iterating upon
  return fArray;
}

//_____________________________________________________________________________
TObject*
AliMUONDigitStoreV1Iterator::Next()
{
  /// Return the next digit (with its DE in [fFirstDetElemId,fLastDetElemId],
  /// and its cathode == fCathode (or any cathode if fCathode==2)
  /// in the store.
  
  TObject* object = 0x0;
  
  while ( (object = static_cast<AliMUONVDigit*>(AliMUONTOTCAStoreIterator::Next()) ) )
  {  
    AliMUONVDigit* digit = static_cast<AliMUONVDigit*>(object);

    if ( digit->DetElemId() >= fFirstDetElemId &&
         digit->DetElemId() <= fLastDetElemId ) 
    {
      if ( fCathode == 2 || digit->Cathode() == fCathode ) 
      {
        return digit;
      }
    }
  }
  
  return 0x0;
}
 AliMUONDigitStoreV1Iterator.cxx:1
 AliMUONDigitStoreV1Iterator.cxx:2
 AliMUONDigitStoreV1Iterator.cxx:3
 AliMUONDigitStoreV1Iterator.cxx:4
 AliMUONDigitStoreV1Iterator.cxx:5
 AliMUONDigitStoreV1Iterator.cxx:6
 AliMUONDigitStoreV1Iterator.cxx:7
 AliMUONDigitStoreV1Iterator.cxx:8
 AliMUONDigitStoreV1Iterator.cxx:9
 AliMUONDigitStoreV1Iterator.cxx:10
 AliMUONDigitStoreV1Iterator.cxx:11
 AliMUONDigitStoreV1Iterator.cxx:12
 AliMUONDigitStoreV1Iterator.cxx:13
 AliMUONDigitStoreV1Iterator.cxx:14
 AliMUONDigitStoreV1Iterator.cxx:15
 AliMUONDigitStoreV1Iterator.cxx:16
 AliMUONDigitStoreV1Iterator.cxx:17
 AliMUONDigitStoreV1Iterator.cxx:18
 AliMUONDigitStoreV1Iterator.cxx:19
 AliMUONDigitStoreV1Iterator.cxx:20
 AliMUONDigitStoreV1Iterator.cxx:21
 AliMUONDigitStoreV1Iterator.cxx:22
 AliMUONDigitStoreV1Iterator.cxx:23
 AliMUONDigitStoreV1Iterator.cxx:24
 AliMUONDigitStoreV1Iterator.cxx:25
 AliMUONDigitStoreV1Iterator.cxx:26
 AliMUONDigitStoreV1Iterator.cxx:27
 AliMUONDigitStoreV1Iterator.cxx:28
 AliMUONDigitStoreV1Iterator.cxx:29
 AliMUONDigitStoreV1Iterator.cxx:30
 AliMUONDigitStoreV1Iterator.cxx:31
 AliMUONDigitStoreV1Iterator.cxx:32
 AliMUONDigitStoreV1Iterator.cxx:33
 AliMUONDigitStoreV1Iterator.cxx:34
 AliMUONDigitStoreV1Iterator.cxx:35
 AliMUONDigitStoreV1Iterator.cxx:36
 AliMUONDigitStoreV1Iterator.cxx:37
 AliMUONDigitStoreV1Iterator.cxx:38
 AliMUONDigitStoreV1Iterator.cxx:39
 AliMUONDigitStoreV1Iterator.cxx:40
 AliMUONDigitStoreV1Iterator.cxx:41
 AliMUONDigitStoreV1Iterator.cxx:42
 AliMUONDigitStoreV1Iterator.cxx:43
 AliMUONDigitStoreV1Iterator.cxx:44
 AliMUONDigitStoreV1Iterator.cxx:45
 AliMUONDigitStoreV1Iterator.cxx:46
 AliMUONDigitStoreV1Iterator.cxx:47
 AliMUONDigitStoreV1Iterator.cxx:48
 AliMUONDigitStoreV1Iterator.cxx:49
 AliMUONDigitStoreV1Iterator.cxx:50
 AliMUONDigitStoreV1Iterator.cxx:51
 AliMUONDigitStoreV1Iterator.cxx:52
 AliMUONDigitStoreV1Iterator.cxx:53
 AliMUONDigitStoreV1Iterator.cxx:54
 AliMUONDigitStoreV1Iterator.cxx:55
 AliMUONDigitStoreV1Iterator.cxx:56
 AliMUONDigitStoreV1Iterator.cxx:57
 AliMUONDigitStoreV1Iterator.cxx:58
 AliMUONDigitStoreV1Iterator.cxx:59
 AliMUONDigitStoreV1Iterator.cxx:60
 AliMUONDigitStoreV1Iterator.cxx:61
 AliMUONDigitStoreV1Iterator.cxx:62
 AliMUONDigitStoreV1Iterator.cxx:63
 AliMUONDigitStoreV1Iterator.cxx:64
 AliMUONDigitStoreV1Iterator.cxx:65
 AliMUONDigitStoreV1Iterator.cxx:66
 AliMUONDigitStoreV1Iterator.cxx:67
 AliMUONDigitStoreV1Iterator.cxx:68
 AliMUONDigitStoreV1Iterator.cxx:69
 AliMUONDigitStoreV1Iterator.cxx:70
 AliMUONDigitStoreV1Iterator.cxx:71
 AliMUONDigitStoreV1Iterator.cxx:72
 AliMUONDigitStoreV1Iterator.cxx:73
 AliMUONDigitStoreV1Iterator.cxx:74
 AliMUONDigitStoreV1Iterator.cxx:75
 AliMUONDigitStoreV1Iterator.cxx:76
 AliMUONDigitStoreV1Iterator.cxx:77
 AliMUONDigitStoreV1Iterator.cxx:78
 AliMUONDigitStoreV1Iterator.cxx:79
 AliMUONDigitStoreV1Iterator.cxx:80
 AliMUONDigitStoreV1Iterator.cxx:81
 AliMUONDigitStoreV1Iterator.cxx:82
 AliMUONDigitStoreV1Iterator.cxx:83
 AliMUONDigitStoreV1Iterator.cxx:84
 AliMUONDigitStoreV1Iterator.cxx:85
 AliMUONDigitStoreV1Iterator.cxx:86
 AliMUONDigitStoreV1Iterator.cxx:87
 AliMUONDigitStoreV1Iterator.cxx:88
 AliMUONDigitStoreV1Iterator.cxx:89
 AliMUONDigitStoreV1Iterator.cxx:90
 AliMUONDigitStoreV1Iterator.cxx:91
 AliMUONDigitStoreV1Iterator.cxx:92
 AliMUONDigitStoreV1Iterator.cxx:93
 AliMUONDigitStoreV1Iterator.cxx:94
 AliMUONDigitStoreV1Iterator.cxx:95
 AliMUONDigitStoreV1Iterator.cxx:96
 AliMUONDigitStoreV1Iterator.cxx:97
 AliMUONDigitStoreV1Iterator.cxx:98
 AliMUONDigitStoreV1Iterator.cxx:99
 AliMUONDigitStoreV1Iterator.cxx:100
 AliMUONDigitStoreV1Iterator.cxx:101
 AliMUONDigitStoreV1Iterator.cxx:102
 AliMUONDigitStoreV1Iterator.cxx:103
 AliMUONDigitStoreV1Iterator.cxx:104
 AliMUONDigitStoreV1Iterator.cxx:105
 AliMUONDigitStoreV1Iterator.cxx:106
 AliMUONDigitStoreV1Iterator.cxx:107
 AliMUONDigitStoreV1Iterator.cxx:108
 AliMUONDigitStoreV1Iterator.cxx:109
 AliMUONDigitStoreV1Iterator.cxx:110
 AliMUONDigitStoreV1Iterator.cxx:111
 AliMUONDigitStoreV1Iterator.cxx:112
 AliMUONDigitStoreV1Iterator.cxx:113
 AliMUONDigitStoreV1Iterator.cxx:114
 AliMUONDigitStoreV1Iterator.cxx:115
 AliMUONDigitStoreV1Iterator.cxx:116
 AliMUONDigitStoreV1Iterator.cxx:117
 AliMUONDigitStoreV1Iterator.cxx:118
 AliMUONDigitStoreV1Iterator.cxx:119
 AliMUONDigitStoreV1Iterator.cxx:120
 AliMUONDigitStoreV1Iterator.cxx:121
 AliMUONDigitStoreV1Iterator.cxx:122
 AliMUONDigitStoreV1Iterator.cxx:123
 AliMUONDigitStoreV1Iterator.cxx:124
 AliMUONDigitStoreV1Iterator.cxx:125
 AliMUONDigitStoreV1Iterator.cxx:126
 AliMUONDigitStoreV1Iterator.cxx:127
 AliMUONDigitStoreV1Iterator.cxx:128
 AliMUONDigitStoreV1Iterator.cxx:129
 AliMUONDigitStoreV1Iterator.cxx:130
 AliMUONDigitStoreV1Iterator.cxx:131
 AliMUONDigitStoreV1Iterator.cxx:132
 AliMUONDigitStoreV1Iterator.cxx:133
 AliMUONDigitStoreV1Iterator.cxx:134
 AliMUONDigitStoreV1Iterator.cxx:135
 AliMUONDigitStoreV1Iterator.cxx:136
 AliMUONDigitStoreV1Iterator.cxx:137
 AliMUONDigitStoreV1Iterator.cxx:138
 AliMUONDigitStoreV1Iterator.cxx:139
 AliMUONDigitStoreV1Iterator.cxx:140
 AliMUONDigitStoreV1Iterator.cxx:141
 AliMUONDigitStoreV1Iterator.cxx:142