Updated det element names (Christian)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpZone.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 // $Id$
17 // $MpId: AliMpZone.cxx,v 1.7 2006/05/24 13:58:46 ivana Exp $
18 // Category: sector
19 //
20 // Class AliMpZone
21 // ---------------
22 // Class describing a zone composed of the zone segments.
23 // The zone contains pads of the same dimensions.
24 // Included in AliRoot: 2003/05/02
25 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
26
27 #include "AliMpZone.h"
28 #include "AliMpSubZone.h"
29
30 /// \cond CLASSIMP
31 ClassImp(AliMpZone)
32 /// \endcond
33
34 //_____________________________________________________________________________
35 AliMpZone::AliMpZone(Int_t id) 
36   : TObject(),
37     fID(id),
38     fSubZones(),
39     fPadDimensions(TVector2())
40 {
41 /// Standard constructor
42 }
43
44 //_____________________________________________________________________________
45 AliMpZone::AliMpZone() 
46   : TObject(),
47     fID(0),
48     fSubZones(),
49     fPadDimensions(TVector2())
50 {
51 /// Default constructor
52 }
53
54 //_____________________________________________________________________________
55 AliMpZone::~AliMpZone() 
56 {
57 /// Destructor
58
59   for (Int_t i=0; i<GetNofSubZones(); i++)
60     delete fSubZones[i];  
61 }
62
63 //
64 // public methods
65 //
66
67 //_____________________________________________________________________________
68 void AliMpZone::AddSubZone(AliMpSubZone* subZone)
69 {
70 /// Add row segment.
71
72 #ifdef WITH_STL
73   fSubZones.push_back(subZone);
74 #endif
75
76 #ifdef WITH_ROOT
77   fSubZones.Add(subZone);
78 #endif
79 }  
80   
81 //_____________________________________________________________________________
82 AliMpSubZone* AliMpZone::FindSubZone(AliMpVMotif* motif) const
83 {
84 /// Find a subzone with a specified motif;
85 /// return 0 if not found.
86
87   for (Int_t i=0; i<GetNofSubZones(); i++) {
88     AliMpSubZone* subZone = GetSubZone(i);
89     if (subZone->GetMotif() == motif) return subZone;
90   }
91   
92   return 0;  
93 }
94
95 //_____________________________________________________________________________
96 Int_t AliMpZone::GetNofSubZones() const 
97 {
98 /// Return number of row segments.
99
100 #ifdef WITH_STL
101   return fSubZones.size();
102 #endif
103
104 #ifdef WITH_ROOT
105   return fSubZones.GetEntriesFast();
106 #endif
107 }  
108
109 //_____________________________________________________________________________
110 AliMpSubZone* AliMpZone::GetSubZone(Int_t i) const 
111 {
112 /// Return i-th sub zone.
113
114   if (i<0 || i>=GetNofSubZones()) {
115     Warning("GetSubZone", "Index outside range");
116     return 0;
117   }
118   
119 #ifdef WITH_STL
120   return fSubZones[i];  
121 #endif
122
123 #ifdef WITH_ROOT
124   return (AliMpSubZone*)fSubZones[i];  
125 #endif
126 }