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$
// $MpId: AliMpMotifPosition.cxx,v 1.9 2006/05/24 13:58:41 ivana Exp $

//-----------------------------------------------------------------------------
// Class AliMpMotifPosition
// ------------------------
// Class that represents a placed motif.
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpMotifPosition.h"
#include "AliMpMotifPositionPadIterator.h"
#include "AliMpMotifType.h"
#include <Riostream.h>

using std::cout;
/// \cond CLASSIMP
ClassImp(AliMpMotifPosition)
/// \endcond

//______________________________________________________________________________
AliMpMotifPosition::AliMpMotifPosition(Int_t id, AliMpVMotif* motif, 
                                       Double_t x, Double_t y)
  : AliMpVIndexed(),
    fID(id),
    fMotif(motif),
    fPositionX(x), 
    fPositionY(y) 
{
/// Standard constructor
}

//______________________________________________________________________________
AliMpMotifPosition::AliMpMotifPosition()
  : AliMpVIndexed(), 
    fID(0),
    fMotif(0),
    fPositionX(0.), 
    fPositionY(0.) 
{
/// Default constructor
}

//______________________________________________________________________________
AliMpMotifPosition::~AliMpMotifPosition()
{
/// Destructor 
}

//______________________________________________________________________________
AliMpVPadIterator* AliMpMotifPosition::CreateIterator() const
{
/// Return motif position iterator

  return new AliMpMotifPositionPadIterator(this);
}  

//______________________________________________________________________________
Bool_t AliMpMotifPosition::HasPadByIndices(MpPair_t indices) const
{
/// Return true if pad with the specified indices exists in 
/// this motif position.

  if ( ! HasIndices(indices) ) return kFALSE;
  
  if (fMotif->GetMotifType()->IsFull()) return kTRUE;
  
  return fMotif->GetMotifType()->HasPadByLocalIndices(
                                    indices - GetLowIndicesLimit());
}

//______________________________________________________________________________
Bool_t AliMpMotifPosition::HasPadByManuChannel(Int_t manuChannel) const
{
  /// Return true if pad with the specified manuChannel exists in 
  /// this motif position.

  return fMotif->GetMotifType()->HasPadByManuChannel(manuChannel);
}

//_____________________________________________________________________________
void
AliMpMotifPosition::SetID(Int_t id)
{
/// Set ID

  fID = id;
}

//_____________________________________________________________________________
void
AliMpMotifPosition::SetPosition(Double_t x, Double_t y)
{
/// Set position

  fPositionX = x;
  fPositionY = y;
}

//_____________________________________________________________________________
void
AliMpMotifPosition::Print(Option_t* option) const
{
/// Printing

  cout << "MOTIFPOSITION " << GetID() << " MOTIF " 
       << GetMotif()->GetID()
       << " at (" << GetPositionX() << "," 
       << GetPositionY() << ") "
       << " iMin=(" << GetLowLimitIx()
       << "," << GetLowLimitIy()
       << ") iMax=(" << GetHighLimitIx()
       << "," << GetHighLimitIy()
       << ")" << std::endl;

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