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$

#include "AliMpManuIterator.h"

#include "AliMpBusPatch.h"
#include "AliMpDDLStore.h"
#include "TExMap.h"
#include "AliLog.h"

/// \class AliMpManuIterator
///
/// Class to loop over all manus of MUON Tracker
/// 
/// \author Laurent Aphecetche, Subatech

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

//_____________________________________________________________________________
AliMpManuIterator::AliMpManuIterator()
: TObject(), 
fIterator(AliMpDDLStore::Instance()->CreateBusPatchIterator()),
fCurrentBusPatch(0x0),
fCurrentManuIndex(-1)
{
  /// ctor
  Reset();
}

//_____________________________________________________________________________
AliMpManuIterator::~AliMpManuIterator()
{
  /// dtor
  delete fIterator;
}

//_____________________________________________________________________________
Bool_t
AliMpManuIterator::Next(Int_t& detElemId, Int_t& manuId)
{
  /// Set the next (de,manu) pair and return kTRUE, or kFALSE if ended.
  
  ++fCurrentManuIndex;
  
  if ( fCurrentManuIndex < fCurrentBusPatch->GetNofManus() ) 
  {
    detElemId = fCurrentBusPatch->GetDEId();
    manuId = fCurrentBusPatch->GetManuId(fCurrentManuIndex);
    return kTRUE;
  }
  else
  {
    fCurrentBusPatch = static_cast<AliMpBusPatch*>(fIterator->Next());
    if (!fCurrentBusPatch ) 
    {
      return kFALSE;
    }
    fCurrentManuIndex = -1;
    return Next(detElemId,manuId);
  }
}

//_____________________________________________________________________________
void
AliMpManuIterator::Reset()
{
  /// Rewind the iterator
  fIterator->Reset();
  
  fCurrentBusPatch = static_cast<AliMpBusPatch*>(fIterator->Next());
  
  fCurrentManuIndex = -1;
}
 AliMpManuIterator.cxx:1
 AliMpManuIterator.cxx:2
 AliMpManuIterator.cxx:3
 AliMpManuIterator.cxx:4
 AliMpManuIterator.cxx:5
 AliMpManuIterator.cxx:6
 AliMpManuIterator.cxx:7
 AliMpManuIterator.cxx:8
 AliMpManuIterator.cxx:9
 AliMpManuIterator.cxx:10
 AliMpManuIterator.cxx:11
 AliMpManuIterator.cxx:12
 AliMpManuIterator.cxx:13
 AliMpManuIterator.cxx:14
 AliMpManuIterator.cxx:15
 AliMpManuIterator.cxx:16
 AliMpManuIterator.cxx:17
 AliMpManuIterator.cxx:18
 AliMpManuIterator.cxx:19
 AliMpManuIterator.cxx:20
 AliMpManuIterator.cxx:21
 AliMpManuIterator.cxx:22
 AliMpManuIterator.cxx:23
 AliMpManuIterator.cxx:24
 AliMpManuIterator.cxx:25
 AliMpManuIterator.cxx:26
 AliMpManuIterator.cxx:27
 AliMpManuIterator.cxx:28
 AliMpManuIterator.cxx:29
 AliMpManuIterator.cxx:30
 AliMpManuIterator.cxx:31
 AliMpManuIterator.cxx:32
 AliMpManuIterator.cxx:33
 AliMpManuIterator.cxx:34
 AliMpManuIterator.cxx:35
 AliMpManuIterator.cxx:36
 AliMpManuIterator.cxx:37
 AliMpManuIterator.cxx:38
 AliMpManuIterator.cxx:39
 AliMpManuIterator.cxx:40
 AliMpManuIterator.cxx:41
 AliMpManuIterator.cxx:42
 AliMpManuIterator.cxx:43
 AliMpManuIterator.cxx:44
 AliMpManuIterator.cxx:45
 AliMpManuIterator.cxx:46
 AliMpManuIterator.cxx:47
 AliMpManuIterator.cxx:48
 AliMpManuIterator.cxx:49
 AliMpManuIterator.cxx:50
 AliMpManuIterator.cxx:51
 AliMpManuIterator.cxx:52
 AliMpManuIterator.cxx:53
 AliMpManuIterator.cxx:54
 AliMpManuIterator.cxx:55
 AliMpManuIterator.cxx:56
 AliMpManuIterator.cxx:57
 AliMpManuIterator.cxx:58
 AliMpManuIterator.cxx:59
 AliMpManuIterator.cxx:60
 AliMpManuIterator.cxx:61
 AliMpManuIterator.cxx:62
 AliMpManuIterator.cxx:63
 AliMpManuIterator.cxx:64
 AliMpManuIterator.cxx:65
 AliMpManuIterator.cxx:66
 AliMpManuIterator.cxx:67
 AliMpManuIterator.cxx:68
 AliMpManuIterator.cxx:69
 AliMpManuIterator.cxx:70
 AliMpManuIterator.cxx:71
 AliMpManuIterator.cxx:72
 AliMpManuIterator.cxx:73
 AliMpManuIterator.cxx:74
 AliMpManuIterator.cxx:75
 AliMpManuIterator.cxx:76
 AliMpManuIterator.cxx:77
 AliMpManuIterator.cxx:78
 AliMpManuIterator.cxx:79
 AliMpManuIterator.cxx:80
 AliMpManuIterator.cxx:81
 AliMpManuIterator.cxx:82
 AliMpManuIterator.cxx:83
 AliMpManuIterator.cxx:84
 AliMpManuIterator.cxx:85
 AliMpManuIterator.cxx:86
 AliMpManuIterator.cxx:87
 AliMpManuIterator.cxx:88
 AliMpManuIterator.cxx:89