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