]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSsegmentationSSD.h
Undo previous commit of this file
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSSD.h
... / ...
CommitLineData
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(const AliITSsegmentationSSD &source);
15 virtual ~AliITSsegmentationSSD(){}
16 AliITSsegmentationSSD& operator=(const AliITSsegmentationSSD &source);
17
18
19 // Strip size
20 virtual void SetPadSize(Float_t pitch,Float_t /* d */)
21 {fPitch=pitch;}
22
23 // Maximum number of strips along the two coordinates
24 virtual void SetNPads(Int_t p1,Int_t /* d */){fNstrips=p1;}
25 // Returns the maximum number of cells (digits) posible
26 virtual Int_t GetNPads() const {return 2*fNstrips;}
27
28
29 // Set stereo angles Pside-Nside
30 virtual void SetAngles(Float_t pa=0.0175, Float_t na=0.0175)
31 {fStereoPl5=pa; fStereoNl5=na;
32 fStereoPl6=na; fStereoNl6=pa;}
33
34 virtual void SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275)
35 {fStereoPl5=pa; fStereoNl5=na;}
36
37 virtual void SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075)
38 {fStereoPl6=pa; fStereoNl6=na;}
39
40 // Set stereo angles Pside-Nside
41 // Transform from real coordinates to strips
42 virtual void GetPadIxz(Float_t x ,Float_t z ,Int_t &iP,Int_t &iN) const;
43 // Transform from strips to real coordinates
44 virtual void GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z) const;
45 virtual void GetPadTxz(Float_t &x , Float_t &z) const;
46 // Transformation from Geant cm detector center local coordinates
47 // to detector P and N side strip numbers..
48 virtual Bool_t LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN) const;
49 // Transformation from detector segmentation/cell coordiantes starting
50 // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
51 // and the corresponding x value..
52 virtual void DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z) const;
53 // Given one P side strip and one N side strip, Returns kTRUE if they
54 // cross each other and the location of the two crossing strips and
55 // their correxlation matrix c[2][2].
56 virtual Bool_t GetCrossing(Int_t iP,Int_t iN,Float_t &x,Float_t &z,
57 Float_t c[2][2]);
58
59 virtual void Init();
60
61 // Strip size in x
62 virtual Float_t Dpx(Int_t) const {return fPitch;}
63 // Strip size in z
64 virtual Float_t Dpz(Int_t) const {return fDz;}
65 // Maximum number of Strips in x
66 virtual Int_t Npx() const {return fNstrips;}
67 // Maximum number of Strips in z
68 virtual Int_t Npz()const {return 1;}
69
70 // Angles : Pside stereo angle-Nside stereo angle
71 virtual void Angles(Float_t &aP,Float_t &aN) const;
72 virtual void SetLayer(Int_t l);
73 virtual Int_t GetLayer() const {return fLayer;}
74 // Print Default parameters
75 virtual void PrintDefaultParameters() const;
76
77 protected:
78
79 virtual void Copy(TObject &obj) const;
80
81 Int_t fNstrips; // Number of strips in x
82 Float_t fStereoP; // Stereo angle for Pside (rad)
83 Float_t fStereoN; // Stereo angle for Nside (rad)
84 Float_t fPitch; // Pitch of the strips
85
86 Float_t fStereoPl5; // Stereo angle for Pside
87 Float_t fStereoNl5; // Stereo angle for Nside
88 Float_t fStereoPl6; // Stereo angle for Pside
89 Float_t fStereoNl6; // Stereo angle for Nside
90 Int_t fLayer; //! layer number (5 or 6)
91 static const Float_t fgkDxDefault; // Default value for fDx
92 static const Float_t fgkDzDefault; // Default value for fDz
93 static const Float_t fgkDyDefault; // Default value for fDy
94 static const Float_t fgkPitchDefault; //Default value for fPitch
95 static const Int_t fgkNstripsDefault; //Default value for fNstrips
96
97 ClassDef(AliITSsegmentationSSD,2) //Segmentation class for SSD
98};
99
100#endif