1 #ifndef ALIITSSEGMENTATIONSSD_H
2 #define ALIITSSEGMENTATIONSSD_H
4 #include "AliITSsegmentation.h"
6 // segmentation for SSD
8 class AliITSsegmentationSSD :
9 public AliITSsegmentation {
12 AliITSsegmentationSSD();
13 AliITSsegmentationSSD(AliITSgeom *gm);
14 AliITSsegmentationSSD(AliITSsegmentationSSD &source);
15 virtual ~AliITSsegmentationSSD(){}
16 AliITSsegmentationSSD& operator=(AliITSsegmentationSSD &source);
19 // Detector size: x,z,y
20 virtual void SetDetSize(Float_t p1=72960.,Float_t p2=40000.,
22 {fDx=p1; fDz=p2; fDy=p3;}
25 virtual void SetPadSize(Float_t pitch=95., Float_t dummy=1.)
28 // Maximum number of strips along the two coordinates
29 virtual void SetNPads(Int_t p1=768, Int_t dummy=1)
31 // Returns the maximum number of cells (digits) posible
32 virtual Int_t GetNPads(){return 2*fNstrips;}
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;}
40 virtual void SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275)
41 {fStereoPl5=pa; fStereoNl5=na;}
43 virtual void SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075)
44 {fStereoPl6=pa; fStereoNl6=na;}
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);
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,
72 // Detector type geometry
73 virtual AliITSgeom* Geometry() {return 0;}
75 virtual Float_t Dx() {return fDx;}
77 virtual Float_t Dz() {return fDz;}
79 virtual Float_t Dy() {return fDy;}
81 virtual Float_t Dpx(Int_t) {return fPitch;}
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;}
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;}
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
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
110 AliITSgeom *fGeom; //! pointer to the geometry class
111 TF1* fCorr; // correction function
113 ClassDef(AliITSsegmentationSSD,1) //Segmentation class for SSD