]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSsegmentationSSD.h
Updated with the new SSD reconstruction code
[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
21           (Float_t p1=72960., Float_t p2=40000., 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
32
33     // Set stereo angles Pside-Nside 
34     virtual void    SetAngles(Float_t pa=0.0075, Float_t na=0.0275) 
35                          {fStereoPl5=pa; fStereoNl5=na; fStereoPl6=na; fStereoNl6=pa;}
36
37     virtual void    SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275) 
38                          {fStereoPl5=pa; fStereoNl5=na;}
39
40     virtual void    SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075) 
41                          {fStereoPl6=pa; fStereoNl6=na;}
42
43     // Set stereo angles Pside-Nside 
44     // Transform from real coordinates to strips
45     virtual void    GetPadIxz
46     (Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN);
47     // Transform from strips to real coordinates
48     virtual void    GetPadCxz
49     (Int_t iP, Int_t iN, Float_t &x , Float_t &z);
50
51     // Transform from real global to local coordinates
52     virtual void    GetLocal(Int_t module,Float_t *g ,Float_t *l) {}
53     // Transform from real local to global coordinates
54     virtual void    GetGlobal(Int_t module,Float_t *l ,Float_t *g) {}
55
56     virtual void Init();
57
58     // Detector type geometry
59     virtual AliITSgeom* Geometry() {return 0;}
60     // Detector length
61     virtual Float_t Dx() {return fDx;}
62     // Detector width
63     virtual Float_t Dz() {return fDz;}
64     // Detector thickness
65     virtual Float_t Dy() {return fDy;}
66     // Strip size in x
67     virtual Float_t Dpx(Int_t) {return fPitch;}
68     // Strip size in z 
69     virtual Float_t Dpz(Int_t) {return fDz;}
70     // Maximum number of Strips in x
71     virtual Int_t    Npx() {return fNstrips;}
72     // Maximum number of Strips in z
73     virtual Int_t    Npz(){return 1;}
74
75     // Angles : Pside stereo angle-Nside stereo angle
76      virtual void Angles(Float_t &aP,Float_t &aN);
77      virtual void SetLayer(Int_t l);
78      virtual Int_t GetLayer() const {return fLayer;}
79
80   protected:
81
82   Int_t      fNstrips;       // Number of strips in x 
83   Float_t    fStereoP;       // Stereo angle for Pside
84   Float_t    fStereoN;       // Stereo angle for Nside
85   Float_t    fPitch;         // Pitch of the strips
86   Float_t    fDz;            // Full width of the detector (z axis)- microns
87   Float_t    fDx;            // Full length of the detector (x axis)- microns
88   Float_t    fDy;            // Full thickness of the detector (y axis) -um 
89   
90   Float_t    fStereoPl5;       // Stereo angle for Pside
91   Float_t    fStereoNl5;       // Stereo angle for Nside
92   Float_t    fStereoPl6;       // Stereo angle for Pside
93   Float_t    fStereoNl6;       // Stereo angle for Nside
94   Int_t      fLayer;
95
96   AliITSgeom *fGeom;         //! pointer to the geometry class
97   TF1*       fCorr;          // correction function
98   
99   ClassDef(AliITSsegmentationSSD,1) //Segmentation class for SSD 
100 };
101
102 #endif