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