]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONv01.h
Added SetUserDecay routine. When a particle decays the standard MC decay
[u/mrichter/AliRoot.git] / MUON / AliMUONv01.h
1 #ifndef MUONv01_H
2 #define MUONv01_H
3 /////////////////////////////////////////////////////
4 //  Segmentation and Response classes version 01   //
5 /////////////////////////////////////////////////////
6  
7 #include "AliMUON.h"
8 #include "TArrayF.h"
9 #include "TArrayI.h"
10 class AliMUONsegmentationV01 :
11 public AliMUONsegmentation {
12  public:
13     AliMUONsegmentationV01();
14     virtual ~AliMUONsegmentationV01(){}
15     //    
16     // Set Chamber Segmentation Parameters
17     virtual  void    SetPADSIZ(Float_t p1, Float_t p2);
18     virtual  void    SetDAnod(Float_t D) {fWireD = D;};
19     virtual  void    SetPadDivision(Int_t ndiv[4]);
20     virtual  void    SetSegRadii(Float_t  r[4]);
21     //
22     // Initialisation
23     virtual void Init(AliMUONchamber*);
24     //
25     // Get member data
26     virtual Float_t Dpx(){return fDpx;}
27     virtual Float_t Dpy(){return fDpy;}
28     virtual Int_t   Npx(){return fNpx[fNsec-1][1]+1;}
29     virtual Int_t   Npy(){return fNpy;}
30     //
31     // Transform from pad (wire) to real coordinates and vice versa  
32     virtual Float_t GetAnod(Float_t xhit);
33     virtual void    GetPadIxy(Float_t x ,Float_t y ,Int_t   &ix,Int_t   &iy);
34     virtual void    GetPadCxy(Int_t   ix,Int_t   iy,Float_t &x ,Float_t &y );
35     //
36     // Iterate over pads
37     virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
38     virtual void  NextPad();
39     virtual Int_t MorePads();
40     // Get next neighbours 
41     virtual void Neighbours
42         (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
43     // Provisory RecCluster coordinates reconstructor
44     virtual void FitXY(AliMUONRecCluster* Cluster,TClonesArray* MUONdigits);
45     //
46     // Current Pad during Integration
47     virtual Int_t Ix()       {return fix;}
48     virtual Int_t Iy()       {return fiy;}    
49     virtual Int_t ISector()  {return fSector;}
50     //
51     // Integration
52     virtual void IntegrationLimits
53         (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
54     Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
55     void  SigGenInit(Float_t x, Float_t y, Float_t z);
56     //
57     // Identification
58     ClassDef(AliMUONsegmentationV01,1)
59     
60  private:
61     // Signal Generation Condition during Stepping
62     void  GetSuperPadIxy(Float_t x, Float_t y, Int_t  &ix, Int_t  &iy);
63     void  GetSuperPadCxy(Int_t  ix, Int_t  iy, Float_t &x, Float_t &y);
64     Int_t Sector(Int_t ix, Int_t iy);
65  protected:
66     //
67     // Implementation of the segmentation data
68     // Version 0 models rectangular pads with the same dimensions all
69     // over the cathode plane
70     //
71     //  geometry
72     //
73     Int_t      fNsec;          // Number of sectors
74     TArrayF    fRSec;          // sector outer radia
75     TArrayI    fNDiv;          // pad size division
76     Float_t    fDpx;           // x pad width per sector  
77     Float_t    fDpy;           // y pad base width
78     TArrayF    fDpxD;          // y pad width per sector
79     Int_t      fNpx[10][1000]; // Number of pads per sector in x
80     Float_t    fCx[10][1000];  // pad-sector contour x vs y  
81     Int_t      fNpy;           // Number of pads in y
82     Float_t    fWireD;         // wire pitch
83     
84     // Chamber region consideres during disintegration
85     // (lower left and upper right corner)
86     //
87     Int_t  fixmin;
88     Int_t  fixmax;
89     Int_t  fiymin;
90     Int_t  fiymax;
91     Float_t fxmin;
92     Float_t fxmax;
93     //
94     // Current pad during integration (cursor for disintegration)
95     Int_t fix;
96     Int_t fiy;
97     Float_t fx;
98     Float_t fy;
99     Int_t   fSector;
100     //
101     // Current pad and wire during tracking (cursor at hit centre)
102     Int_t fixt;
103     Int_t fiyt;
104     Int_t fiwt;
105     Float_t fxt;
106     Float_t fyt;
107
108 };
109 #endif
110
111
112
113
114
115