1 #ifndef ALIITSSEGMENTATIONSSD_H
2 #define ALIITSSEGMENTATIONSSD_H
4 #include "AliITSsegmentation.h"
6 // segmentation for SSD
10 class AliITSsegmentationSSD :
11 public AliITSsegmentation {
14 AliITSsegmentationSSD(Option_t *opt="");
15 AliITSsegmentationSSD(AliITSgeom *gm);
16 AliITSsegmentationSSD(const AliITSsegmentationSSD &source);
17 virtual ~AliITSsegmentationSSD(){}
18 AliITSsegmentationSSD& operator=(const AliITSsegmentationSSD &source);
22 virtual void SetPadSize(Float_t pitch,Float_t /* d */)
25 // Maximum number of strips along the two coordinates
26 virtual void SetNPads(Int_t p1,Int_t /* d */){fNstrips=p1;}
27 // Returns the maximum number of cells (digits) posible
28 virtual Int_t GetNPads() const {return 2*fNstrips;}
31 // Set stereo angles Pside-Nside
32 virtual void SetAngles(Float_t pa=0.0175, Float_t na=0.0175)
33 {fStereoPl5=pa; fStereoNl5=na;
34 fStereoPl6=na; fStereoNl6=pa;}
36 virtual void SetAnglesLay5(Float_t pa=0.0075, Float_t na=0.0275)
37 {fStereoPl5=pa; fStereoNl5=na;}
39 virtual void SetAnglesLay6(Float_t pa=0.0275, Float_t na=0.0075)
40 {fStereoPl6=pa; fStereoNl6=na;}
42 // Set stereo angles Pside-Nside
43 // Transform from real coordinates to strips
44 virtual void GetPadIxz(Float_t x ,Float_t z ,Int_t &iP,Int_t &iN) const;
45 // Transform from strips to real coordinates
46 virtual void GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z) const;
47 virtual void GetPadTxz(Float_t &x , Float_t &z) const;
48 // Transformation from Geant cm detector center local coordinates
49 // to detector P and N side strip numbers..
50 virtual Bool_t LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN) const;
51 // Transformation from detector segmentation/cell coordiantes starting
52 // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
53 // and the corresponding x value..
54 virtual void DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z) const;
55 // Given one P side strip and one N side strip, Returns kTRUE if they
56 // cross each other and the location of the two crossing strips and
57 // their correxlation matrix c[2][2].
58 virtual Bool_t GetCrossing(Int_t iP,Int_t iN,Float_t &x,Float_t &z,
62 virtual Int_t GetNumberOfChips() const {
63 return fgkNchipsPerSide;
65 virtual Int_t GetChipFromLocal(Float_t xloc, Float_t zloc) const;
66 virtual Int_t GetChipFromChannel(Int_t ix, Int_t iz) const;
72 virtual Float_t Dpx(Int_t) const {return fPitch;}
74 virtual Float_t Dpz(Int_t) const {return fDz;}
75 // Maximum number of Strips in x
76 virtual Int_t Npx() const {return fNstrips;}
77 // Maximum number of Strips in z
78 virtual Int_t Npz()const {return 1;}
80 // Angles : Pside stereo angle-Nside stereo angle
81 virtual void Angles(Float_t &aP,Float_t &aN) const;
82 virtual void SetLayer(Int_t l);
83 virtual Int_t GetLayer() const {return fLayer;}
84 // Print Default parameters
85 virtual void PrintDefaultParameters() const;
89 virtual void Copy(TObject &obj) const;
91 Int_t fNstrips; // Number of strips in x
92 Float_t fStereoP; // Stereo angle for Pside (rad)
93 Float_t fStereoN; // Stereo angle for Nside (rad)
94 Float_t fPitch; // Pitch of the strips
96 Float_t fStereoPl5; // Stereo angle for Pside
97 Float_t fStereoNl5; // Stereo angle for Nside
98 Float_t fStereoPl6; // Stereo angle for Pside
99 Float_t fStereoNl6; // Stereo angle for Nside
100 Int_t fLayer; //! layer number (5 or 6)
101 static const Float_t fgkDxDefault; // Default value for fDx
102 static const Float_t fgkDzDefault; // Default value for fDz
103 static const Float_t fgkDyDefault; // Default value for fDy
104 static const Float_t fgkPitchDefault; //Default value for fPitch
105 static const Int_t fgkNstripsDefault; //Default value for fNstrips
106 static const Int_t fgkNchipsPerSide; //number of chips per side
107 static const Int_t fgkNstripsPerChip; //number of strips per chip
109 ClassDef(AliITSsegmentationSSD,3) //Segmentation class for SSD