6 // Class represents the plane composed of 4 sector positions:
9 // II. BS inverted in x _____ | ____
10 // III. FS inverted in x, y |
11 // IV. BS inverted in y III. | IV.
16 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
18 #include <Riostream.h>
21 #include "AliMpPlane.h"
22 #include "AliMpReader.h"
23 #include "AliMpSector.h"
24 #include "AliMpSectorPosition.h"
25 #include "AliMpIntPair.h"
33 //______________________________________________________________________________
35 AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type,
36 const TVector2& q1Position, const TVector2& q2Position,
37 const TVector2& q3Position, const TVector2& q4Position)
39 // Factory method for creating planes.
43 AliMpReader bReader(station, kBendingPlane);
44 // bReader.SetVerboseLevel(1);
45 AliMpSector* bSector = bReader.BuildSector();
46 cout << "bending sector is built" << endl;
48 AliMpReader nbReader(station, kNonBendingPlane);
49 // nbReader.SetVerboseLevel(1);
50 AliMpSector* nbSector = nbReader.BuildSector();
51 cout << "non-bending sector is built" << endl;
53 if (type == kBendingPlane)
54 return new AliMpPlane(bSector, nbSector,
55 q1Position, q2Position, q3Position, q4Position );
57 return new AliMpPlane(nbSector, bSector,
58 q1Position, q2Position, q3Position, q4Position );
61 //______________________________________________________________________________
62 AliMpPlane* AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type)
64 // Factory method for creating planes with
65 // not shifted qudrants.
68 return Create(station, type, TVector2(), TVector2(), TVector2(), TVector2());
72 // constructors, destructors
75 //______________________________________________________________________________
76 AliMpPlane::AliMpPlane(AliMpSector* frontSector, AliMpSector* backSector,
77 const TVector2& q1Position, const TVector2& q2Position,
78 const TVector2& q3Position, const TVector2& q4Position)
80 fkFrontSector(frontSector),
81 fkBackSector(backSector),
87 // Create sector positions
88 fSectorPositions.push_back(
89 new AliMpSectorPosition(fkFrontSector, q1Position, AliMpIntPair( 1, 1)));
90 fSectorPositions.push_back(
91 new AliMpSectorPosition(fkBackSector, q2Position, AliMpIntPair(-1, 1)));
92 fSectorPositions.push_back(
93 new AliMpSectorPosition(fkFrontSector, q3Position, AliMpIntPair(-1,-1)));
94 fSectorPositions.push_back(
95 new AliMpSectorPosition(fkBackSector, q4Position, AliMpIntPair( 1,-1)));
99 // Create sector positions
100 fSectorPositions.Add(
101 new AliMpSectorPosition(fkFrontSector, q1Position, AliMpIntPair( 1, 1)));
102 fSectorPositions.Add(
103 new AliMpSectorPosition(fkBackSector, q2Position, AliMpIntPair(-1, 1)));
104 fSectorPositions.Add(
105 new AliMpSectorPosition(fkFrontSector, q3Position, AliMpIntPair(-1,-1)));
106 fSectorPositions.Add(
107 new AliMpSectorPosition(fkBackSector, q4Position, AliMpIntPair( 1,-1)));
111 //_____________________________________________________________________________
112 AliMpPlane::AliMpPlane(const AliMpPlane& right)
115 Fatal("AliMpPlane", "Copy constructor not provided.");
118 //______________________________________________________________________________
119 AliMpPlane::AliMpPlane()
128 //______________________________________________________________________________
129 AliMpPlane::~AliMpPlane() {
132 delete fkFrontSector;
135 for (Int_t i=0; i<GetNofSectorPositions(); i++)
136 delete GetSectorPosition(i);
143 //_____________________________________________________________________________
144 AliMpPlane& AliMpPlane::operator=(const AliMpPlane& right)
146 // check assignement to self
147 if (this == &right) return *this;
149 Fatal("operator =", "Assignement operator not provided.");
158 //______________________________________________________________________________
159 const AliMpSectorPosition*
160 AliMpPlane::SectorPosition(const AliMpIntPair& scale) const
162 // Returns the sector position specified by scale.
165 for (Int_t i=0; i<GetNofSectorPositions(); i++)
166 if (GetSectorPosition(i)->GetScale() == scale) return GetSectorPosition(i);
168 Fatal("SectorPosition", "Wrong scale");
172 //______________________________________________________________________________
173 Int_t AliMpPlane::GetNofSectorPositions() const
175 // Returns number of sector positions.
179 return fSectorPositions.size();
183 return fSectorPositions.GetEntriesFast();
188 //______________________________________________________________________________
189 AliMpSectorPosition* AliMpPlane::GetSectorPosition(Int_t i) const
191 // Returns i-th sector position.
195 return fSectorPositions[i];
199 return (AliMpSectorPosition*)fSectorPositions[i];