]>
Commit | Line | Data |
---|---|---|
5f91c9e8 | 1 | // $Id$ |
2 | // Category: basic | |
3 | // | |
4 | // Class AliMpPad | |
5 | // --------------- | |
6 | // Class which encapsuate all informations about a pad | |
dbe945cc | 7 | // Included in AliRoot: 2003/05/02 |
5f91c9e8 | 8 | // Authors: David Guez, Ivana Hrivnacova; IPN Orsay |
9 | ||
10 | #include <Riostream.h> | |
11 | ||
12 | #include "AliMpPad.h" | |
13 | ||
14 | ClassImp(AliMpPad) | |
15 | ||
16 | ////////////////////////////////////////////////////////// | |
17 | // | |
18 | // This class encapsulate all the information about a pad | |
19 | // | |
20 | ////////////////////////////////////////////////////////// | |
21 | ||
22 | // | |
23 | // foreign operators | |
24 | // | |
25 | ||
26 | //_____________________________________________________________________________ | |
27 | Bool_t operator==(const TVector2& v1,const TVector2& v2) | |
28 | { | |
29 | return v1.X()==v2.X() && v1.Y()==v2.Y(); | |
30 | } | |
31 | ||
32 | ||
33 | //_____________________________________________________________________________ | |
34 | ostream& operator<<(ostream& out,const TVector2& v) | |
35 | { | |
36 | out << '(' << v.X() << ',' << v.Y() << ')'; | |
37 | return out; | |
38 | } | |
39 | ||
40 | //_____________________________________________________________________________ | |
41 | AliMpPad::AliMpPad(const AliMpIntPair& location,const AliMpIntPair& indices, | |
42 | const TVector2& position,const TVector2& dimensions, | |
43 | Bool_t validity) | |
44 | : TObject(), | |
45 | fLocation(location), | |
46 | fIndices(indices), | |
47 | fPosition(position), | |
48 | fDimensions(dimensions), | |
49 | fValidity(validity) | |
50 | { | |
51 | // Be carefull : this constructor doesn't check the validity of | |
52 | // the correspondance between location and indices. | |
53 | // By default, validity is set true. | |
54 | // It is aimed to be used by MSegmentation methods, and never from outside.... | |
55 | } | |
56 | ||
57 | ||
58 | //_____________________________________________________________________________ | |
59 | AliMpPad::AliMpPad() | |
60 | : TObject(), | |
61 | fLocation(AliMpIntPair::Invalid()), | |
62 | fIndices(AliMpIntPair::Invalid()), | |
63 | fPosition(-1.,-1.), | |
64 | fDimensions(0.,0.), | |
65 | fValidity(false) | |
66 | { | |
67 | // Default constructor - creates pad in invalid state | |
68 | } | |
69 | ||
70 | ||
71 | //_____________________________________________________________________________ | |
72 | AliMpPad::AliMpPad(const AliMpPad& src) | |
73 | : TObject(src) | |
74 | { | |
75 | *this = src; | |
76 | } | |
77 | ||
78 | //_____________________________________________________________________________ | |
79 | AliMpPad::~AliMpPad() { | |
80 | // | |
81 | } | |
82 | ||
83 | //_____________________________________________________________________________ | |
84 | AliMpPad& AliMpPad::operator = (const AliMpPad& src) | |
85 | { | |
86 | // check assignement to self | |
87 | if (this == &src) return *this; | |
88 | ||
89 | // base class assignement | |
90 | TObject::operator=(src); | |
91 | ||
92 | // assignement operator | |
93 | fLocation = src.fLocation; | |
94 | fIndices = src.fIndices; | |
95 | fPosition.Set(src.fPosition); | |
96 | fDimensions.Set(src.fDimensions); | |
97 | fValidity = src.fValidity; | |
98 | ||
99 | return *this; | |
100 | } | |
101 | ||
102 | //_____________________________________________________________________________ | |
103 | Bool_t AliMpPad::operator == (const AliMpPad& pos2) const | |
104 | { | |
105 | // are this and pos2 equals? | |
106 | ||
107 | // one valid, one invalid | |
108 | if (fValidity != pos2.fValidity) return false; | |
109 | ||
110 | // both invalid | |
111 | if (!fValidity) return true; | |
112 | ||
113 | // both valid | |
114 | return (fLocation==pos2.fLocation) && (fIndices ==pos2.fIndices ) | |
115 | && (fPosition==pos2.fPosition) && (fDimensions==pos2.fDimensions); | |
116 | } | |
117 | //_____________________________________________________________________________ | |
118 | Bool_t AliMpPad::operator!= (const AliMpPad& pos2) const | |
119 | { | |
120 | // are this and pos2 equals? | |
121 | return !(*this==pos2); | |
122 | } | |
123 | ||
124 | //_____________________________________________________________________________ | |
125 | ostream& operator<< (ostream &out, const AliMpPad& op) | |
126 | { | |
127 | if (op.IsValid()) { | |
128 | out << "Pad: Location " << op.GetLocation() | |
129 | << " Indices " << op.GetIndices() | |
130 | << " Position " << op.Position() | |
131 | << " Dimensions " << op.Dimensions(); | |
132 | return out; | |
133 | } | |
134 | else { | |
135 | out << "Pad::Invalid"; | |
136 | return out; | |
137 | } | |
138 | } | |
139 | ||
140 | //_____________________________________________________________________________ | |
141 | Bool_t operator < (const AliMpPad& left, const AliMpPad& right) | |
142 | { | |
143 | return left.GetIndices()<right.GetIndices(); | |
144 | } | |
145 | ||
146 | //_____________________________________________________________________________ | |
2998a151 | 147 | void AliMpPad::Print(const char* /*option*/) const |
5f91c9e8 | 148 | { |
149 | // Prints all pad data. | |
150 | // --- | |
151 | ||
152 | if (fValidity) { | |
153 | cout << "Indices: " << fIndices << "; " | |
154 | << " Location: " << fLocation << "; " | |
155 | << " Position: " << fPosition.X() << " " << fPosition.Y() << "; " | |
156 | << " Dimensions: " << fDimensions.X() << " " << fDimensions.Y() | |
157 | << endl; | |
158 | } | |
159 | else { | |
160 | cout << "Pad::Invalid " << endl; | |
161 | } | |
162 | } | |
163 |