Updated det element names (Christian)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpVSegmentation.h
CommitLineData
dee1d5f1 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
5f91c9e8 4// $Id$
13985652 5// $MpId: AliMpVSegmentation.h,v 1.12 2006/05/24 13:58:07 ivana Exp $
dee1d5f1 6
7/// \ingroup basic
8/// \class AliMpVSegmentation
9/// \brief The abstract base class for the segmentation.
10///
11/// Provides methods related to pads:
12/// conversion between pad indices, pad location, pad position;
13/// finding pad neighbour.
14///
c49cb542 15/// \author David Guez, Ivana Hrivnacova, IPN Orsay;
16/// Laurent Aphecetche, SUBATECH
5f91c9e8 17
18#ifndef ALI_MP_V_SEGMENTATION_H
19#define ALI_MP_V_SEGMENTATION_H
20
21#include <TObject.h>
5f91c9e8 22
5f91c9e8 23#include "AliMpPadPair.h"
24#include "AliMpPad.h"
6914e59d 25#include "AliMpPlaneType.h"
2998a151 26
5f91c9e8 27class AliMpVPadIterator;
2998a151 28class AliMpIntPair;
29class AliMpArea;
5f91c9e8 30
2a7ea2e6 31class TArrayI;
32class TVector2;
c49cb542 33class TObjArray;
2a7ea2e6 34
5f91c9e8 35class AliMpVSegmentation : public TObject
36{
37 public:
38 AliMpVSegmentation();
39 virtual ~AliMpVSegmentation();
40
c49cb542 41 // factory methods
42 /// Create a pad iterator over the given area
5f91c9e8 43 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const = 0;
c49cb542 44
45 /// Create a pad iterator over the whole area
46 virtual AliMpVPadIterator* CreateIterator() const = 0;
47
48 /** Fills the array with the pads that are neighbours of pad. Returns
49 the number of neighbours. */
50 virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
51 Bool_t includeSelf=kFALSE,
52 Bool_t includeVoid=kFALSE) const = 0;
5f91c9e8 53
54 // methods
55 virtual AliMpPad PadByLocation(const AliMpIntPair& location,
8be59ff4 56 Bool_t warning = true) const = 0;
5f91c9e8 57 virtual AliMpPad PadByIndices (const AliMpIntPair& indices,
8be59ff4 58 Bool_t warning = true) const = 0;
5f91c9e8 59 virtual AliMpPad PadByPosition(const TVector2& position,
8be59ff4 60 Bool_t warning = true) const = 0;
5f91c9e8 61
62 virtual AliMpPadPair PadsUp(const AliMpPad& pad) const;
63 virtual AliMpPadPair PadsDown(const AliMpPad& pad) const;
64 virtual AliMpPadPair PadsLeft(const AliMpPad& pad) const;
65 virtual AliMpPadPair PadsRight(const AliMpPad& pad) const;
66
bd984e15 67 virtual Int_t MaxPadIndexX() const = 0;
68 virtual Int_t MaxPadIndexY() const = 0;
69 virtual Int_t NofPads() const = 0;
580c28fd 70
5f91c9e8 71 virtual Bool_t HasPad(const AliMpIntPair& indices) const = 0;
72
6914e59d 73 virtual void GetAllElectronicCardIDs(TArrayI& ecn) const = 0;
74
cddd101e 75 virtual AliMp::PlaneType PlaneType() const = 0;
6914e59d 76
77 /// Gives the half-sizes (in cm) of the underlying detection element.
78 virtual TVector2 Dimensions() const = 0;
79
5f91c9e8 80 private:
81 // methods
82 AliMpPadPair FindPads(const TVector2& position1,
83 const TVector2& position2) const;
84
85 ClassDef(AliMpVSegmentation,1) // Segmentation
86};
87
88#endif //ALI_MP_V_SEGMENTATION_H
89