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>
20 #include "AliMpPlane.h"
21 #include "AliMpReader.h"
22 #include "AliMpSector.h"
23 #include "AliMpSectorPosition.h"
24 #include "AliMpIntPair.h"
32 //______________________________________________________________________________
34 AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type,
35 const TVector2& q1Position, const TVector2& q2Position,
36 const TVector2& q3Position, const TVector2& q4Position)
38 // Factory method for creating planes.
42 AliMpReader bReader(station, kBendingPlane);
43 // bReader.SetVerboseLevel(1);
44 AliMpSector* bSector = bReader.BuildSector();
45 cout << "bending sector is built" << endl;
47 AliMpReader nbReader(station, kNonBendingPlane);
48 // nbReader.SetVerboseLevel(1);
49 AliMpSector* nbSector = nbReader.BuildSector();
50 cout << "non-bending sector is built" << endl;
52 if (type == kBendingPlane)
53 return new AliMpPlane(bSector, nbSector,
54 q1Position, q2Position, q3Position, q4Position );
56 return new AliMpPlane(nbSector, bSector,
57 q1Position, q2Position, q3Position, q4Position );
60 //______________________________________________________________________________
61 AliMpPlane* AliMpPlane::Create(AliMpStationType station, AliMpPlaneType type)
63 // Factory method for creating planes with
64 // not shifted qudrants.
67 return Create(station, type, TVector2(), TVector2(), TVector2(), TVector2());
71 // constructors, destructors
74 //______________________________________________________________________________
75 AliMpPlane::AliMpPlane(AliMpSector* frontSector, AliMpSector* backSector,
76 const TVector2& q1Position, const TVector2& q2Position,
77 const TVector2& q3Position, const TVector2& q4Position)
79 fkFrontSector(frontSector),
80 fkBackSector(backSector),
86 // Create sector positions
87 fSectorPositions.push_back(
88 new AliMpSectorPosition(fkFrontSector, q1Position, AliMpIntPair( 1, 1)));
89 fSectorPositions.push_back(
90 new AliMpSectorPosition(fkBackSector, q2Position, AliMpIntPair(-1, 1)));
91 fSectorPositions.push_back(
92 new AliMpSectorPosition(fkFrontSector, q3Position, AliMpIntPair(-1,-1)));
93 fSectorPositions.push_back(
94 new AliMpSectorPosition(fkBackSector, q4Position, AliMpIntPair( 1,-1)));
98 // Create sector positions
100 new AliMpSectorPosition(fkFrontSector, q1Position, AliMpIntPair( 1, 1)));
101 fSectorPositions.Add(
102 new AliMpSectorPosition(fkBackSector, q2Position, AliMpIntPair(-1, 1)));
103 fSectorPositions.Add(
104 new AliMpSectorPosition(fkFrontSector, q3Position, AliMpIntPair(-1,-1)));
105 fSectorPositions.Add(
106 new AliMpSectorPosition(fkBackSector, q4Position, AliMpIntPair( 1,-1)));
111 //______________________________________________________________________________
112 AliMpPlane::AliMpPlane()
121 //______________________________________________________________________________
122 AliMpPlane::~AliMpPlane() {
125 delete fkFrontSector;
128 for (Int_t i=0; i<GetNofSectorPositions(); i++)
129 delete GetSectorPosition(i);
136 //______________________________________________________________________________
137 const AliMpSectorPosition*
138 AliMpPlane::SectorPosition(const AliMpIntPair& scale) const
140 // Returns the sector position specified by scale.
143 for (Int_t i=0; i<GetNofSectorPositions(); i++)
144 if (GetSectorPosition(i)->GetScale() == scale) return GetSectorPosition(i);
146 Fatal("SectorPosition", "Wrong scale");
150 //______________________________________________________________________________
151 Int_t AliMpPlane::GetNofSectorPositions() const
153 // Returns number of sector positions.
157 return fSectorPositions.size();
161 return fSectorPositions.GetEntriesFast();
166 //______________________________________________________________________________
167 AliMpSectorPosition* AliMpPlane::GetSectorPosition(Int_t i) const
169 // Returns i-th sector position.
173 return fSectorPositions[i];
177 return (AliMpSectorPosition*)fSectorPositions[i];