+/**************************************************************************
+ * 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: AliMpRow.cxx,v 1.9 2006/05/24 13:58:46 ivana Exp $
// Category: sector
//
// Class AliMpRow
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
-#include <Riostream.h>
-#include <TError.h>
-#include <TMath.h>
-
#include "AliMpRow.h"
#include "AliMpVRowSegment.h"
#include "AliMpVRowSegmentSpecial.h"
#include "AliMpMotifMap.h"
#include "AliMpConstants.h"
+#include <TMath.h>
+#include <Riostream.h>
+
+/// \cond CLASSIMP
ClassImp(AliMpRow)
+/// \endcond
//_____________________________________________________________________________
AliMpRow::AliMpRow(Int_t id, AliMpMotifMap* motifMap)
fSegments(),
fMotifMap(motifMap)
{
-//
+/// Standard constructor
}
//_____________________________________________________________________________
fSegments(),
fMotifMap(0)
{
-//
-}
-
-//_____________________________________________________________________________
-AliMpRow::AliMpRow(const AliMpRow& right)
- : AliMpVIndexed(right) {
-//
- Fatal("AliMpRow", "Copy constructor not provided.");
+/// Default constructor
}
//_____________________________________________________________________________
-AliMpRow::~AliMpRow() {
-//
+AliMpRow::~AliMpRow()
+{
+/// Destructor
#ifdef WITH_STL
for (Int_t i=0; i<GetNofRowSegments(); i++)
#endif
}
-//
-// operators
-//
-
-//_____________________________________________________________________________
-AliMpRow& AliMpRow::operator=(const AliMpRow& right)
-{
- // check assignement to self
- if (this == &right) return *this;
-
- Fatal("operator =", "Assignement operator not provided.");
-
- return *this;
-}
-
//
// private methods
//
//_____________________________________________________________________________
AliMpVRowSegment* AliMpRow::FindRowSegment(Int_t ix) const
{
-// Finds first normal row segment with low indices limit >= ix.
-// ---
+/// Find first normal row segment with low indices limit >= ix.
for (Int_t i=0; i<GetNofRowSegments(); i++) {
AliMpVRowSegment* segment = GetRowSegment(i);
AliMpMotifPosition*
AliMpRow::FindMotifPosition(AliMpVRowSegment* segment, Int_t ix) const
{
-// Finds first motif position in the specified row segment
-// with high indices limit >= ix.
-// ---
+/// Find first motif position in the specified row segment
+/// with high indices limit >= ix.
if (!segment) return 0;
//_____________________________________________________________________________
void AliMpRow::SetHighIndicesLimits(Int_t iy)
{
-// Sets the global indices high limit to its row segments,
-// motif positions with a given value.
-// Keeps ix unmodified.
-// ---
+/// Set the global indices high limit to its row segments,
+/// motif positions with a given value.
+/// Keep ix unmodified.
for (Int_t j=0; j<GetNofRowSegments(); j++) {
AliMpVRowSegment* rowSegment = GetRowSegment(j);
//_____________________________________________________________________________
void AliMpRow::CheckEmpty() const
{
-// Give a fatal if row is empty.
-// ---
+/// Give a fatal if the row is empty.
if (GetNofRowSegments() == 0)
Fatal("CheckEmpty", "Empty row");
//_____________________________________________________________________________
void AliMpRow::AddRowSegment(AliMpVRowSegment* rowSegment)
{
-// Adds row segment at the end.
-// ---
+/// Add row segment at the end.
#ifdef WITH_STL
fSegments.push_back(rowSegment);
//_____________________________________________________________________________
void AliMpRow::AddRowSegmentInFront(AliMpVRowSegment* rowSegment)
{
-// Inserts row segment in the first vector position.
-// ---
+/// Insert row segment in the first vector position.
#ifdef WITH_STL
fSegments.insert(fSegments.begin(), rowSegment);
//_____________________________________________________________________________
AliMpVRowSegment* AliMpRow::FindRowSegment(Double_t x) const
{
-// Finds the row segment for the specified x position;
-// returns 0 if no row segment is found.
-// ---
+/// Find the row segment for the specified x position;
+/// return 0 if no row segment is found.
for (Int_t i=0; i<GetNofRowSegments(); i++) {
//_____________________________________________________________________________
Double_t AliMpRow::LowBorderY() const
{
-// Returns the lowest row offset (the Y coordinate of the position of the
-// low border of motif).
-// ---
+/// Return the lowest row offset (the Y coordinate of the position of the
+/// low border of motif).
CheckEmpty();
//_____________________________________________________________________________
Double_t AliMpRow::UpperBorderY() const
{
-// Returns the uppermost row offset (the Y coordinate of the position of the
-// upper border of motif).
-// ---
-
+/// Return the uppermost row offset (the Y coordinate of the position of the
+/// upper border of motif).
+\
CheckEmpty();
return fOffsetY + GetRowSegment(0)->HalfSizeY();
//_____________________________________________________________________________
AliMpVPadIterator* AliMpRow::CreateIterator() const
{
-// Iterator is not yet implemented.
-// ---
+/// Iterator is not implemented.
- Fatal("CreateIterator", "Iterator is not yet implemented.");
+ Fatal("CreateIterator", "Iterator is not implemented.");
return 0;
}
//_____________________________________________________________________________
void AliMpRow::SetMotifPositions()
{
-// Creates motif positions objects and fills them in the motif map.
-// ---
+/// Create motif positions objects and fills them in the motif map.
CheckEmpty();
void AliMpRow::SetGlobalIndices(AliMpDirection constPadSizeDirection,
AliMpRow* rowBefore)
{
-// Sets the global indices limits to its row segments, motif positions
-// and itself.
-// ---
+/// Set the global indices limits to its row segments, motif positions
+/// and itself.
Int_t ix = AliMpConstants::StartPadIndex();
Int_t iy = AliMpConstants::StartPadIndex();
//_____________________________________________________________________________
TVector2 AliMpRow::Position() const
{
-// Returns the position of the row centre.
-// ---
+/// Return the position of the row centre.
Double_t x = (GetRowSegment(0)->LeftBorderX() +
GetRowSegment(GetNofRowSegments()-1)->RightBorderX())/2.;
//_____________________________________________________________________________
TVector2 AliMpRow::Dimensions() const
{
-// Returns the maximum halflengths of the row in x, y.
-// ---
+/// Return the maximum halflengths of the row in x, y.
Double_t x = (GetRowSegment(GetNofRowSegments()-1)->RightBorderX() -
GetRowSegment(0)->LeftBorderX())/2.;
//_____________________________________________________________________________
void AliMpRow::SetRowSegmentOffsets(const TVector2& offset)
{
-// Sets the row segments offsets in X .
-// ---
+/// Set the row segments offsets in X .
CheckEmpty();
//_____________________________________________________________________________
Double_t AliMpRow::SetOffsetY(Double_t offsetY)
{
-// Sets the row offset (the Y coordinate of the position of the
-// center of motif) and returns the offset of the top border.
-// ---
+/// Set the row offset (the Y coordinate of the position of the
+/// center of motif) and returns the offset of the top border.
CheckEmpty();
Double_t sizeY = GetRowSegment(i)->HalfSizeY();
if (TMath::Abs(sizeY - rowSizeY) >= AliMpConstants::LengthTolerance()) {
- //cout << GetID() << "th row " << i << "th segment "
- // << sizeY << " " << rowSizeY << endl;
Fatal("SetOffsetY", "Motif with different Y size in one row");
return 0.;
}
//_____________________________________________________________________________
Int_t AliMpRow::GetNofRowSegments() const
{
-// Returns number of row segments.
-// ---
+/// Return number of row segments.
#ifdef WITH_STL
return fSegments.size();
//_____________________________________________________________________________
AliMpVRowSegment* AliMpRow::GetRowSegment(Int_t i) const
{
-// Returns i-th row segment.
-// ---
+/// Return i-th row segment.
if (i<0 || i>=GetNofRowSegments()) {
- Warning("GetRowSegment", "Index outside range");
+ AliWarningStream() << "Index outside range" << endl;
return 0;
}