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 Revision 1.2 2000/06/15 07:58:48 morsch
19 Code from MUON-dev joined
21 Revision 1.1.2.1 2000/06/09 21:37:56 morsch
22 AliMUONSegmentationV02 code from AliMUONSegResV02.cxx
28 /////////////////////////////////////////////////////
29 // Segmentation and Response classes version 02 //
30 /////////////////////////////////////////////////////
33 #include "AliMUONSegmentationV02.h"
36 //___________________________________________
37 ClassImp(AliMUONSegmentationV02)
39 void AliMUONSegmentationV02::SetPadSize(Float_t p1, Float_t p2)
47 Int_t AliMUONSegmentationV02::Npx()
48 // Returns maximum number if pads in x
49 {return AliMUONSegmentationV01::Npy();}
51 Int_t AliMUONSegmentationV02::Npy()
52 // Returns maximum number if pads in y
53 {return AliMUONSegmentationV01::Npx();}
56 Float_t AliMUONSegmentationV02::Dpx(Int_t isec)
57 // Returns pad-size in x
60 Float_t AliMUONSegmentationV02::Dpy(Int_t isec)
61 // Returns pad-size in y
63 Int_t AliMUONSegmentationV02::Sector(Int_t ix, Int_t iy)
64 // Returns sector number for given pad position
66 {return AliMUONSegmentationV01::Sector(iy, ix);}
68 void AliMUONSegmentationV02::
70 GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy)
71 // Returns pad coordinates (ix,iy) for given real coordinates (x,y)
74 AliMUONSegmentationV01::GetPadI(y, x, iy, ix);
75 // printf("\n x,y,ix,iy %f %f %d %d", x,y,ix,iy);
78 void AliMUONSegmentationV02::
79 GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
80 // Returns real coordinates (x,y) for given pad coordinates (ix,iy)
83 AliMUONSegmentationV01::GetPadC(iy, ix, y, x);
85 void AliMUONSegmentationV02::SetPad(Int_t ix,Int_t iy)
88 // Sets virtual pad coordinates, needed for evaluating pad response
89 // outside the tracking program
91 fSector=Sector(ix,iy);
96 void AliMUONSegmentationV02::NextPad()
98 // Stepper for the iteration over pads
101 // Step to next pad in integration region
106 if (fy < fymax && fy != 0) {
110 } else if (fix != fixmax) {
113 // get y-position of next row (yc), xc not used here
114 GetPadC(fix,fiy,xc,yc);
115 // get x-pad coordiante for 1 pad in row (fix)
116 GetPadI(xc,fymin,ixc,fiy);
118 printf("\n Error: Stepping outside integration region\n ");
120 GetPadC(fix,fiy,fx,fy);
121 fSector=Sector(fix,fiy);
123 (fSector ==-1 || fSector==0 ))
125 // printf("\n this pad %f %f %d %d \n",fx,fy,fix,fiy);
129 Int_t AliMUONSegmentationV02::MorePads()
130 // Stopping condition for the iterator over pads
133 // Are there more pads in the integration region
135 if ((fy >= fymax && fix >= fixmax) || fx==0) {
142 void AliMUONSegmentationV02::
143 Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10])
145 // Returns list of next neighbours for given Pad (iX, iY)
148 AliMUONSegmentationV01::Neighbours(iY, iX, &n, Ylist, Xlist);