New macro to keep track of timing performances of the segmentation methods (Laurent)
[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 //-----------------------------------------------------------------------------
21 // Class AliMpZone
22 // ---------------
23 // Class describing a zone composed of the zone segments.
24 // The zone contains pads of the same dimensions.
25 // Included in AliRoot: 2003/05/02
26 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
27 //-----------------------------------------------------------------------------
28
29 #include "AliMpZone.h"
30 #include "AliMpSubZone.h"
31
32 /// \cond CLASSIMP
33 ClassImp(AliMpZone)
34 /// \endcond
35
36 //_____________________________________________________________________________
37 AliMpZone::AliMpZone(Int_t id) 
38   : TObject(),
39     fID(id),
40     fSubZones(),
41     fPadDimensions(TVector2())
42 {
43 /// Standard constructor
44 }
45
46 //_____________________________________________________________________________
47 AliMpZone::AliMpZone() 
48   : TObject(),
49     fID(0),
50     fSubZones(),
51     fPadDimensions(TVector2())
52 {
53 /// Default constructor
54 }
55
56 //_____________________________________________________________________________
57 AliMpZone::~AliMpZone() 
58 {
59 /// Destructor
60
61   for (Int_t i=0; i<GetNofSubZones(); i++)
62     delete fSubZones[i];  
63 }
64
65 //
66 // public methods
67 //
68
69 //_____________________________________________________________________________
70 void AliMpZone::AddSubZone(AliMpSubZone* subZone)
71 {
72 /// Add row segment.
73
74 #ifdef WITH_STL
75   fSubZones.push_back(subZone);
76 #endif
77
78 #ifdef WITH_ROOT
79   fSubZones.Add(subZone);
80 #endif
81 }  
82   
83 //_____________________________________________________________________________
84 AliMpSubZone* AliMpZone::FindSubZone(AliMpVMotif* motif) const
85 {
86 /// Find a subzone with a specified motif;
87 /// return 0 if not found.
88
89   for (Int_t i=0; i<GetNofSubZones(); i++) {
90     AliMpSubZone* subZone = GetSubZone(i);
91     if (subZone->GetMotif() == motif) return subZone;
92   }
93   
94   return 0;  
95 }
96
97 //_____________________________________________________________________________
98 Int_t AliMpZone::GetNofSubZones() const 
99 {
100 /// Return number of row segments.
101
102 #ifdef WITH_STL
103   return fSubZones.size();
104 #endif
105
106 #ifdef WITH_ROOT
107   return fSubZones.GetEntriesFast();
108 #endif
109 }  
110
111 //_____________________________________________________________________________
112 AliMpSubZone* AliMpZone::GetSubZone(Int_t i) const 
113 {
114 /// Return i-th sub zone.
115
116   if (i<0 || i>=GetNofSubZones()) {
117     Warning("GetSubZone", "Index outside range");
118     return 0;
119   }
120   
121 #ifdef WITH_STL
122   return fSubZones[i];  
123 #endif
124
125 #ifdef WITH_ROOT
126   return (AliMpSubZone*)fSubZones[i];  
127 #endif
128 }