ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpPad.h,v 1.11 2006/05/24 13:58:07 ivana Exp $

/// \ingroup basic
/// \class AliMpPad
/// \brief Class which encapsuate all information about a pad
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_PAD_H
#define ALI_MP_PAD_H

#include "AliMpEncodePair.h"

#include <TObject.h>

#include <TClonesArray.h>

class AliMpPad : public TObject
{
 public:
  AliMpPad(Int_t manuId, Int_t channel,
           Int_t ix, Int_t iy,
           Double_t x,  Double_t y, 
           Double_t dx,  Double_t dy,
	   Bool_t validity = true);
  AliMpPad(Int_t manuId, Int_t channel,
           MpPair_t indices,
           Double_t positionX,  Double_t positionY, 
           Double_t dx,  Double_t dy,
	   Bool_t validity = true);

  AliMpPad();
  AliMpPad(const AliMpPad& src);
  ~AliMpPad();

  //
  // operators  
  //
  Bool_t operator == (const AliMpPad& pos2) const;
  Bool_t operator != (const AliMpPad& pos2) const;
  AliMpPad& operator = (const AliMpPad& src) ;
  
  //
  // methods
  //
  void PrintOn(ostream& out) const;
  void Print(const char* /*option*/ = "") const;

  //
  // static get methods
  //
               /// Return invalid pad
  static AliMpPad Invalid() {return AliMpPad();}

  //
  // set methods
  //
  Bool_t  AddLocation(Int_t localBoardId, Int_t localBoardChannel, 
                      Bool_t warn = true);

  //
  // get methods
  //
               /// Return pad location as encoded pair (manuId, manuChannel)
  MpPair_t     GetLocation() const { return fLLocation; }
  Int_t        GetManuId() const;
  Int_t        GetManuChannel() const;
  
               /// Return pad indices as encoded pair (ix, iy)
  MpPair_t     GetIndices()  const { return fLIndices; }
  Int_t        GetIx() const;
  Int_t        GetIy() const;
  
               /// Return the pad x position (in cm)
  Double_t     GetPositionX() const { return fPositionX; }
               /// Return the pad x position (in cm)
  Double_t     GetPositionY() const { return fPositionY; }
  
               /// Return the x pad dimension - half length (in cm)
  Double_t     GetDimensionX()  const {return fDimensionX;}
               /// Return the y pad dimension - half length (in cm)
  Double_t     GetDimensionY()  const {return fDimensionY;}

               /// Return validity
  Bool_t       IsValid()     const {return fValidity  ;}
  
  Int_t        GetNofLocations() const;
  MpPair_t     GetLocation(Int_t i) const;  
  Int_t        GetLocalBoardId(Int_t i) const;
  Int_t        GetLocalBoardChannel(Int_t i) const;

  Bool_t       HasLocation(Int_t localBoardId, Int_t localBoardChannel) const; 

 private:

  // static data members
  static const Int_t  fgkMaxNofLocations; ///< \brief maximum number of pad locations
                                          /// in the collection
  // data members
  UInt_t          fNofLocations;   ///<  number of locations in fLocations
  /// Collection of pad locations - encoded pair (localBoardId, localBoardChannel) 
  MpPair_t*       fLLocations;     //[fNofLocations]
  MpPair_t        fLLocation;      ///<  pad location as encoded pair (manuId, manuChannel) 
  MpPair_t        fLIndices;       ///<  pad indices as encoded pair (ix, iy)  
  Double_t        fPositionX;      ///<  the pad x position (in cm)
  Double_t        fPositionY;      ///<  the pad y position (in cm)
  Double_t        fDimensionX;     ///<  the pad x dimension - half length (in cm)
  Double_t        fDimensionY;     ///<  the pad y dimension - half length(in cm)
  Bool_t          fValidity;       ///<  validity

  ClassDef(AliMpPad,4) //utility class for the motif type
};

ostream& operator << (ostream &out, const AliMpPad& op);
Bool_t operator < (const AliMpPad& left, const AliMpPad& right);

#endif //ALI_MP_PAD_H
 AliMpPad.h:1
 AliMpPad.h:2
 AliMpPad.h:3
 AliMpPad.h:4
 AliMpPad.h:5
 AliMpPad.h:6
 AliMpPad.h:7
 AliMpPad.h:8
 AliMpPad.h:9
 AliMpPad.h:10
 AliMpPad.h:11
 AliMpPad.h:12
 AliMpPad.h:13
 AliMpPad.h:14
 AliMpPad.h:15
 AliMpPad.h:16
 AliMpPad.h:17
 AliMpPad.h:18
 AliMpPad.h:19
 AliMpPad.h:20
 AliMpPad.h:21
 AliMpPad.h:22
 AliMpPad.h:23
 AliMpPad.h:24
 AliMpPad.h:25
 AliMpPad.h:26
 AliMpPad.h:27
 AliMpPad.h:28
 AliMpPad.h:29
 AliMpPad.h:30
 AliMpPad.h:31
 AliMpPad.h:32
 AliMpPad.h:33
 AliMpPad.h:34
 AliMpPad.h:35
 AliMpPad.h:36
 AliMpPad.h:37
 AliMpPad.h:38
 AliMpPad.h:39
 AliMpPad.h:40
 AliMpPad.h:41
 AliMpPad.h:42
 AliMpPad.h:43
 AliMpPad.h:44
 AliMpPad.h:45
 AliMpPad.h:46
 AliMpPad.h:47
 AliMpPad.h:48
 AliMpPad.h:49
 AliMpPad.h:50
 AliMpPad.h:51
 AliMpPad.h:52
 AliMpPad.h:53
 AliMpPad.h:54
 AliMpPad.h:55
 AliMpPad.h:56
 AliMpPad.h:57
 AliMpPad.h:58
 AliMpPad.h:59
 AliMpPad.h:60
 AliMpPad.h:61
 AliMpPad.h:62
 AliMpPad.h:63
 AliMpPad.h:64
 AliMpPad.h:65
 AliMpPad.h:66
 AliMpPad.h:67
 AliMpPad.h:68
 AliMpPad.h:69
 AliMpPad.h:70
 AliMpPad.h:71
 AliMpPad.h:72
 AliMpPad.h:73
 AliMpPad.h:74
 AliMpPad.h:75
 AliMpPad.h:76
 AliMpPad.h:77
 AliMpPad.h:78
 AliMpPad.h:79
 AliMpPad.h:80
 AliMpPad.h:81
 AliMpPad.h:82
 AliMpPad.h:83
 AliMpPad.h:84
 AliMpPad.h:85
 AliMpPad.h:86
 AliMpPad.h:87
 AliMpPad.h:88
 AliMpPad.h:89
 AliMpPad.h:90
 AliMpPad.h:91
 AliMpPad.h:92
 AliMpPad.h:93
 AliMpPad.h:94
 AliMpPad.h:95
 AliMpPad.h:96
 AliMpPad.h:97
 AliMpPad.h:98
 AliMpPad.h:99
 AliMpPad.h:100
 AliMpPad.h:101
 AliMpPad.h:102
 AliMpPad.h:103
 AliMpPad.h:104
 AliMpPad.h:105
 AliMpPad.h:106
 AliMpPad.h:107
 AliMpPad.h:108
 AliMpPad.h:109
 AliMpPad.h:110
 AliMpPad.h:111
 AliMpPad.h:112
 AliMpPad.h:113
 AliMpPad.h:114
 AliMpPad.h:115
 AliMpPad.h:116
 AliMpPad.h:117
 AliMpPad.h:118
 AliMpPad.h:119
 AliMpPad.h:120
 AliMpPad.h:121