]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONsegmentv1.h
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MUON / AliMUONsegmentv1.h
1 #ifndef MUONsegmentv1_H
2 #define MUONsegmentv1_H
3 /////////////////////////////////////////////////////////
4 //  Manager and hits classes for set:MUON version 0    //
5 /////////////////////////////////////////////////////////
6  
7 #include "AliMUON.h"
8
9 const Int_t NZONE = 3; // Specific for chamber with equal pads
10 const Int_t NZONEm1 = 2; // NZONE - 1
11 const Int_t NZONECUT = 30;
12
13 class AliMUONsegmentationV1 :
14 public AliMUONsegmentation {
15  public:
16     AliMUONsegmentationV1();
17     virtual ~AliMUONsegmentationV1(){}
18     //    
19     // Set Chamber Segmentation Parameters
20     void SetNzone(Int_t N) {fNzone = N;};
21     virtual  void    SetPADSIZ(Float_t p1, Float_t p2);
22     void SetSensOffset(Float_t Offset) {fSensOffset = Offset;};
23     void SetDAnod(Float_t D) {fDAnod = D;};
24       // max x and y for the zone in number of pads units 
25       //(WARNING : first pad is labelled 0 !!) 
26     virtual void AddCut(Int_t Zone, Int_t nX, Int_t nY); 
27     virtual void DefaultCut(void);
28
29     //
30     // Initialisation
31     virtual void Init(AliMUONchamber*);
32     //
33     // Get member data
34     virtual Float_t Dpx(){return fDpx;}
35     virtual Float_t Dpy(){return fDpy;}
36     virtual Int_t   Npx(){return fNpx;}
37     virtual Int_t   Npy(){return fNpy;}
38     //
39     // know the zone of segmentation
40     virtual Int_t GetZone(Float_t X, Float_t Y);
41     virtual Int_t GetZone(Int_t X, Int_t Y);
42     //
43     // Transform from pad (wire) to real coordinates and vice versa  
44     virtual Int_t GetiAnod(Float_t xhit);
45     virtual Float_t GetAnod(Float_t xhit);
46     virtual void    GetPadIxy(Float_t x ,Float_t y ,Int_t   &ix,Int_t   &iy);
47     virtual void    GetPadCxy(Int_t   ix,Int_t   iy,Float_t &x ,Float_t &y );
48     //
49     // Iterate over pads
50     virtual void SetPadCoord(Int_t iX, Int_t iY);
51     virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
52     virtual void  NextPad();
53     virtual Int_t MorePads();
54     // Get next neighbours 
55     virtual void Neighbours
56         (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
57     // Provisory RecCluster coordinates reconstructor
58     virtual void FitXY(AliMUONRecCluster* Cluster,TClonesArray* MUONdigits);
59     //
60     // Channel number expressed in pad coordinates (stored in Cluster)
61     virtual Int_t Ix();
62     virtual Int_t Iy(){return fiy;}
63     // Actual number of pad in the chain
64     virtual Int_t ISector();
65     //
66     // Signal Generation Condition during Stepping
67     Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
68     void  SigGenInit(Float_t x, Float_t y, Float_t z);
69     virtual void IntegrationLimits
70         (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
71     //
72     // Identification
73     virtual char* YourName() {return fName;}
74
75     ClassDef(AliMUONsegmentationV1,1)
76  protected:
77     //
78     // Implementation of the segmentation data
79     // Version This models rectangular pads with the same dimensions all
80     // over the cathode plane but let the possibilit for different design
81     //
82     //  geometry
83     Int_t fNzone; // Number of differents sensitive zones
84     Float_t fDpx;         // X pad width
85     Float_t fDpy;         // Y pad width
86     Int_t   fNZoneCut[NZONEm1];    // Number of cuts for given zone 
87     Int_t fZoneX[NZONEm1][NZONECUT]; // X descriptor of zone segmentations
88     Int_t fZoneY[NZONEm1][NZONECUT]; // Y descriptor of zone segmentations
89     Float_t frSensMax2; // square of maximum sensitive radius
90     Float_t frSensMin2; // square of minimum sensitive radius
91     Int_t   fNpx;         // Maximum number of pads along x
92     Int_t   fNpy;         // Maximum number of pads along y
93 //    Int_t   fNwire;       // Number of wires per pad
94     Float_t fDAnod;       // Anod gap
95     Float_t fSensOffset;  // Offset of sensitive zone with respect to quadrant (positive)
96     
97     // Chamber region consideres during disintegration (lower left and upper right corner)
98     //
99     Int_t fixmin;
100     Int_t fixmax;
101     Int_t fiymin;
102     Int_t fiymax;
103     //
104     // Current pad during integration (cursor for disintegration)
105     Int_t fix;
106     Int_t fiy;
107     Float_t fx;
108     Float_t fy;
109     //
110     // Current pad and wire during tracking (cursor at hit centre)
111     Int_t fixt;
112     Int_t fiyt;
113     Int_t fiwt;
114     Float_t fxt;
115     Float_t fyt;
116     //
117     // Version Identifier
118     char    *fName;       
119 };
120
121 #endif
122
123