Eliminate variable fName from class after a suggestion of A.Morsch.
[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     ClassDef(AliMUONsegmentationV1,1)
74  protected:
75     //
76     // Implementation of the segmentation data
77     // Version This models rectangular pads with the same dimensions all
78     // over the cathode plane but let the possibilit for different design
79     //
80     //  geometry
81     Int_t fNzone; // Number of differents sensitive zones
82     Float_t fDpx;         // X pad width
83     Float_t fDpy;         // Y pad width
84     Int_t   fNZoneCut[NZONEm1];    // Number of cuts for given zone 
85     Int_t fZoneX[NZONEm1][NZONECUT]; // X descriptor of zone segmentations
86     Int_t fZoneY[NZONEm1][NZONECUT]; // Y descriptor of zone segmentations
87     Float_t frSensMax2; // square of maximum sensitive radius
88     Float_t frSensMin2; // square of minimum sensitive radius
89     Int_t   fNpx;         // Maximum number of pads along x
90     Int_t   fNpy;         // Maximum number of pads along y
91 //    Int_t   fNwire;       // Number of wires per pad
92     Float_t fDAnod;       // Anod gap
93     Float_t fSensOffset;  // Offset of sensitive zone with respect to quadrant (positive)
94     
95     // Chamber region consideres during disintegration (lower left and upper right corner)
96     //
97     Int_t fixmin;
98     Int_t fixmax;
99     Int_t fiymin;
100     Int_t fiymax;
101     //
102     // Current pad during integration (cursor for disintegration)
103     Int_t fix;
104     Int_t fiy;
105     Float_t fx;
106     Float_t fy;
107     //
108     // Current pad and wire during tracking (cursor at hit centre)
109     Int_t fixt;
110     Int_t fiyt;
111     Int_t fiwt;
112     Float_t fxt;
113     Float_t fyt;
114 };
115
116 #endif
117
118