]>
Commit | Line | Data |
---|---|---|
5f91c9e8 | 1 | // $Id$ |
2 | // Category: plane | |
3 | // | |
4 | // Class AliMpPlane | |
5 | // ---------------- | |
6 | // Class represents the plane composed of 4 sector positions: | |
7 | // | |
8 | // I. FS II. | I. | |
9 | // II. BS inverted in x _____ | ____ | |
10 | // III. FS inverted in x, y | | |
11 | // IV. BS inverted in y III. | IV. | |
12 | // | |
13 | // FS - front sector | |
14 | // BS - back sector | |
15 | // | |
16 | // Authors: David Guez, Ivana Hrivnacova; IPN Orsay | |
17 | ||
18 | #include <Riostream.h> | |
19 | ||
20 | #include "AliMpPlane.h" | |
21 | #include "AliMpReader.h" | |
22 | #include "AliMpSector.h" | |
23 | #include "AliMpSectorPosition.h" | |
874eaf96 | 24 | #include "AliMpIntPair.h" |
5f91c9e8 | 25 | |
26 | ClassImp(AliMpPlane) | |
27 | ||
28 | // | |
29 | // static methods | |
30 | // | |
31 | ||
32 | //______________________________________________________________________________ | |
33 | AliMpPlane* | |
874eaf96 | 34 | AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type, |
5f91c9e8 | 35 | const TVector2& q1Position, const TVector2& q2Position, |
36 | const TVector2& q3Position, const TVector2& q4Position) | |
37 | { | |
38 | // Factory method for creating planes. | |
39 | // --- | |
40 | ||
41 | // Build sectors | |
874eaf96 | 42 | AliMpReader bReader(station, kBendingPlane); |
5f91c9e8 | 43 | // bReader.SetVerboseLevel(1); |
44 | AliMpSector* bSector = bReader.BuildSector(); | |
45 | cout << "bending sector is built" << endl; | |
46 | ||
874eaf96 | 47 | AliMpReader nbReader(station, kNonBendingPlane); |
5f91c9e8 | 48 | // nbReader.SetVerboseLevel(1); |
49 | AliMpSector* nbSector = nbReader.BuildSector(); | |
50 | cout << "non-bending sector is built" << endl; | |
51 | ||
52 | if (type == kBendingPlane) | |
53 | return new AliMpPlane(bSector, nbSector, | |
54 | q1Position, q2Position, q3Position, q4Position ); | |
55 | else | |
56 | return new AliMpPlane(nbSector, bSector, | |
57 | q1Position, q2Position, q3Position, q4Position ); | |
58 | } | |
59 | ||
60 | //______________________________________________________________________________ | |
874eaf96 | 61 | AliMpPlane* AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type) |
5f91c9e8 | 62 | { |
63 | // Factory method for creating planes with | |
64 | // not shifted qudrants. | |
65 | // --- | |
66 | ||
874eaf96 | 67 | return Create(station, type, TVector2(), TVector2(), TVector2(), TVector2()); |
5f91c9e8 | 68 | } |
69 | ||
70 | // | |
71 | // constructors, destructors | |
72 | // | |
73 | ||
74 | //______________________________________________________________________________ | |
75 | AliMpPlane::AliMpPlane(AliMpSector* frontSector, AliMpSector* backSector, | |
76 | const TVector2& q1Position, const TVector2& q2Position, | |
77 | const TVector2& q3Position, const TVector2& q4Position) | |
78 | : TObject(), | |
79 | fkFrontSector(frontSector), | |
80 | fkBackSector(backSector), | |
81 | fSectorPositions() | |
82 | { | |
83 | // | |
84 | ||
85 | // Create sector positions | |
86 | fSectorPositions.push_back( | |
87 | new AliMpSectorPosition(fkFrontSector, q1Position, AliMpIntPair( 1, 1))); | |
88 | fSectorPositions.push_back( | |
89 | new AliMpSectorPosition(fkBackSector, q2Position, AliMpIntPair(-1, 1))); | |
90 | fSectorPositions.push_back( | |
91 | new AliMpSectorPosition(fkFrontSector, q3Position, AliMpIntPair(-1,-1))); | |
92 | fSectorPositions.push_back( | |
93 | new AliMpSectorPosition(fkBackSector, q4Position, AliMpIntPair( 1,-1))); | |
94 | } | |
95 | ||
96 | ||
97 | //______________________________________________________________________________ | |
98 | AliMpPlane::AliMpPlane() | |
99 | : TObject(), | |
100 | fkFrontSector(0), | |
101 | fkBackSector(0), | |
102 | fSectorPositions() | |
103 | { | |
104 | // | |
105 | } | |
106 | ||
107 | //______________________________________________________________________________ | |
108 | AliMpPlane::~AliMpPlane() { | |
109 | // | |
110 | ||
111 | delete fkFrontSector; | |
112 | delete fkBackSector; | |
113 | ||
114 | for (Int_t i=0; i<GetNofSectorPositions(); i++) | |
115 | delete GetSectorPosition(i); | |
116 | } | |
117 | ||
118 | // | |
119 | // public methods | |
120 | // | |
121 | ||
122 | //______________________________________________________________________________ | |
123 | const AliMpSectorPosition* | |
124 | AliMpPlane::SectorPosition(const AliMpIntPair& scale) const | |
125 | { | |
126 | // Returns the sector position specified by scale. | |
127 | // --- | |
128 | ||
129 | for (UInt_t i=0; i<fSectorPositions.size(); i++) | |
130 | if (fSectorPositions[i]->GetScale() == scale) return GetSectorPosition(i); | |
131 | ||
132 | Fatal("SectorPosition", "Wrong scale"); | |
133 | return 0; | |
134 | } | |
135 | ||
136 | //______________________________________________________________________________ | |
137 | Int_t AliMpPlane::GetNofSectorPositions() const | |
138 | { | |
139 | // Returns number of sector positions. | |
140 | // --- | |
141 | ||
142 | return fSectorPositions.size(); | |
143 | } | |
144 | ||
145 | ||
146 | //______________________________________________________________________________ | |
147 | AliMpSectorPosition* AliMpPlane::GetSectorPosition(Int_t i) const | |
148 | { | |
149 | // Returns i-th sector position. | |
150 | // --- | |
151 | ||
152 | return fSectorPositions[i]; | |
153 | } | |
154 | ||
155 |