]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSsegmentationSSD.h
Functions renamed to get a prefix PHOS
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSSD.h
1 #ifndef ALIITSSEGMENTATIONSSD_H
2 #define ALIITSSEGMENTATIONSSD_H
3
4 #include "AliITSsegmentation.h"
5
6 // segmentation for SSD
7
8 class AliITSsegmentationSSD :
9 public AliITSsegmentation {
10  public:
11
12     AliITSsegmentationSSD();
13     AliITSsegmentationSSD(AliITSgeom *gm);
14     AliITSsegmentationSSD(AliITSsegmentationSSD &source);
15     virtual ~AliITSsegmentationSSD(){}
16     AliITSsegmentationSSD& operator=(AliITSsegmentationSSD &source);
17
18
19     // Detector size: x,z,y 
20     virtual void    SetDetSize(Float_t p1=72960.,Float_t p2=40000.,
21                                Float_t p3= 300.) 
22                         {fDx=p1; fDz=p2; fDy=p3;}
23
24     // Strip size  
25     virtual void    SetPadSize(Float_t pitch=95., Float_t dummy=1.) 
26                          {fPitch=pitch;}
27
28     // Maximum number of strips along the two coordinates  
29     virtual void    SetNPads(Int_t p1=768, Int_t dummy=1) 
30                          {fNstrips=p1;}
31     // Returns the maximum number of cells (digits) posible
32     virtual Int_t   GetNPads(){return 2*fNstrips;}
33
34
35     // Set stereo angles Pside-Nside 
36     virtual void    SetAngles(Float_t pa=0.0175, Float_t na=0.0175) 
37                          {fStereoPl5=pa; fStereoNl5=na;
38                          fStereoPl6=na; fStereoNl6=pa;}
39
40     virtual void    SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275) 
41                          {fStereoPl5=pa; fStereoNl5=na;}
42
43     virtual void    SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075) 
44                          {fStereoPl6=pa; fStereoNl6=na;}
45
46     // Set stereo angles Pside-Nside 
47     // Transform from real coordinates to strips
48     virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN);
49     // Transform from strips to real coordinates
50     virtual void    GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z);
51     virtual void    GetPadTxz(Float_t &x , Float_t &z);
52
53     // Transform from real global to local coordinates
54     virtual void    GetLocal(Int_t module,Float_t *g ,Float_t *l) {}
55     // Transform from real local to global coordinates
56     virtual void    GetGlobal(Int_t module,Float_t *l ,Float_t *g) {}
57     // Transformation from Geant cm detector center local coordinates
58     // to detector P and N side strip numbers..
59     virtual void    LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN);
60     // Transformation from detector segmentation/cell coordiantes starting
61     // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
62     // and the corresponding x value..
63     virtual void    DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z);
64     // Given one P side strip and one N side strip, Returns kTRUE if they
65     // cross each other and the location of the two crossing strips and
66     // their correxlation matrix c[2][2].
67     virtual Bool_t  GetCrossing(Int_t iP,Int_t iN,Float_t &x,Float_t &z,
68                                 Float_t c[2][2]);
69
70     virtual void Init();
71
72     // Detector type geometry
73     virtual AliITSgeom* Geometry() {return 0;}
74     // Detector length
75     virtual Float_t Dx() {return fDx;}
76     // Detector width
77     virtual Float_t Dz() {return fDz;}
78     // Detector thickness
79     virtual Float_t Dy() {return fDy;}
80     // Strip size in x
81     virtual Float_t Dpx(Int_t) {return fPitch;}
82     // Strip size in z 
83     virtual Float_t Dpz(Int_t) {return fDz;}
84     // Maximum number of Strips in x
85     virtual Int_t    Npx() {return fNstrips;}
86     // Maximum number of Strips in z
87     virtual Int_t    Npz(){return 1;}
88
89     // Angles : Pside stereo angle-Nside stereo angle
90      virtual void Angles(Float_t &aP,Float_t &aN);
91      virtual void SetLayer(Int_t l);
92      virtual Int_t GetLayer() const {return fLayer;}
93
94   protected:
95
96   Int_t      fNstrips;       // Number of strips in x 
97   Float_t    fStereoP;       // Stereo angle for Pside (rad)
98   Float_t    fStereoN;       // Stereo angle for Nside (rad)
99   Float_t    fPitch;         // Pitch of the strips
100   Float_t    fDz;            // Full width of the detector (z axis)- microns
101   Float_t    fDx;            // Full length of the detector (x axis)- microns
102   Float_t    fDy;            // Full thickness of the detector (y axis) -um 
103   
104   Float_t    fStereoPl5;       // Stereo angle for Pside
105   Float_t    fStereoNl5;       // Stereo angle for Nside
106   Float_t    fStereoPl6;       // Stereo angle for Pside
107   Float_t    fStereoNl6;       // Stereo angle for Nside
108   Int_t      fLayer;
109
110   AliITSgeom *fGeom;         //! pointer to the geometry class
111   TF1*       fCorr;          // correction function
112   
113   ClassDef(AliITSsegmentationSSD,1) //Segmentation class for SSD 
114 };
115
116 #endif