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