+/**************************************************************************
+ * 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$
+// $MpId: AliMpSectorAreaHPadIterator.cxx,v 1.7 2006/05/24 13:58:46 ivana Exp $
// Category: sector
//
// Class AliMpSectorAreaHPadIterator
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
-#include <Riostream.h>
-
#include "AliMpSectorAreaHPadIterator.h"
#include "AliMpSectorSegmentation.h"
#include "AliMpConstants.h"
+#include <Riostream.h>
+
+/// \cond CLASSIMP
ClassImp(AliMpSectorAreaHPadIterator)
+/// \endcond
//______________________________________________________________________________
AliMpSectorAreaHPadIterator::AliMpSectorAreaHPadIterator(
fCurrentPad(AliMpPad::Invalid()),
fCurrentRowPosition(0.)
{
-// normal constructor, start in invalid position
+/// Standard constructor, start in invalid position
}
//______________________________________________________________________________
AliMpSectorAreaHPadIterator::AliMpSectorAreaHPadIterator(
const AliMpSectorAreaHPadIterator& right)
- : AliMpVPadIterator(right)
+ : AliMpVPadIterator(right),
+ fkSegmentation(0),
+ fkArea(AliMpArea()),
+ fCurrentPad(AliMpPad::Invalid()),
+ fCurrentRowPosition(0.)
{
-// copy constructor
+/// Copy constructor
- Fatal("Copy constructor", "Not implemented");
+ *this = right;
}
//______________________________________________________________________________
fCurrentPad(AliMpPad::Invalid()),
fCurrentRowPosition(0.)
{
-// Dummy default constructor.
+/// Default constructor.
}
//______________________________________________________________________________
AliMpSectorAreaHPadIterator::~AliMpSectorAreaHPadIterator()
{
-// destructor
+/// Destructor
}
//
AliMpSectorAreaHPadIterator&
AliMpSectorAreaHPadIterator::operator = (const AliMpSectorAreaHPadIterator& right)
{
-// Assignement operator
+/// Assignment operator
- // check assignement to self
+ // check assignment to self
if (this == &right) return *this;
- // base class assignement
+ // base class assignment
AliMpVPadIterator::operator=(right);
fkSegmentation = right.fkSegmentation;
//______________________________________________________________________________
Bool_t AliMpSectorAreaHPadIterator::IsValid() const
{
-// Is the iterator in a valid position?
-// ---
+/// Is the iterator in a valid position?
return fCurrentPad.IsValid() ;
}
//______________________________________________________________________________
void AliMpSectorAreaHPadIterator::MoveUp()
{
-// Increase the current row position and searches the first valid pad.
-// ---
+/// Increase the current row position and searches the first valid pad.
- Double_t step = 2.* fkSegmentation->GetMinPadDimensions().Y();
+ Double_t dy = fkSegmentation->GetMinPadDimensions().Y();
while ( !fCurrentPad.IsValid() &&
- fCurrentRowPosition + step < fkArea.UpBorder())
+ fCurrentRowPosition + dy < fkArea.UpBorder())
{
- //cout << "######### Move up ##########" << endl;
-
- fCurrentRowPosition += step;
+ fCurrentRowPosition += 2.*dy;
TVector2 position = TVector2(fkArea.LeftBorder(), fCurrentRowPosition);
fCurrentPad = fkSegmentation->PadByDirection(position, fkArea.RightBorder());
//______________________________________________________________________________
void AliMpSectorAreaHPadIterator::First()
{
-// Reset the iterator, so that it points to the first available
-// pad in the area
-// ---
+/// Reset the iterator, so that it points to the first available
+/// pad in the area
if (!fkSegmentation) {
Fatal("First", "Segmentation is not defined");
//
fCurrentRowPosition = fkArea.DownBorder();
TVector2 position(fkArea.LeftDownCorner());
-
+
fCurrentPad = fkSegmentation->PadByDirection(position, fkArea.RightBorder());
MoveUp();
//______________________________________________________________________________
void AliMpSectorAreaHPadIterator::Next()
{
-// Move the iterator to the next valid pad.
-// ---
+/// Move the iterator to the next valid pad.
if (!IsValid()) return;
//______________________________________________________________________________
Bool_t AliMpSectorAreaHPadIterator::IsDone() const
{
-//
+/// Is the iterator in the end ?
+
return !IsValid();
}
//______________________________________________________________________________
AliMpPad AliMpSectorAreaHPadIterator::CurrentItem () const
{
-// Returns current pad.
-// ---
+/// Return current pad.
return fCurrentPad;
}
//______________________________________________________________________________
void AliMpSectorAreaHPadIterator::Invalidate()
{
-//
+/// Let the iterator point to the invalid position
+
fCurrentPad = AliMpPad::Invalid();
fCurrentRowPosition = 0;
}