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