]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONSegmentationV02.cxx
Containers definition
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV02.cxx
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 /*
17 $Log$
18 Revision 1.5  2000/10/03 21:48:07  morsch
19 Adopt to const declaration of some of the methods in AliSegmentation.
20
21 Revision 1.4  2000/10/02 16:58:29  egangler
22 Cleaning of the code :
23 -> coding conventions
24 -> void Streamers
25 -> some useless includes removed or replaced by "class" statement
26
27 Revision 1.3  2000/07/03 11:54:57  morsch
28 AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
29 The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
30
31 Revision 1.2  2000/06/15 07:58:48  morsch
32 Code from MUON-dev joined
33
34 Revision 1.1.2.1  2000/06/09 21:37:56  morsch
35 AliMUONSegmentationV02 code  from  AliMUONSegResV02.cxx
36
37 */
38
39
40
41 /////////////////////////////////////////////////////
42 //  Segmentation and Response classes version 02   //
43 /////////////////////////////////////////////////////
44
45
46 #include "AliMUONSegmentationV02.h"
47 #include "iostream.h"
48
49 //___________________________________________
50 ClassImp(AliMUONSegmentationV02)
51
52 void AliMUONSegmentationV02::SetPadSize(Float_t p1, Float_t p2)
53 {
54 //  Sets the padsize 
55 //
56     fDpy=p1;
57     fDpx=p2;
58 }
59
60 Int_t AliMUONSegmentationV02::Npx() const
61 // Returns maximum number if pads in x
62 {return AliMUONSegmentationV01::Npy();}
63
64 Int_t AliMUONSegmentationV02::Npy() const
65 // Returns maximum number if pads in y
66 {return AliMUONSegmentationV01::Npx();}
67
68
69 Float_t AliMUONSegmentationV02::Dpx(Int_t isec) const
70 // Returns pad-size in x
71 {return fDpy;}
72
73 Float_t AliMUONSegmentationV02::Dpy(Int_t isec) const
74 // Returns pad-size in y
75 {return (*fDpxD)[isec];}
76
77 Int_t AliMUONSegmentationV02::Sector(Int_t ix, Int_t iy) 
78 // Returns sector number for given pad position
79 //
80 {return AliMUONSegmentationV01::Sector(iy, ix);}
81
82 void AliMUONSegmentationV02::
83 GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy) 
84 //  Returns pad coordinates (ix,iy) for given real coordinates (x,y)
85 //
86 {
87 AliMUONSegmentationV01::GetPadI(y, x, iy, ix); 
88 // printf("\n x,y,ix,iy %f %f %d %d", x,y,ix,iy);
89 }
90
91 void AliMUONSegmentationV02::
92 GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y) 
93 //  Returns real coordinates (x,y) for given pad coordinates (ix,iy)
94 //
95 {
96     AliMUONSegmentationV01::GetPadC(iy, ix, y, x);
97 }
98 void AliMUONSegmentationV02::SetPad(Int_t ix,Int_t iy)
99 {
100     //
101     // Sets virtual pad coordinates, needed for evaluating pad response 
102     // outside the tracking program 
103     GetPadC(ix,iy,fX,fY);
104     fSector=Sector(ix,iy);    
105 }
106
107
108
109 void AliMUONSegmentationV02::NextPad()
110 {
111 // Stepper for the iteration over pads
112 //
113   // 
114   // Step to next pad in integration region
115     Float_t xc,yc;
116     Int_t   ixc;
117     
118 //  step up    
119     if (fY < fYmax && fY != 0) {
120         if (fIy==-1) fIy++;
121         fIy++;
122 //  step right 
123     } else if (fIx != fIxmax) {
124         if (fIx==-1) fIx++;
125         fIx++;
126 //      get y-position of next row (yc), xc not used here       
127         GetPadC(fIx,fIy,xc,yc);
128 //      get x-pad coordiante for 1 pad in row (fIx)
129         GetPadI(xc,fYmin,ixc,fIy);
130     } else {
131         fIx=fIy=-1;
132     }
133     GetPadC(fIx,fIy,fX,fY);
134     fSector=Sector(fIx,fIy);
135     if (MorePads() && 
136         (fSector ==-1 || fSector==0 )) 
137         NextPad();
138 //    printf("\n this pad %f %f %d %d \n",fX,fY,fIx,fIy);
139     
140 }
141
142 Int_t AliMUONSegmentationV02::MorePads()
143 // Stopping condition for the iterator over pads
144 //
145 //
146 // Are there more pads in the integration region
147 {
148     return  (fIx != -1  || fIy != -1);
149 /*
150     if ((fY >= fYmax  && fIx >= fIxmax) || fX==0) {
151         return 0;
152     } else {
153         return 1;
154     }
155 */
156 }
157
158 void AliMUONSegmentationV02::
159 Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]) 
160 {
161 // Returns list of next neighbours for given Pad (iX, iY)
162 //
163     Int_t n;
164     AliMUONSegmentationV01::Neighbours(iY, iX, &n, Ylist, Xlist);
165     *Nlist=n;
166 }
167
168
169
170