Line data Source code
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 18 : ClassImp(AliMpZone)
34 : /// \endcond
35 :
36 : //_____________________________________________________________________________
37 : AliMpZone::AliMpZone(Int_t id)
38 42 : : TObject(),
39 42 : fID(id),
40 42 : fSubZones(),
41 42 : fPadDimensionX(0.),
42 42 : fPadDimensionY(0.)
43 210 : {
44 : /// Standard constructor
45 84 : }
46 :
47 : //_____________________________________________________________________________
48 : AliMpZone::AliMpZone()
49 0 : : TObject(),
50 0 : fID(0),
51 0 : fSubZones(),
52 0 : fPadDimensionX(0.),
53 0 : fPadDimensionY(0.)
54 0 : {
55 : /// Default constructor
56 0 : }
57 :
58 : //_____________________________________________________________________________
59 : AliMpZone::~AliMpZone()
60 168 : {
61 : /// Destructor
62 :
63 828 : for (Int_t i=0; i<GetNofSubZones(); i++)
64 744 : delete fSubZones[i];
65 84 : }
66 :
67 : //
68 : // public methods
69 : //
70 :
71 : //_____________________________________________________________________________
72 : void AliMpZone::AddSubZone(AliMpSubZone* subZone)
73 : {
74 : /// Add row segment.
75 :
76 744 : fSubZones.Add(subZone);
77 372 : }
78 :
79 : //_____________________________________________________________________________
80 : AliMpSubZone* AliMpZone::FindSubZone(const AliMpVMotif* motif) const
81 : {
82 : /// Find a subzone with a specified motif;
83 : /// return 0 if not found.
84 :
85 8553 : for (Int_t i=0; i<GetNofSubZones(); i++) {
86 3813 : AliMpSubZone* subZone = GetSubZone(i);
87 3996 : if (subZone->GetMotif() == motif) return subZone;
88 3630 : }
89 :
90 186 : return 0;
91 369 : }
92 :
93 : //_____________________________________________________________________________
94 : void AliMpZone::SetPadDimensions(Double_t dx, Double_t dy)
95 : {
96 : /// Set pad dimensions
97 :
98 84 : fPadDimensionX = dx;
99 42 : fPadDimensionY = dy;
100 42 : }
101 :
102 : //_____________________________________________________________________________
103 : Int_t AliMpZone::GetNofSubZones() const
104 : {
105 : /// Return number of row segments.
106 :
107 16176 : return fSubZones.GetEntriesFast();
108 : }
109 :
110 : //_____________________________________________________________________________
111 : AliMpSubZone* AliMpZone::GetSubZone(Int_t i) const
112 : {
113 : /// Return i-th sub zone.
114 :
115 11439 : if (i<0 || i>=GetNofSubZones()) {
116 0 : Warning("GetSubZone", "Index outside range");
117 0 : return 0;
118 : }
119 :
120 3813 : return (AliMpSubZone*)fSubZones[i];
121 3813 : }
|