1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 /////////////////////////////////////////////////////
19 // Segmentation and Response classes version 02 //
20 /////////////////////////////////////////////////////
24 #include "AliMUONSegmentationV02.h"
26 //___________________________________________
27 ClassImp(AliMUONSegmentationV02)
30 AliMUONSegmentationV02::AliMUONSegmentationV02()
31 : AliMUONSegmentationV01()
33 // Default constructor
36 AliMUONSegmentationV02::AliMUONSegmentationV02(Int_t nsec)
37 : AliMUONSegmentationV01(nsec)
39 // Non default constructor
42 void AliMUONSegmentationV02::SetPadSize(Float_t p1, Float_t p2)
50 Int_t AliMUONSegmentationV02::Npx() const
51 // Returns maximum number if pads in x
52 {return AliMUONSegmentationV01::Npy();}
54 Int_t AliMUONSegmentationV02::Npy() const
55 // Returns maximum number if pads in y
56 {return AliMUONSegmentationV01::Npx();}
59 Float_t AliMUONSegmentationV02::Dpx(Int_t /*isec*/) const
60 // Returns pad-size in x
63 Float_t AliMUONSegmentationV02::Dpy(Int_t isec) const
64 // Returns pad-size in y
65 {return (*fDpxD)[isec];}
67 void AliMUONSegmentationV02::Draw(const char * /*opt*/) const
70 Int_t AliMUONSegmentationV02::Sector(Int_t ix, Int_t iy)
71 // Returns sector number for given pad position
73 {return AliMUONSegmentationV01::Sector(iy, ix);}
75 void AliMUONSegmentationV02::
76 GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
77 // Returns pad coordinates (ix,iy) for given real coordinates (x,y)
80 AliMUONSegmentationV01::GetPadI(y, x, iy, ix);
81 // printf("\n x,y,ix,iy %f %f %d %d", x,y,ix,iy);
84 void AliMUONSegmentationV02::GetPad(Float_t x, Float_t y , Float_t /*z*/, Int_t &ix, Int_t &iy)
86 GetPadI(x, y, ix, iy);
89 void AliMUONSegmentationV02::
90 GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
92 // Returns real coordinates (x,y) for given pad coordinates (ix,iy)
95 AliMUONSegmentationV01::GetPadC(iy, ix, y, x);
97 void AliMUONSegmentationV02::SetPad(Int_t ix,Int_t iy)
100 // Sets virtual pad coordinates, needed for evaluating pad response
101 // outside the tracking program
102 GetPadC(ix,iy,fX,fY);
103 fSector=Sector(ix,iy);
108 void AliMUONSegmentationV02::NextPad()
110 // Stepper for the iteration over pads
113 // Step to next pad in integration region
118 if (fY < fYmax && fY != 0) {
122 } else if (fIx != fIxmax) {
125 // get y-position of next row (yc), xc not used here
126 GetPadC(fIx,fIy,xc,yc);
127 // get x-pad coordiante for 1 pad in row (fIx)
128 GetPadI(xc,fYmin,ixc,fIy);
132 GetPadC(fIx,fIy,fX,fY);
133 fSector=Sector(fIx,fIy);
135 (fSector ==-1 || fSector==0 ))
137 // printf("\n this pad %f %f %d %d \n",fX,fY,fIx,fIy);
141 Int_t AliMUONSegmentationV02::MorePads()
143 // Stopping condition for the iterator over pads
146 // Are there more pads in the integration region
148 return (fIx != -1 || fIy != -1);
150 if ((fY >= fYmax && fIx >= fIxmax) || fX==0) {
158 void AliMUONSegmentationV02::
159 Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10])
161 // Returns list of next neighbours for given Pad (iX, iY)
164 AliMUONSegmentationV01::Neighbours(iY, iX, &n, Ylist, Xlist);